)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea18eeaaf1f66dcd7eeebbb5f5877fdba21cb189","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jonte Watford \u003cjonte.watford@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-09-12 17:45:27 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Modified version of 0027-Numa-object-string-representations.patch"},{"line_number":8,"context_line":"with some updates from the current numa files for nova:"},{"line_number":9,"context_line":"numa.py"},{"line_number":10,"context_line":"instance_numa_topology.py"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This commit adds __str__ and __repr__ methods to objects"},{"line_number":13,"context_line":"InstanceNUMACell"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f79a3b5_abda3d1a","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":25},"updated":"2018-09-12 21:31:32.000000000","message":"Let\u0027s try a more meaningful commit message: I have no idea what this patch that you speak of is :)\n\n  objects: Add \u0027__str__\u0027, \u0027__repr__\u0027 methods to InstanceNUMACell and NUMACell","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea18eeaaf1f66dcd7eeebbb5f5877fdba21cb189","unresolved":false,"context_lines":[{"line_number":19,"context_line":"may print one line of output per numa cell. This was deliberate for"},{"line_number":20,"context_line":"resource tracking debug log enhancments (CONF.compute_resource_debug)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Remove comment tags"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Removed references to R4/R5 and more...on commit message"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Removed L3, physnode, and Shared_vcpu related code"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Performed a diff with the master code to determine what sections of"},{"line_number":29,"context_line":"code were not compatible and removed the functions involved."},{"line_number":30,"context_line":"See commit history for more information on removed code."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Fixed py27 formating Error"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Fixed formating around string variables to pass py27 tox requirements."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Change-Id: I80b6cc4b525b244440cc56a5e97585d3f038b882"},{"line_number":37,"context_line":"Implements: Improve Scheduler Logging"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f79a3b5_ab031d76","line":34,"range":{"start_line":22,"start_character":0,"end_line":34,"end_character":70},"updated":"2018-09-12 21:31:32.000000000","message":"None of this seems to apply. Can you drop it?","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea18eeaaf1f66dcd7eeebbb5f5877fdba21cb189","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Fixed formating around string variables to pass py27 tox requirements."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Change-Id: I80b6cc4b525b244440cc56a5e97585d3f038b882"},{"line_number":37,"context_line":"Implements: Improve Scheduler Logging"},{"line_number":38,"context_line":"Partial-Bug: 1787298"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f79a3b5_2bce2d5b","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":37},"updated":"2018-09-12 21:31:32.000000000","message":"I don\u0027t think this is a valid blueprint? If not, drop this line","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jonte Watford \u003cjonte.watford@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-09-24 17:29:09 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Modified version of 0027-Numa-object-string-representations.patch"},{"line_number":8,"context_line":"with some updates from the current numa files for nova:"},{"line_number":9,"context_line":"numa.py"},{"line_number":10,"context_line":"instance_numa_topology.py"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This commit adds __str__ and __repr__ methods to objects"},{"line_number":13,"context_line":"InstanceNUMACell"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f79a3b5_b8094a2c","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":25},"updated":"2018-09-25 09:30:05.000000000","message":"As noted in PS4, this makes no sense to me. Please rework this , noting the guidelines in [1].\n\n[1] https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"5d61dc451cd614dd053eb2854564f8faa73e418e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"resource tracking debug log enhancments (CONF.compute_resource_debug)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I80b6cc4b525b244440cc56a5e97585d3f038b882"},{"line_number":23,"context_line":"Implements: Improve Scheduler Logging"},{"line_number":24,"context_line":"Partial-Bug: 1787298"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f79a3b5_13961ff1","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":37},"updated":"2018-09-25 11:14:21.000000000","message":"put a valid blueprint there or remove this.","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":23204,"name":"Jonte Watford","email":"jonte.watford@intel.com","username":"jwatford"},"change_message_id":"dca1c7063efbee715877e9e46f5660385fdce318","unresolved":false,"context_lines":[{"line_number":20,"context_line":"resource tracking debug log enhancments (CONF.compute_resource_debug)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I80b6cc4b525b244440cc56a5e97585d3f038b882"},{"line_number":23,"context_line":"Implements: Improve Scheduler Logging"},{"line_number":24,"context_line":"Partial-Bug: 1787298"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f79a3b5_9eb8ef11","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":37},"in_reply_to":"3f79a3b5_13961ff1","updated":"2018-09-25 21:51:04.000000000","message":"https://blueprints.launchpad.net/nova/+spec/improve-sched-logging","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"2fa86e4236b8cd954b57aef80efc5d9a3221c772","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jonte Watford \u003cjonte.watford@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-09-25 11:52:11 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"This commit adds __str__  method to objects InstanceNUMACell"},{"line_number":8,"context_line":"and NUMACell. These will generate more readable representations"},{"line_number":9,"context_line":"of the objects for use in logs."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The __str__ method has lots of newlines (i.e., per field). This"},{"line_number":12,"context_line":"was deliberate for resource tracking debug log enhancments"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_91153d40","line":9,"range":{"start_line":7,"start_character":0,"end_line":9,"end_character":31},"updated":"2018-09-25 19:11:26.000000000","message":"The commit message is not in the right format. Please read through https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure\n\nand look at other merged commits as examples.\n\u003cshort title\u003e\n\u003c\u003d\u003d insert one blank line\n\u003cdescriptions\u003e\n.....","commit_id":"1536b45deed903c6377d44d68ed8355de6d7fb9b"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"51d504baae309d6c2e3673701e044d7a36fa61d6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jonte Watford \u003cjonte.watford@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-09-25 12:52:13 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add __str__  method to objects NUMACell instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This will generate more readable representations of the objects for"},{"line_number":10,"context_line":"use in logs. The __str__ method has lots of newlines (i.e., per"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_67bb030f","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":49},"updated":"2018-09-25 20:40:47.000000000","message":"This is not accurate since you are adding __str__ to InstanceNUMACell and NUMATopology objects as well. The subject could be a bit generic like \"NumaCell related objects\".","commit_id":"3c4134ee9ff3e2b42d54be1aa0a46d734e391c7f"},{"author":{"_account_id":23204,"name":"Jonte Watford","email":"jonte.watford@intel.com","username":"jwatford"},"change_message_id":"dca1c7063efbee715877e9e46f5660385fdce318","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jonte Watford \u003cjonte.watford@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-09-25 12:52:13 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add __str__  method to objects NUMACell instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This will generate more readable representations of the objects for"},{"line_number":10,"context_line":"use in logs. The __str__ method has lots of newlines (i.e., per"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_4a328e11","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":49},"in_reply_to":"3f79a3b5_67bb030f","updated":"2018-09-25 21:51:04.000000000","message":"Done","commit_id":"3c4134ee9ff3e2b42d54be1aa0a46d734e391c7f"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"5309f1ea87d4bfeba586514055440619bcf48428","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This will generate more readable representations of the objects for"},{"line_number":10,"context_line":"use in logs. The __str__ method has lots of newlines (i.e., per"},{"line_number":11,"context_line":"field). This was deliberate for resource tracking debug log"},{"line_number":12,"context_line":"enhancments (CONF.compute_resource_debug)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I80b6cc4b525b244440cc56a5e97585d3f038b882"},{"line_number":15,"context_line":"Implements: blueprint improve-sched-logging"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_2a24f2b1","line":12,"range":{"start_line":12,"start_character":13,"end_line":12,"end_character":40},"updated":"2018-09-25 21:05:52.000000000","message":"this is an internal thing that does not exist in nova.","commit_id":"3c4134ee9ff3e2b42d54be1aa0a46d734e391c7f"},{"author":{"_account_id":23204,"name":"Jonte Watford","email":"jonte.watford@intel.com","username":"jwatford"},"change_message_id":"dca1c7063efbee715877e9e46f5660385fdce318","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This will generate more readable representations of the objects for"},{"line_number":10,"context_line":"use in logs. The __str__ method has lots of newlines (i.e., per"},{"line_number":11,"context_line":"field). This was deliberate for resource tracking debug log"},{"line_number":12,"context_line":"enhancments (CONF.compute_resource_debug)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I80b6cc4b525b244440cc56a5e97585d3f038b882"},{"line_number":15,"context_line":"Implements: blueprint improve-sched-logging"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_ea36fa02","line":12,"range":{"start_line":12,"start_character":13,"end_line":12,"end_character":40},"in_reply_to":"3f79a3b5_2a24f2b1","updated":"2018-09-25 21:51:04.000000000","message":"removed","commit_id":"3c4134ee9ff3e2b42d54be1aa0a46d734e391c7f"}],"nova/objects/instance_numa_topology.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_config import cfg"},{"line_number":17,"context_line":"from oslo_serialization import jsonutils"},{"line_number":18,"context_line":"from oslo_utils import versionutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_80bf25a9","line":15,"updated":"2018-09-12 17:08:56.000000000","message":"Drop this","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from nova.virt import hardware"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# TODO(berrange): Remove NovaObjectDictCompat"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":33,"context_line":"class InstanceNUMACell(base.NovaObject,"},{"line_number":34,"context_line":"                       base.NovaObjectDictCompat):"},{"line_number":35,"context_line":"    # Version 1.0: Initial version"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_20dad11c","line":32,"range":{"start_line":27,"start_character":0,"end_line":32,"end_character":33},"updated":"2018-09-12 17:08:56.000000000","message":"Drop these changes","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    # add a readable representation without newlines"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def __repr__(self):"},{"line_number":157,"context_line":"        return \u0027{obj_name} (id: {id}) \u0027 \\"},{"line_number":158,"context_line":"               \u0027cpuset: {cpuset} \u0027 \\"},{"line_number":159,"context_line":"               \u0027memory: {memory} \u0027 \\"},{"line_number":160,"context_line":"               \u0027pagesize: {pagesize} \u0027 \\"},{"line_number":161,"context_line":"               \u0027cpu_topology: {cpu_topology} \u0027 \\"},{"line_number":162,"context_line":"               \u0027cpu_pinning: {cpu_pinning} \u0027 \\"},{"line_number":163,"context_line":"               \u0027siblings: {siblings} \u0027 \\"},{"line_number":164,"context_line":"               \u0027cpu_policy: {cpu_policy} \u0027 \\"},{"line_number":165,"context_line":"               \u0027cpu_thread_policy: {cpu_thread_policy} \u0027 \\"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"# TODO(berrange): Remove NovaObjectDictCompat"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c0c51d3f","line":164,"range":{"start_line":157,"start_character":0,"end_line":164,"end_character":44},"updated":"2018-09-12 17:08:56.000000000","message":"Instead of writing it this way, try wrapping it in brackets.\n\n  return (\u0027{obj_name} (id: {id}) \u0027\n          \u0027cpuset: {cpuset} \u0027\n          ...)\n\nThis lets you remove the slashes, which we don\u0027t tend to use.","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":162,"context_line":"               \u0027cpu_pinning: {cpu_pinning} \u0027 \\"},{"line_number":163,"context_line":"               \u0027siblings: {siblings} \u0027 \\"},{"line_number":164,"context_line":"               \u0027cpu_policy: {cpu_policy} \u0027 \\"},{"line_number":165,"context_line":"               \u0027cpu_thread_policy: {cpu_thread_policy} \u0027 \\"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"# TODO(berrange): Remove NovaObjectDictCompat"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_009b1566","line":165,"range":{"start_line":165,"start_character":54,"end_line":165,"end_character":58},"updated":"2018-09-12 17:08:56.000000000","message":"Neither the slash nor the trailing whitespace should be here","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":165,"context_line":"               \u0027cpu_thread_policy: {cpu_thread_policy} \u0027 \\"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"# TODO(berrange): Remove NovaObjectDictCompat"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":171,"context_line":"class InstanceNUMATopology(base.NovaObject,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c08e7d31","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":0},"updated":"2018-09-12 17:08:56.000000000","message":"Can you remove these unrelated changes, please?","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea18eeaaf1f66dcd7eeebbb5f5877fdba21cb189","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_serialization import jsonutils"},{"line_number":17,"context_line":"from oslo_utils import versionutils"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_4b760942","line":15,"updated":"2018-09-12 21:31:32.000000000","message":"This should be dropped","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea18eeaaf1f66dcd7eeebbb5f5877fdba21cb189","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova.objects import fields as obj_fields"},{"line_number":23,"context_line":"from nova.virt import hardware"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":27,"context_line":"class InstanceNUMACell(base.NovaObject,"},{"line_number":28,"context_line":"                       base.NovaObjectDictCompat):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_ab8c7d2e","line":25,"updated":"2018-09-12 21:31:32.000000000","message":"This TODO should be re-added","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea18eeaaf1f66dcd7eeebbb5f5877fdba21cb189","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        if \u0027pagesize\u0027 not in kwargs:"},{"line_number":67,"context_line":"            self.pagesize \u003d None"},{"line_number":68,"context_line":"            self.obj_reset_changes([\u0027pagesize\u0027])"},{"line_number":69,"context_line":"        if \u0027cpu_topology\u0027 not in kwargs:"},{"line_number":70,"context_line":"            self.cpu_topology \u003d None"},{"line_number":71,"context_line":"            self.obj_reset_changes([\u0027cpu_topology\u0027])"},{"line_number":72,"context_line":"        if \u0027cpu_pinning\u0027 not in kwargs:"},{"line_number":73,"context_line":"            self.cpu_pinning \u003d None"},{"line_number":74,"context_line":"            self.obj_reset_changes([\u0027cpu_pinning_raw\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_4b9b6963","line":71,"range":{"start_line":69,"start_character":0,"end_line":71,"end_character":52},"updated":"2018-09-12 21:31:32.000000000","message":"Is this related? It doesn\u0027t seem like it. Perhaps this is a bug, in which case this should be a separate patch","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea18eeaaf1f66dcd7eeebbb5f5877fdba21cb189","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def __repr__(self):"},{"line_number":147,"context_line":"        return (\u0027{obj_name} (id: {id})\u0027"},{"line_number":148,"context_line":"               \u0027cpuset: {cpuset}\u0027"},{"line_number":149,"context_line":"               \u0027memory: {memory}\u0027"},{"line_number":150,"context_line":"               \u0027pagesize: {pagesize}\u0027"},{"line_number":151,"context_line":"               \u0027cpu_topology: {cpu_topology}\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_abb55dd2","line":148,"range":{"start_line":148,"start_character":15,"end_line":148,"end_character":33},"updated":"2018-09-12 21:31:32.000000000","message":"nit: This and subsequent lines below (and above) should be indented by one","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea18eeaaf1f66dcd7eeebbb5f5877fdba21cb189","unresolved":false,"context_lines":[{"line_number":152,"context_line":"               \u0027cpu_pinning: {cpu_pinning}\u0027"},{"line_number":153,"context_line":"               \u0027siblings: {siblings}\u0027"},{"line_number":154,"context_line":"               \u0027cpu_policy: {cpu_policy}\u0027"},{"line_number":155,"context_line":"               \u0027cpu_thread_policy: {cpu_thread_policy}\u0027)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_8bb2e1e4","line":155,"range":{"start_line":155,"start_character":15,"end_line":155,"end_character":56},"updated":"2018-09-12 21:31:32.000000000","message":"Is there a \u0027format\u0027 call missing here?","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_serialization import jsonutils"},{"line_number":17,"context_line":"from oslo_utils import versionutils"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_95369702","line":15,"updated":"2018-09-25 09:30:05.000000000","message":"whitespace damage. Can you remove?","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        if \u0027pagesize\u0027 not in kwargs:"},{"line_number":68,"context_line":"            self.pagesize \u003d None"},{"line_number":69,"context_line":"            self.obj_reset_changes([\u0027pagesize\u0027])"},{"line_number":70,"context_line":"        if \u0027cpu_topology\u0027 not in kwargs:"},{"line_number":71,"context_line":"            self.cpu_topology \u003d None"},{"line_number":72,"context_line":"            self.obj_reset_changes([\u0027cpu_topology\u0027])"},{"line_number":73,"context_line":"        if \u0027cpu_pinning\u0027 not in kwargs:"},{"line_number":74,"context_line":"            self.cpu_pinning \u003d None"},{"line_number":75,"context_line":"            self.obj_reset_changes([\u0027cpu_pinning_raw\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_751dfb75","line":72,"range":{"start_line":70,"start_character":0,"end_line":72,"end_character":52},"updated":"2018-09-25 09:30:05.000000000","message":"This seems unrelated. Can you call it out in the commit message or remove it?","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":142,"context_line":"               \u0027cpu_pinning: {cpu_pinning}\u0027"},{"line_number":143,"context_line":"               \u0027siblings: {siblings}\u0027"},{"line_number":144,"context_line":"               \u0027cpu_policy: {cpu_policy}\u0027"},{"line_number":145,"context_line":"               \u0027cpu_thread_policy: {cpu_thread_policy}\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def __repr__(self):"},{"line_number":148,"context_line":"        return (\u0027{obj_name} (id: {id})\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_f51a6b7a","line":145,"updated":"2018-09-25 09:30:05.000000000","message":"Pretty sure you meant to call \u0027.format\u0027 on this?","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":153,"context_line":"               \u0027cpu_pinning: {cpu_pinning}\u0027"},{"line_number":154,"context_line":"               \u0027siblings: {siblings}\u0027"},{"line_number":155,"context_line":"               \u0027cpu_policy: {cpu_policy}\u0027"},{"line_number":156,"context_line":"               \u0027cpu_thread_policy: {cpu_thread_policy}\u0027)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_950f7738","line":156,"updated":"2018-09-25 09:30:05.000000000","message":"ditto. Also, do you need both __str__ and __repr__?","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":261,"context_line":"            topology_str +\u003d \u0027\\n\u0027 + str(cell)"},{"line_number":262,"context_line":"        return topology_str"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def __repr__(self):"},{"line_number":265,"context_line":"        topology_str \u003d \u0027{obj_name}: \u0027.format(obj_name\u003dself.obj_name())"},{"line_number":266,"context_line":"        topology_str +\u003d \u0027, \u0027.join(repr(cell) for cell in self.cells)"},{"line_number":267,"context_line":"        return topology_str"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    @property"},{"line_number":270,"context_line":"    def emulator_threads_isolated(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_75065b24","line":267,"range":{"start_line":264,"start_character":0,"end_line":267,"end_character":27},"updated":"2018-09-25 09:30:05.000000000","message":"Is this necessary when we already have the above?","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"51d504baae309d6c2e3673701e044d7a36fa61d6","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return self"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"# TODO(berrange): Remove NovaObjectDictCompat"},{"line_number":134,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":135,"context_line":"class InstanceNUMATopology(base.NovaObject,"},{"line_number":136,"context_line":"                           base.NovaObjectDictCompat):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_d4fc0341","side":"PARENT","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":45},"updated":"2018-09-25 20:40:47.000000000","message":"this comment should not be removed","commit_id":"a32d765f986fc32a3c69dfc6797af8cfb26f7bca"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"51d504baae309d6c2e3673701e044d7a36fa61d6","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return self"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def __str__(self):"},{"line_number":133,"context_line":"        return (\u0027{obj_name} (id: {id})\u0027"},{"line_number":134,"context_line":"               \u0027cpuset: {cpuset}\u0027"},{"line_number":135,"context_line":"               \u0027memory: {memory}\u0027"},{"line_number":136,"context_line":"               \u0027pagesize: {pagesize}\u0027"},{"line_number":137,"context_line":"               \u0027cpu_topology: {cpu_topology}\u0027"},{"line_number":138,"context_line":"               \u0027cpu_pinning: {cpu_pinning}\u0027"},{"line_number":139,"context_line":"               \u0027siblings: {siblings}\u0027"},{"line_number":140,"context_line":"               \u0027cpu_policy: {cpu_policy}\u0027"},{"line_number":141,"context_line":"               \u0027cpu_thread_policy: {cpu_thread_policy}\u0027).format("},{"line_number":142,"context_line":"             obj_name\u003dself.obj_name(),"},{"line_number":143,"context_line":"             id\u003dself.id if (\u0027id\u0027 in self) else None,"},{"line_number":144,"context_line":"             cpuset\u003dself.cpuset,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_27cf4b8c","line":141,"range":{"start_line":133,"start_character":16,"end_line":141,"end_character":55},"updated":"2018-09-25 20:40:47.000000000","message":"The commit message says it added \"lots of newlines\" but I don\u0027t see any newlines here. There are no spaces either among the fields. This won\u0027t be pretty when it is printed out. Did you test this? It would be nice to attach a printout from your test to the bug report.","commit_id":"3c4134ee9ff3e2b42d54be1aa0a46d734e391c7f"},{"author":{"_account_id":23204,"name":"Jonte Watford","email":"jonte.watford@intel.com","username":"jwatford"},"change_message_id":"dca1c7063efbee715877e9e46f5660385fdce318","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return self"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def __str__(self):"},{"line_number":133,"context_line":"        return (\u0027{obj_name} (id: {id})\u0027"},{"line_number":134,"context_line":"               \u0027cpuset: {cpuset}\u0027"},{"line_number":135,"context_line":"               \u0027memory: {memory}\u0027"},{"line_number":136,"context_line":"               \u0027pagesize: {pagesize}\u0027"},{"line_number":137,"context_line":"               \u0027cpu_topology: {cpu_topology}\u0027"},{"line_number":138,"context_line":"               \u0027cpu_pinning: {cpu_pinning}\u0027"},{"line_number":139,"context_line":"               \u0027siblings: {siblings}\u0027"},{"line_number":140,"context_line":"               \u0027cpu_policy: {cpu_policy}\u0027"},{"line_number":141,"context_line":"               \u0027cpu_thread_policy: {cpu_thread_policy}\u0027).format("},{"line_number":142,"context_line":"             obj_name\u003dself.obj_name(),"},{"line_number":143,"context_line":"             id\u003dself.id if (\u0027id\u0027 in self) else None,"},{"line_number":144,"context_line":"             cpuset\u003dself.cpuset,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_45003f01","line":141,"range":{"start_line":133,"start_character":16,"end_line":141,"end_character":55},"in_reply_to":"3f79a3b5_27cf4b8c","updated":"2018-09-25 21:51:04.000000000","message":"This is actually a patch that was originally created by you early 2017. I haven\u0027t had the best outcome when trying to recreate the error and view it. I added you as a reviewer to hopefully gain more insight.","commit_id":"3c4134ee9ff3e2b42d54be1aa0a46d734e391c7f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5236a9b18b8511c4c277c04b339f1579ba5557dd","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return self"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def __str__(self):"},{"line_number":133,"context_line":"        return (\u0027{obj_name} (id: {id})\u0027"},{"line_number":134,"context_line":"               \u0027cpuset: {cpuset}\u0027"},{"line_number":135,"context_line":"               \u0027memory: {memory}\u0027"},{"line_number":136,"context_line":"               \u0027pagesize: {pagesize}\u0027"},{"line_number":137,"context_line":"               \u0027cpu_topology: {cpu_topology}\u0027"},{"line_number":138,"context_line":"               \u0027cpu_pinning: {cpu_pinning}\u0027"},{"line_number":139,"context_line":"               \u0027siblings: {siblings}\u0027"},{"line_number":140,"context_line":"               \u0027cpu_policy: {cpu_policy}\u0027"},{"line_number":141,"context_line":"               \u0027cpu_thread_policy: {cpu_thread_policy}\u0027).format("},{"line_number":142,"context_line":"             obj_name\u003dself.obj_name(),"},{"line_number":143,"context_line":"             id\u003dself.id if (\u0027id\u0027 in self) else None,"},{"line_number":144,"context_line":"             cpuset\u003dself.cpuset,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_4ba92923","line":141,"range":{"start_line":133,"start_character":16,"end_line":141,"end_character":55},"in_reply_to":"3f79a3b5_45003f01","updated":"2018-09-26 08:49:12.000000000","message":"Hmm, you should probably be running this so. Here\u0027s what you need to do, if you want to test that.\n\n1. Deploy DevStack All-In-One\n2. Create a new flavor that will have a NUMA topology. For example (this is from memory so it might have typos):\n\n    openstack flavor create --vcpu 2 --disk 0 --ram 1024 test.pinned\n    openstack flavor set --property hw:numa_nodes\u003d2\n\n3. Start watching logs for all nova services using the below command. Be sure to do this in another terminal:\n\n    journalctl --follow -a --unit devstack@n-*\n\n4. Boot a new server using your custom flavor. You should see these logs appearing. Fix any issues you identify.\n\nWithout testing this stuff, it\u0027s kind of hard to say it does what you think it does. Please ping me on IRC (stephenfin) if you need more info here.","commit_id":"3c4134ee9ff3e2b42d54be1aa0a46d734e391c7f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"f1fd468ea630c224572b6cf36f492e2265408bc5","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        return (\u0027{obj_name} (id: {id})\\n\u0027"},{"line_number":134,"context_line":"                \u0027cpuset: {cpuset}\\n\u0027"},{"line_number":135,"context_line":"                \u0027memory: {memory}\\n\u0027"},{"line_number":136,"context_line":"                \u0027physnode: {physnode}\\n\u0027"},{"line_number":137,"context_line":"                \u0027pagesize: {pagesize}\\n\u0027"},{"line_number":138,"context_line":"                \u0027cpu_topology: {cpu_topology}\\n\u0027"},{"line_number":139,"context_line":"                \u0027cpu_pinning_raw: {cpu_pinning_raw}\\n\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_14f022da","line":136,"range":{"start_line":136,"start_character":0,"end_line":136,"end_character":40},"updated":"2018-09-26 17:34:05.000000000","message":"this is a StarlingX thing and should be removed.  I think this will fix the tox failures.","commit_id":"266c28e65080ad458a416eb3f692fc299400e580"}],"nova/objects/numa.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":"from oslo_serialization import jsonutils"},{"line_number":17,"context_line":"from oslo_utils import versionutils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova import exception"},{"line_number":20,"context_line":"from nova.objects import base"},{"line_number":21,"context_line":"from nova.objects import fields"},{"line_number":22,"context_line":"from nova.virt import hardware"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def all_things_equal(obj_a, obj_b):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_3b39a2a2","line":25,"range":{"start_line":15,"start_character":0,"end_line":25,"end_character":15},"updated":"2018-09-12 17:08:56.000000000","message":"This isn\u0027t necessary, right?","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                        (memory % pages.size_kb) \u003d\u003d 0)"},{"line_number":157,"context_line":"        raise exception.MemoryPageSizeNotSupported(pagesize\u003dpagesize)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    # add a readable string representation"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def __str__(self):"},{"line_number":162,"context_line":"        return \u0027{obj_name} (id: {id})\\n\u0027 \\"},{"line_number":163,"context_line":"               \u0027  cpus: {cpus}\\n\u0027 \\"},{"line_number":164,"context_line":"               \u0027  mem:\\n\u0027 \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_fb424a0f","line":161,"range":{"start_line":159,"start_character":0,"end_line":161,"end_character":4},"updated":"2018-09-12 17:08:56.000000000","message":"Can you remove this comment and newline, please","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def __str__(self):"},{"line_number":162,"context_line":"        return \u0027{obj_name} (id: {id})\\n\u0027 \\"},{"line_number":163,"context_line":"               \u0027  cpus: {cpus}\\n\u0027 \\"},{"line_number":164,"context_line":"               \u0027  mem:\\n\u0027 \\"},{"line_number":165,"context_line":"               \u0027    total: {total}\\n\u0027 \\"},{"line_number":166,"context_line":"               \u0027    used: {used}\\n\u0027 \\"},{"line_number":167,"context_line":"               \u0027  cpu_usage: {cpu_usage}\\n\u0027 \\"},{"line_number":168,"context_line":"               \u0027  siblings: {siblings}\\n\u0027 \\"},{"line_number":169,"context_line":"               \u0027  pinned_cpus: {pinned_cpus}\\n\u0027 \\"},{"line_number":170,"context_line":"               \u0027  mempages: {mempages}\\n\u0027.format("},{"line_number":171,"context_line":"            obj_name\u003dself.obj_name(),"},{"line_number":172,"context_line":"            id\u003dself.id,"},{"line_number":173,"context_line":"            cpus\u003dhardware.format_cpu_spec("},{"line_number":174,"context_line":"                self.cpuset, allow_ranges\u003dTrue),"},{"line_number":175,"context_line":"            total\u003dself.memory,"},{"line_number":176,"context_line":"            used\u003dself.memory_usage,"},{"line_number":177,"context_line":"            cpu_usage\u003dself.cpu_usage if (\u0027cpu_usage\u0027 in self) else None,"},{"line_number":178,"context_line":"            siblings\u003dself.siblings,"},{"line_number":179,"context_line":"            pinned_cpus\u003dhardware.format_cpu_spec("},{"line_number":180,"context_line":"                self.pinned_cpus, allow_ranges\u003dTrue),"},{"line_number":181,"context_line":"            mempages\u003dself.mempages,"},{"line_number":182,"context_line":"                                                )"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    # add a readable representation, without newlines"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_9b70f675","line":182,"range":{"start_line":163,"start_character":0,"end_line":182,"end_character":49},"updated":"2018-09-12 17:08:56.000000000","message":"Same comments around using brackets here","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    # add a readable representation, without newlines"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def __repr__(self):"},{"line_number":187,"context_line":"        return \u0027{obj_name} (id: {id}) \u0027 \\"},{"line_number":188,"context_line":"               \u0027cpus: {cpus} \u0027 \\"},{"line_number":189,"context_line":"               \u0027mem: total: {total} used: {used} \u0027 \\"},{"line_number":190,"context_line":"               \u0027cpu_usage: {cpu_usage} \u0027 \\"},{"line_number":191,"context_line":"               \u0027siblings: {siblings} \u0027 \\"},{"line_number":192,"context_line":"               \u0027pinned_cpus: {pinned_cpus} \u0027 \\"},{"line_number":193,"context_line":"               \u0027mempages: {mempages} \u0027.format("},{"line_number":194,"context_line":"            obj_name\u003dself.obj_name(),"},{"line_number":195,"context_line":"            id\u003dself.id,"},{"line_number":196,"context_line":"            cpus\u003dhardware.format_cpu_spec("},{"line_number":197,"context_line":"                self.cpuset, allow_ranges\u003dTrue),"},{"line_number":198,"context_line":"            total\u003dself.memory,"},{"line_number":199,"context_line":"            used\u003dself.memory_usage,"},{"line_number":200,"context_line":"            cpu_usage\u003dself.cpu_usage if (\u0027cpu_usage\u0027 in self) else None,"},{"line_number":201,"context_line":"            siblings\u003dself.siblings,"},{"line_number":202,"context_line":"            pinned_cpus\u003dhardware.format_cpu_spec("},{"line_number":203,"context_line":"                self.pinned_cpus, allow_ranges\u003dTrue),"},{"line_number":204,"context_line":"            mempages\u003dself.mempages,"},{"line_number":205,"context_line":"                                            )"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"@base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_bb6db29a","line":205,"range":{"start_line":186,"start_character":0,"end_line":205,"end_character":45},"updated":"2018-09-12 17:08:56.000000000","message":"ditto","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            # an updated node we must ensure that this property is defined."},{"line_number":240,"context_line":"            self.reserved \u003d 0"},{"line_number":241,"context_line":"        return self.total - self.used - self.reserved"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def adjust_used(self, actual_free):"},{"line_number":244,"context_line":"        \"\"\"Adjust the number of used pages if there is less actual free pages"},{"line_number":245,"context_line":"           than what is tracked for VMs."},{"line_number":246,"context_line":"        \"\"\""},{"line_number":247,"context_line":"        if not self.obj_attr_is_set(\u0027reserved\u0027):"},{"line_number":248,"context_line":"            # In case where an old compute node is sharing resource to"},{"line_number":249,"context_line":"            # an updated node we must ensure that this property is defined."},{"line_number":250,"context_line":"            self.reserved \u003d 0"},{"line_number":251,"context_line":"        tracked_free \u003d self.total - self.used - self.reserved"},{"line_number":252,"context_line":"        used_old \u003d self.used"},{"line_number":253,"context_line":"        if actual_free \u003c tracked_free:"},{"line_number":254,"context_line":"            self.used +\u003d tracked_free - actual_free"},{"line_number":255,"context_line":"        return used_old, self.used"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    @property"},{"line_number":258,"context_line":"    def free_kb(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_5b6a5e81","line":255,"range":{"start_line":242,"start_character":0,"end_line":255,"end_character":34},"updated":"2018-09-12 17:08:56.000000000","message":"I think this is unrelated, right?","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"044dbdfa1735128d7182b4b29f368d4ef03670a1","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":348,"context_line":"        if target_version \u003c (1, 1):"},{"line_number":349,"context_line":"            primitive.pop(\u0027network_metadata\u0027, None)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"    @classmethod"},{"line_number":352,"context_line":"    def obj_from_db_obj(cls, db_obj):"},{"line_number":353,"context_line":"        if \u0027nova_object.name\u0027 in db_obj:"},{"line_number":354,"context_line":"            obj_topology \u003d cls.obj_from_primitive(db_obj)"},{"line_number":355,"context_line":"        else:"},{"line_number":356,"context_line":"            # NOTE(sahid): This compatibility code needs to stay until we can"},{"line_number":357,"context_line":"            # guarantee that all compute nodes are using RPC API \u003d\u003e 3.40."},{"line_number":358,"context_line":"            cell \u003d db_obj[\u0027cells\u0027][0]"},{"line_number":359,"context_line":"            ram_ratio \u003d cell[\u0027mem\u0027][\u0027limit\u0027] / float(cell[\u0027mem\u0027][\u0027total\u0027])"},{"line_number":360,"context_line":"            cpu_ratio \u003d cell[\u0027cpu_limit\u0027] / float(len(hardware.parse_cpu_spec("},{"line_number":361,"context_line":"                cell[\u0027cpus\u0027])))"},{"line_number":362,"context_line":"            obj_topology \u003d NUMATopologyLimits("},{"line_number":363,"context_line":"                cpu_allocation_ratio\u003dcpu_ratio,"},{"line_number":364,"context_line":"                ram_allocation_ratio\u003dram_ratio)"},{"line_number":365,"context_line":"        return obj_topology"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_5b7d7eb0","line":365,"range":{"start_line":350,"start_character":0,"end_line":365,"end_character":27},"updated":"2018-09-12 17:08:56.000000000","message":"I think you\u0027ve re-added this by mistake. Can you remove it again?","commit_id":"f51ec511cc7b1a9b9b635980939644ccabc7ff89"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea18eeaaf1f66dcd7eeebbb5f5877fdba21cb189","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3f79a3b5_2bc94d59","updated":"2018-09-12 21:31:32.000000000","message":"All comments from PS3 still apply here","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"3290206f0c9accf6726334b2404532c113ab06da","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            self.reserved \u003d 0"},{"line_number":241,"context_line":"        return self.total - self.used - self.reserved"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def adjust_used(self, actual_free):"},{"line_number":244,"context_line":"        \"\"\"Adjust the number of used pages if there is less actual free pages"},{"line_number":245,"context_line":"           than what is tracked for VMs."},{"line_number":246,"context_line":"        \"\"\""},{"line_number":247,"context_line":"        if not self.obj_attr_is_set(\u0027reserved\u0027):"},{"line_number":248,"context_line":"            # In case where an old compute node is sharing resource to"},{"line_number":249,"context_line":"            # an updated node we must ensure that this property is defined."},{"line_number":250,"context_line":"            self.reserved \u003d 0"},{"line_number":251,"context_line":"        tracked_free \u003d self.total - self.used - self.reserved"},{"line_number":252,"context_line":"        used_old \u003d self.used"},{"line_number":253,"context_line":"        if actual_free \u003c tracked_free:"},{"line_number":254,"context_line":"            self.used +\u003d tracked_free - actual_free"},{"line_number":255,"context_line":"        return used_old, self.used"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    @property"},{"line_number":258,"context_line":"    def free_kb(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_f69f63b0","line":255,"range":{"start_line":243,"start_character":0,"end_line":255,"end_character":34},"updated":"2018-09-17 23:57:42.000000000","message":"this is unrelated to the commit message","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"3290206f0c9accf6726334b2404532c113ab06da","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    def __repr__(self):"},{"line_number":326,"context_line":"        topology_str \u003d \u0027{obj_name}:\u0027.format(obj_name\u003dself.obj_name())"},{"line_number":327,"context_line":"        for cell in self.cells:"},{"line_number":328,"context_line":"            topology_str +\u003d \u0027\\n\u0027 + repr(cell)"},{"line_number":329,"context_line":"        return topology_str"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_9642af3a","line":328,"range":{"start_line":328,"start_character":28,"end_line":328,"end_character":32},"updated":"2018-09-17 23:57:42.000000000","message":"this seems not consistent with other _repr_, should newline be replace by a space here?","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"3290206f0c9accf6726334b2404532c113ab06da","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        if target_version \u003c (1, 1):"},{"line_number":349,"context_line":"            primitive.pop(\u0027network_metadata\u0027, None)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"    @classmethod"},{"line_number":352,"context_line":"    def obj_from_db_obj(cls, db_obj):"},{"line_number":353,"context_line":"        if \u0027nova_object.name\u0027 in db_obj:"},{"line_number":354,"context_line":"            obj_topology \u003d cls.obj_from_primitive(db_obj)"},{"line_number":355,"context_line":"        else:"},{"line_number":356,"context_line":"            # NOTE(sahid): This compatibility code needs to stay until we can"},{"line_number":357,"context_line":"            # guarantee that all compute nodes are using RPC API \u003d\u003e 3.40."},{"line_number":358,"context_line":"            cell \u003d db_obj[\u0027cells\u0027][0]"},{"line_number":359,"context_line":"            ram_ratio \u003d cell[\u0027mem\u0027][\u0027limit\u0027] / float(cell[\u0027mem\u0027][\u0027total\u0027])"},{"line_number":360,"context_line":"            cpu_ratio \u003d cell[\u0027cpu_limit\u0027] / float(len(hardware.parse_cpu_spec("},{"line_number":361,"context_line":"                cell[\u0027cpus\u0027])))"},{"line_number":362,"context_line":"            obj_topology \u003d NUMATopologyLimits("},{"line_number":363,"context_line":"                cpu_allocation_ratio\u003dcpu_ratio,"},{"line_number":364,"context_line":"                ram_allocation_ratio\u003dram_ratio)"},{"line_number":365,"context_line":"        return obj_topology"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_16a53f03","line":365,"range":{"start_line":351,"start_character":0,"end_line":365,"end_character":27},"updated":"2018-09-17 23:57:42.000000000","message":"this is unrelated to the commit message","commit_id":"4b25bed4256738f1fb6b44819605c8f2af7585da"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from nova.objects import base"},{"line_number":21,"context_line":"from nova.objects import fields"},{"line_number":22,"context_line":"from nova.virt import hardware"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def all_things_equal(obj_a, obj_b):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_9541b766","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":15},"updated":"2018-09-25 09:30:05.000000000","message":"This (and the import) still aren\u0027t necessary. You need to remove these before we can merge this","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                        (memory % pages.size_kb) \u003d\u003d 0)"},{"line_number":157,"context_line":"        raise exception.MemoryPageSizeNotSupported(pagesize\u003dpagesize)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def __str__(self):"},{"line_number":161,"context_line":"        return (\u0027{obj_name} (id: {id})\u0027"},{"line_number":162,"context_line":"                \u0027cpus: {cpus}\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_1555a71e","line":159,"updated":"2018-09-25 09:30:05.000000000","message":"nit: extra newline (surprised pep8 isn\u0027t complaining about this)","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            siblings\u003dself.siblings,"},{"line_number":176,"context_line":"            pinned_cpus\u003dhardware.format_cpu_spec("},{"line_number":177,"context_line":"                self.pinned_cpus, allow_ranges\u003dTrue),"},{"line_number":178,"context_line":"            mempages\u003dself.mempages,"},{"line_number":179,"context_line":"                                                ))"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def __repr__(self):"},{"line_number":182,"context_line":"        return (\u0027{obj_name} (id: {id})\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_555b1f54","line":179,"range":{"start_line":178,"start_character":34,"end_line":179,"end_character":48},"updated":"2018-09-25 09:30:05.000000000","message":"nit: could you place the brackets on the last line?","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcdf8fb060abc62a8636a5e6fc0dcfbd43dcbf2b","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            siblings\u003dself.siblings,"},{"line_number":197,"context_line":"            pinned_cpus\u003dhardware.format_cpu_spec("},{"line_number":198,"context_line":"                self.pinned_cpus, allow_ranges\u003dTrue),"},{"line_number":199,"context_line":"            mempages\u003dself.mempages,"},{"line_number":200,"context_line":"                                            ))"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":203,"context_line":"class NUMAPagesTopology(base.NovaObject):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_35522337","line":200,"range":{"start_line":199,"start_character":34,"end_line":200,"end_character":44},"updated":"2018-09-25 09:30:05.000000000","message":"ditto","commit_id":"a5c64e1673c4eb8d52184fe72674f7b86a75cd4b"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"51d504baae309d6c2e3673701e044d7a36fa61d6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        raise exception.MemoryPageSizeNotSupported(pagesize\u003dpagesize)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def __str__(self):"},{"line_number":156,"context_line":"        return (\u0027{obj_name} (id: {id})\u0027"},{"line_number":157,"context_line":"                \u0027cpus: {cpus}\u0027"},{"line_number":158,"context_line":"                \u0027mem: total: {total} used: {used}\u0027"},{"line_number":159,"context_line":"                \u0027cpu_usage: {cpu_usage}\u0027"},{"line_number":160,"context_line":"                \u0027siblings: {siblings}\u0027"},{"line_number":161,"context_line":"                \u0027pinned_cpus: {pinned_cpus}\u0027"},{"line_number":162,"context_line":"                \u0027mempages: {mempages}\u0027.format("},{"line_number":163,"context_line":"            obj_name\u003dself.obj_name(),"},{"line_number":164,"context_line":"            id\u003dself.id,"},{"line_number":165,"context_line":"            cpus\u003dhardware.format_cpu_spec("}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_c7df7736","line":162,"range":{"start_line":156,"start_character":16,"end_line":162,"end_character":38},"updated":"2018-09-25 20:40:47.000000000","message":"similar comment as the other file.","commit_id":"3c4134ee9ff3e2b42d54be1aa0a46d734e391c7f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"69aeb7f4f714d5061592336a354dbc9ec0c17383","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        raise exception.MemoryPageSizeNotSupported(pagesize\u003dpagesize)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def __str__(self):"},{"line_number":156,"context_line":"        return (\u0027{obj_name} (id: {id})\\n\u0027"},{"line_number":157,"context_line":"                \u0027cpus: {cpus}\\n\u0027"},{"line_number":158,"context_line":"                \u0027mem:\\n\u0027"},{"line_number":159,"context_line":"                \u0027total: {total}\\n\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_eb55951f","line":156,"range":{"start_line":156,"start_character":28,"end_line":156,"end_character":29},"updated":"2018-09-26 08:50:50.000000000","message":"You open this bracket but never close it","commit_id":"266c28e65080ad458a416eb3f692fc299400e580"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"69aeb7f4f714d5061592336a354dbc9ec0c17383","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        raise exception.MemoryPageSizeNotSupported(pagesize\u003dpagesize)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def __str__(self):"},{"line_number":156,"context_line":"        return (\u0027{obj_name} (id: {id})\\n\u0027"},{"line_number":157,"context_line":"                \u0027cpus: {cpus}\\n\u0027"},{"line_number":158,"context_line":"                \u0027mem:\\n\u0027"},{"line_number":159,"context_line":"                \u0027total: {total}\\n\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_4b57e928","line":156,"range":{"start_line":156,"start_character":38,"end_line":156,"end_character":40},"updated":"2018-09-26 08:50:50.000000000","message":"are you sure newlines are what you want here? Commas would have made far more sense to me, at least","commit_id":"266c28e65080ad458a416eb3f692fc299400e580"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"f1fd468ea630c224572b6cf36f492e2265408bc5","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        raise exception.MemoryPageSizeNotSupported(pagesize\u003dpagesize)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def __str__(self):"},{"line_number":156,"context_line":"        return (\u0027{obj_name} (id: {id})\\n\u0027"},{"line_number":157,"context_line":"                \u0027cpus: {cpus}\\n\u0027"},{"line_number":158,"context_line":"                \u0027mem:\\n\u0027"},{"line_number":159,"context_line":"                \u0027total: {total}\\n\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_ae46c14f","line":156,"range":{"start_line":156,"start_character":38,"end_line":156,"end_character":40},"in_reply_to":"3f79a3b5_4b57e928","updated":"2018-09-26 17:34:05.000000000","message":"Newlines make it a little easier to parse logs from multi-numa-node guests, but commas would make the logs take fewer lines.  If it gets the patch merged then Wind River would be okay with commas.","commit_id":"266c28e65080ad458a416eb3f692fc299400e580"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"f1fd468ea630c224572b6cf36f492e2265408bc5","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        raise exception.MemoryPageSizeNotSupported(pagesize\u003dpagesize)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def __str__(self):"},{"line_number":156,"context_line":"        return (\u0027{obj_name} (id: {id})\\n\u0027"},{"line_number":157,"context_line":"                \u0027cpus: {cpus}\\n\u0027"},{"line_number":158,"context_line":"                \u0027mem:\\n\u0027"},{"line_number":159,"context_line":"                \u0027total: {total}\\n\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_6e72e9b2","line":156,"range":{"start_line":156,"start_character":28,"end_line":156,"end_character":29},"in_reply_to":"3f79a3b5_eb55951f","updated":"2018-09-26 17:34:05.000000000","message":"isn\u0027t the bracket closed right before the newline?","commit_id":"266c28e65080ad458a416eb3f692fc299400e580"}]}
