)]}'
{"nova/virt/libvirt/driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2714b82a5d8c844d9c5508ecc3a13d4029840ac8","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        self._initiator \u003d None"},{"line_number":351,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":352,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":353,"context_line":"        self._caps \u003d None"},{"line_number":354,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":355,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":356,"context_line":"            DEFAULT_FIREWALL_DRIVER,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_f25b6d52","side":"PARENT","line":353,"range":{"start_line":353,"start_character":8,"end_line":353,"end_character":25},"updated":"2019-08-22 21:03:44.000000000","message":"unrelated (but afaict valid) removal","commit_id":"d34d78f705ffbe0738abf18d4b97dedbfda6fbb3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2714b82a5d8c844d9c5508ecc3a13d4029840ac8","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":353,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":354,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":355,"context_line":"        self.__has_hyperthreading \u003d None"},{"line_number":356,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":357,"context_line":"            DEFAULT_FIREWALL_DRIVER,"},{"line_number":358,"context_line":"            host\u003dself._host)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_9232390f","line":355,"range":{"start_line":355,"start_character":13,"end_line":355,"end_character":15},"updated":"2019-08-22 21:03:44.000000000","message":"using a dunder for this is weird\n\nI get you\u0027re doing it so the @property can still be private\n\nbut maybe find a different name for this instead?","commit_id":"11c2e3c64060d4f6c772e51becefbf6591298912"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"617f43d9e21171e7bd7a5b6e4bb18db1a858f526","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":353,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":354,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":355,"context_line":"        self.__has_hyperthreading \u003d None"},{"line_number":356,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":357,"context_line":"            DEFAULT_FIREWALL_DRIVER,"},{"line_number":358,"context_line":"            host\u003dself._host)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_91ac6da0","line":355,"range":{"start_line":355,"start_character":13,"end_line":355,"end_character":15},"in_reply_to":"7faddb67_9110ed02","updated":"2019-08-23 11:34:58.000000000","message":"Phew, according to \"Sidebar: What’s a “dunder” in Python?\" in that article, at least I didn\u0027t misuse the term as you imply.\n\nI stand by my statement that it\u0027s weird to \"name mangle\", \"hide from subclass\", etc. this attribute. And it can be avoided at the cost of a pair of empty parentheses on L6966 (an overall reduction in LOC and total characters, cmon, I know that entices you...)\n\nBut it\u0027s not worth a cage match or anything.","commit_id":"11c2e3c64060d4f6c772e51becefbf6591298912"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"60f45b6db83e15dbe2baceda529b19e923d7478e","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":353,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":354,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":355,"context_line":"        self.__has_hyperthreading \u003d None"},{"line_number":356,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":357,"context_line":"            DEFAULT_FIREWALL_DRIVER,"},{"line_number":358,"context_line":"            host\u003dself._host)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_af97c09c","line":355,"range":{"start_line":355,"start_character":13,"end_line":355,"end_character":15},"in_reply_to":"7faddb67_91ac6da0","updated":"2019-08-23 13:21:15.000000000","message":"Oooh, dunder \u003d\u003d double under(score). TIL.\n\nI was equating \"dunder\" to \"dunder methods\". The more you know","commit_id":"11c2e3c64060d4f6c772e51becefbf6591298912"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1deaefca9018169fe3b45a4cb4abb85a703b449","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":353,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":354,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":355,"context_line":"        self.__has_hyperthreading \u003d None"},{"line_number":356,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":357,"context_line":"            DEFAULT_FIREWALL_DRIVER,"},{"line_number":358,"context_line":"            host\u003dself._host)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_9110ed02","line":355,"range":{"start_line":355,"start_character":13,"end_line":355,"end_character":15},"in_reply_to":"7faddb67_9232390f","updated":"2019-08-23 11:26:00.000000000","message":"It\u0027s not a dunder (there\u0027s no trailing \u0027__\u0027), it\u0027s name mangling:\n\nhttps://dbader.org/blog/meaning-of-underscores-in-python\n\nGiven that no one should be touching this, it seemed like the preferred thing to do","commit_id":"11c2e3c64060d4f6c772e51becefbf6591298912"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2714b82a5d8c844d9c5508ecc3a13d4029840ac8","unresolved":false,"context_lines":[{"line_number":6963,"context_line":"            provider_tree.add_traits(nodename, *traits_to_add)"},{"line_number":6964,"context_line":"            provider_tree.remove_traits(nodename, *traits_to_remove)"},{"line_number":6965,"context_line":""},{"line_number":6966,"context_line":"        if self._has_hyperthreading:"},{"line_number":6967,"context_line":"            provider_tree.add_traits("},{"line_number":6968,"context_line":"                nodename, os_traits.HW_CPU_HYPERTHREADING)"},{"line_number":6969,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_942466b4","line":6966,"range":{"start_line":6966,"start_character":16,"end_line":6966,"end_character":35},"updated":"2019-08-22 21:03:44.000000000","message":"yeah, if this were just a method rather than a @property, you wouldn\u0027t need the dunder","commit_id":"11c2e3c64060d4f6c772e51becefbf6591298912"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2714b82a5d8c844d9c5508ecc3a13d4029840ac8","unresolved":false,"context_lines":[{"line_number":9864,"context_line":"        if self.__has_hyperthreading is not None:"},{"line_number":9865,"context_line":"            return self.__has_hyperthreading"},{"line_number":9866,"context_line":""},{"line_number":9867,"context_line":"        self.__has_hyperthreading \u003d False"},{"line_number":9868,"context_line":""},{"line_number":9869,"context_line":"        # we don\u0027t use \u0027/capabilities/host/cpu/topology\u0027 since libvirt doesn\u0027t"},{"line_number":9870,"context_line":"        # guarantee the accuracy of this information"},{"line_number":9871,"context_line":"        for cell in self._host.get_capabilities().host.topology.cells:"},{"line_number":9872,"context_line":"            if any(len(cpu.siblings) \u003e 1 for cpu in cell.cpus if cpu.siblings):"},{"line_number":9873,"context_line":"                self.__has_hyperthreading \u003d True"},{"line_number":9874,"context_line":"                break"},{"line_number":9875,"context_line":""},{"line_number":9876,"context_line":"        return self.__has_hyperthreading"},{"line_number":9877,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_9449c667","line":9874,"range":{"start_line":9867,"start_character":0,"end_line":9874,"end_character":21},"updated":"2019-08-22 21:03:44.000000000","message":"another option would be just to do this in init_host","commit_id":"11c2e3c64060d4f6c772e51becefbf6591298912"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"f3d66146f0dac3a6b3b6921449724c5502755da4","unresolved":false,"context_lines":[{"line_number":9856,"context_line":"    def _has_hyperthreading(self):"},{"line_number":9857,"context_line":"        \"\"\"Determine if host CPU has SMT, a.k.a. HyperThreading."},{"line_number":9858,"context_line":""},{"line_number":9859,"context_line":"        :return: True if the host has SMT enabled."},{"line_number":9860,"context_line":"        \"\"\""},{"line_number":9861,"context_line":"        if self.__has_hyperthreading is not None:"},{"line_number":9862,"context_line":"            return self.__has_hyperthreading"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_0bc0b32a","line":9859,"range":{"start_line":9859,"start_character":17,"end_line":9859,"end_character":50},"updated":"2019-09-03 12:12:01.000000000","message":"nit: \"True or False if the host has SMT enabled or not\"?","commit_id":"f5d30d6897d5d71046f91e621d8749497e150f26"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fec094aee83f479f59e1bab4667753718955349f","unresolved":false,"context_lines":[{"line_number":6958,"context_line":"            provider_tree.add_traits(nodename, *traits_to_add)"},{"line_number":6959,"context_line":"            provider_tree.remove_traits(nodename, *traits_to_remove)"},{"line_number":6960,"context_line":""},{"line_number":6961,"context_line":"        if self._has_hyperthreading:"},{"line_number":6962,"context_line":"            provider_tree.add_traits(nodename, ot.HW_CPU_HYPERTHREADING)"},{"line_number":6963,"context_line":"        else:"},{"line_number":6964,"context_line":"            provider_tree.remove_traits(nodename, ot.HW_CPU_HYPERTHREADING)"},{"line_number":6965,"context_line":""},{"line_number":6966,"context_line":"        # Now that we updated the ProviderTree, we want to store it locally"},{"line_number":6967,"context_line":"        # so that spawn() or other methods can access it thru a getter"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_1b830c05","line":6964,"range":{"start_line":6961,"start_character":0,"end_line":6964,"end_character":75},"updated":"2019-09-04 13:52:56.000000000","message":"Can we please fold this into _get_cpu_traits()?\n\nAlso, I think we should have test coverage for this chunk, proving that the provider gets the trait set/unset as appropriate during update_provider_tree.","commit_id":"29b3ab22d82a2dff1ce693c5390b261310dd2c42"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"784b731201e420221099f40f92c73e7c85965ef2","unresolved":false,"context_lines":[{"line_number":6958,"context_line":"            provider_tree.add_traits(nodename, *traits_to_add)"},{"line_number":6959,"context_line":"            provider_tree.remove_traits(nodename, *traits_to_remove)"},{"line_number":6960,"context_line":""},{"line_number":6961,"context_line":"        if self._has_hyperthreading:"},{"line_number":6962,"context_line":"            provider_tree.add_traits(nodename, ot.HW_CPU_HYPERTHREADING)"},{"line_number":6963,"context_line":"        else:"},{"line_number":6964,"context_line":"            provider_tree.remove_traits(nodename, ot.HW_CPU_HYPERTHREADING)"},{"line_number":6965,"context_line":""},{"line_number":6966,"context_line":"        # Now that we updated the ProviderTree, we want to store it locally"},{"line_number":6967,"context_line":"        # so that spawn() or other methods can access it thru a getter"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_3ed2765d","line":6964,"range":{"start_line":6961,"start_character":0,"end_line":6964,"end_character":75},"in_reply_to":"7faddb67_1b830c05","updated":"2019-09-04 14:25:03.000000000","message":"Yup, that wasn\u0027t there when I wrote this. Updated and added tests.","commit_id":"29b3ab22d82a2dff1ce693c5390b261310dd2c42"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fec094aee83f479f59e1bab4667753718955349f","unresolved":false,"context_lines":[{"line_number":9865,"context_line":""},{"line_number":9866,"context_line":"        # we don\u0027t use \u0027/capabilities/host/cpu/topology\u0027 since libvirt doesn\u0027t"},{"line_number":9867,"context_line":"        # guarantee the accuracy of this information"},{"line_number":9868,"context_line":"        for cell in self._host.get_capabilities().host.topology.cells:"},{"line_number":9869,"context_line":"            if any(len(cpu.siblings) \u003e 1 for cpu in cell.cpus if cpu.siblings):"},{"line_number":9870,"context_line":"                self.__has_hyperthreading \u003d True"},{"line_number":9871,"context_line":"                break"},{"line_number":9872,"context_line":""},{"line_number":9873,"context_line":"        return self.__has_hyperthreading"},{"line_number":9874,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_dbc6d449","line":9871,"range":{"start_line":9868,"start_character":8,"end_line":9871,"end_character":21},"updated":"2019-09-04 13:52:56.000000000","message":"Is there any reason we can\u0027t just do this in __init__ and do away with the whole caching-attr-plus-getter thing? Like, is something about self._host.get_capabilities().host.topology.cells not ready yet?\n\nOtherwise, we\u0027re not saving anything by doing this lazily: update_provider_tree will always be called at some point (unless the driver blows up early, in which case who cares).","commit_id":"29b3ab22d82a2dff1ce693c5390b261310dd2c42"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b833136547ffccefa94a48b09a3de8a8d7acaa5f","unresolved":false,"context_lines":[{"line_number":9865,"context_line":""},{"line_number":9866,"context_line":"        # we don\u0027t use \u0027/capabilities/host/cpu/topology\u0027 since libvirt doesn\u0027t"},{"line_number":9867,"context_line":"        # guarantee the accuracy of this information"},{"line_number":9868,"context_line":"        for cell in self._host.get_capabilities().host.topology.cells:"},{"line_number":9869,"context_line":"            if any(len(cpu.siblings) \u003e 1 for cpu in cell.cpus if cpu.siblings):"},{"line_number":9870,"context_line":"                self.__has_hyperthreading \u003d True"},{"line_number":9871,"context_line":"                break"},{"line_number":9872,"context_line":""},{"line_number":9873,"context_line":"        return self.__has_hyperthreading"},{"line_number":9874,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_fbc94524","line":9871,"range":{"start_line":9868,"start_character":8,"end_line":9871,"end_character":21},"in_reply_to":"7faddb67_3e6036a5","updated":"2019-09-04 21:21:56.000000000","message":"\u003e diverge from that\n \u003e pattern (if it is, we should update all the other users too)\n\nYeah, let\u0027s get with Adam and see if there\u0027s a reason for the sev stuff to be memoized. In the sev case, it may be because that thing was being referenced from different places, like compute and API. If so, it\u0027s also possible that that state existed only transiently in the series while it was still in flight, and is no longer applicable, and we can simplify.\n\nIn any case, this one demonstrably only needs to be run once, so the memoization seems like unnecessary debt.\n\nBut sure, later.","commit_id":"29b3ab22d82a2dff1ce693c5390b261310dd2c42"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"784b731201e420221099f40f92c73e7c85965ef2","unresolved":false,"context_lines":[{"line_number":9865,"context_line":""},{"line_number":9866,"context_line":"        # we don\u0027t use \u0027/capabilities/host/cpu/topology\u0027 since libvirt doesn\u0027t"},{"line_number":9867,"context_line":"        # guarantee the accuracy of this information"},{"line_number":9868,"context_line":"        for cell in self._host.get_capabilities().host.topology.cells:"},{"line_number":9869,"context_line":"            if any(len(cpu.siblings) \u003e 1 for cpu in cell.cpus if cpu.siblings):"},{"line_number":9870,"context_line":"                self.__has_hyperthreading \u003d True"},{"line_number":9871,"context_line":"                break"},{"line_number":9872,"context_line":""},{"line_number":9873,"context_line":"        return self.__has_hyperthreading"},{"line_number":9874,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_3e6036a5","line":9871,"range":{"start_line":9868,"start_character":8,"end_line":9871,"end_character":21},"in_reply_to":"7faddb67_dbc6d449","updated":"2019-09-04 14:25:03.000000000","message":"I\u0027ve moved this to \u0027nova.virt.libvirt.host\u0027, which is probably where this belonged in the first place. I\u0027m still doing memoization because it\u0027s the pattern we have for these things (see the SEV trait stuff) and it doesn\u0027t seem so complex as to diverge from that pattern (if it is, we should update all the other users too)","commit_id":"29b3ab22d82a2dff1ce693c5390b261310dd2c42"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"eec77ab93c3ef363474d24ac7c18384fa8ded558","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":354,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":355,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":356,"context_line":"        self.__has_hyperthreading \u003d None"},{"line_number":357,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":358,"context_line":"            DEFAULT_FIREWALL_DRIVER,"},{"line_number":359,"context_line":"            host\u003dself._host)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_d6b3fb98","line":356,"range":{"start_line":356,"start_character":8,"end_line":356,"end_character":40},"updated":"2019-09-05 02:02:06.000000000","message":"After we get the hyperthreading check in host, do we still need here? Also I havn\u0027t see the __has_hyperthreading usage anywhere.","commit_id":"55fdd7e2634494998af80f039cffe68c70153e74"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"65c7e04813aca803a02988dea389819c33da6238","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":354,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":355,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":356,"context_line":"        self.__has_hyperthreading \u003d None"},{"line_number":357,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":358,"context_line":"            DEFAULT_FIREWALL_DRIVER,"},{"line_number":359,"context_line":"            host\u003dself._host)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_76923ca1","line":356,"range":{"start_line":356,"start_character":8,"end_line":356,"end_character":40},"in_reply_to":"7faddb67_08188773","updated":"2019-09-05 13:20:11.000000000","message":"Thanks.","commit_id":"55fdd7e2634494998af80f039cffe68c70153e74"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d92bee8abe20ee30c71cfb29edae280f0142ffd7","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":354,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":355,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":356,"context_line":"        self.__has_hyperthreading \u003d None"},{"line_number":357,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":358,"context_line":"            DEFAULT_FIREWALL_DRIVER,"},{"line_number":359,"context_line":"            host\u003dself._host)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_08188773","line":356,"range":{"start_line":356,"start_character":8,"end_line":356,"end_character":40},"in_reply_to":"7faddb67_76fec706","updated":"2019-09-05 11:44:34.000000000","message":"Oh, indeed. I\u0027ll remove if/when I need to respin","commit_id":"55fdd7e2634494998af80f039cffe68c70153e74"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e06d865f4de67d9b900b69e4337735b3a1a71a03","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":354,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":355,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":356,"context_line":"        self.__has_hyperthreading \u003d None"},{"line_number":357,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":358,"context_line":"            DEFAULT_FIREWALL_DRIVER,"},{"line_number":359,"context_line":"            host\u003dself._host)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_76fec706","line":356,"range":{"start_line":356,"start_character":8,"end_line":356,"end_character":40},"in_reply_to":"7faddb67_d6b3fb98","updated":"2019-09-05 02:24:25.000000000","message":"Whoops, left over from earlier patch sets.\n\nCould clean it up later if it\u0027s more trouble to respin.","commit_id":"55fdd7e2634494998af80f039cffe68c70153e74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a227a84e625fe5b56a27585317c83dba4bf4872d","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        self._initiator \u003d None"},{"line_number":354,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":355,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":356,"context_line":"        self._caps \u003d None"},{"line_number":357,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":358,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":359,"context_line":"            DEFAULT_FIREWALL_DRIVER,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5faad753_e07260e3","side":"PARENT","line":356,"updated":"2019-09-11 11:28:14.000000000","message":"why are you removing this ?","commit_id":"668181cfa571d0ac7f79f920ea8f3a5e128c993c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"70c212821603a77ec090988e62939ec80e99456b","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        self._initiator \u003d None"},{"line_number":354,"context_line":"        self._fc_wwnns \u003d None"},{"line_number":355,"context_line":"        self._fc_wwpns \u003d None"},{"line_number":356,"context_line":"        self._caps \u003d None"},{"line_number":357,"context_line":"        self._supported_perf_events \u003d []"},{"line_number":358,"context_line":"        self.firewall_driver \u003d firewall.load_driver("},{"line_number":359,"context_line":"            DEFAULT_FIREWALL_DRIVER,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5faad753_e6ffd831","side":"PARENT","line":356,"in_reply_to":"5faad753_e07260e3","updated":"2019-09-11 12:44:29.000000000","message":"It\u0027s not referenced by anything","commit_id":"668181cfa571d0ac7f79f920ea8f3a5e128c993c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"068d59c4b587741fbdea2c7165ed2b77a751c3a6","unresolved":false,"context_lines":[{"line_number":9933,"context_line":"        \"\"\""},{"line_number":9934,"context_line":"        traits \u003d self._get_cpu_feature_traits()"},{"line_number":9935,"context_line":"        traits[ot.HW_CPU_X86_AMD_SEV] \u003d self._host.supports_amd_sev"},{"line_number":9936,"context_line":"        traits[ot.HW_CPU_HYPERTHREADING] \u003d self._host.has_hyperthreading"},{"line_number":9937,"context_line":""},{"line_number":9938,"context_line":"        return traits"},{"line_number":9939,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5faad753_502eb443","line":9936,"range":{"start_line":9936,"start_character":7,"end_line":9936,"end_character":72},"updated":"2019-09-10 20:27:26.000000000","message":"this is ment to be a trait that the driver does not own.\nso teh admin is ment to be able to remvoe to remvoe it or add it via plamcnet without disableing hyperthreading on the host.\n\nwe can do this but the spec say we will not.\nhttps://specs.openstack.org/openstack/nova-specs/specs/train/approved/cpu-resources.html#add-hw-cpu-hyperthreading-trait\n\nform the spec.\n\"The HW_CPU_HYPERTHREADING trait will need to be among the traits that the virt driver cannot always override, since the operator may want to indicate that a single NUMA node on a multi-NUMA-node host is meant for guests that tolerate hyperthread siblings as dedicated CPUs.\"\n\nsince we have not added numa nodes to placmenet in train we could defere allowing hte admin to override this to U but we should update the spec.","commit_id":"c6d525f1df504fd8472686dbe41e70dc83f45685"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a227a84e625fe5b56a27585317c83dba4bf4872d","unresolved":false,"context_lines":[{"line_number":9933,"context_line":"        \"\"\""},{"line_number":9934,"context_line":"        traits \u003d self._get_cpu_feature_traits()"},{"line_number":9935,"context_line":"        traits[ot.HW_CPU_X86_AMD_SEV] \u003d self._host.supports_amd_sev"},{"line_number":9936,"context_line":"        traits[ot.HW_CPU_HYPERTHREADING] \u003d self._host.has_hyperthreading"},{"line_number":9937,"context_line":""},{"line_number":9938,"context_line":"        return traits"},{"line_number":9939,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5faad753_c00e443a","line":9936,"range":{"start_line":9936,"start_character":7,"end_line":9936,"end_character":72},"in_reply_to":"5faad753_502eb443","updated":"2019-09-11 11:28:14.000000000","message":"Yeah either you fix the spec or make it conditional to whether it was already defined.","commit_id":"c6d525f1df504fd8472686dbe41e70dc83f45685"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"70c212821603a77ec090988e62939ec80e99456b","unresolved":false,"context_lines":[{"line_number":9933,"context_line":"        \"\"\""},{"line_number":9934,"context_line":"        traits \u003d self._get_cpu_feature_traits()"},{"line_number":9935,"context_line":"        traits[ot.HW_CPU_X86_AMD_SEV] \u003d self._host.supports_amd_sev"},{"line_number":9936,"context_line":"        traits[ot.HW_CPU_HYPERTHREADING] \u003d self._host.has_hyperthreading"},{"line_number":9937,"context_line":""},{"line_number":9938,"context_line":"        return traits"},{"line_number":9939,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5faad753_6699a81d","line":9936,"range":{"start_line":9936,"start_character":7,"end_line":9936,"end_character":72},"in_reply_to":"5faad753_c00e443a","updated":"2019-09-11 12:44:29.000000000","message":"I shall fix the spec","commit_id":"c6d525f1df504fd8472686dbe41e70dc83f45685"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a227a84e625fe5b56a27585317c83dba4bf4872d","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"        self._has_hyperthreading \u003d False"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"        # we don\u0027t use \u0027/capabilities/host/cpu/topology\u0027 since libvirt doesn\u0027t"},{"line_number":1163,"context_line":"        # guarantee the accuracy of this information"},{"line_number":1164,"context_line":"        for cell in self.get_capabilities().host.topology.cells:"},{"line_number":1165,"context_line":"            if any(len(cpu.siblings) \u003e 1 for cpu in cell.cpus if cpu.siblings):"},{"line_number":1166,"context_line":"                self._has_hyperthreading \u003d True"}],"source_content_type":"text/x-python","patch_set":21,"id":"5faad753_c0608404","line":1163,"updated":"2019-09-11 11:28:14.000000000","message":"this is a bit sad but okay.","commit_id":"c6d525f1df504fd8472686dbe41e70dc83f45685"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"70c212821603a77ec090988e62939ec80e99456b","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"        self._has_hyperthreading \u003d False"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"        # we don\u0027t use \u0027/capabilities/host/cpu/topology\u0027 since libvirt doesn\u0027t"},{"line_number":1163,"context_line":"        # guarantee the accuracy of this information"},{"line_number":1164,"context_line":"        for cell in self.get_capabilities().host.topology.cells:"},{"line_number":1165,"context_line":"            if any(len(cpu.siblings) \u003e 1 for cpu in cell.cpus if cpu.siblings):"},{"line_number":1166,"context_line":"                self._has_hyperthreading \u003d True"}],"source_content_type":"text/x-python","patch_set":21,"id":"5faad753_26a3b051","line":1163,"in_reply_to":"5faad753_c0608404","updated":"2019-09-11 12:44:29.000000000","message":"blame danpb :)","commit_id":"c6d525f1df504fd8472686dbe41e70dc83f45685"}]}
