)]}'
{"cinder/tests/fake_hp_client_exceptions.py":[{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"94eff0bc52cdee04552d36421d7821518b68387c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    def __init__(self, error\u003dNone):"},{"line_number":24,"context_line":"        if error:"},{"line_number":25,"context_line":"            if \u0027message\u0027 in error:"},{"line_number":26,"context_line":"                self._error_desc \u003d error[\u0027message\u0027]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def get_description(self):"},{"line_number":29,"context_line":"        return self._error_desc"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_a15e7f74","line":26,"updated":"2014-05-29 06:27:52.000000000","message":"if error and \u0027message\u0027 in error:\n    self._error_desc \u003d error[\u0027message\u0027]","commit_id":"b21461d40ebbf9eced474c01b160e7e33c91d171"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"3dc0f39b6a39ea3f43f80e6d3c62d89af7d9b189","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    def __init__(self, error\u003dNone):"},{"line_number":24,"context_line":"        if error:"},{"line_number":25,"context_line":"            if \u0027message\u0027 in error:"},{"line_number":26,"context_line":"                self._error_desc \u003d error[\u0027message\u0027]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def get_description(self):"},{"line_number":29,"context_line":"        return self._error_desc"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_120fb131","line":26,"in_reply_to":"3ae8d1ca_a15e7f74","updated":"2014-05-30 22:06:08.000000000","message":"Done\nplus a couple other like it","commit_id":"b21461d40ebbf9eced474c01b160e7e33c91d171"}],"cinder/tests/test_hp3par.py":[{"author":{"_account_id":9624,"name":"Ramy Asselin","email":"ramyasselin@yahoo.com","username":"asselin"},"change_message_id":"7bccf3fb6e69022804ac7513d4e133b13a498cd2","unresolved":false,"context_lines":[{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"        self.driver.terminate_connection(self.volume, self.connector)"},{"line_number":1062,"context_line":"        mock_client.assert_has_calls(expected)"},{"line_number":1063,"context_line":"        mock_client.reset_mock()"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":"        # mock some deleteHost exceptions that are handled"},{"line_number":1066,"context_line":"        delete_with_vlun \u003d hpexceptions.HTTPConflict("}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_65d731ee","line":1063,"updated":"2014-05-28 20:17:27.000000000","message":"Suggest leaving the original test case and creating one or more new test cases to cover the special cases.","commit_id":"84acee2072467e6c52c16ae80d9c6077c37df02c"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"c27af41fe284e2bea731bdb34fcbb1f4f9249f7d","unresolved":false,"context_lines":[{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"        self.driver.terminate_connection(self.volume, self.connector)"},{"line_number":1062,"context_line":"        mock_client.assert_has_calls(expected)"},{"line_number":1063,"context_line":"        mock_client.reset_mock()"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":"        # mock some deleteHost exceptions that are handled"},{"line_number":1066,"context_line":"        delete_with_vlun \u003d hpexceptions.HTTPConflict("}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_66ac98a1","line":1063,"in_reply_to":"3ae8d1ca_65d731ee","updated":"2014-05-28 21:05:56.000000000","message":"Disagree... partly.  I prefer to keep the test with the same VLUNs and same expected together and I verify that the exceptions which used to be a problem are still as \"expected\".  It\u0027s debatable, but I think keeping them together will keep them useful.  That last part, however, with multiple volumes and a different expectation would look better as a separate test.  So I\u0027ll do that.  Deal?","commit_id":"84acee2072467e6c52c16ae80d9c6077c37df02c"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"e5cf6c8af44b19180f8def45d71a9da1404fe474","unresolved":false,"context_lines":[{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"        self.driver.terminate_connection(self.volume, self.connector)"},{"line_number":1062,"context_line":"        mock_client.assert_has_calls(expected)"},{"line_number":1063,"context_line":"        mock_client.reset_mock()"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":"        # mock some deleteHost exceptions that are handled"},{"line_number":1066,"context_line":"        delete_with_vlun \u003d hpexceptions.HTTPConflict("}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_89a9b7e1","line":1063,"in_reply_to":"3ae8d1ca_65d731ee","updated":"2014-05-28 21:07:19.000000000","message":"Done (kind of)","commit_id":"84acee2072467e6c52c16ae80d9c6077c37df02c"}],"cinder/volume/drivers/san/hp/hp_3par_common.py":[{"author":{"_account_id":7767,"name":"Jeremiah Patterson","email":"jeremiah.patterson@hp.com","username":"jerpat"},"change_message_id":"27f1c9248148a2c644d646257e32c97fe9315c25","unresolved":false,"context_lines":[{"line_number":546,"context_line":"            # host, so it is worth the unlikely risk."},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"            try:"},{"line_number":549,"context_line":"                self.client.removeHostFromItsHostSet(hostname)"},{"line_number":550,"context_line":"            except Exception:"},{"line_number":551,"context_line":"                # We\u0027re going to try to delete the host anyway (if we can)."},{"line_number":552,"context_line":"                # That will either work or get the error description we want."}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_4816d7f2","line":549,"updated":"2014-05-28 15:32:00.000000000","message":"My firm belief is if the driver didn\u0027t do it - it shouldn\u0027t undo it.  I think that if a host is found in a host set it should be left alone - the driver doesn\u0027t create host sets, so the customer did this for a reason which is unknown to the driver logic.\n\nMy request would be to attempt to delete the host and log why it fails and move on.  (and thank you for eating all exceptions after the vlun delete 10x thumbs up)","commit_id":"60d7b1d74b8493e829026c7a9a3732d9c4af6e83"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"1fc3565f048fbc5c90404fcd26d79e70f97bf5cc","unresolved":false,"context_lines":[{"line_number":546,"context_line":"            # host, so it is worth the unlikely risk."},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"            try:"},{"line_number":549,"context_line":"                self.client.removeHostFromItsHostSet(hostname)"},{"line_number":550,"context_line":"            except Exception:"},{"line_number":551,"context_line":"                # We\u0027re going to try to delete the host anyway (if we can)."},{"line_number":552,"context_line":"                # That will either work or get the error description we want."}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_e61d0868","line":549,"in_reply_to":"3ae8d1ca_4816d7f2","updated":"2014-05-28 21:05:04.000000000","message":"Done","commit_id":"60d7b1d74b8493e829026c7a9a3732d9c4af6e83"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"a8e9bd0055da02e9e1d955a06d250def1229672f","unresolved":false,"context_lines":[{"line_number":546,"context_line":"            # host, so it is worth the unlikely risk."},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"            try:"},{"line_number":549,"context_line":"                self.client.removeHostFromItsHostSet(hostname)"},{"line_number":550,"context_line":"            except Exception:"},{"line_number":551,"context_line":"                # We\u0027re going to try to delete the host anyway (if we can)."},{"line_number":552,"context_line":"                # That will either work or get the error description we want."}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_3eae1e86","line":549,"in_reply_to":"3ae8d1ca_4816d7f2","updated":"2014-05-28 17:54:36.000000000","message":"We went back and forth on this.  We revisited again and will do it as you suggest.","commit_id":"60d7b1d74b8493e829026c7a9a3732d9c4af6e83"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"08165a155d03dcd987e711fdd29b967ef515c2f7","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                found_vlun \u003d vlun"},{"line_number":516,"context_line":"                break"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        if found_vlun is None:"},{"line_number":519,"context_line":"            msg \u003d ("},{"line_number":520,"context_line":"                _(\"3PAR vlun for volume %(name)s not found on host %(host)s\") %"},{"line_number":521,"context_line":"                {\u0027name\u0027: volume_name, \u0027host\u0027: hostname})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_e5a981e0","line":518,"updated":"2014-05-28 19:54:52.000000000","message":"Should replace this with an else: on the for loop.","commit_id":"84acee2072467e6c52c16ae80d9c6077c37df02c"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"67fd5e79a993d6ddad5994b59e0da05aff398b09","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                found_vlun \u003d vlun"},{"line_number":516,"context_line":"                break"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        if found_vlun is None:"},{"line_number":519,"context_line":"            msg \u003d ("},{"line_number":520,"context_line":"                _(\"3PAR vlun for volume %(name)s not found on host %(host)s\") %"},{"line_number":521,"context_line":"                {\u0027name\u0027: volume_name, \u0027host\u0027: hostname})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_05de6d6d","line":518,"in_reply_to":"3ae8d1ca_e5a981e0","updated":"2014-05-28 20:02:24.000000000","message":"Advanced Python 301","commit_id":"84acee2072467e6c52c16ae80d9c6077c37df02c"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"c27af41fe284e2bea731bdb34fcbb1f4f9249f7d","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                found_vlun \u003d vlun"},{"line_number":516,"context_line":"                break"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        if found_vlun is None:"},{"line_number":519,"context_line":"            msg \u003d ("},{"line_number":520,"context_line":"                _(\"3PAR vlun for volume %(name)s not found on host %(host)s\") %"},{"line_number":521,"context_line":"                {\u0027name\u0027: volume_name, \u0027host\u0027: hostname})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_46031c0d","line":518,"in_reply_to":"3ae8d1ca_e5a981e0","updated":"2014-05-28 21:05:56.000000000","message":"Done","commit_id":"84acee2072467e6c52c16ae80d9c6077c37df02c"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"cc9a2a6b995903c8e26fa5f55391de0a3ca3e078","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            msg \u003d ("},{"line_number":517,"context_line":"                _(\"3PAR vlun for volume %(name)s not found on host %(host)s\") %"},{"line_number":518,"context_line":"                {\u0027name\u0027: volume_name, \u0027host\u0027: hostname})"},{"line_number":519,"context_line":"            LOG.warn(msg)"},{"line_number":520,"context_line":"            return"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        # VLUN Type of MATCHED_SET 4 requires the port to be provided"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_557d671b","line":519,"updated":"2014-05-29 14:12:09.000000000","message":"What is the operator meant to do about this warning? In general, warnings are things the operator is supposed to care about / fix, if I\u0027m reading this right, it is INFO level, the operator shouldn\u0027t care?","commit_id":"b21461d40ebbf9eced474c01b160e7e33c91d171"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"3dc0f39b6a39ea3f43f80e6d3c62d89af7d9b189","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            msg \u003d ("},{"line_number":517,"context_line":"                _(\"3PAR vlun for volume %(name)s not found on host %(host)s\") %"},{"line_number":518,"context_line":"                {\u0027name\u0027: volume_name, \u0027host\u0027: hostname})"},{"line_number":519,"context_line":"            LOG.warn(msg)"},{"line_number":520,"context_line":"            return"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        # VLUN Type of MATCHED_SET 4 requires the port to be provided"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_f257a500","line":519,"in_reply_to":"1ae5cdf2_af95e189","updated":"2014-05-30 22:06:08.000000000","message":"Done","commit_id":"b21461d40ebbf9eced474c01b160e7e33c91d171"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"3dc0f39b6a39ea3f43f80e6d3c62d89af7d9b189","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            msg \u003d ("},{"line_number":517,"context_line":"                _(\"3PAR vlun for volume %(name)s not found on host %(host)s\") %"},{"line_number":518,"context_line":"                {\u0027name\u0027: volume_name, \u0027host\u0027: hostname})"},{"line_number":519,"context_line":"            LOG.warn(msg)"},{"line_number":520,"context_line":"            return"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        # VLUN Type of MATCHED_SET 4 requires the port to be provided"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_923101ef","line":519,"in_reply_to":"3ae8d1ca_557d671b","updated":"2014-05-30 22:06:08.000000000","message":"Done","commit_id":"b21461d40ebbf9eced474c01b160e7e33c91d171"},{"author":{"_account_id":7767,"name":"Jeremiah Patterson","email":"jeremiah.patterson@hp.com","username":"jerpat"},"change_message_id":"ff549e697987ae4c4ac12cad81673f21c03551da","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            msg \u003d ("},{"line_number":517,"context_line":"                _(\"3PAR vlun for volume %(name)s not found on host %(host)s\") %"},{"line_number":518,"context_line":"                {\u0027name\u0027: volume_name, \u0027host\u0027: hostname})"},{"line_number":519,"context_line":"            LOG.warn(msg)"},{"line_number":520,"context_line":"            return"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        # VLUN Type of MATCHED_SET 4 requires the port to be provided"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_d3c42f61","line":519,"in_reply_to":"3ae8d1ca_557d671b","updated":"2014-05-29 15:00:18.000000000","message":"I think it\u0027s possible that they will need to clean up the host manually if desired?  as an example of response","commit_id":"b21461d40ebbf9eced474c01b160e7e33c91d171"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"05d3440d855ec68acf672f6130e27b8e673ebd7e","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            msg \u003d ("},{"line_number":517,"context_line":"                _(\"3PAR vlun for volume %(name)s not found on host %(host)s\") %"},{"line_number":518,"context_line":"                {\u0027name\u0027: volume_name, \u0027host\u0027: hostname})"},{"line_number":519,"context_line":"            LOG.warn(msg)"},{"line_number":520,"context_line":"            return"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        # VLUN Type of MATCHED_SET 4 requires the port to be provided"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_af95e189","line":519,"in_reply_to":"3ae8d1ca_557d671b","updated":"2014-05-29 22:41:56.000000000","message":"In this case, I think Duncan is right.   We are basically just logging this and continuing on.  It\u0027s not really a warning, but an INFO.   Warnings should require action of some sort.  If the VLUN isn\u0027t there on the 3PAR and we are trying to delete it, the driver is ok with it.","commit_id":"b21461d40ebbf9eced474c01b160e7e33c91d171"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"3dc0f39b6a39ea3f43f80e6d3c62d89af7d9b189","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            msg \u003d ("},{"line_number":517,"context_line":"                _(\"3PAR vlun for volume %(name)s not found on host %(host)s\") %"},{"line_number":518,"context_line":"                {\u0027name\u0027: volume_name, \u0027host\u0027: hostname})"},{"line_number":519,"context_line":"            LOG.warn(msg)"},{"line_number":520,"context_line":"            return"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        # VLUN Type of MATCHED_SET 4 requires the port to be provided"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_b29b5dc8","line":519,"in_reply_to":"3ae8d1ca_d3c42f61","updated":"2014-05-30 22:06:08.000000000","message":"you win some, you lose some.  You got out voted on this one.","commit_id":"b21461d40ebbf9eced474c01b160e7e33c91d171"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6a6da94f4d3905ef3a48beba60feb7084201aba8","unresolved":false,"context_lines":[{"line_number":550,"context_line":"                # the host will remain in the host set.  This is desired"},{"line_number":551,"context_line":"                # because cinder was not responsible for the host set"},{"line_number":552,"context_line":"                # assignment.  The host set could be used outside of cinder"},{"line_number":553,"context_line":"                # for future needs (e.g. export volume to host set)."},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"                # The log info explains why the host was left alone."},{"line_number":556,"context_line":"                msg \u003d (_(\"3PAR vlun for volume \u0027%(name)s\u0027 was deleted, \""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_8041a63b","line":553,"updated":"2014-05-31 05:47:47.000000000","message":"Why don\u0027t you remove the host from the host set here when there are no volumes attached to the host any more?  Isn\u0027t it better to dynamically add the host back to the host set when you need to attach a volume to the host again?","commit_id":"ffa12c98971e35056a7867cd61ba5a39630cc0a7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"227d338e21ab3c224dcf17803edf3a65480f4fce","unresolved":false,"context_lines":[{"line_number":550,"context_line":"                # the host will remain in the host set.  This is desired"},{"line_number":551,"context_line":"                # because cinder was not responsible for the host set"},{"line_number":552,"context_line":"                # assignment.  The host set could be used outside of cinder"},{"line_number":553,"context_line":"                # for future needs (e.g. export volume to host set)."},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"                # The log info explains why the host was left alone."},{"line_number":556,"context_line":"                msg \u003d (_(\"3PAR vlun for volume \u0027%(name)s\u0027 was deleted, \""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_2eb19ce1","line":553,"in_reply_to":"1ae5cdf2_0eef801f","updated":"2014-05-31 21:55:22.000000000","message":"Ok.  Thanks for the explanation.","commit_id":"ffa12c98971e35056a7867cd61ba5a39630cc0a7"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f2b940007caa5d479f4e45e3122891d9a84d09cf","unresolved":false,"context_lines":[{"line_number":550,"context_line":"                # the host will remain in the host set.  This is desired"},{"line_number":551,"context_line":"                # because cinder was not responsible for the host set"},{"line_number":552,"context_line":"                # assignment.  The host set could be used outside of cinder"},{"line_number":553,"context_line":"                # for future needs (e.g. export volume to host set)."},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"                # The log info explains why the host was left alone."},{"line_number":556,"context_line":"                msg \u003d (_(\"3PAR vlun for volume \u0027%(name)s\u0027 was deleted, \""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_0eef801f","line":553,"in_reply_to":"1ae5cdf2_8041a63b","updated":"2014-05-31 21:02:03.000000000","message":"In cinder we don\u0027t use host sets.  The host must have been added to the host set outside of cinder.  After we do a cinder detach, the host set might be used outside of cinder again.  If we yank hosts out of host sets then those non-cinder activities would be broken.  After back-and-forth (see other comments), it was decide that since we didn\u0027t put the host in the host set, we should remove the host from the host set.  So this fixes the hung detach, but doesn\u0027t \"damage\" the host set that was defined outside of cinder.","commit_id":"ffa12c98971e35056a7867cd61ba5a39630cc0a7"}]}
