)]}'
{"nova/api/metadata/base.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b4038a4732e199a67141c94a9d29aa20d5997f40","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        pinned_cpus \u003d None"},{"line_number":446,"context_line":"        if self.instance.numa_topology:"},{"line_number":447,"context_line":"            for cell in self.instance.numa_topology.cells:"},{"line_number":448,"context_line":"                if cell.cpu_pinning is not None:"},{"line_number":449,"context_line":"                    pcpus \u003d \\"},{"line_number":450,"context_line":"                        \u0027,\u0027.join([str(c) for c in cell.cpu_pinning.keys()])"},{"line_number":451,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_49f695fb","line":448,"range":{"start_line":448,"start_character":19,"end_line":448,"end_character":35},"updated":"2020-04-08 07:22:07.000000000","message":"should be able using the cell.pcpuset directly?","commit_id":"6af79e9eb62e6efbf62d3cdc12917ec0d594b2aa"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"73bf02ac706464972e8248244d2facd70e2d8d32","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        if self.instance.numa_topology:"},{"line_number":447,"context_line":"            for cell in self.instance.numa_topology.cells:"},{"line_number":448,"context_line":"                pcpus \u003d \u0027,\u0027.join([str(c) for c in cell.pcpuset])"},{"line_number":449,"context_line":"                cell_pcpus \u003d \"NUMA cell%d: {%s} \" % (cell.id, pcpus)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"                if pinned_cpus is None:"},{"line_number":452,"context_line":"                    pinned_cpus \u003d cell_pcpus"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_7a15f8e4","line":449,"updated":"2020-04-09 04:06:05.000000000","message":"Good idea. But how about return a list for all pcpus of the instance, without the information which pcpu belongs to which NUMA. User can got the NUMA information from `numa_topology`.","commit_id":"f9c87b061fe4f57e52fe049107a148c6ff965845"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b13bca2dde54db8a77cfbd8a2697bcab7ca35125","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        if self.instance.numa_topology:"},{"line_number":447,"context_line":"            for cell in self.instance.numa_topology.cells:"},{"line_number":448,"context_line":"                pcpus \u003d \u0027,\u0027.join([str(c) for c in cell.pcpuset])"},{"line_number":449,"context_line":"                cell_pcpus \u003d \"NUMA cell%d: {%s} \" % (cell.id, pcpus)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"                if pinned_cpus is None:"},{"line_number":452,"context_line":"                    pinned_cpus \u003d cell_pcpus"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_ef37964c","line":449,"range":{"start_line":449,"start_character":28,"end_line":449,"end_character":68},"updated":"2020-04-08 17:48:26.000000000","message":"I thought we will return a dict here. But there looks like you want to return a string?","commit_id":"f9c87b061fe4f57e52fe049107a148c6ff965845"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"db138cfa0ab7b4c99dd6f1453798eb5624105137","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        if self.instance.numa_topology:"},{"line_number":447,"context_line":"            for cell in self.instance.numa_topology.cells:"},{"line_number":448,"context_line":"                pcpus \u003d \u0027,\u0027.join([str(c) for c in cell.pcpuset])"},{"line_number":449,"context_line":"                cell_pcpus \u003d \"NUMA cell%d: {%s} \" % (cell.id, pcpus)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"                if pinned_cpus is None:"},{"line_number":452,"context_line":"                    pinned_cpus \u003d cell_pcpus"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_fd10e202","line":449,"in_reply_to":"df33271e_7a15f8e4","updated":"2020-04-09 05:28:36.000000000","message":"yea, agree with you. We needn\u0027t expose the NUMA info, since the user can get that from the guest OS.","commit_id":"f9c87b061fe4f57e52fe049107a148c6ff965845"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"b0ec5913e690da3899c173c498045fb7e4a14f6f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"NEWTON_TWO \u003d \u00272016-10-06\u0027"},{"line_number":72,"context_line":"OCATA \u003d \u00272017-02-22\u0027"},{"line_number":73,"context_line":"ROCKY \u003d \u00272018-08-27\u0027"},{"line_number":74,"context_line":"VICTORIA \u003d \u00272020-11-01\u0027  # TODO(huaqiang) to be fixed with real realease date"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"OPENSTACK_VERSIONS \u003d ["},{"line_number":77,"context_line":"    FOLSOM,"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf51134e_e58bb3bc","line":74,"updated":"2020-06-29 13:54:06.000000000","message":"Done.","commit_id":"f9bd000f658094af5fbd71b90067cccf2c920cc9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"816e08980295da82f1cd8425c060b589bcb02dff","unresolved":false,"context_lines":[{"line_number":71,"context_line":"NEWTON_TWO \u003d \u00272016-10-06\u0027"},{"line_number":72,"context_line":"OCATA \u003d \u00272017-02-22\u0027"},{"line_number":73,"context_line":"ROCKY \u003d \u00272018-08-27\u0027"},{"line_number":74,"context_line":"VICTORIA \u003d \u00272020-11-01\u0027  # TODO(huaqiang) to be fixed with real realease date"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"OPENSTACK_VERSIONS \u003d ["},{"line_number":77,"context_line":"    FOLSOM,"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf51134e_c9ef0f1c","line":74,"range":{"start_line":74,"start_character":64,"end_line":74,"end_character":72},"updated":"2020-06-22 17:53:08.000000000","message":"release","commit_id":"f9bd000f658094af5fbd71b90067cccf2c920cc9"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"ca76e605adf4e1ef820f230b8fdd7d5164aeed36","unresolved":false,"context_lines":[{"line_number":70,"context_line":"NEWTON_ONE \u003d \u00272016-06-30\u0027"},{"line_number":71,"context_line":"NEWTON_TWO \u003d \u00272016-10-06\u0027"},{"line_number":72,"context_line":"OCATA \u003d \u00272017-02-22\u0027"},{"line_number":73,"context_line":"ROCKY \u003d \u00272018-08-27\u0027"},{"line_number":74,"context_line":"VICTORIA \u003d \u00272020-11-01\u0027  # TODO(huaqiang) to be fixed with real release date"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"OPENSTACK_VERSIONS \u003d ["}],"source_content_type":"text/x-python","patch_set":25,"id":"bf51134e_991bd0c8","line":73,"updated":"2020-07-23 12:38:24.000000000","message":"victoria release date: 2020-10-14 , I found this here[1]\n\n[1] https://releases.openstack.org/victoria/schedule.html","commit_id":"332c7cf7a3dfd66292b9a79ed4646a89304f49a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2e2921895ff1518c66f7fec3aef8b10c522b59ef","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            ])))"},{"line_number":451,"context_line":"            pcpuset \u003d map(lambda x: str(x), pcpuset)"},{"line_number":452,"context_line":"            if pcpuset:"},{"line_number":453,"context_line":"                dedicated_cpus \u003d \u0027, \u0027.join(pcpuset)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        return dedicated_cpus"},{"line_number":456,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"bf51134e_8bd95684","line":453,"range":{"start_line":453,"start_character":35,"end_line":453,"end_character":36},"updated":"2020-07-14 11:15:47.000000000","message":"nit: drop this?","commit_id":"332c7cf7a3dfd66292b9a79ed4646a89304f49a1"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"19e53273f57738aa5b86c77388260c1baf5271e4","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            ])))"},{"line_number":451,"context_line":"            pcpuset \u003d map(lambda x: str(x), pcpuset)"},{"line_number":452,"context_line":"            if pcpuset:"},{"line_number":453,"context_line":"                dedicated_cpus \u003d \u0027, \u0027.join(pcpuset)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        return dedicated_cpus"},{"line_number":456,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"bf51134e_40970246","line":453,"range":{"start_line":453,"start_character":35,"end_line":453,"end_character":36},"in_reply_to":"bf51134e_8bd95684","updated":"2020-07-22 16:52:18.000000000","message":"Done","commit_id":"332c7cf7a3dfd66292b9a79ed4646a89304f49a1"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"beb9c52c7cdda13239827029c3f2d20d7159ccd0","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        return device_metadata_list"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def _get_instance_dedicated_cpus(self):"},{"line_number":446,"context_line":"        dedicated_cpus \u003d \u0027None\u0027"},{"line_number":447,"context_line":"        if self.instance.numa_topology:"},{"line_number":448,"context_line":"            pcpuset \u003d sorted(list(itertools.chain.from_iterable(["},{"line_number":449,"context_line":"                cell.pcpuset for cell in self.instance.numa_topology.cells"}],"source_content_type":"text/x-python","patch_set":30,"id":"bf51134e_26c57c0b","line":446,"updated":"2020-07-21 08:16:44.000000000","message":"Json style might be a good choice...","commit_id":"96fcb54be2a21558ec079c74ec31180723844a00"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4129468142cadd45e8a3513930161b494066e3af","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        return device_metadata_list"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def _get_instance_dedicated_cpus(self):"},{"line_number":446,"context_line":"        dedicated_cpus \u003d \u0027None\u0027"},{"line_number":447,"context_line":"        if self.instance.numa_topology:"},{"line_number":448,"context_line":"            pcpuset \u003d sorted(list(itertools.chain.from_iterable(["},{"line_number":449,"context_line":"                cell.pcpuset for cell in self.instance.numa_topology.cells"}],"source_content_type":"text/x-python","patch_set":30,"id":"bf51134e_a6922c57","line":446,"range":{"start_line":446,"start_character":25,"end_line":446,"end_character":31},"updated":"2020-07-21 07:55:40.000000000","message":"we have \u0027null\u0027 in json, so return a string None is strange.","commit_id":"96fcb54be2a21558ec079c74ec31180723844a00"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"95b2d7604589ea6064c680059bba3909c001a2f6","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            ])))"},{"line_number":451,"context_line":"            pcpuset \u003d map(lambda x: str(x), pcpuset)"},{"line_number":452,"context_line":"            if pcpuset:"},{"line_number":453,"context_line":"                dedicated_cpus \u003d \u0027,\u0027.join(pcpuset)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        return dedicated_cpus"},{"line_number":456,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"bf51134e_8036e8e6","line":453,"updated":"2020-07-21 13:17:44.000000000","message":"How about returning the joint pcpuset directly instead of transforming it into a string. JSON.dumps/loads will cover the details of the translation between python objects and json strings.\n\nNote: A python \u0027None\u0027 is translated to JSON \u0027null\u0027 after json.dumps.","commit_id":"96fcb54be2a21558ec079c74ec31180723844a00"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4129468142cadd45e8a3513930161b494066e3af","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            ])))"},{"line_number":451,"context_line":"            pcpuset \u003d map(lambda x: str(x), pcpuset)"},{"line_number":452,"context_line":"            if pcpuset:"},{"line_number":453,"context_line":"                dedicated_cpus \u003d \u0027,\u0027.join(pcpuset)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        return dedicated_cpus"},{"line_number":456,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"bf51134e_068dd830","line":453,"updated":"2020-07-21 07:55:40.000000000","message":"I\u0027m thinking why we didn\u0027t return a list, since the response is json. That is more natural for the user parses the json response.","commit_id":"96fcb54be2a21558ec079c74ec31180723844a00"}],"nova/tests/unit/test_metadata.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b13bca2dde54db8a77cfbd8a2697bcab7ca35125","unresolved":false,"context_lines":[{"line_number":640,"context_line":"        md \u003d fake_InstanceMetadata(self, instance)"},{"line_number":641,"context_line":"        meta \u003d md._metadata_as_json(base.OPENSTACK_VERSIONS[-1], path\u003dNone)"},{"line_number":642,"context_line":"        meta \u003d jsonutils.loads(meta)"},{"line_number":643,"context_line":"        pinned_cpu_expected \u003d \u0027NUMA cell0: {0,1} NUMA cell1: {3,4}\u0027"},{"line_number":644,"context_line":"        self.assertEqual(pinned_cpu_expected, meta[\u0027dedicated_cpus\u0027])"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_2f397e3e","line":643,"range":{"start_line":643,"start_character":30,"end_line":643,"end_character":67},"updated":"2020-04-08 17:48:26.000000000","message":"I think we should return dict at here, not a string.","commit_id":"f9c87b061fe4f57e52fe049107a148c6ff965845"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"ca76e605adf4e1ef820f230b8fdd7d5164aeed36","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                                   cpuset\u003dset([2]), pcpuset\u003dset([0, 1]))"},{"line_number":117,"context_line":"    cell_1 \u003d numa.InstanceNUMACell(node\u003d1, memory\u003d2048, pagesize\u003d4, id\u003d1,"},{"line_number":118,"context_line":"                                   cpuset\u003dset([5]), pcpuset\u003dset([3, 4]))"},{"line_number":119,"context_line":"    return numa.InstanceNUMATopology(cells\u003d[cell_0, cell_1])"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def fake_InstanceMetadata(testcase, inst_data, address\u003dNone,"}],"source_content_type":"text/x-python","patch_set":25,"id":"bf51134e_f9776c07","line":119,"updated":"2020-07-23 12:38:24.000000000","message":"Done.","commit_id":"332c7cf7a3dfd66292b9a79ed4646a89304f49a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2e2921895ff1518c66f7fec3aef8b10c522b59ef","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                           public_key\u003ddata)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"def fake_InstanceNUMATopology():"},{"line_number":115,"context_line":"    cell_0 \u003d numa.InstanceNUMACell(node\u003d0, memory\u003d1024, pagesize\u003d4, id\u003d0,"},{"line_number":116,"context_line":"                                   cpuset\u003dset([2]), pcpuset\u003dset([0, 1]))"},{"line_number":117,"context_line":"    cell_1 \u003d numa.InstanceNUMACell(node\u003d1, memory\u003d2048, pagesize\u003d4, id\u003d1,"},{"line_number":118,"context_line":"                                   cpuset\u003dset([5]), pcpuset\u003dset([3, 4]))"},{"line_number":119,"context_line":"    return numa.InstanceNUMATopology(cells\u003d[cell_0, cell_1])"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def fake_InstanceMetadata(testcase, inst_data, address\u003dNone,"}],"source_content_type":"text/x-python","patch_set":25,"id":"bf51134e_2bd48a47","line":119,"range":{"start_line":114,"start_character":0,"end_line":119,"end_character":60},"updated":"2020-07-14 11:15:47.000000000","message":"This only has one caller. Maybe move it to the function where it\u0027s used?","commit_id":"332c7cf7a3dfd66292b9a79ed4646a89304f49a1"}]}
