)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"7df28b35daf38ef35305ed0cb13f788430c34755","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"NOTE: We don\u0027t need to worry about migrations of \u0027numa_topology\u0027 fields"},{"line_number":30,"context_line":"in other objects: the \u0027RequestSpec\u0027 and \u0027MigrationContext\u0027 objects were"},{"line_number":31,"context_line":"added in Liberty [1][2] and used the \u0027InstanceNUMATopology\u0027 o.vo from"},{"line_number":32,"context_line":"the start, while the \u0027NUMATopology\u0027 object has only ever been used in"},{"line_number":33,"context_line":"the \u0027ComputeNode\u0027 object."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1f493fa4_c6ba9808","line":31,"range":{"start_line":31,"start_character":17,"end_line":31,"end_character":23},"updated":"2020-05-07 18:14:22.000000000","message":"You accidentally the references.","commit_id":"0f61d926b1da0304acf094fd0d189f28bef6b686"}],"nova/objects/instance.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ab4bd466959fbc773e69b9e1feddeeeb80f5e59","unresolved":false,"context_lines":[{"line_number":903,"context_line":"        elif db_topology is not _NO_DATA_SENTINEL:"},{"line_number":904,"context_line":"            self.numa_topology \u003d objects.InstanceNUMATopology.obj_from_db_obj("},{"line_number":905,"context_line":"                self._context, self.uuid, db_topology,"},{"line_number":906,"context_line":"            )"},{"line_number":907,"context_line":"        else:"},{"line_number":908,"context_line":"            try:"},{"line_number":909,"context_line":"                self.numa_topology \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_daa73b4f","line":906,"updated":"2020-05-05 15:47:46.000000000","message":"In addition to not being consistent with the style in the rest of the file (or project for that matter), this reformats three lines, when you really only need to introduce one line of git noise.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"59eff7c3b676ad612ee906262a45979af880925a","unresolved":false,"context_lines":[{"line_number":903,"context_line":"        elif db_topology is not _NO_DATA_SENTINEL:"},{"line_number":904,"context_line":"            self.numa_topology \u003d objects.InstanceNUMATopology.obj_from_db_obj("},{"line_number":905,"context_line":"                self._context, self.uuid, db_topology,"},{"line_number":906,"context_line":"            )"},{"line_number":907,"context_line":"        else:"},{"line_number":908,"context_line":"            try:"},{"line_number":909,"context_line":"                self.numa_topology \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_851d5811","line":906,"in_reply_to":"1f493fa4_4513500e","updated":"2020-05-05 15:55:05.000000000","message":"Sure, I\u0027m okay with multiple lines in general of course, but we don\u0027t need to reformat this existing line in order to add this.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56c85f4fa1afab92d31c755390dc25fe5c8d7de8","unresolved":false,"context_lines":[{"line_number":903,"context_line":"        elif db_topology is not _NO_DATA_SENTINEL:"},{"line_number":904,"context_line":"            self.numa_topology \u003d objects.InstanceNUMATopology.obj_from_db_obj("},{"line_number":905,"context_line":"                self._context, self.uuid, db_topology,"},{"line_number":906,"context_line":"            )"},{"line_number":907,"context_line":"        else:"},{"line_number":908,"context_line":"            try:"},{"line_number":909,"context_line":"                self.numa_topology \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_ade949b8","line":906,"in_reply_to":"1f493fa4_851d5811","updated":"2020-05-06 14:51:10.000000000","message":"I really, really dislike the fact that I\u0027ve had to change this :( It\u0027s consistent with pep8, flake8+hacking are happy, it\u0027s locally consistent (which is as good as we can do since a large scale \"use style X on all files\" change would never be accepted), and, most importantly, the code itself does what it says on the tin. Git noise? git-blame is perfectly legible, and I don\u0027t think anyone can argue with a straight face that that a hunk that\u0027s one line shorter or longer is worse. Local consistency? Again, this is the best you can do until we decide to allow massive reformatting-only patches in. I just don\u0027t get it.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"929179e18fd33555b62ec12381d70c7123e0aa28","unresolved":false,"context_lines":[{"line_number":903,"context_line":"        elif db_topology is not _NO_DATA_SENTINEL:"},{"line_number":904,"context_line":"            self.numa_topology \u003d objects.InstanceNUMATopology.obj_from_db_obj("},{"line_number":905,"context_line":"                self._context, self.uuid, db_topology,"},{"line_number":906,"context_line":"            )"},{"line_number":907,"context_line":"        else:"},{"line_number":908,"context_line":"            try:"},{"line_number":909,"context_line":"                self.numa_topology \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_4513500e","line":906,"in_reply_to":"1f493fa4_daa73b4f","updated":"2020-05-05 15:53:34.000000000","message":"I agree that the closing \u0027)\u0027 on a new line might be too much of a push for black style and I don\u0027t know about precedence for that in nova. But I\u0027m totally OK to have the actual param list of the call on a new line. We use that format all over the place. e.g. L898 above.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"}],"nova/objects/instance_numa.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a162d8c75d9b9c0f416bdead69fbdea579a00d2e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        primitive \u003d jsonutils.loads(db_obj)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # TODO(stephenfin): Remove in X or later, once this has bedded in"},{"line_number":142,"context_line":"        if \u0027nova_object.name\u0027 not in primitive:"},{"line_number":143,"context_line":"            # NOTE(stephenfin): Handle an unversioned object created prior to"},{"line_number":144,"context_line":"            # Liberty, by transforming to a versioned object and saving back"},{"line_number":145,"context_line":"            # the serialized version of this before continuing"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_f826e367","line":142,"updated":"2020-04-29 20:01:25.000000000","message":"Personally, I\u0027d prefer to see this in a _fix_the_thing() handler that we can just nuke later, like the migration example I gave you, but yeah, this is the general idea.","commit_id":"6b41f16bdb5be75909c354f8b8b96eca6e32905b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9fe90f5eecba23fae4f08e2df7c7d0fbbd84dc8a","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        primitive \u003d jsonutils.loads(db_obj)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # TODO(stephenfin): Remove in X or later, once this has bedded in"},{"line_number":142,"context_line":"        if \u0027nova_object.name\u0027 not in primitive:"},{"line_number":143,"context_line":"            # NOTE(stephenfin): Handle an unversioned object created prior to"},{"line_number":144,"context_line":"            # Liberty, by transforming to a versioned object and saving back"},{"line_number":145,"context_line":"            # the serialized version of this before continuing"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_0186aab9","line":142,"in_reply_to":"1f493fa4_f826e367","updated":"2020-05-01 15:16:29.000000000","message":"Done","commit_id":"6b41f16bdb5be75909c354f8b8b96eca6e32905b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a162d8c75d9b9c0f416bdead69fbdea579a00d2e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                \u0027numa_topology\u0027: db_obj,"},{"line_number":160,"context_line":"            }"},{"line_number":161,"context_line":"            db.instance_extra_update_by_uuid(context, instance_uuid, values)"},{"line_number":162,"context_line":"            primitive \u003d jsonutils.loads(db_obj)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        return cls.obj_from_primitive(primitive)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_38dfab69","line":162,"updated":"2020-04-29 20:01:25.000000000","message":"I think this is just waste, when obj is just as good and doesn\u0027t require deserialization to get. Just return here, or add:\n\n else:\n    obj \u003d  cls.obj_from_primitive(primitive)\n\n return obj","commit_id":"6b41f16bdb5be75909c354f8b8b96eca6e32905b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9fe90f5eecba23fae4f08e2df7c7d0fbbd84dc8a","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                \u0027numa_topology\u0027: db_obj,"},{"line_number":160,"context_line":"            }"},{"line_number":161,"context_line":"            db.instance_extra_update_by_uuid(context, instance_uuid, values)"},{"line_number":162,"context_line":"            primitive \u003d jsonutils.loads(db_obj)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        return cls.obj_from_primitive(primitive)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_10e9d6e4","line":162,"in_reply_to":"1f493fa4_38dfab69","updated":"2020-05-01 15:16:29.000000000","message":"Done","commit_id":"6b41f16bdb5be75909c354f8b8b96eca6e32905b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ab4bd466959fbc773e69b9e1feddeeeb80f5e59","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                    pagesize\u003dcell.get(\u0027pagesize\u0027),"},{"line_number":170,"context_line":"                ) for cell in primitive.get(\u0027cells\u0027, [])"},{"line_number":171,"context_line":"            ],"},{"line_number":172,"context_line":"        )"},{"line_number":173,"context_line":"        db_obj \u003d jsonutils.dumps(obj.obj_to_primitive())"},{"line_number":174,"context_line":"        values \u003d {"},{"line_number":175,"context_line":"            \u0027numa_topology\u0027: db_obj,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_5a716be0","line":172,"range":{"start_line":172,"start_character":8,"end_line":172,"end_character":9},"updated":"2020-05-05 15:47:46.000000000","message":"This belongs at the end of the line aboveit.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56c85f4fa1afab92d31c755390dc25fe5c8d7de8","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                    pagesize\u003dcell.get(\u0027pagesize\u0027),"},{"line_number":170,"context_line":"                ) for cell in primitive.get(\u0027cells\u0027, [])"},{"line_number":171,"context_line":"            ],"},{"line_number":172,"context_line":"        )"},{"line_number":173,"context_line":"        db_obj \u003d jsonutils.dumps(obj.obj_to_primitive())"},{"line_number":174,"context_line":"        values \u003d {"},{"line_number":175,"context_line":"            \u0027numa_topology\u0027: db_obj,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_6d08e190","line":172,"range":{"start_line":172,"start_character":8,"end_line":172,"end_character":9},"in_reply_to":"1f493fa4_5a716be0","updated":"2020-05-06 14:51:10.000000000","message":"Why? flake8 is happy and we\u0027ve loads of things like this in nova (try \"ag \u0027^\\s+\\)$\u0027\" or the grep equivalent)","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ab4bd466959fbc773e69b9e1feddeeeb80f5e59","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        return cls.obj_from_db_obj("},{"line_number":199,"context_line":"            context, instance_uuid, db_extra[\u0027numa_topology\u0027]"},{"line_number":200,"context_line":"        )"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def _to_json(self):"},{"line_number":203,"context_line":"        return jsonutils.dumps(self.obj_to_primitive())"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_7a6c2708","line":200,"updated":"2020-05-05 15:47:46.000000000","message":"Again, please avoid these additional lines of git noise.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"}],"nova/objects/numa.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ab4bd466959fbc773e69b9e1feddeeeb80f5e59","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":189,"context_line":"class NUMATopology(base.NovaObject):"},{"line_number":190,"context_line":"    # Version 1.0: Initial version"},{"line_number":191,"context_line":"    # Version 1.1: Update NUMACell to 1.1"},{"line_number":192,"context_line":"    # Version 1.2: Update NUMACell to 1.2"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_e5bedcfd","line":189,"updated":"2020-05-05 15:47:46.000000000","message":"I\u0027m sure I\u0027m missing the hierarchy here.. this is included in the instance numa object somewhere such that your test for loading/updating the instance_extra covers the code in this object somehow?","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56c85f4fa1afab92d31c755390dc25fe5c8d7de8","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":189,"context_line":"class NUMATopology(base.NovaObject):"},{"line_number":190,"context_line":"    # Version 1.0: Initial version"},{"line_number":191,"context_line":"    # Version 1.1: Update NUMACell to 1.1"},{"line_number":192,"context_line":"    # Version 1.2: Update NUMACell to 1.2"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_ad866912","line":189,"in_reply_to":"1f493fa4_e5bedcfd","updated":"2020-05-06 14:51:10.000000000","message":"Nah, this is the *host* NUMA topology object. This is included in the ComputeNode object (as a string field, unfortunately), which I\u0027m migrating via the call at [1] and testing in [1]\n\n[1] https://review.opendev.org/#/c/724381/3/nova/objects/instance.py\n[2] https://review.opendev.org/#/c/724381/3/nova/tests/functional/db/test_compute_node.py","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9fe90f5eecba23fae4f08e2df7c7d0fbbd84dc8a","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def __len__(self):"},{"line_number":206,"context_line":"        \"\"\"Defined so that boolean testing works the same as for lists.\"\"\""},{"line_number":207,"context_line":"        return len(self.cells)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @property"},{"line_number":210,"context_line":"    def has_threads(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_250abfd0","line":207,"updated":"2020-05-01 15:16:29.000000000","message":"fwiw, I moved this so that it was with all the other dunder method. I can do that separately but that seems unnecessary","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ab4bd466959fbc773e69b9e1feddeeeb80f5e59","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        return cls.obj_from_primitive(jsonutils.loads(db_obj))"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _to_json(self):"},{"line_number":224,"context_line":"        return jsonutils.dumps(self.obj_to_primitive())"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    @classmethod"},{"line_number":227,"context_line":"    def from_legacy_object(cls, primitive: str):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_9a093333","line":224,"updated":"2020-05-05 15:47:46.000000000","message":"Can we just avoid doing this? it doesn\u0027t save anything.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56c85f4fa1afab92d31c755390dc25fe5c8d7de8","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        return cls.obj_from_primitive(jsonutils.loads(db_obj))"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _to_json(self):"},{"line_number":224,"context_line":"        return jsonutils.dumps(self.obj_to_primitive())"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    @classmethod"},{"line_number":227,"context_line":"    def from_legacy_object(cls, primitive: str):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_0d94bd43","line":224,"in_reply_to":"1f493fa4_9a093333","updated":"2020-05-06 14:51:10.000000000","message":"It was already here. I did try to remove it but there are a way too many references to this to fold it in here. I put it back in the wrong place when trying to restore it.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ab4bd466959fbc773e69b9e1feddeeeb80f5e59","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    @classmethod"},{"line_number":227,"context_line":"    def from_legacy_object(cls, primitive: str):"},{"line_number":228,"context_line":"        \"\"\"Convert a pre-Liberty object to a real o.vo."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :param primitive: A serialized representation of the legacy object."},{"line_number":231,"context_line":"        :returns: A serialized representation of the updated object."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_052ca897","line":228,"range":{"start_line":228,"start_character":49,"end_line":228,"end_character":54},"updated":"2020-05-05 15:47:46.000000000","message":"This is a little misleading since you\u0027re not returning an object, you\u0027re returning a string, unlike the similar method in the other object.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56c85f4fa1afab92d31c755390dc25fe5c8d7de8","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    @classmethod"},{"line_number":227,"context_line":"    def from_legacy_object(cls, primitive: str):"},{"line_number":228,"context_line":"        \"\"\"Convert a pre-Liberty object to a real o.vo."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :param primitive: A serialized representation of the legacy object."},{"line_number":231,"context_line":"        :returns: A serialized representation of the updated object."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_2deed9b3","line":228,"range":{"start_line":228,"start_character":49,"end_line":228,"end_character":54},"in_reply_to":"1f493fa4_052ca897","updated":"2020-05-06 14:51:10.000000000","message":"Fair. I did call that out in the \u0027returns\u0027 parameter but I can be more explicit here.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ab4bd466959fbc773e69b9e1feddeeeb80f5e59","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                    siblings\u003d[],"},{"line_number":244,"context_line":"                ) for cell in jsonutils.loads(primitive).get(\u0027cells\u0027, [])"},{"line_number":245,"context_line":"            ],"},{"line_number":246,"context_line":"        )"},{"line_number":247,"context_line":"        return topology._to_json()"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_7a3a67e7","line":246,"range":{"start_line":246,"start_character":8,"end_line":246,"end_character":9},"updated":"2020-05-05 15:47:46.000000000","message":"This belongs on the line above.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"}],"nova/tests/functional/db/test_compute_node.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ab4bd466959fbc773e69b9e1feddeeeb80f5e59","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        })"},{"line_number":195,"context_line":"        db.compute_node_update("},{"line_number":196,"context_line":"            self.context, cn.id, {\u0027numa_topology\u0027: legacy_topology},"},{"line_number":197,"context_line":"        )"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        cn_db \u003d db.compute_node_get(self.context, cn.id)"},{"line_number":200,"context_line":"        self.assertEqual(legacy_topology, cn_db[\u0027numa_topology\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_e5625cd8","line":197,"updated":"2020-05-05 15:47:46.000000000","message":"This belongs on the line above.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"26f755871803b323757226fd7502043f38e23a2c","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        self.assertNotIn(\u0027nova_object.name\u0027, cn_db[\u0027numa_topology\u0027])"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        # trigger online migration"},{"line_number":203,"context_line":"        objects.ComputeNodeList.get_all(self.context)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        cn_db \u003d db.compute_node_get(self.context, cn.id)"},{"line_number":206,"context_line":"        self.assertNotEqual(legacy_topology, cn_db[\u0027numa_topology\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_b7f85c49","line":203,"updated":"2020-05-07 15:08:06.000000000","message":"Personally I\u0027d rather you actually check something in the result of this to make sure it worked as expected (i.e. we didn\u0027t stop setting the converted object on the result or something). I pulled it down and did that (and the same thing in the next test) to make sure the result is correct in addition to the side effect you\u0027re checking below. Even though the effect is what we\u0027re looking for it seems wrong to not make sure that the result of this call is still as expected. Maybe other tests check legacy conversion, I dunno, but if not, this would be the only place we would notice that we might have fixed the data at rest but stopped returning the expected thing for that first call.","commit_id":"0f61d926b1da0304acf094fd0d189f28bef6b686"}],"nova/tests/functional/db/test_instance.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ab4bd466959fbc773e69b9e1feddeeeb80f5e59","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        })"},{"line_number":179,"context_line":"        db.instance_extra_update_by_uuid("},{"line_number":180,"context_line":"            self.context, instance.uuid, {\u0027numa_topology\u0027: legacy_topology},"},{"line_number":181,"context_line":"        )"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        instance_db \u003d db.instance_extra_get_by_instance_uuid("},{"line_number":184,"context_line":"            self.context, instance.uuid, [\u0027numa_topology\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_c55f600c","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":9},"updated":"2020-05-05 15:47:46.000000000","message":"And this and all the others in this file.","commit_id":"b47c3cdfa8cf378eba3449816b8bc66c8f15aecb"}]}
