)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b49d0ddf51a47be4ddb5b7bf31365d7d7ca42c69","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For description, see https://review.opendev.org/#/c/698961."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Depends-On: https://review.opendev.org/698961"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I324adf88e54ce09c13ca2dbe638905769806d81b"},{"line_number":14,"context_line":"Blueprint: nova-cyborg-interaction"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3fa7e38b_a80b2c7a","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":45},"updated":"2020-02-03 09:46:31.000000000","message":"nit: https://review.opendev.org/698961 was merged, so Depends-On tag can be removed.","commit_id":"71a5d23d7c068240c7c20a2cb0f6132cc7f693ea"}],"nova/scheduler/request_filter.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b534aa83ad72500de72c71a92bc5f370d7afa5f5","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    \"\"\""},{"line_number":229,"context_line":"    trait_name \u003d os_traits.COMPUTE_ACCELERATORS"},{"line_number":230,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027accel:device_profile\u0027):"},{"line_number":231,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":232,"context_line":"        LOG.debug(\u0027accelerators_filter request filter added required \u0027"},{"line_number":233,"context_line":"                  \u0027trait %s\u0027, trait_name)"},{"line_number":234,"context_line":"    return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_ccd00a56","line":231,"range":{"start_line":231,"start_character":21,"end_line":231,"end_character":34},"updated":"2020-01-14 12:48:39.000000000","message":"this does not exists","commit_id":"5d1dabc31db6cd3f0cfd8fc96b6cf2cd8927c55e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"d30bb36d8520493b8eec5d54ef23f2310f43662a","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    \"\"\""},{"line_number":229,"context_line":"    trait_name \u003d os_traits.COMPUTE_ACCELERATORS"},{"line_number":230,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027accel:device_profile\u0027):"},{"line_number":231,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":232,"context_line":"        LOG.debug(\u0027accelerators_filter request filter added required \u0027"},{"line_number":233,"context_line":"                  \u0027trait %s\u0027, trait_name)"},{"line_number":234,"context_line":"    return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_773f4122","line":231,"range":{"start_line":231,"start_character":21,"end_line":231,"end_character":34},"in_reply_to":"3fa7e38b_4c417a08","updated":"2020-01-15 16:28:27.000000000","message":"Done","commit_id":"5d1dabc31db6cd3f0cfd8fc96b6cf2cd8927c55e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"44f84283d93afb897af1dee896b575ca35506526","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    \"\"\""},{"line_number":229,"context_line":"    trait_name \u003d os_traits.COMPUTE_ACCELERATORS"},{"line_number":230,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027accel:device_profile\u0027):"},{"line_number":231,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":232,"context_line":"        LOG.debug(\u0027accelerators_filter request filter added required \u0027"},{"line_number":233,"context_line":"                  \u0027trait %s\u0027, trait_name)"},{"line_number":234,"context_line":"    return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_4c417a08","line":231,"range":{"start_line":231,"start_character":21,"end_line":231,"end_character":34},"in_reply_to":"3fa7e38b_ccd00a56","updated":"2020-01-14 12:53:10.000000000","message":"it was added by https://review.opendev.org/#/c/699050/\nbut this series needs too be rebased on top of that.","commit_id":"5d1dabc31db6cd3f0cfd8fc96b6cf2cd8927c55e"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"696491b2245f3bf703bb4fd736fb20cbb5459bb9","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    COMPUTE_ACCELERATORS trait, thus indicating the version of n-cpu is"},{"line_number":218,"context_line":"    sufficient to handle accelerator requests."},{"line_number":219,"context_line":"    \"\"\""},{"line_number":220,"context_line":"    trait_name \u003d os_traits.COMPUTE_ACCELERATORS"},{"line_number":221,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027accel:device_profile\u0027):"},{"line_number":222,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":223,"context_line":"        LOG.debug(\u0027accelerators_filter request filter added required \u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_51cde05b","line":220,"range":{"start_line":220,"start_character":27,"end_line":220,"end_character":47},"updated":"2020-03-24 01:23:21.000000000","message":"Actually...this trait isn\u0027t very useful after the upgrade. We have inventories ensure scheduling on the right node.","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57ee9adeff93b583e9f0ae8d66f003a9ddbbf0be","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    COMPUTE_ACCELERATORS trait, thus indicating the version of n-cpu is"},{"line_number":218,"context_line":"    sufficient to handle accelerator requests."},{"line_number":219,"context_line":"    \"\"\""},{"line_number":220,"context_line":"    trait_name \u003d os_traits.COMPUTE_ACCELERATORS"},{"line_number":221,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027accel:device_profile\u0027):"},{"line_number":222,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":223,"context_line":"        LOG.debug(\u0027accelerators_filter request filter added required \u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_717624db","line":220,"range":{"start_line":220,"start_character":27,"end_line":220,"end_character":47},"in_reply_to":"df33271e_51cde05b","updated":"2020-03-24 01:59:43.000000000","message":"at least when it comes to vgpus there woudl be a case where nova or cyborg could provide the same resouce class if cyborg extends it PGPU driver to support vgpus so i think there will still be cases where its needed. also its a compute capablity traits that is already merged so we might as well used it since its part of os-triats already","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c9f475643efe99fff698a7dba4855185d213158c","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    COMPUTE_ACCELERATORS trait, thus indicating the version of n-cpu is"},{"line_number":218,"context_line":"    sufficient to handle accelerator requests."},{"line_number":219,"context_line":"    \"\"\""},{"line_number":220,"context_line":"    trait_name \u003d os_traits.COMPUTE_ACCELERATORS"},{"line_number":221,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027accel:device_profile\u0027):"},{"line_number":222,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":223,"context_line":"        LOG.debug(\u0027accelerators_filter request filter added required \u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_d288ce72","line":220,"range":{"start_line":220,"start_character":27,"end_line":220,"end_character":47},"in_reply_to":"df33271e_717624db","updated":"2020-03-24 07:20:19.000000000","message":"ok, that is a usecase. In case people use nova and cyborg for GPU in one cluster.","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"a0881d2e04f7ba145ceeaa492dd078190465081d","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    COMPUTE_ACCELERATORS trait, thus indicating the version of n-cpu is"},{"line_number":218,"context_line":"    sufficient to handle accelerator requests."},{"line_number":219,"context_line":"    \"\"\""},{"line_number":220,"context_line":"    trait_name \u003d os_traits.COMPUTE_ACCELERATORS"},{"line_number":221,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027accel:device_profile\u0027):"},{"line_number":222,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":223,"context_line":"        LOG.debug(\u0027accelerators_filter request filter added required \u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_a347a74b","line":220,"range":{"start_line":220,"start_character":27,"end_line":220,"end_character":47},"in_reply_to":"df33271e_d288ce72","updated":"2020-03-25 07:13:22.000000000","message":"This trait has been added to handle the case where the Nova controller and some n-cpu\u0027s have been upgraded but other n-cpu\u0027s are still old. So, the new ones alone will publish this trait, and that helps scheduling. See IRC discussion [1].\n\n[1] http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2019-12-13.log.html#t2019-12-13T15:47:17","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"}],"nova/tests/unit/scheduler/test_request_filter.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dbe37d7f444a5af2042b8e6b778eef037635151f","unresolved":false,"context_lines":[{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    @mock.patch.object(request_filter, \u0027LOG\u0027)"},{"line_number":405,"context_line":"    def test_accelerators_filter_with_device_profile(self, mock_log):"},{"line_number":406,"context_line":"        # First ensure that accelerators_filter is included"},{"line_number":407,"context_line":"        self.assertIn(request_filter.accelerators_filter,"},{"line_number":408,"context_line":"                      request_filter.ALL_REQUEST_FILTERS)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        es \u003d {\u0027accel:device_profile\u0027: \u0027mydp\u0027}"},{"line_number":411,"context_line":"        reqspec \u003d objects.RequestSpec(flavor\u003dobjects.Flavor(extra_specs\u003des))"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_803274f0","line":408,"range":{"start_line":406,"start_character":8,"end_line":408,"end_character":57},"updated":"2020-03-23 20:55:55.000000000","message":"the filter is always enabled as it is harded so this is sufficient to asset that it will be included.","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dbe37d7f444a5af2042b8e6b778eef037635151f","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        self.assertIn(request_filter.accelerators_filter,"},{"line_number":408,"context_line":"                      request_filter.ALL_REQUEST_FILTERS)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        es \u003d {\u0027accel:device_profile\u0027: \u0027mydp\u0027}"},{"line_number":411,"context_line":"        reqspec \u003d objects.RequestSpec(flavor\u003dobjects.Flavor(extra_specs\u003des))"},{"line_number":412,"context_line":"        self.assertEqual(set(), reqspec.root_required)"},{"line_number":413,"context_line":"        self.assertEqual(set(), reqspec.root_forbidden)"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_7d043b18","line":410,"range":{"start_line":410,"start_character":7,"end_line":410,"end_character":11},"updated":"2020-03-23 20:55:55.000000000","message":"es?","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dbe37d7f444a5af2042b8e6b778eef037635151f","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                      request_filter.ALL_REQUEST_FILTERS)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        es \u003d {\u0027accel:device_profile\u0027: \u0027mydp\u0027}"},{"line_number":411,"context_line":"        reqspec \u003d objects.RequestSpec(flavor\u003dobjects.Flavor(extra_specs\u003des))"},{"line_number":412,"context_line":"        self.assertEqual(set(), reqspec.root_required)"},{"line_number":413,"context_line":"        self.assertEqual(set(), reqspec.root_forbidden)"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_000e6433","line":411,"range":{"start_line":411,"start_character":60,"end_line":411,"end_character":74},"updated":"2020-03-23 20:55:55.000000000","message":"oh extra_specs i would have spelled it out but i guess since is in a test its ok but again this would be nice to fix in a follow up","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dbe37d7f444a5af2042b8e6b778eef037635151f","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        # Assert both the in-method logging and trace decorator."},{"line_number":421,"context_line":"        log_lines \u003d [c[0][0] for c in mock_log.debug.call_args_list]"},{"line_number":422,"context_line":"        self.assertIn(\u0027added required trait\u0027, log_lines[0])"},{"line_number":423,"context_line":"        self.assertIn(\u0027took %.1f seconds\u0027, log_lines[1])"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @mock.patch.object(request_filter, \u0027LOG\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_e09a60c3","line":422,"range":{"start_line":422,"start_character":7,"end_line":422,"end_character":59},"updated":"2020-03-23 20:55:55.000000000","message":"this is from the pre filter. it would be nice to assert something specific to this filter rather then the generic message.\n\nso \n\"accelerators_filter request filter added\"","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dbe37d7f444a5af2042b8e6b778eef037635151f","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        # Assert both the in-method logging and trace decorator."},{"line_number":421,"context_line":"        log_lines \u003d [c[0][0] for c in mock_log.debug.call_args_list]"},{"line_number":422,"context_line":"        self.assertIn(\u0027added required trait\u0027, log_lines[0])"},{"line_number":423,"context_line":"        self.assertIn(\u0027took %.1f seconds\u0027, log_lines[1])"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @mock.patch.object(request_filter, \u0027LOG\u0027)"},{"line_number":426,"context_line":"    def test_accelerators_filter_no_device_profile(self, mock_log):"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_4066acef","line":423,"range":{"start_line":423,"start_character":7,"end_line":423,"end_character":56},"updated":"2020-03-23 20:55:55.000000000","message":"this is the trace decorator","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dbe37d7f444a5af2042b8e6b778eef037635151f","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        self.assertEqual(set(), reqspec.root_required)"},{"line_number":438,"context_line":"        self.assertEqual(set(), reqspec.root_forbidden)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        # Assert about logging"},{"line_number":441,"context_line":"        mock_log.assert_not_called()"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_40ab4cd5","line":441,"range":{"start_line":440,"start_character":9,"end_line":441,"end_character":36},"updated":"2020-03-23 20:55:55.000000000","message":"this could break rather eiasily if one of the other prefilters starts logging something.\n\nso i would proably remove this but it guess its fine.","commit_id":"cb11da868b53d33905a15c976f51f44b190a8930"}]}
