)]}'
{"nova/objects/fields.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f93017e29a57edb916f5b1df98e7bcc47c16f5da","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    # isolate: Emulator threads are isolated on a single pCPU."},{"line_number":186,"context_line":"    ISOLATE \u003d \"isolate\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    ALL \u003d (SHARED, ISOLATE)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"class CPUMode(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_8e94dae2","line":188,"updated":"2016-12-02 16:20:05.000000000","message":"Let\u0027s be consistent in the conjugation of the words here. It should be \"SHARE\" and \"ISOLATE\" or \"SHARED\" and \"ISOLATED\".\n\nI prefer \"SHARE\" and \"ISOLATE\" because policy typically describes an action, and share/isolate are actions.","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"79afe73fcc6ba8064851d86215c18896b8915cdd","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    # isolate: Emulator threads are isolated on a single pCPU."},{"line_number":186,"context_line":"    ISOLATE \u003d \"isolate\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    ALL \u003d (SHARED, ISOLATE)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"class CPUMode(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_da29288b","line":188,"in_reply_to":"3a71b18c_8e94dae2","updated":"2016-12-05 11:08:36.000000000","message":"Yes I saw that when i have added these fields I don\u0027t know why i did not have corrected this mistake...","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"}],"nova/objects/instance_numa_topology.py":[{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"2d6a6583850e24ff4072a935e121c8c41bedbfae","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \u0027id\u0027: obj_fields.IntegerField(),"},{"line_number":150,"context_line":"        \u0027instance_uuid\u0027: obj_fields.UUIDField(),"},{"line_number":151,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":152,"context_line":"        \u0027cpu_emulator_threads_policy\u0027: ("},{"line_number":153,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField("},{"line_number":154,"context_line":"                nullable\u003dTrue)),"},{"line_number":155,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_31944d36","line":152,"range":{"start_line":152,"start_character":9,"end_line":152,"end_character":36},"updated":"2016-10-27 01:38:18.000000000","message":"Don\u0027t you need to make the object compatible to 1.2 version as well?\n\nadd a obj_make_compatible method and \nif target_version \u003c (1, 3) and \u0027cpu_emulator_threads_policy\u0027 in primitive:\n            del primitive[\u0027cpu_emulator_threads_policy\u0027]\n\nor do you think it\u0027s not needed here?","commit_id":"b2ea6e29856f45218d74f49621efd979ba43eea0"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ce2df8c3eaf68f1081e8fd39ef7dedf089ced049","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \u0027id\u0027: obj_fields.IntegerField(),"},{"line_number":150,"context_line":"        \u0027instance_uuid\u0027: obj_fields.UUIDField(),"},{"line_number":151,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":152,"context_line":"        \u0027cpu_emulator_threads_policy\u0027: ("},{"line_number":153,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField("},{"line_number":154,"context_line":"                nullable\u003dTrue)),"},{"line_number":155,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_144730bc","line":152,"in_reply_to":"ba5da102_31944d36","updated":"2016-10-27 10:18:55.000000000","message":"This object is going to be stored in JSON it does not directly pass to the \"wire\" but it still something we should do to avoid any problem when deserialize on a old compute node (case of a migration I guess)\n\nLet me try to add that part.\n\nThanks","commit_id":"b2ea6e29856f45218d74f49621efd979ba43eea0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"084c0c0cc4e468464107831e0d70eacc3da13f2b","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    # Version 1.2: InstanceNUMACell 1.2"},{"line_number":143,"context_line":"    # Version 1.3: Add cpu emulator threads policy"},{"line_number":144,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":147,"context_line":"        super(InstanceNUMATopology, self).obj_make_compatible(primitive,"},{"line_number":148,"context_line":"                                                        target_version)"},{"line_number":149,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":150,"context_line":"        if target_version \u003c (1, 3):"},{"line_number":151,"context_line":"            primitive.pop(\u0027cpu_emulator_threads_policy\u0027, None)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    fields \u003d {"},{"line_number":154,"context_line":"        # NOTE(danms): The \u0027id\u0027 field is no longer used and should be"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_6f0eda35","line":151,"range":{"start_line":145,"start_character":0,"end_line":151,"end_character":62},"updated":"2016-11-23 11:52:15.000000000","message":"Could you put this below fields - class variables first, then functions","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5b76ee7e063ff0108da57ba262def34127fc0a52","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                                        target_version)"},{"line_number":149,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":150,"context_line":"        if target_version \u003c (1, 3):"},{"line_number":151,"context_line":"            primitive.pop(\u0027cpu_emulator_threads_policy\u0027, None)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    fields \u003d {"},{"line_number":154,"context_line":"        # NOTE(danms): The \u0027id\u0027 field is no longer used and should be"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_7f9f6303","line":151,"in_reply_to":"5a74a57a_6f0eda35","updated":"2016-11-23 14:57:13.000000000","message":"We don\u0027t have any rules like that. Your complain is based on developer preferences. I can see a good reason to keep it like that, so developers who are going to change the version can see that method to make object compatible.\n\nAlso you can see InstanceNUMACell with the same structure.","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b9a955169d6decbbcd5ecf68e5391aacbacc3d88","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                                        target_version)"},{"line_number":149,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":150,"context_line":"        if target_version \u003c (1, 3):"},{"line_number":151,"context_line":"            primitive.pop(\u0027cpu_emulator_threads_policy\u0027, None)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    fields \u003d {"},{"line_number":154,"context_line":"        # NOTE(danms): The \u0027id\u0027 field is no longer used and should be"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_0259b45a","line":151,"in_reply_to":"5a74a57a_7f9f6303","updated":"2016-11-23 15:07:54.000000000","message":"Yup, saw that in a follow-up patch. You can ignore this.","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"084c0c0cc4e468464107831e0d70eacc3da13f2b","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        \u0027id\u0027: obj_fields.IntegerField(),"},{"line_number":157,"context_line":"        \u0027instance_uuid\u0027: obj_fields.UUIDField(),"},{"line_number":158,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":159,"context_line":"        \u0027cpu_emulator_threads_policy\u0027: ("},{"line_number":160,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField("},{"line_number":161,"context_line":"                nullable\u003dTrue)),"},{"line_number":162,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_cf4b6e58","line":159,"range":{"start_line":159,"start_character":9,"end_line":159,"end_character":36},"updated":"2016-11-23 11:52:15.000000000","message":"This seems overly verbose - could we not call this \u0027emulator_threads_policy\u0027?","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5b76ee7e063ff0108da57ba262def34127fc0a52","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        \u0027id\u0027: obj_fields.IntegerField(),"},{"line_number":157,"context_line":"        \u0027instance_uuid\u0027: obj_fields.UUIDField(),"},{"line_number":158,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":159,"context_line":"        \u0027cpu_emulator_threads_policy\u0027: ("},{"line_number":160,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField("},{"line_number":161,"context_line":"                nullable\u003dTrue)),"},{"line_number":162,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_c2a33c9d","line":159,"in_reply_to":"5a74a57a_cf4b6e58","updated":"2016-11-23 14:57:13.000000000","message":"I guess we can do that yes","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"084c0c0cc4e468464107831e0d70eacc3da13f2b","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        \u0027instance_uuid\u0027: obj_fields.UUIDField(),"},{"line_number":158,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":159,"context_line":"        \u0027cpu_emulator_threads_policy\u0027: ("},{"line_number":160,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField("},{"line_number":161,"context_line":"                nullable\u003dTrue)),"},{"line_number":162,"context_line":"        }"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_0f4d6672","line":161,"range":{"start_line":160,"start_character":12,"end_line":161,"end_character":32},"updated":"2016-11-23 11:52:15.000000000","message":"nit: can this fit on one line?","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"084c0c0cc4e468464107831e0d70eacc3da13f2b","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            cell.clear_host_pinning()"},{"line_number":240,"context_line":"        return self"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def is_emulator_threads_shared(self):"},{"line_number":243,"context_line":"        return (not self.obj_attr_is_set(\u0027cpu_emulator_threads_policy\u0027)"},{"line_number":244,"context_line":"                or (self.cpu_emulator_threads_policy"},{"line_number":245,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_6f817a4a","line":242,"range":{"start_line":242,"start_character":4,"end_line":242,"end_character":41},"updated":"2016-11-23 11:52:15.000000000","message":"Nice idea. Let\u0027s make this a property though (@property).\n\nAlso, note that you didn\u0027t call it \u0027is_cpu_emulator_threads_shared\u0027. This suggest, to me, that dropping the \u0027cpu_\u0027 prefix would be a good idea","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5b76ee7e063ff0108da57ba262def34127fc0a52","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            cell.clear_host_pinning()"},{"line_number":240,"context_line":"        return self"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def is_emulator_threads_shared(self):"},{"line_number":243,"context_line":"        return (not self.obj_attr_is_set(\u0027cpu_emulator_threads_policy\u0027)"},{"line_number":244,"context_line":"                or (self.cpu_emulator_threads_policy"},{"line_number":245,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_df74f7d0","line":242,"in_reply_to":"5a74a57a_6f817a4a","updated":"2016-11-23 14:57:13.000000000","message":"I\u0027m not agree, It\u0027s not a property, it\u0027s a method which returns whether the emulator threads are shared across pCPUs used for guest or not.","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b9a955169d6decbbcd5ecf68e5391aacbacc3d88","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            cell.clear_host_pinning()"},{"line_number":240,"context_line":"        return self"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def is_emulator_threads_shared(self):"},{"line_number":243,"context_line":"        return (not self.obj_attr_is_set(\u0027cpu_emulator_threads_policy\u0027)"},{"line_number":244,"context_line":"                or (self.cpu_emulator_threads_policy"},{"line_number":245,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_8d09752f","line":242,"in_reply_to":"5a74a57a_df74f7d0","updated":"2016-11-23 15:07:54.000000000","message":"\u003e which returns whether the emulator threads are shared across pCPUs used for guest or not.\n\nThe shared/non-shared nature of the cell\u0027s emulator threads sounds like an attribute, a.k.a. property, of the cell to me :)","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"084c0c0cc4e468464107831e0d70eacc3da13f2b","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        return (not self.obj_attr_is_set(\u0027cpu_emulator_threads_policy\u0027)"},{"line_number":244,"context_line":"                or (self.cpu_emulator_threads_policy"},{"line_number":245,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def is_emulator_threads_isolate(self):"},{"line_number":248,"context_line":"        return not self.is_emulator_threads_shared()"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_6f5dfae8","line":248,"range":{"start_line":246,"start_character":0,"end_line":248,"end_character":52},"updated":"2016-11-23 11:52:15.000000000","message":"This seems gratuitous - just check `not topology.is_emulator_threads_shared` instead?","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2f8e48504da8c0c9f0bcfe3face60418cb1c72f4","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        \u0027id\u0027: obj_fields.IntegerField(),"},{"line_number":157,"context_line":"        \u0027instance_uuid\u0027: obj_fields.UUIDField(),"},{"line_number":158,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":159,"context_line":"        \u0027emulator_threads_policy\u0027: ("},{"line_number":160,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField(nullable\u003dTrue)),"},{"line_number":161,"context_line":"        }"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_80c4f340","line":160,"range":{"start_line":159,"start_character":0,"end_line":160,"end_character":69},"updated":"2016-12-01 12:27:11.000000000","message":"So looking at this with fresh eyes, there are a couple of arguments for and against this. On the \"for\" front, it provides a consistent way to get the policy, which is similar to what we do for \u0027cpu_policy\u0027 and \u0027cpu_thread_policy\u0027. On the \"against\" front, dansmith suggested in the spec review [1] (correctly, IMO) that this could be easily calculated at run time by looking at the images. In addition, you\u0027re storing this on \u0027InstanceNUMATopology\u0027 rather than \u0027InstanceNUMACell\u0027 like the CPU fields. This is arguably more \"correct\", but if consistency is really your goal, perhaps we should be using \u0027InstanceNUMACell\u0027 once again.\n\n[1] https://review.openstack.org/#/c/284094/8/specs/ocata/approved/libvirt-emulator-threads-policy.rst@141","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f93017e29a57edb916f5b1df98e7bcc47c16f5da","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        \u0027id\u0027: obj_fields.IntegerField(),"},{"line_number":157,"context_line":"        \u0027instance_uuid\u0027: obj_fields.UUIDField(),"},{"line_number":158,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":159,"context_line":"        \u0027emulator_threads_policy\u0027: ("},{"line_number":160,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField(nullable\u003dTrue)),"},{"line_number":161,"context_line":"        }"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_897854f4","line":160,"range":{"start_line":159,"start_character":0,"end_line":160,"end_character":69},"in_reply_to":"3a71b18c_80c4f340","updated":"2016-12-02 16:20:05.000000000","message":"@sfinucan: actually, I think the InstanceNUMATopology object is the correct place for this attribute. After all, the emulator threads policy is not specific to a NUMA cell, but rather specific to the instance itself in relation to its NUMA layout.","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9502f78adbaa2fe97af52d98c2faa1838515c3dc","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        \u0027id\u0027: obj_fields.IntegerField(),"},{"line_number":157,"context_line":"        \u0027instance_uuid\u0027: obj_fields.UUIDField(),"},{"line_number":158,"context_line":"        \u0027cells\u0027: obj_fields.ListOfObjectsField(\u0027InstanceNUMACell\u0027),"},{"line_number":159,"context_line":"        \u0027emulator_threads_policy\u0027: ("},{"line_number":160,"context_line":"            obj_fields.CPUEmulatorThreadsPolicyField(nullable\u003dTrue)),"},{"line_number":161,"context_line":"        }"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_eaa26198","line":160,"range":{"start_line":159,"start_character":0,"end_line":160,"end_character":69},"in_reply_to":"3a71b18c_897854f4","updated":"2016-12-05 12:17:12.000000000","message":"Right you are. In hindsight, we should have defined cpu_policy and cpu_thread_policy here. What are your thoughts on not defining the field at all though, and instead retrieving it from flavor/image metadata when we need it at scheduling time (i.e. dansmith\u0027s comments)?","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f93017e29a57edb916f5b1df98e7bcc47c16f5da","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def is_emulator_threads_isolate(self):"},{"line_number":247,"context_line":"        return not self.is_emulator_threads_shared()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_098444d2","line":247,"updated":"2016-12-02 16:20:05.000000000","message":"Kind of following up on the previous comment about being consistent about \"share\" and \"isolate\", I think a more readable approach to this here is to have a single method:\n\n should_share_emulator_threads(self):\n     return (not self.obj_attr_is_set(\u0027emulator_threads_policy\u0027)\n             or self.emulator_threads_policy \u003d\u003d\n                obj_fields.CPUEmulatorThreadsPolicy.SHARE)\n\nNo need for the other function, IMHO.","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"79afe73fcc6ba8064851d86215c18896b8915cdd","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def is_emulator_threads_isolate(self):"},{"line_number":247,"context_line":"        return not self.is_emulator_threads_shared()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_dcfbb3bf","line":247,"in_reply_to":"3a71b18c_098444d2","updated":"2016-12-05 11:08:36.000000000","message":"Yes, in the next patches I actually use only one of them","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"706870c90b0d91e688476bd39b4f61732f499639","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def is_emulator_threads_isolate(self):"},{"line_number":247,"context_line":"        return not self.is_emulator_threads_shared()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_ab05c17a","line":247,"in_reply_to":"3a71b18c_2bfb71c2","updated":"2016-12-05 16:36:48.000000000","message":"I guess it would look like this?\n\n    @property\n    def isolate_emulator_threads(self):\n        return (self.obj_attr_is_set(\u0027emulator_threads_policy\u0027)\n                and(self.emulator_threads_policy\n                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.ISOLATE))","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"26f1edafb996481eee4edda39cdcb23fe0350db3","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def is_emulator_threads_isolate(self):"},{"line_number":247,"context_line":"        return not self.is_emulator_threads_shared()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_2bfb71c2","line":247,"in_reply_to":"3a71b18c_8afc8d73","updated":"2016-12-05 16:33:14.000000000","message":"This looks like a property so we don\u0027t know if we can or not set something to it.\n\nThe property is \u0027emulator_threads_policy\u0027 we need a helper method to determine whether or not we request an isolated/shared topology based on this property.\n\n  is_isolated_emulator_threads() or something...","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e6aa60c82be2f8a265cda86e3a06181ae8cbae9b","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def is_emulator_threads_isolate(self):"},{"line_number":247,"context_line":"        return not self.is_emulator_threads_shared()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_2e437f43","line":247,"in_reply_to":"3a71b18c_ab05c17a","updated":"2016-12-05 16:44:41.000000000","message":"I\u0027d say no for the reasons I have indicated above.","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f3d272c2475d7bbc028c952af1fd8d20ff672240","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def is_emulator_threads_isolate(self):"},{"line_number":247,"context_line":"        return not self.is_emulator_threads_shared()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_fc7b0f26","line":247,"in_reply_to":"3a71b18c_dcfbb3bf","updated":"2016-12-05 11:12:42.000000000","message":"Hum thinking a little more, what about \u0027should_isolate_emulator_threads\u0027 so we highlight that particular case","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9502f78adbaa2fe97af52d98c2faa1838515c3dc","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                    \u003d\u003d obj_fields.CPUEmulatorThreadsPolicy.SHARED))"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def is_emulator_threads_isolate(self):"},{"line_number":247,"context_line":"        return not self.is_emulator_threads_shared()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_8afc8d73","line":247,"in_reply_to":"3a71b18c_fc7b0f26","updated":"2016-12-05 12:17:12.000000000","message":"+1. Maybe drop the \u0027should_\u0027 prefix too?\n\n   \u003e\u003e\u003e X.isolate_emulator_threads\n   False\n\n...makes sense","commit_id":"6f5aa966370362ead355dcd26c6285d78490705f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92fbbcf81d2cfc138cc5360db700fb959ef8555e","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            cell.clear_host_pinning()"},{"line_number":239,"context_line":"        return self"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def is_isolated_emulator_threads(self):"},{"line_number":242,"context_line":"        \"\"\"Determines whether emulator threads should be isolated\"\"\""},{"line_number":243,"context_line":"        return (self.obj_attr_is_set(\u0027emulator_threads_policy\u0027)"},{"line_number":244,"context_line":"                and (self.emulator_threads_policy"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_ce0a0b8a","line":241,"range":{"start_line":241,"start_character":4,"end_line":241,"end_character":43},"updated":"2016-12-05 16:58:19.000000000","message":"I still think this looks like a \u0027@property\u0027. Maybe rename it slightly to allay the \"someone might try setting this\" concerns.\n\n    @property\n    def emulator_threads_isolated(self):\n        ...\n\nThis is bikeshedding though, so I won\u0027t block on it","commit_id":"9ce385da085ab42aefe53490929a542e085dccf9"}],"nova/tests/unit/objects/test_instance_numa_topology.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"084c0c0cc4e468464107831e0d70eacc3da13f2b","unresolved":false,"context_lines":[{"line_number":175,"context_line":"          fields.CPUEmulatorThreadsPolicy.ISOLATE"},{"line_number":176,"context_line":"        self.assertFalse(topo_obj.is_emulator_threads_shared())"},{"line_number":177,"context_line":"        self.assertTrue(topo_obj.is_emulator_threads_isolate())"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"class TestInstanceNUMATopology(test_objects._LocalTest,"},{"line_number":181,"context_line":"                               _TestInstanceNUMATopology):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_6f87ba0f","line":178,"updated":"2016-11-23 11:52:15.000000000","message":"We need a test for the \u0027make_compatible\u0027 function","commit_id":"1aa1b9b0f93254d351de40edfc4e67e5a58344c3"}]}
