)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0a2a914b1a886328b35e3d06eaa43144682ab731","unresolved":false,"context_lines":[{"line_number":10,"context_line":"and in the build_requests table a lot of fields/columns are no longer"},{"line_number":11,"context_line":"necessary. To prepare for removal of the columns from the db at a later"},{"line_number":12,"context_line":"time references to them have been removed. This starts a deprecation"},{"line_number":13,"context_line":"timer so that they can be removed in Ocata at the earliest."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ie86ba66d5f73c153b68bef83661d4c8bdb0ae9dc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bab6814e_f71100b1","line":13,"updated":"2016-05-18 11:12:11.000000000","message":"I am assuming we don\u0027t send the buildrequest over the wire yet, given we destroy it so soon after we create it.\n\nIt would be good to add a note in the commit message, for those reading the history of this patch.","commit_id":"b0e351ce6143489d4da382bf13505024e6b89304"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84a958e4002198933b9497947c92998ec87e239b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"and in the build_requests table a lot of fields/columns are no longer"},{"line_number":11,"context_line":"necessary. To prepare for removal of the columns from the db at a later"},{"line_number":12,"context_line":"time references to them have been removed. This starts a deprecation"},{"line_number":13,"context_line":"timer so that they can be removed in Ocata at the earliest."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ie86ba66d5f73c153b68bef83661d4c8bdb0ae9dc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bab6814e_ed6ab719","line":13,"in_reply_to":"bab6814e_f71100b1","updated":"2016-05-18 18:54:46.000000000","message":"Correct.","commit_id":"b0e351ce6143489d4da382bf13505024e6b89304"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1ffd53f761970f725a7a2499bd5b56c872835cea","unresolved":false,"context_lines":[{"line_number":12,"context_line":"time references to them have been removed. This starts a deprecation"},{"line_number":13,"context_line":"timer so that they can be removed in Ocata at the earliest."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Note that the BuildRequest object was never passed over the wire, and is"},{"line_number":16,"context_line":"just created and immediately destroyed at this point so there is no need"},{"line_number":17,"context_line":"to handle backwards compatibility for these changes."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ie86ba66d5f73c153b68bef83661d4c8bdb0ae9dc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"bab6814e_119b1f67","line":17,"range":{"start_line":15,"start_character":0,"end_line":17,"end_character":52},"updated":"2016-05-23 13:13:26.000000000","message":"Thanks for explaining why you don\u0027t need such version bump...\n\n++","commit_id":"98a05bc637e4c2e485d5aa5b62945102ea71d08b"}],"nova/compute/api.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"05dfe1653de28a4eb99081ad6560eb8c90549754","unresolved":false,"context_lines":[{"line_number":952,"context_line":""},{"line_number":953,"context_line":"                build_request \u003d objects.BuildRequest(context,"},{"line_number":954,"context_line":"                        instance\u003dinstance, instance_uuid\u003dinstance.uuid,"},{"line_number":955,"context_line":"                        project_id\u003dcontext.project_id)"},{"line_number":956,"context_line":"                build_request.create()"},{"line_number":957,"context_line":"                # Create an instance_mapping.  The null cell_mapping indicates"},{"line_number":958,"context_line":"                # that the instance doesn\u0027t yet exist in a cell, and lookups"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_23b607f9","line":955,"range":{"start_line":955,"start_character":35,"end_line":955,"end_character":53},"updated":"2016-05-17 00:06:24.000000000","message":"Is there any way or reason this could be different than instance.project_id? That is, why we don\u0027t just take project_id from the instance ref as well?","commit_id":"caea2dc987aca4c260840afe0675d79d4d869dfa"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3c602de3db33e65656cb74adf0112c03b10bf0ae","unresolved":false,"context_lines":[{"line_number":952,"context_line":""},{"line_number":953,"context_line":"                build_request \u003d objects.BuildRequest(context,"},{"line_number":954,"context_line":"                        instance\u003dinstance, instance_uuid\u003dinstance.uuid,"},{"line_number":955,"context_line":"                        project_id\u003dcontext.project_id)"},{"line_number":956,"context_line":"                build_request.create()"},{"line_number":957,"context_line":"                # Create an instance_mapping.  The null cell_mapping indicates"},{"line_number":958,"context_line":"                # that the instance doesn\u0027t yet exist in a cell, and lookups"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_cf2d7590","line":955,"range":{"start_line":955,"start_character":35,"end_line":955,"end_character":53},"in_reply_to":"dab17558_15e67943","updated":"2016-05-17 15:07:50.000000000","message":"So after further checking instance.project_id is set from context.project_id :)\n\nI\u0027m still going to address this in case that ever changes in the future.","commit_id":"caea2dc987aca4c260840afe0675d79d4d869dfa"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"27360c9667df1cb9699c3885d9fabb83ae0a286a","unresolved":false,"context_lines":[{"line_number":952,"context_line":""},{"line_number":953,"context_line":"                build_request \u003d objects.BuildRequest(context,"},{"line_number":954,"context_line":"                        instance\u003dinstance, instance_uuid\u003dinstance.uuid,"},{"line_number":955,"context_line":"                        project_id\u003dcontext.project_id)"},{"line_number":956,"context_line":"                build_request.create()"},{"line_number":957,"context_line":"                # Create an instance_mapping.  The null cell_mapping indicates"},{"line_number":958,"context_line":"                # that the instance doesn\u0027t yet exist in a cell, and lookups"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_15e67943","line":955,"range":{"start_line":955,"start_character":35,"end_line":955,"end_character":53},"in_reply_to":"dab17558_23b607f9","updated":"2016-05-17 13:34:44.000000000","message":"That\u0027s a good point. It may be possible for an admin to boot an instance under a different project_id somehow, I\u0027m honestly not sure. But to be safe it should match the instance not the context.","commit_id":"caea2dc987aca4c260840afe0675d79d4d869dfa"}],"nova/db/sqlalchemy/api_models.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"64bcb301616f6e7e7bf8d8514e0d705a053d198b","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    #         \u0027image_ref\u0027, \u0027access_ip_v4\u0027, \u0027access_ip_v6\u0027, \u0027info_cache\u0027,"},{"line_number":178,"context_line":"    #         \u0027security_groups\u0027, \u0027config_drive\u0027, \u0027key_name\u0027, \u0027locked_by\u0027,"},{"line_number":179,"context_line":"    #         \u0027reservation_id\u0027, \u0027launch_index\u0027, \u0027hostname\u0027, \u0027kernel_id\u0027,"},{"line_number":180,"context_line":"    #         \u0027ramdisk_id\u0027, \u0027root_device_name\u0027, \u0027user_data\u0027]"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"class KeyPair(API_BASE):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab6814e_80b86976","line":180,"updated":"2016-05-23 10:11:36.000000000","message":"I\u0027m not super happy with leaving such a big comment like this while we can just look at the review later if needed to remember which fields were removed, but I don\u0027t want to have a new PS just for that so let\u0027s remove that in a latter change if we agree.","commit_id":"98a05bc637e4c2e485d5aa5b62945102ea71d08b"}],"nova/objects/build_request.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"05dfe1653de28a4eb99081ad6560eb8c90549754","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    fields \u003d {"},{"line_number":37,"context_line":"        \u0027id\u0027: fields.IntegerField(),"},{"line_number":38,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":39,"context_line":"        \u0027project_id\u0027: fields.StringField(),"},{"line_number":40,"context_line":"        \u0027instance\u0027: fields.ObjectField(\u0027Instance\u0027),"},{"line_number":41,"context_line":"        # NOTE(alaski): Normally these would come from the NovaPersistentObject"},{"line_number":42,"context_line":"        # mixin but they\u0027re being set explicitly because we only need"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_c39c5b6c","line":39,"updated":"2016-05-17 00:06:24.000000000","message":"Is there a reason not to take project_id from the instance object?","commit_id":"caea2dc987aca4c260840afe0675d79d4d869dfa"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"27360c9667df1cb9699c3885d9fabb83ae0a286a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    fields \u003d {"},{"line_number":37,"context_line":"        \u0027id\u0027: fields.IntegerField(),"},{"line_number":38,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":39,"context_line":"        \u0027project_id\u0027: fields.StringField(),"},{"line_number":40,"context_line":"        \u0027instance\u0027: fields.ObjectField(\u0027Instance\u0027),"},{"line_number":41,"context_line":"        # NOTE(alaski): Normally these would come from the NovaPersistentObject"},{"line_number":42,"context_line":"        # mixin but they\u0027re being set explicitly because we only need"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_9556e9cb","line":39,"in_reply_to":"dab17558_c39c5b6c","updated":"2016-05-17 13:34:44.000000000","message":"Answered on the previous patch, but for curious onlookers this is done because project_id will be used for indexed lookups. Currently instances are queried on both instance_uuid for a show, or project_id for a list.","commit_id":"caea2dc987aca4c260840afe0675d79d4d869dfa"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0a2a914b1a886328b35e3d06eaa43144682ab731","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \u0027id\u0027: fields.IntegerField(),"},{"line_number":43,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":44,"context_line":"        \u0027project_id\u0027: fields.StringField(),"},{"line_number":45,"context_line":"        \u0027user_id\u0027: fields.StringField(),"},{"line_number":46,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":47,"context_line":"        \u0027instance_metadata\u0027: fields.DictOfStringsField(nullable\u003dTrue),"},{"line_number":48,"context_line":"        \u0027progress\u0027: fields.IntegerField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_57ce0c5b","side":"PARENT","line":45,"updated":"2016-05-18 11:12:11.000000000","message":"I thought all these had to stay here, till we hit a major version?\n\nHow do we implement the back port of these to an older version?\n\nDo we not send this over the wire yet, so we can just ignore all of that?","commit_id":"4a02f34736db5837d8a940ee61b8f17784675aca"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84a958e4002198933b9497947c92998ec87e239b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \u0027id\u0027: fields.IntegerField(),"},{"line_number":43,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":44,"context_line":"        \u0027project_id\u0027: fields.StringField(),"},{"line_number":45,"context_line":"        \u0027user_id\u0027: fields.StringField(),"},{"line_number":46,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":47,"context_line":"        \u0027instance_metadata\u0027: fields.DictOfStringsField(nullable\u003dTrue),"},{"line_number":48,"context_line":"        \u0027progress\u0027: fields.IntegerField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_0d557b4f","side":"PARENT","line":45,"in_reply_to":"bab6814e_57ce0c5b","updated":"2016-05-18 18:54:46.000000000","message":"Not sent over the wire yet so we can ignore it.","commit_id":"4a02f34736db5837d8a940ee61b8f17784675aca"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"31272eb2fdbf3d85f06b1a1084af346f9b5219ef","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \u0027id\u0027: fields.IntegerField(),"},{"line_number":43,"context_line":"        \u0027instance_uuid\u0027: fields.UUIDField(),"},{"line_number":44,"context_line":"        \u0027project_id\u0027: fields.StringField(),"},{"line_number":45,"context_line":"        \u0027user_id\u0027: fields.StringField(),"},{"line_number":46,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":47,"context_line":"        \u0027instance_metadata\u0027: fields.DictOfStringsField(nullable\u003dTrue),"},{"line_number":48,"context_line":"        \u0027progress\u0027: fields.IntegerField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab6814e_9843e441","side":"PARENT","line":45,"updated":"2016-05-20 22:42:44.000000000","message":"TBC, removing those kind of fields without providing a new major version is not good for others, but given here we only use that object in the API (and then closely deleting it), it\u0027s okay to accept removing those fields quickly.","commit_id":"4a02f34736db5837d8a940ee61b8f17784675aca"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d5caa82b96f637501883f357211e5b9c3d4923b2","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def _get_update_primitives(self):"},{"line_number":113,"context_line":"        updates \u003d self.obj_get_changes()"},{"line_number":114,"context_line":"        for key, value in six.iteritems(updates):"},{"line_number":115,"context_line":"            if isinstance(self.fields[key], fields.ObjectField):"},{"line_number":116,"context_line":"                updates[key] \u003d jsonutils.dumps(value.obj_to_primitive())"},{"line_number":117,"context_line":"        return updates"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bab6814e_addf7d38","line":115,"updated":"2016-05-22 04:08:38.000000000","message":"Nice. ++","commit_id":"98a05bc637e4c2e485d5aa5b62945102ea71d08b"}],"nova/tests/functional/db/api/test_migrations.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0a2a914b1a886328b35e3d06eaa43144682ab731","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # Define a whitelist of columns that will be removed from the"},{"line_number":86,"context_line":"        # DB at a later release and aren\u0027t on a model anymore."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        column_whitelist \u003d {"},{"line_number":89,"context_line":"                \u0027build_requests\u0027: [\u0027vm_state\u0027, \u0027instance_metadata\u0027,"},{"line_number":90,"context_line":"                    \u0027display_name\u0027, \u0027access_ip_v6\u0027, \u0027access_ip_v4\u0027, \u0027key_name\u0027,"},{"line_number":91,"context_line":"                    \u0027locked_by\u0027, \u0027image_ref\u0027, \u0027progress\u0027, \u0027request_spec_id\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_d764bc4a","line":88,"updated":"2016-05-18 11:12:11.000000000","message":"does the dependency tree work such that we can get this list from the build_requests object, or db model?","commit_id":"b0e351ce6143489d4da382bf13505024e6b89304"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84a958e4002198933b9497947c92998ec87e239b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # Define a whitelist of columns that will be removed from the"},{"line_number":86,"context_line":"        # DB at a later release and aren\u0027t on a model anymore."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        column_whitelist \u003d {"},{"line_number":89,"context_line":"                \u0027build_requests\u0027: [\u0027vm_state\u0027, \u0027instance_metadata\u0027,"},{"line_number":90,"context_line":"                    \u0027display_name\u0027, \u0027access_ip_v6\u0027, \u0027access_ip_v4\u0027, \u0027key_name\u0027,"},{"line_number":91,"context_line":"                    \u0027locked_by\u0027, \u0027image_ref\u0027, \u0027progress\u0027, \u0027request_spec_id\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_6d4fe792","line":88,"in_reply_to":"bab6814e_d764bc4a","updated":"2016-05-18 18:54:46.000000000","message":"Well, this list is not defined on either of those. It\u0027s a list of things that are no longer present there. I could add it to the model but it\u0027s only purpose would be to pull it for this. So I\u0027m not sure I see the advantage to doing that.","commit_id":"b0e351ce6143489d4da382bf13505024e6b89304"}]}
