)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"5220fbc209dc1793c969235515af8bac1c63724b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix backwards compatibility for InstanceNUMACell"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Pre-1.3 versions of InstanceNUMACell didn\u0027t have a \u0027cpu_pinning\u0027 field."},{"line_number":10,"context_line":"However, after this, the \u0027cpu_pinning_requested\u0027 function was changed"},{"line_number":11,"context_line":"to rely on this variable. This was not backwards compatible."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a71b18c_2ef87b7c","line":9,"range":{"start_line":9,"start_character":52,"end_line":9,"end_character":63},"updated":"2016-12-01 09:45:18.000000000","message":"I think here should be \u0027cpu_policy\u0027 because pre-1.3 versions has a \u0027cpu_pinning\u0027 field","commit_id":"6b0cc1bbf3184552e7fda8707f0341044c6f3869"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"54cf6779bf6075790a2cc3bfa9595c49ea91ef31","unresolved":false,"context_lines":[{"line_number":10,"context_line":"However, after this, the \u0027cpu_pinning_requested\u0027 function was changed"},{"line_number":11,"context_line":"to rely on this variable. This was not backwards compatible. Resolve"},{"line_number":12,"context_line":"this by reinstating the pre-1.3 check for pre-1.3 objects versions."},{"line_number":13,"context_line":"This check can be removed when such objects are no longer found"},{"line_number":14,"context_line":"\"on-the-wire\"."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I6512310ae87b85eb1d029142b6f5aaa6f91bb2a6"},{"line_number":17,"context_line":"Resolves-bug: #1636338"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ba5201f7_9bb8fa76","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":13},"updated":"2017-01-06 21:48:10.000000000","message":"I think you should remove this.","commit_id":"3ac5514688618398c158935b55fd756b5c9045c3"}],"nova/objects/instance_numa_topology.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c0d773fe132cf276e0900ce1c383cfae388f954","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    @property"},{"line_number":112,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":113,"context_line":"        # NOTE(sfinucan): Handle pre-1.3 versions of the object, where the"},{"line_number":114,"context_line":"        # cpu_policy field did not exist and therefore was not set. See"},{"line_number":115,"context_line":"        # #1636338"},{"line_number":116,"context_line":"        if self.cpu_pinning and not self.cpu_policy:"},{"line_number":117,"context_line":"            self.cpu_policy \u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_c85a7183","line":115,"range":{"start_line":114,"start_character":68,"end_line":115,"end_character":18},"updated":"2016-11-15 16:11:30.000000000","message":"nit: we don\u0027t need bug references in the code, that\u0027s why it\u0027s in the commit message and we can get to that via git blame.","commit_id":"f037f9867bb9b7450036368a03e368d00f1892fc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"06309f0ff361c213220c8fc50822fcbee41400f4","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    @property"},{"line_number":112,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":113,"context_line":"        # NOTE(sfinucan): Handle pre-1.3 versions of the object, where the"},{"line_number":114,"context_line":"        # cpu_policy field did not exist and therefore was not set. See"},{"line_number":115,"context_line":"        # #1636338"},{"line_number":116,"context_line":"        if self.cpu_pinning and not self.cpu_policy:"},{"line_number":117,"context_line":"            self.cpu_policy \u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_7bc4a55e","line":115,"range":{"start_line":114,"start_character":68,"end_line":115,"end_character":18},"in_reply_to":"7a77a97e_c85a7183","updated":"2016-11-16 10:37:09.000000000","message":"Done","commit_id":"f037f9867bb9b7450036368a03e368d00f1892fc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c0d773fe132cf276e0900ce1c383cfae388f954","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        # NOTE(sfinucan): Handle pre-1.3 versions of the object, where the"},{"line_number":114,"context_line":"        # cpu_policy field did not exist and therefore was not set. See"},{"line_number":115,"context_line":"        # #1636338"},{"line_number":116,"context_line":"        if self.cpu_pinning and not self.cpu_policy:"},{"line_number":117,"context_line":"            self.cpu_policy \u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_ab044f15","line":116,"range":{"start_line":116,"start_character":11,"end_line":116,"end_character":27},"updated":"2016-11-15 16:11:30.000000000","message":"If cpu_pinning is not set and you\u0027re \u003c v1.3 you\u0027re going to blow up on an attribute error below because self.cpu_policy won\u0027t be set.","commit_id":"f037f9867bb9b7450036368a03e368d00f1892fc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"06309f0ff361c213220c8fc50822fcbee41400f4","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        # NOTE(sfinucan): Handle pre-1.3 versions of the object, where the"},{"line_number":114,"context_line":"        # cpu_policy field did not exist and therefore was not set. See"},{"line_number":115,"context_line":"        # #1636338"},{"line_number":116,"context_line":"        if self.cpu_pinning and not self.cpu_policy:"},{"line_number":117,"context_line":"            self.cpu_policy \u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_fbaef596","line":116,"range":{"start_line":116,"start_character":11,"end_line":116,"end_character":27},"in_reply_to":"7a77a97e_ab044f15","updated":"2016-11-16 10:37:09.000000000","message":"I\u0027m trying to wrap my head around what\u0027s versioned (field, apparently) and what isn\u0027t (properties, functions). I tried another approach","commit_id":"f037f9867bb9b7450036368a03e368d00f1892fc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c0d773fe132cf276e0900ce1c383cfae388f954","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        # cpu_policy field did not exist and therefore was not set. See"},{"line_number":115,"context_line":"        # #1636338"},{"line_number":116,"context_line":"        if self.cpu_pinning and not self.cpu_policy:"},{"line_number":117,"context_line":"            self.cpu_policy \u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_8863191a","line":117,"range":{"start_line":117,"start_character":12,"end_line":117,"end_character":70},"updated":"2016-11-15 16:11:30.000000000","message":"How do we know this is the sane default if cpu_policy is not set?","commit_id":"f037f9867bb9b7450036368a03e368d00f1892fc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"06309f0ff361c213220c8fc50822fcbee41400f4","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        # cpu_policy field did not exist and therefore was not set. See"},{"line_number":115,"context_line":"        # #1636338"},{"line_number":116,"context_line":"        if self.cpu_pinning and not self.cpu_policy:"},{"line_number":117,"context_line":"            self.cpu_policy \u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_1be811e2","line":117,"range":{"start_line":117,"start_character":12,"end_line":117,"end_character":70},"in_reply_to":"7a77a97e_8863191a","updated":"2016-11-16 10:37:09.000000000","message":"It\u0027s not that cpu_policy isn\u0027t set, it\u0027s that cpu_pinning is. If that\u0027s set we have pinned threads and therefore we should have a dedicated policy.","commit_id":"f037f9867bb9b7450036368a03e368d00f1892fc"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"8b8dfae07b646ee099c44dbaa22127bc6d37a142","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":113,"context_line":"        # TODO(sfinucan): Remove this fallback once there are no longer any"},{"line_number":114,"context_line":"        # pre-1.3 versions hanging around (post-Ocata)"},{"line_number":115,"context_line":"        if float(self.VERSION) \u003c 1.3:"},{"line_number":116,"context_line":"            return self.cpu_pinning is not None"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_967873f4","line":115,"range":{"start_line":115,"start_character":7,"end_line":115,"end_character":37},"updated":"2016-11-16 11:39:24.000000000","message":"why don\u0027t you use  versionutils.convert_version_to_tuple\nit should be \nversion \u003d versionutils.convert_version_to_tuple(self.VERSION)\nif version \u003c (1,3)","commit_id":"bca9e5144b23b59618c0ffc1be489c50b52a23e0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1b18fdd4f040b682959e7b67bb44f4f14b54d7af","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":113,"context_line":"        # TODO(sfinucan): Remove this fallback once there are no longer any"},{"line_number":114,"context_line":"        # pre-1.3 versions hanging around (post-Ocata)"},{"line_number":115,"context_line":"        if float(self.VERSION) \u003c 1.3:"},{"line_number":116,"context_line":"            return self.cpu_pinning is not None"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_9175d299","line":115,"range":{"start_line":115,"start_character":7,"end_line":115,"end_character":37},"in_reply_to":"7a77a97e_967873f4","updated":"2016-11-16 14:52:13.000000000","message":"Aye, that\u0027s what I should have done. Fixed","commit_id":"bca9e5144b23b59618c0ffc1be489c50b52a23e0"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4318e113de5b865d421151bb4551322bd6232617","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":113,"context_line":"        # TODO(sfinucan): Remove this fallback once there are no longer any"},{"line_number":114,"context_line":"        # pre-1.3 versions hanging around (post-Ocata)"},{"line_number":115,"context_line":"        if versionutils.convert_version_to_tuple(target_version) \u003c (1, 3):"},{"line_number":116,"context_line":"            return self.cpu_pinning is not None"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_f321a0b5","line":115,"range":{"start_line":115,"start_character":49,"end_line":115,"end_character":63},"updated":"2016-11-16 18:26:50.000000000","message":"should be self.VERSION","commit_id":"b7c0fd76897ba4aec4c1e6fd31dd4d080132e9be"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"fa97a0ffc14b62f89558b6fb2b217730a366aec4","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @property"},{"line_number":112,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":113,"context_line":"        # TODO(sfinucan): Remove this fallback once there are no longer any"},{"line_number":114,"context_line":"        # pre-1.3 versions hanging around (post-Ocata)"},{"line_number":115,"context_line":"        if versionutils.convert_version_to_tuple(self.VERSION) \u003c (1, 3):"},{"line_number":116,"context_line":"            return self.cpu_pinning is not None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_86ac0cef","line":113,"updated":"2016-12-01 12:45:06.000000000","message":"Hum I don\u0027t think we need a TODO here, we want to keep that code has it it like we do for obj_make_compatible.","commit_id":"93fa7fb5aa251374622d63f927794e697fa6fef3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6b547903d31eb0f2ffdfc01af87b9e93bb845c9","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @property"},{"line_number":112,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":113,"context_line":"        # TODO(sfinucan): Remove this fallback once there are no longer any"},{"line_number":114,"context_line":"        # pre-1.3 versions hanging around (post-Ocata)"},{"line_number":115,"context_line":"        if versionutils.convert_version_to_tuple(self.VERSION) \u003c (1, 3):"},{"line_number":116,"context_line":"            return self.cpu_pinning is not None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_2ec5918d","line":113,"in_reply_to":"3a71b18c_86ac0cef","updated":"2016-12-02 12:22:44.000000000","message":"I wasn\u0027t sure about this, so I asked dansmith. I\u0027ll update once I know","commit_id":"93fa7fb5aa251374622d63f927794e697fa6fef3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b2f990321058681ab67ad76167554ab42d732b73","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @property"},{"line_number":112,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":113,"context_line":"        # TODO(sfinucan): Remove this fallback once there are no longer any"},{"line_number":114,"context_line":"        # pre-1.3 versions hanging around (post-Ocata)"},{"line_number":115,"context_line":"        if versionutils.convert_version_to_tuple(self.VERSION) \u003c (1, 3):"},{"line_number":116,"context_line":"            return self.cpu_pinning is not None"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5201f7_dca2aefb","line":113,"updated":"2017-01-05 16:43:06.000000000","message":"I think it\u0027s complicated to predict when we could remove that code since that object jsonified and stored in database for a host can stay in version 1.2 whereas the host has been upgraded to Z* and that until the instance is  migrated to an other host (it\u0027s the only case I can see so far).\n\nSo from my point of view we should never remove it.","commit_id":"c9f66bcd826708212163782627089926211ee56f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"060acd993a4e18a90c03efa1d78a130c5e5a6705","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @property"},{"line_number":112,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":113,"context_line":"        # TODO(sfinucan): Remove this fallback once there are no longer any"},{"line_number":114,"context_line":"        # pre-1.3 versions hanging around (post-Ocata)"},{"line_number":115,"context_line":"        if versionutils.convert_version_to_tuple(self.VERSION) \u003c (1, 3):"},{"line_number":116,"context_line":"            return self.cpu_pinning is not None"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5201f7_573937d6","line":113,"in_reply_to":"ba5201f7_dca2aefb","updated":"2017-01-05 16:55:27.000000000","message":"Yup, that\u0027s sad but correct. Removed.","commit_id":"c9f66bcd826708212163782627089926211ee56f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"ed44bf795aeeaecb061d5ea4d044724b2c690094","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":37,"context_line":"        super(InstanceNUMACell, self).obj_make_compatible(primitive,"},{"line_number":38,"context_line":"                                                          target_version)"},{"line_number":39,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":40,"context_line":"        if target_version \u003c (1, 4):"},{"line_number":41,"context_line":"            primitive.pop(\u0027cpuset_reserved\u0027, None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_fad583ba","line":38,"updated":"2017-10-19 15:34:10.000000000","message":"Unrelated change, but meh - it\u0027ll make the OCD people happy. :)","commit_id":"aedd039a5509fde7f03688b790399e3544841e90"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c37ba00f98c325b0e9471b575740540c50427e73","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":37,"context_line":"        super(InstanceNUMACell, self).obj_make_compatible(primitive,"},{"line_number":38,"context_line":"                                                          target_version)"},{"line_number":39,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":40,"context_line":"        if target_version \u003c (1, 4):"},{"line_number":41,"context_line":"            primitive.pop(\u0027cpuset_reserved\u0027, None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1f485f77_3c11aead","line":38,"in_reply_to":"3f4b6375_fad583ba","updated":"2017-11-14 10:19:52.000000000","message":"Umpf, I tend to ask for a new revision for that kind of issue, but given the list of +1s, meh.","commit_id":"aedd039a5509fde7f03688b790399e3544841e90"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ec5432e7793f6db4fe8892969865485c8bb837a0","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @property"},{"line_number":121,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":122,"context_line":"        if versionutils.convert_version_to_tuple(self.VERSION) \u003c (1, 3):"},{"line_number":123,"context_line":"            return self.cpu_pinning is not None"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff82abbf_409b58c8","line":122,"updated":"2017-11-21 17:10:29.000000000","message":"So, checking the version like this isn\u0027t really the best plan I think, as it may be greater than what we\u0027re going to backport it to after we\u0027re done with whatever is looking at this property.\n\nCan\u0027t we just preserve the old behavior here by doing something like checking that cpu_pinning is not None before we move to the condition on L125?\n\nAlternately, we could do something like this which I think will do the more semverish compatible behavior:\n\n if \u0027cpu_policy\u0027 not in self:\n     return self.cpu_pinning is not None\n else:\n     return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED\n\nright?","commit_id":"aedd039a5509fde7f03688b790399e3544841e90"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7fbb1f36064c47f183cfd42227f637c593fd6df0","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @property"},{"line_number":121,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":122,"context_line":"        if versionutils.convert_version_to_tuple(self.VERSION) \u003c (1, 3):"},{"line_number":123,"context_line":"            return self.cpu_pinning is not None"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff82abbf_3b3769b3","line":122,"in_reply_to":"ff82abbf_1b75c595","updated":"2017-11-21 17:49:33.000000000","message":"It\u0027s valid python, triggers the __contains__ handler, and yes it works with our objects :)","commit_id":"aedd039a5509fde7f03688b790399e3544841e90"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"48161b00623031efa80d6969acacccd817f53fc2","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @property"},{"line_number":121,"context_line":"    def cpu_pinning_requested(self):"},{"line_number":122,"context_line":"        if versionutils.convert_version_to_tuple(self.VERSION) \u003c (1, 3):"},{"line_number":123,"context_line":"            return self.cpu_pinning is not None"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff82abbf_1b75c595","line":122,"in_reply_to":"ff82abbf_409b58c8","updated":"2017-11-21 17:44:33.000000000","message":"i don\u0027t believe \n\nif \u0027cpu_policy\u0027 not in self:\n\nis valid pythong but\n\nif hasattr(self,\u0027cpu_policy\u0027):\n\nshould work\n\nalthough perhaps \nif \u0027cpu_policy\u0027 not in self:\n\nwill work with nova objects.","commit_id":"aedd039a5509fde7f03688b790399e3544841e90"}],"nova/tests/unit/objects/test_instance_numa_topology.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"fa97a0ffc14b62f89558b6fb2b217730a366aec4","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            cpu_pinning\u003d{0: 0, 1: 1, 2: 2, 3: 3})"},{"line_number":152,"context_line":"        self.assertFalse(inst_cell.cpu_pinning_requested)"},{"line_number":153,"context_line":"        inst_cell.VERSION \u003d \u00271.2\u0027"},{"line_number":154,"context_line":"        del inst_cell.cpu_policy"},{"line_number":155,"context_line":"        del inst_cell.cpu_thread_policy"},{"line_number":156,"context_line":"        self.assertTrue(inst_cell.cpu_pinning_requested)"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_265898fa","line":154,"updated":"2016-12-01 12:45:06.000000000","message":"I don\u0027t think it\u0027s the good way to check a pre-version. You should pass through obj_make_compatible and assert that the fields cpu_thread_policy and cpu_policy are not defined, then generate an object based on the primitive to assert on the field cpu_pinning_requested.","commit_id":"93fa7fb5aa251374622d63f927794e697fa6fef3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6b547903d31eb0f2ffdfc01af87b9e93bb845c9","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            cpu_pinning\u003d{0: 0, 1: 1, 2: 2, 3: 3})"},{"line_number":152,"context_line":"        self.assertFalse(inst_cell.cpu_pinning_requested)"},{"line_number":153,"context_line":"        inst_cell.VERSION \u003d \u00271.2\u0027"},{"line_number":154,"context_line":"        del inst_cell.cpu_policy"},{"line_number":155,"context_line":"        del inst_cell.cpu_thread_policy"},{"line_number":156,"context_line":"        self.assertTrue(inst_cell.cpu_pinning_requested)"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_6ebf89fb","line":154,"in_reply_to":"3a71b18c_265898fa","updated":"2016-12-02 12:22:44.000000000","message":"I agree. I\u0027ll rework this now, based on https://review.openstack.org/#/c/385022/7/nova/tests/unit/objects/test_instance_numa_topology.py","commit_id":"93fa7fb5aa251374622d63f927794e697fa6fef3"}]}
