)]}'
{"nova/objects/instance_numa_topology.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"c35cfecdbfb4d800ec21bfdedbb08c510193a911","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":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def pin(self, vcpu, pcpu):"},{"line_number":116,"context_line":"        if vcpu not in self.cpuset:"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a740942_0c81088f","line":113,"range":{"start_line":113,"start_character":16,"end_line":113,"end_character":74},"updated":"2015-12-08 15:23:09.000000000","message":"Maybe it would make sense to keep checking for both to avoid nasty \u0027NoneType has no attribute... \u0027 surprises","commit_id":"e8d6b8edfcdbddcc83b67594a746b44c54f937d9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a5e3b4c6a0c9a3908fa079bb2229b2d1768ae862","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":"        return self.cpu_policy \u003d\u003d obj_fields.CPUAllocationPolicy.DEDICATED"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def pin(self, vcpu, pcpu):"},{"line_number":116,"context_line":"        if vcpu not in self.cpuset:"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a740942_ed759363","line":113,"in_reply_to":"7a740942_0c81088f","updated":"2015-12-08 16:35:27.000000000","message":"I don\u0027t think it\u0027s possible that we could have cpu_policy set and cpu_pinning unset? If it is, we should probably have a test for that","commit_id":"e8d6b8edfcdbddcc83b67594a746b44c54f937d9"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"39a26b9b59a87316f9ec9a33a0c17ac9df8ab3ab","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        return list(map(set, zip(*[iter(cpu_list)] * threads)))"},{"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":"        return self.cpu_pinning is not None"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def pin(self, vcpu, pcpu):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a7b0d38_ff93c74d","side":"PARENT","line":112,"updated":"2015-12-22 16:03:41.000000000","message":"nit: Hum this should need to be renamed, cpu_policy dedicated does not necessary means \"pinning requested\".","commit_id":"4fbfe86da9dde9a64732e0a4ddf1ec89bc1f5e64"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"a05d3e89c96c22dc82b2df5bfbcc41162d148f4f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        return list(map(set, zip(*[iter(cpu_list)] * threads)))"},{"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":"        return self.cpu_pinning is not None"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def pin(self, vcpu, pcpu):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1a7b0d38_57175fed","side":"PARENT","line":112,"in_reply_to":"1a7b0d38_ff93c74d","updated":"2015-12-22 17:47:56.000000000","message":"When does a dedicated cpu policy not mean pinning requested?","commit_id":"4fbfe86da9dde9a64732e0a4ddf1ec89bc1f5e64"}],"nova/virt/hardware.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"13eabaf0a07aec5229d43841e56bf170b8806779","unresolved":false,"context_lines":[{"line_number":1001,"context_line":""},{"line_number":1002,"context_line":"    if numa_topology:"},{"line_number":1003,"context_line":"        for cell in numa_topology.cells:"},{"line_number":1004,"context_line":"            cell.cpu_policy \u003d cpu_policy"},{"line_number":1005,"context_line":"            cell.cpu_threads_policy \u003d cpu_threads_policy"},{"line_number":1006,"context_line":"    else:"},{"line_number":1007,"context_line":"        single_cell \u003d objects.InstanceNUMACell("}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_9cad0587","line":1004,"updated":"2015-07-29 22:56:12.000000000","message":"Might be worth doing \"cell.cpu_policy \u003d \u0027dedicated\u0027\" here and the equivalent below to make it clear what\u0027s going on.  Otherwise someone could miss the fact that we exit earlier for the \"shared\" case.","commit_id":"4c2a2b454999abb8935a301ada41b81c8da935e6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eee402e5cd7322788e546703ab5b23c66fb0aab2","unresolved":false,"context_lines":[{"line_number":1001,"context_line":""},{"line_number":1002,"context_line":"    if numa_topology:"},{"line_number":1003,"context_line":"        for cell in numa_topology.cells:"},{"line_number":1004,"context_line":"            cell.cpu_policy \u003d cpu_policy"},{"line_number":1005,"context_line":"            cell.cpu_threads_policy \u003d cpu_threads_policy"},{"line_number":1006,"context_line":"    else:"},{"line_number":1007,"context_line":"        single_cell \u003d objects.InstanceNUMACell("}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_c335d6db","line":1004,"in_reply_to":"3a50d1a3_9cad0587","updated":"2015-07-30 10:38:41.000000000","message":"Agreed.","commit_id":"4c2a2b454999abb8935a301ada41b81c8da935e6"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"c35cfecdbfb4d800ec21bfdedbb08c510193a911","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"        # TODO(sfinucan) Instead of using the \"magic\" described above, make use"},{"line_number":1049,"context_line":"        # of the \u0027InstanceNUMACell.cpu_policy\u0027 parameter"},{"line_number":1050,"context_line":"        for cell in numa_topology.cells:"},{"line_number":1051,"context_line":"            cell.cpu_pinning \u003d {}"},{"line_number":1052,"context_line":"            cell.cpu_thread_policy \u003d cpu_thread_policy"},{"line_number":1053,"context_line":"        return numa_topology"},{"line_number":1054,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a740942_6771c575","side":"PARENT","line":1051,"range":{"start_line":1051,"start_character":12,"end_line":1051,"end_character":33},"updated":"2015-12-08 15:23:09.000000000","message":"Do we maybe want to leave this just in case - it\u0027s explicit and doesn\u0027t hurt really","commit_id":"5f8a9dfc8c540439dd67167b811ac6322c694f88"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a5e3b4c6a0c9a3908fa079bb2229b2d1768ae862","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"        # TODO(sfinucan) Instead of using the \"magic\" described above, make use"},{"line_number":1049,"context_line":"        # of the \u0027InstanceNUMACell.cpu_policy\u0027 parameter"},{"line_number":1050,"context_line":"        for cell in numa_topology.cells:"},{"line_number":1051,"context_line":"            cell.cpu_pinning \u003d {}"},{"line_number":1052,"context_line":"            cell.cpu_thread_policy \u003d cpu_thread_policy"},{"line_number":1053,"context_line":"        return numa_topology"},{"line_number":1054,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a740942_0d949f40","side":"PARENT","line":1051,"in_reply_to":"7a740942_6771c575","updated":"2015-12-08 16:35:27.000000000","message":"True. Seems a bit wasteful to have code that doesn\u0027t do anything, though. What kind of issues could occur by dropping this, I wonder?","commit_id":"5f8a9dfc8c540439dd67167b811ac6322c694f88"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"c35cfecdbfb4d800ec21bfdedbb08c510193a911","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"def _add_cpu_pinning_constraint(flavor, image_meta, numa_topology):"},{"line_number":1014,"context_line":"    flavor_policy \u003d flavor.get(\u0027extra_specs\u0027, {}).get(\u0027hw:cpu_policy\u0027)"},{"line_number":1015,"context_line":"    image_policy \u003d image_meta.properties.get(\u0027hw_cpu_policy\u0027)"},{"line_number":1016,"context_line":"    if flavor_policy \u003d\u003d cpu_policies.DEDICATED:"},{"line_number":1017,"context_line":"        cpu_policy \u003d flavor_policy"},{"line_number":1018,"context_line":"    elif flavor_policy \u003d\u003d cpu_policies.SHARED:"},{"line_number":1019,"context_line":"        if image_policy \u003d\u003d cpu_policies.DEDICATED:"},{"line_number":1020,"context_line":"            raise exception.ImageCPUPinningForbidden()"},{"line_number":1021,"context_line":"        cpu_policy \u003d flavor_policy"},{"line_number":1022,"context_line":"    elif image_policy \u003d\u003d cpu_policies.DEDICATED:"},{"line_number":1023,"context_line":"        cpu_policy \u003d image_policy"},{"line_number":1024,"context_line":"    else:"},{"line_number":1025,"context_line":"        cpu_policy \u003d cpu_policies.SHARED"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"    if is_realtime_enabled(flavor) and cpu_policy !\u003d cpu_policies.DEDICATED:"},{"line_number":1028,"context_line":"        raise exception.RealtimeConfigurationInvalid()"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a740942_ac70f4a4","line":1025,"range":{"start_line":1016,"start_character":4,"end_line":1025,"end_character":40},"updated":"2015-12-08 15:23:09.000000000","message":"This is convoluted enough to make me think that we need a cleaner way to express this. Maybe have local objects with knowledge of ordering so we just make sure that flavor_policy \u003e\u003d image policy and we\u0027re done?","commit_id":"e8d6b8edfcdbddcc83b67594a746b44c54f937d9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a5e3b4c6a0c9a3908fa079bb2229b2d1768ae862","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"    elif image_policy \u003d\u003d cpu_policies.DEDICATED:"},{"line_number":1023,"context_line":"        cpu_policy \u003d image_policy"},{"line_number":1024,"context_line":"    else:"},{"line_number":1025,"context_line":"        cpu_policy \u003d cpu_policies.SHARED"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"    if is_realtime_enabled(flavor) and cpu_policy !\u003d cpu_policies.DEDICATED:"},{"line_number":1028,"context_line":"        raise exception.RealtimeConfigurationInvalid()"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a740942_4d9b8766","line":1025,"in_reply_to":"7a740942_ac70f4a4","updated":"2015-12-08 16:35:27.000000000","message":"True. Follow up commit though?","commit_id":"e8d6b8edfcdbddcc83b67594a746b44c54f937d9"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"38fa57372cf1a6b8dbf83b7fa87abf0f28b86741","unresolved":false,"context_lines":[{"line_number":1271,"context_line":"            # Remove when request_spec is a proper object itself!"},{"line_number":1272,"context_line":"            dict_cells \u003d instance_numa_topology.get(\u0027cells\u0027)"},{"line_number":1273,"context_line":"            if dict_cells:"},{"line_number":1274,"context_line":"                cells \u003d [objects.InstanceNUMACell("},{"line_number":1275,"context_line":"                    id\u003dcell[\u0027id\u0027],"},{"line_number":1276,"context_line":"                    cpuset\u003dset(cell[\u0027cpuset\u0027]),"},{"line_number":1277,"context_line":"                    memory\u003dcell[\u0027memory\u0027],"},{"line_number":1278,"context_line":"                    pagesize\u003dcell.get(\u0027pagesize\u0027),"},{"line_number":1279,"context_line":"                    cpu_pinning\u003dcell.get(\u0027cpu_pinning_raw\u0027))"},{"line_number":1280,"context_line":"                         for cell in dict_cells]"},{"line_number":1281,"context_line":"                instance_numa_topology \u003d objects.InstanceNUMATopology("},{"line_number":1282,"context_line":"                    cells\u003dcells)"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a740942_27e09d95","line":1279,"range":{"start_line":1274,"start_character":25,"end_line":1279,"end_character":60},"updated":"2015-12-08 15:28:44.000000000","message":"We need to update this call too sadly otherwise the scheduler might not get the data properly.","commit_id":"e8d6b8edfcdbddcc83b67594a746b44c54f937d9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a5e3b4c6a0c9a3908fa079bb2229b2d1768ae862","unresolved":false,"context_lines":[{"line_number":1276,"context_line":"                    cpuset\u003dset(cell[\u0027cpuset\u0027]),"},{"line_number":1277,"context_line":"                    memory\u003dcell[\u0027memory\u0027],"},{"line_number":1278,"context_line":"                    pagesize\u003dcell.get(\u0027pagesize\u0027),"},{"line_number":1279,"context_line":"                    cpu_pinning\u003dcell.get(\u0027cpu_pinning_raw\u0027))"},{"line_number":1280,"context_line":"                         for cell in dict_cells]"},{"line_number":1281,"context_line":"                instance_numa_topology \u003d objects.InstanceNUMATopology("},{"line_number":1282,"context_line":"                    cells\u003dcells)"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a740942_2d815bfb","line":1279,"in_reply_to":"7a740942_27e09d95","updated":"2015-12-08 16:35:27.000000000","message":"Done","commit_id":"e8d6b8edfcdbddcc83b67594a746b44c54f937d9"}]}
