)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"040e51df4a975e136f354c83c7f98614cd4f5411","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When creating block devices for the first time on instance create - we"},{"line_number":10,"context_line":"need to consider some things we would normally not care about, such as"},{"line_number":11,"context_line":"that it is possible to have block devices specified in the boot request"},{"line_number":12,"context_line":"that are meant to override those specifide in the image using the device"},{"line_number":13,"context_line":"name."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Database API method block_device_mapping_update_or_create has the logic"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ae5cdf2_534dac71","line":12,"updated":"2014-06-09 19:14:43.000000000","message":"s/specifide/specified/ :)","commit_id":"5febe50d28416a837ec56f4fe8054eaebe27e5f2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"dd03273a67d80a32e71a3cf6498494da0843d88d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When creating block devices for the first time on instance create - we"},{"line_number":10,"context_line":"need to consider some things we would normally not care about, such as"},{"line_number":11,"context_line":"that it is possible to have block devices specified in the boot request"},{"line_number":12,"context_line":"that are meant to override those specifide in the image using the device"},{"line_number":13,"context_line":"name."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Database API method block_device_mapping_update_or_create has the logic"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ae5cdf2_4a8766b5","line":12,"in_reply_to":"1ae5cdf2_534dac71","updated":"2014-06-11 16:18:19.000000000","message":"Done","commit_id":"5febe50d28416a837ec56f4fe8054eaebe27e5f2"}],"nova/objects/block_device.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"040e51df4a975e136f354c83c7f98614cd4f5411","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return block_device_obj"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @base.remotable"},{"line_number":85,"context_line":"    def create(self, context, update_or_create\u003dFalse):"},{"line_number":86,"context_line":"        cell_type \u003d cells_opts.get_cell_type()"},{"line_number":87,"context_line":"        if cell_type \u003d\u003d \u0027api\u0027:"},{"line_number":88,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_f3907898","line":85,"updated":"2014-06-09 19:14:43.000000000","message":"Mind adding a quick docstring that explains the new parameter to this method along with a sentence about how the use of cells changes the behavior of the method and the interpretation of the parameter?","commit_id":"5febe50d28416a837ec56f4fe8054eaebe27e5f2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"dd03273a67d80a32e71a3cf6498494da0843d88d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return block_device_obj"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @base.remotable"},{"line_number":85,"context_line":"    def create(self, context, update_or_create\u003dFalse):"},{"line_number":86,"context_line":"        cell_type \u003d cells_opts.get_cell_type()"},{"line_number":87,"context_line":"        if cell_type \u003d\u003d \u0027api\u0027:"},{"line_number":88,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_f4ecccbd","line":85,"in_reply_to":"1ae5cdf2_f3907898","updated":"2014-06-11 16:18:19.000000000","message":"Done","commit_id":"5febe50d28416a837ec56f4fe8054eaebe27e5f2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1fc718e56301628766625c6ed10d04b68ae5dcac","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @base.remotable"},{"line_number":85,"context_line":"    def create(self, context, update_or_create\u003dFalse):"},{"line_number":86,"context_line":"        \"\"\" Create the block device record in the database."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        In case the id field is set on the object, and if the instance is set"},{"line_number":89,"context_line":"        raise an ObjectActionError. Resets all the changes on the object."}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_bf4658be","line":86,"updated":"2014-06-11 17:41:54.000000000","message":"I think pep8 check will ding you for the space after the \"\"\" above, just FYI.","commit_id":"7509541003c894ab6caf7df0843822cbf89e35fa"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"72bff1865d14ec0b05ca7e42b57453176cce1b8d","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @base.remotable"},{"line_number":85,"context_line":"    def create(self, context, update_or_create\u003dFalse):"},{"line_number":86,"context_line":"        \"\"\" Create the block device record in the database."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        In case the id field is set on the object, and if the instance is set"},{"line_number":89,"context_line":"        raise an ObjectActionError. Resets all the changes on the object."}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_07d535e4","line":86,"in_reply_to":"1ae5cdf2_bf4658be","updated":"2014-06-12 06:46:27.000000000","message":"GAH!","commit_id":"7509541003c894ab6caf7df0843822cbf89e35fa"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0db0808adf1f169c30bc227f667c6876d24559e7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return block_device_obj"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @base.remotable"},{"line_number":85,"context_line":"    def create(self, context, update_or_create\u003dFalse):"},{"line_number":86,"context_line":"        \"\"\"Create the block device record in the database."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        In case the id field is set on the object, and if the instance is set"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_c4dd9443","line":85,"updated":"2014-08-05 18:41:05.000000000","message":"So, I dunno why, but I don\u0027t like this. I guess because I want all the .create() methods to behave the same and barf if the thing already exists. That leads me to either of the following conclusions:\n\nFirst, maybe we should try to know at a higher layer that we\u0027re updating an existing BDM and call .save() instead.\n\nSecond, maybe it makes sense to have a semantically-different operation for create_or_update() instead of rolling it into create. I know it would mean a little more work, but it could basically be two wrappers on what you have here.\n\nIt just seems wrong to me that we push that logic all the way down to the db layer, when we really should consider that an error condition if we\u0027re not expecting it. Know what I mean?","commit_id":"fd47926639040d4311d09914475a7570ef0a5d5a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"68a1b5e2b1b9b400ac5a32c4d552459f601ee662","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return block_device_obj"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @base.remotable"},{"line_number":85,"context_line":"    def create(self, context, update_or_create\u003dFalse):"},{"line_number":86,"context_line":"        \"\"\"Create the block device record in the database."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        In case the id field is set on the object, and if the instance is set"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_b9423439","line":85,"in_reply_to":"baada198_c4dd9443","updated":"2014-08-07 18:04:43.000000000","message":"Right - got you - I was thinking the same thing when I wrote this - I think I will split it out in two methods.","commit_id":"fd47926639040d4311d09914475a7570ef0a5d5a"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"d73452489d1acbb681255a90cfce454568ef4417","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        if cell_type \u003d\u003d \u0027compute\u0027:"},{"line_number":123,"context_line":"            cells_api \u003d cells_rpcapi.CellsAPI()"},{"line_number":124,"context_line":"            cells_api.bdm_update_or_create_at_top("},{"line_number":125,"context_line":"                context, self, create\u003dcells_create)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @base.remotable"},{"line_number":128,"context_line":"    def create(self, context):"}],"source_content_type":"text/x-python","patch_set":17,"id":"7ac7a964_13fec638","line":125,"updated":"2014-08-15 09:07:32.000000000","message":"This create\u003d is gonna be a bug for cells.  The nova/cells/messaging code has this:\n\n1182         if create is None:\n1183             self.db.block_device_mapping_update_or_create(message.ctxt,\n[...]\n\nAnd line 113 is gonna set this to either True or False.","commit_id":"e73353906df6222717f4876e6e5de917d5579714"}]}
