)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"24d6171dc90d4311b09a173fc014f33e40eb2e2c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Co-Authored-By: Michal Dulko \u003cmichal.dulko@intel.com\u003e"},{"line_number":22,"context_line":"Change-Id: Ic1b0f09132f8fc500b29650abbd57f18ea8bd9dd"},{"line_number":23,"context_line":"Partial-Implements: blueprint cinder-objects"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: Ief9c63e8bddb2b40bdef4465b9099cff33d7c3bc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da85f559_07929857","line":24,"updated":"2015-11-10 14:54:21.000000000","message":"Does this need an API Impact?","commit_id":"4a99ab8f8e91d6de0a8ab0271bbda2bca5d0a3b1"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a66830b2a7d8cda6b2c592fac20cabc423931bca","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Co-Authored-By: Michal Dulko \u003cmichal.dulko@intel.com\u003e"},{"line_number":22,"context_line":"Change-Id: Ic1b0f09132f8fc500b29650abbd57f18ea8bd9dd"},{"line_number":23,"context_line":"Partial-Implements: blueprint cinder-objects"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: Ief9c63e8bddb2b40bdef4465b9099cff33d7c3bc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da85f559_e242e23d","line":24,"in_reply_to":"da85f559_07929857","updated":"2015-11-10 15:01:57.000000000","message":"No.  I mentioned this in a related patch, where you had -1 on a similar note.  API impact ONLY applies to user facing APIs, NOT RPC APIs.","commit_id":"4a99ab8f8e91d6de0a8ab0271bbda2bca5d0a3b1"}],"cinder/scheduler/flows/create_volume.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f21edb5ee5dae7f9b81c95c27257a49d3c5a688","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                               image_id):"},{"line_number":45,"context_line":"        # Create the full request spec using the volume object."},{"line_number":46,"context_line":"        #"},{"line_number":47,"context_line":"        # NOTE(dulek): Volume should be in CREATING state, so it cannot be"},{"line_number":48,"context_line":"        # deleted without \"force\" option. However such possibility still exists"},{"line_number":49,"context_line":"        # and we may want to lock on volume_id to prevent deletion of a volume"},{"line_number":50,"context_line":"        # that is still being created?"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_b4a65351","line":47,"updated":"2015-11-05 20:43:21.000000000","message":"Whoa, I\u0027ve written that… This is embarrassing, but well…\n\nThis is wrong assumption - you can delete a volume before it gets scheduled (before host column is written in the DB) - it gets instantly deleted by API [1]. And volume is prior to scheduling at this point, so this applies.\n\nThe approach is correct IMO - whole scheduling will fail on the try to update the DB entry with host. So further RPC calls won\u0027t be issued and we\u0027ll end up with error from line 98 in the logs and no volume (it is already removed from the DB).\n\nSo we just need to fix the comment to reflect that.\n\n[1] https://github.com/openstack/cinder/blob/master/cinder/volume/api.py#L357-L384","commit_id":"029db13351b0dcd325015882032866e879957552"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"1db962410a9aef589d118cf23f954197fec3131d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                               image_id):"},{"line_number":45,"context_line":"        # Create the full request spec using the volume object."},{"line_number":46,"context_line":"        #"},{"line_number":47,"context_line":"        # NOTE(dulek): Volume should be in CREATING state, so it cannot be"},{"line_number":48,"context_line":"        # deleted without \"force\" option. However such possibility still exists"},{"line_number":49,"context_line":"        # and we may want to lock on volume_id to prevent deletion of a volume"},{"line_number":50,"context_line":"        # that is still being created?"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_bddaa84a","line":47,"in_reply_to":"fa80f949_b4a65351","updated":"2015-11-06 07:40:37.000000000","message":"Ok.  I will change it to say:\n\nAt this point, a volume can be deleted before it gets scheduled.  If a delete API call is made, the volume gets instantly delete and scheduling will fail when it tries to update the DB entry (with the host) in ScheduleCreateVolumeTask below.","commit_id":"029db13351b0dcd325015882032866e879957552"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a884d3de2c05e2849096f630c9c50a9924aaeb32","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                               image_id):"},{"line_number":45,"context_line":"        # Create the full request spec using the volume object."},{"line_number":46,"context_line":"        #"},{"line_number":47,"context_line":"        # NOTE(dulek): Volume should be in CREATING state, so it cannot be"},{"line_number":48,"context_line":"        # deleted without \"force\" option. However such possibility still exists"},{"line_number":49,"context_line":"        # and we may want to lock on volume_id to prevent deletion of a volume"},{"line_number":50,"context_line":"        # that is still being created?"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_d3f51857","line":47,"in_reply_to":"fa80f949_bddaa84a","updated":"2015-11-06 09:49:11.000000000","message":"Comment seems fine. Thanks!\n\nNote also line #52 - we are getting volume type there, but this won\u0027t be a DB call, because we\u0027re eager loading volume_type when fetching a volume.","commit_id":"029db13351b0dcd325015882032866e879957552"}],"cinder/scheduler/manager.py":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"764c92b14f10281fff18a8d385af13060f010c77","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self._wait_for_scheduler()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # FIXME(thangp): Remove this in v2.0 of RPC API."},{"line_number":125,"context_line":"        if volume is None:"},{"line_number":126,"context_line":"            # For older clients, mimic the old behavior and look up the"},{"line_number":127,"context_line":"            # volume by its volume_id."}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_062bdc31","line":124,"updated":"2015-11-03 16:15:44.000000000","message":"I\u0027ll be thrilled when we have a consistent object passed everywhere for Volume instead of a mix of id or reference.\n\nOne question it\u0027s just too bad we have to provide both to maintain compat.","commit_id":"783bd7f3d6c7c9f11cc3f1182dd96f511bb04012"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"c547bcc0dfbd1cef45123828acb0cb043bf6fc70","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self._wait_for_scheduler()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # FIXME(thangp): Remove this in v2.0 of RPC API."},{"line_number":125,"context_line":"        if volume is None:"},{"line_number":126,"context_line":"            # For older clients, mimic the old behavior and look up the"},{"line_number":127,"context_line":"            # volume by its volume_id."}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_31096e2d","line":124,"in_reply_to":"fa80f949_062bdc31","updated":"2015-11-03 22:17:42.000000000","message":"v2.0 we will just send just objects.  Maybe it can happen a release or two post Mitaka :)","commit_id":"783bd7f3d6c7c9f11cc3f1182dd96f511bb04012"}],"cinder/volume/flows/manager/create_volume.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f21edb5ee5dae7f9b81c95c27257a49d3c5a688","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        #"},{"line_number":210,"context_line":"        # In the future we might want to have a lock on the volume_id so that"},{"line_number":211,"context_line":"        # the volume can not be deleted while its still being created?"},{"line_number":212,"context_line":"        return objects.Volume.get_by_id(context, volume_id)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def revert(self, context, volume_id, result, **kwargs):"},{"line_number":215,"context_line":"        if isinstance(result, ft.Failure) or not self.set_error:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_8a1e8661","line":212,"updated":"2015-11-05 20:43:21.000000000","message":"I wonder if we wouldn\u0027t be able to simply pass the object we\u0027ve got from RPC into the flow and spare this DB call (or do refresh instead). As this is how it was done in the patch before splitting it - I think there is a reason, but I cannot recall it.","commit_id":"029db13351b0dcd325015882032866e879957552"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"1db962410a9aef589d118cf23f954197fec3131d","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        #"},{"line_number":210,"context_line":"        # In the future we might want to have a lock on the volume_id so that"},{"line_number":211,"context_line":"        # the volume can not be deleted while its still being created?"},{"line_number":212,"context_line":"        return objects.Volume.get_by_id(context, volume_id)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def revert(self, context, volume_id, result, **kwargs):"},{"line_number":215,"context_line":"        if isinstance(result, ft.Failure) or not self.set_error:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_fdbfd0a7","line":212,"in_reply_to":"fa80f949_8a1e8661","updated":"2015-11-06 07:40:37.000000000","message":"I can\u0027t remember.  Maybe, to check if the volume got deleted (see note above).  Lets deal with it in a separate patch if needed.","commit_id":"029db13351b0dcd325015882032866e879957552"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a884d3de2c05e2849096f630c9c50a9924aaeb32","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        #"},{"line_number":210,"context_line":"        # In the future we might want to have a lock on the volume_id so that"},{"line_number":211,"context_line":"        # the volume can not be deleted while its still being created?"},{"line_number":212,"context_line":"        return objects.Volume.get_by_id(context, volume_id)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def revert(self, context, volume_id, result, **kwargs):"},{"line_number":215,"context_line":"        if isinstance(result, ft.Failure) or not self.set_error:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_5377e8d2","line":212,"in_reply_to":"fa80f949_fdbfd0a7","updated":"2015-11-06 09:49:11.000000000","message":"I totally agree and sign up for looking into this optimization. We\u0027re not making things worse that they were, so this should be fine as first version.","commit_id":"029db13351b0dcd325015882032866e879957552"}]}
