)]}'
{"manila/share/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7184e37e76513cfe80f74df32a52836972a48f6d","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        self.send_request(\u0027vserver-destroy\u0027, {\u0027vserver-name\u0027: vserver_name})"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        # delete VLANs"},{"line_number":347,"context_line":"        for interface in network_interfaces:"},{"line_number":348,"context_line":"            try:"},{"line_number":349,"context_line":"                home_port \u003d interface[\u0027home-port\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_6dbc75bb","line":346,"range":{"start_line":346,"start_character":10,"end_line":346,"end_character":11},"updated":"2016-05-22 04:50:20.000000000","message":"s/d/D","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e85ab4abeb5d84aa8e48e3ed698da8b56b3689d1","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        self.send_request(\u0027vserver-destroy\u0027, {\u0027vserver-name\u0027: vserver_name})"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        # delete VLANs"},{"line_number":347,"context_line":"        for interface in network_interfaces:"},{"line_number":348,"context_line":"            try:"},{"line_number":349,"context_line":"                home_port \u003d interface[\u0027home-port\u0027]"},{"line_number":350,"context_line":"                port, vlan \u003d home_port.split(\u0027-\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_b613975b","line":347,"range":{"start_line":347,"start_character":12,"end_line":347,"end_character":43},"updated":"2016-05-25 17:40:38.000000000","message":"Please move this VLAN port deletion code to a separate method that may be called separately from lib_multi_svm.py.  That way it can be protected by a lock from there if necessary, and it\u0027s simpler to fully cover with unit tests.","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"1900ba9883d4461b60391aa1e1623a96774490fd","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        self.send_request(\u0027vserver-destroy\u0027, {\u0027vserver-name\u0027: vserver_name})"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        # delete VLANs"},{"line_number":347,"context_line":"        for interface in network_interfaces:"},{"line_number":348,"context_line":"            try:"},{"line_number":349,"context_line":"                home_port \u003d interface[\u0027home-port\u0027]"},{"line_number":350,"context_line":"                port, vlan \u003d home_port.split(\u0027-\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_63be65af","line":347,"range":{"start_line":347,"start_character":12,"end_line":347,"end_character":43},"in_reply_to":"bab6814e_b613975b","updated":"2016-05-26 14:39:26.000000000","message":"Done","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"a6b555bccd15e1610198f52c24a68893edf20620","unresolved":false,"context_lines":[{"line_number":351,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":352,"context_line":"                self._delete_vlan(node, port, vlan)"},{"line_number":353,"context_line":"            except exception.NetAppException as e:"},{"line_number":354,"context_line":"                LOG.error(_LE(\"%s\"), e)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    @na_utils.trace"},{"line_number":357,"context_line":"    def _terminate_vserver_services(self, vserver_name, vserver_client,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_21cfe356","line":354,"range":{"start_line":354,"start_character":16,"end_line":354,"end_character":39},"updated":"2016-05-23 18:03:42.000000000","message":"Please use a friendly translate message instead of what comes directly from the backend. You can include both like: \"Could not delete VLAN interface: %s\".\n\nAlso, I am assuming that there will be lots and lots of messages like this if the VLANs are used for more than a vserver, so the LOG.error should not be used in this case (and you are not even raising the exception), so I advise LOG.warning instead.","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e85ab4abeb5d84aa8e48e3ed698da8b56b3689d1","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                port, vlan \u003d home_port.split(\u0027-\u0027)"},{"line_number":351,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":352,"context_line":"                self._delete_vlan(node, port, vlan)"},{"line_number":353,"context_line":"            except exception.NetAppException as e:"},{"line_number":354,"context_line":"                LOG.error(_LE(\"%s\"), e)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    @na_utils.trace"},{"line_number":357,"context_line":"    def _terminate_vserver_services(self, vserver_name, vserver_client,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_1108add8","line":354,"range":{"start_line":353,"start_character":12,"end_line":354,"end_character":39},"updated":"2016-05-25 17:40:38.000000000","message":"This block wasn\u0027t covered by a unit test.  You can solve that most easily by breaking this out as I suggested above.","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"1900ba9883d4461b60391aa1e1623a96774490fd","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                port, vlan \u003d home_port.split(\u0027-\u0027)"},{"line_number":351,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":352,"context_line":"                self._delete_vlan(node, port, vlan)"},{"line_number":353,"context_line":"            except exception.NetAppException as e:"},{"line_number":354,"context_line":"                LOG.error(_LE(\"%s\"), e)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    @na_utils.trace"},{"line_number":357,"context_line":"    def _terminate_vserver_services(self, vserver_name, vserver_client,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_03e4b9dd","line":354,"range":{"start_line":353,"start_character":12,"end_line":354,"end_character":39},"in_reply_to":"bab6814e_1108add8","updated":"2016-05-26 14:39:26.000000000","message":"Done","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"e6a0a8525c7f585c23ca7ea7a9ede33f87007196","unresolved":false,"context_lines":[{"line_number":351,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":352,"context_line":"                self._delete_vlan(node, port, vlan)"},{"line_number":353,"context_line":"            except exception.NetAppException as e:"},{"line_number":354,"context_line":"                LOG.error(_LE(\"%s\"), e)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    @na_utils.trace"},{"line_number":357,"context_line":"    def _terminate_vserver_services(self, vserver_name, vserver_client,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_956d02cf","line":354,"range":{"start_line":354,"start_character":16,"end_line":354,"end_character":39},"in_reply_to":"bab6814e_21cfe356","updated":"2016-05-24 11:34:28.000000000","message":"Hi Rodrigo,\n\nThe new new backend function _delete_vlan already throws a descriptive error \"Failed to delete VLAN...\" (see L554). \nThe error is only thrown, if something unexpected happens. The case, when the VLAN is still in use from another lif, will be catched and logged to debug (see L548).","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e85ab4abeb5d84aa8e48e3ed698da8b56b3689d1","unresolved":false,"context_lines":[{"line_number":545,"context_line":"            }"},{"line_number":546,"context_line":"            self.send_request(\u0027net-vlan-delete\u0027, api_args)"},{"line_number":547,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":548,"context_line":"            if (e.code \u003d\u003d netapp_api.EAPIERROR and"},{"line_number":549,"context_line":"               e.message \u003d\u003d \"Port already has a lif bound. \"):"},{"line_number":550,"context_line":"                LOG.debug(\u0027VLAN %(vlan)s on port %(port)s node %(node)s \u0027"},{"line_number":551,"context_line":"                          \u0027still used by lif and cannot be deleted.\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_d6ed7bb8","line":548,"range":{"start_line":548,"start_character":37,"end_line":548,"end_character":46},"updated":"2016-05-25 17:40:38.000000000","message":"Are you certain this generic error always means the port has a LIF bound?  If not, is it good enough that this is intended to be a best-effort deletion?  Otherwise, it might be better to explicitly query the vserver for LIFs on this port.","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"1900ba9883d4461b60391aa1e1623a96774490fd","unresolved":false,"context_lines":[{"line_number":545,"context_line":"            }"},{"line_number":546,"context_line":"            self.send_request(\u0027net-vlan-delete\u0027, api_args)"},{"line_number":547,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":548,"context_line":"            if (e.code \u003d\u003d netapp_api.EAPIERROR and"},{"line_number":549,"context_line":"               e.message \u003d\u003d \"Port already has a lif bound. \"):"},{"line_number":550,"context_line":"                LOG.debug(\u0027VLAN %(vlan)s on port %(port)s node %(node)s \u0027"},{"line_number":551,"context_line":"                          \u0027still used by lif and cannot be deleted.\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_686ace82","line":548,"range":{"start_line":548,"start_character":37,"end_line":548,"end_character":46},"in_reply_to":"bab6814e_d6ed7bb8","updated":"2016-05-26 14:39:26.000000000","message":"I have tested this in our lab, and netapp api returns exactly that: error code 13001 (EAPIERROR) and the message \"Port already has a lif bound. \". Exactly that error (code + message) will be catched and logged with debug and ignored.","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e85ab4abeb5d84aa8e48e3ed698da8b56b3689d1","unresolved":false,"context_lines":[{"line_number":546,"context_line":"            self.send_request(\u0027net-vlan-delete\u0027, api_args)"},{"line_number":547,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":548,"context_line":"            if (e.code \u003d\u003d netapp_api.EAPIERROR and"},{"line_number":549,"context_line":"               e.message \u003d\u003d \"Port already has a lif bound. \"):"},{"line_number":550,"context_line":"                LOG.debug(\u0027VLAN %(vlan)s on port %(port)s node %(node)s \u0027"},{"line_number":551,"context_line":"                          \u0027still used by lif and cannot be deleted.\u0027,"},{"line_number":552,"context_line":"                          {\u0027vlan\u0027: vlan, \u0027port\u0027: port, \u0027node\u0027: node})"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_766e4fca","line":549,"range":{"start_line":549,"start_character":48,"end_line":549,"end_character":51},"updated":"2016-05-25 17:40:38.000000000","message":"s/lif/LIF/","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"1900ba9883d4461b60391aa1e1623a96774490fd","unresolved":false,"context_lines":[{"line_number":546,"context_line":"            self.send_request(\u0027net-vlan-delete\u0027, api_args)"},{"line_number":547,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":548,"context_line":"            if (e.code \u003d\u003d netapp_api.EAPIERROR and"},{"line_number":549,"context_line":"               e.message \u003d\u003d \"Port already has a lif bound. \"):"},{"line_number":550,"context_line":"                LOG.debug(\u0027VLAN %(vlan)s on port %(port)s node %(node)s \u0027"},{"line_number":551,"context_line":"                          \u0027still used by lif and cannot be deleted.\u0027,"},{"line_number":552,"context_line":"                          {\u0027vlan\u0027: vlan, \u0027port\u0027: port, \u0027node\u0027: node})"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_68012eaf","line":549,"range":{"start_line":549,"start_character":48,"end_line":549,"end_character":51},"in_reply_to":"bab6814e_766e4fca","updated":"2016-05-26 14:39:26.000000000","message":"No. This is exactly the string we get from netapp api.","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e85ab4abeb5d84aa8e48e3ed698da8b56b3689d1","unresolved":false,"context_lines":[{"line_number":548,"context_line":"            if (e.code \u003d\u003d netapp_api.EAPIERROR and"},{"line_number":549,"context_line":"               e.message \u003d\u003d \"Port already has a lif bound. \"):"},{"line_number":550,"context_line":"                LOG.debug(\u0027VLAN %(vlan)s on port %(port)s node %(node)s \u0027"},{"line_number":551,"context_line":"                          \u0027still used by lif and cannot be deleted.\u0027,"},{"line_number":552,"context_line":"                          {\u0027vlan\u0027: vlan, \u0027port\u0027: port, \u0027node\u0027: node})"},{"line_number":553,"context_line":"            else:"},{"line_number":554,"context_line":"                msg \u003d _(\u0027Failed to delete VLAN %(vlan)s on \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_b668b7bb","line":551,"range":{"start_line":551,"start_character":41,"end_line":551,"end_character":44},"updated":"2016-05-25 17:40:38.000000000","message":"s/lif/LIF/","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"1900ba9883d4461b60391aa1e1623a96774490fd","unresolved":false,"context_lines":[{"line_number":548,"context_line":"            if (e.code \u003d\u003d netapp_api.EAPIERROR and"},{"line_number":549,"context_line":"               e.message \u003d\u003d \"Port already has a lif bound. \"):"},{"line_number":550,"context_line":"                LOG.debug(\u0027VLAN %(vlan)s on port %(port)s node %(node)s \u0027"},{"line_number":551,"context_line":"                          \u0027still used by lif and cannot be deleted.\u0027,"},{"line_number":552,"context_line":"                          {\u0027vlan\u0027: vlan, \u0027port\u0027: port, \u0027node\u0027: node})"},{"line_number":553,"context_line":"            else:"},{"line_number":554,"context_line":"                msg \u003d _(\u0027Failed to delete VLAN %(vlan)s on \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_883292a5","line":551,"range":{"start_line":551,"start_character":41,"end_line":551,"end_character":44},"in_reply_to":"bab6814e_b668b7bb","updated":"2016-05-26 14:39:26.000000000","message":"Done","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e85ab4abeb5d84aa8e48e3ed698da8b56b3689d1","unresolved":false,"context_lines":[{"line_number":553,"context_line":"            else:"},{"line_number":554,"context_line":"                msg \u003d _(\u0027Failed to delete VLAN %(vlan)s on \u0027"},{"line_number":555,"context_line":"                        \u0027port %(port)s node %(node)s: %(err_msg)s\u0027)"},{"line_number":556,"context_line":"                msg_args \u003d {\u0027vlan\u0027: vlan, \u0027port\u0027: port, \u0027node\u0027: node,"},{"line_number":557,"context_line":"                            \u0027err_msg\u0027: e.message}"},{"line_number":558,"context_line":"                raise exception.NetAppException(msg % msg_args)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_d6b45b36","line":557,"range":{"start_line":556,"start_character":27,"end_line":557,"end_character":49},"updated":"2016-05-25 17:40:38.000000000","message":"Please wrap according to guidelines.","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"1900ba9883d4461b60391aa1e1623a96774490fd","unresolved":false,"context_lines":[{"line_number":553,"context_line":"            else:"},{"line_number":554,"context_line":"                msg \u003d _(\u0027Failed to delete VLAN %(vlan)s on \u0027"},{"line_number":555,"context_line":"                        \u0027port %(port)s node %(node)s: %(err_msg)s\u0027)"},{"line_number":556,"context_line":"                msg_args \u003d {\u0027vlan\u0027: vlan, \u0027port\u0027: port, \u0027node\u0027: node,"},{"line_number":557,"context_line":"                            \u0027err_msg\u0027: e.message}"},{"line_number":558,"context_line":"                raise exception.NetAppException(msg % msg_args)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_085d0247","line":557,"range":{"start_line":556,"start_character":27,"end_line":557,"end_character":49},"in_reply_to":"bab6814e_d6b45b36","updated":"2016-05-26 14:39:26.000000000","message":"Done","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ccde5297672930700395cbeb2151102ea322cb21","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            self.send_request(\u0027net-vlan-delete\u0027, api_args)"},{"line_number":536,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":537,"context_line":"            if (e.code \u003d\u003d netapp_api.EAPIERROR and"},{"line_number":538,"context_line":"               e.message \u003d\u003d \"Port already has a lif bound. \"):"},{"line_number":539,"context_line":"                LOG.debug(\u0027VLAN %(vlan)s on port %(port)s node %(node)s \u0027"},{"line_number":540,"context_line":"                          \u0027still used by LIF and cannot be deleted.\u0027,"},{"line_number":541,"context_line":"                          {\u0027vlan\u0027: vlan, \u0027port\u0027: port, \u0027node\u0027: node})"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_92e46d3c","line":538,"range":{"start_line":538,"start_character":25,"end_line":538,"end_character":60},"updated":"2016-05-26 14:45:41.000000000","message":"i think you should consider a regex match.. this is unreliable if the structure of the message changes in a further release of the storage ZAPI client","commit_id":"b36761194883ce191df4c192a79ca75e987ad705"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"830ca311fbc319797f181ef52c938bc675599e3f","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            self.send_request(\u0027net-vlan-delete\u0027, api_args)"},{"line_number":536,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":537,"context_line":"            if (e.code \u003d\u003d netapp_api.EAPIERROR and"},{"line_number":538,"context_line":"               e.message \u003d\u003d \"Port already has a lif bound. \"):"},{"line_number":539,"context_line":"                LOG.debug(\u0027VLAN %(vlan)s on port %(port)s node %(node)s \u0027"},{"line_number":540,"context_line":"                          \u0027still used by LIF and cannot be deleted.\u0027,"},{"line_number":541,"context_line":"                          {\u0027vlan\u0027: vlan, \u0027port\u0027: port, \u0027node\u0027: node})"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_28f714d4","line":538,"range":{"start_line":538,"start_character":25,"end_line":538,"end_character":60},"in_reply_to":"bab6814e_92e46d3c","updated":"2016-05-26 15:12:04.000000000","message":"Done","commit_id":"b36761194883ce191df4c192a79ca75e987ad705"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"0dc7b5840b235b4efda35a977bfafc7b64b83697","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            }"},{"line_number":536,"context_line":"            self.send_request(\u0027net-vlan-delete\u0027, api_args)"},{"line_number":537,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":538,"context_line":"            p \u003d re.compile(\u0027port already has a lif bound.*\u0027, re.IGNORECASE)"},{"line_number":539,"context_line":"            if (e.code \u003d\u003d netapp_api.EAPIERROR and re.match(p, e.message)):"},{"line_number":540,"context_line":"                LOG.debug(\u0027VLAN %(vlan)s on port %(port)s node %(node)s \u0027"},{"line_number":541,"context_line":"                          \u0027still used by LIF and cannot be deleted.\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_6384fdb0","line":538,"range":{"start_line":538,"start_character":12,"end_line":538,"end_character":75},"updated":"2016-06-10 12:22:00.000000000","message":"Why do you depend on error message instead of return code? It is very fragile approach.","commit_id":"542fff0fea71b848181e80c933f17832ac2cbb05"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"46d6739014701897d028b6890a345de8a2c01343","unresolved":false,"context_lines":[{"line_number":547,"context_line":"                    \u0027vlan\u0027: vlan,"},{"line_number":548,"context_line":"                    \u0027port\u0027: port,"},{"line_number":549,"context_line":"                    \u0027node\u0027: node,"},{"line_number":550,"context_line":"                    \u0027err_msg\u0027: e.message"},{"line_number":551,"context_line":"                }"},{"line_number":552,"context_line":"                raise exception.NetAppException(msg % msg_args)"},{"line_number":553,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_85e90d1d","line":550,"range":{"start_line":550,"start_character":33,"end_line":550,"end_character":40},"updated":"2016-06-11 00:06:36.000000000","message":"trailing comma","commit_id":"a1f33c9e8f642838fcf14d26b1837f0fdf2dbcd3"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ccde5297672930700395cbeb2151102ea322cb21","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":336,"context_line":"                self._client.delete_vlan(node, port, vlan)"},{"line_number":337,"context_line":"            except exception.NetAppException as e:"},{"line_number":338,"context_line":"                LOG.error(_LE(\"Vserver VLAN delete failed: %s\"), e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_d25ef5e7","line":338,"range":{"start_line":338,"start_character":16,"end_line":338,"end_character":67},"updated":"2016-05-26 14:45:41.000000000","message":"Why not log the exception since you\u0027ve already set the heading message in the delete_vlan code..\n\n\nLOG.exception(_LE(e))","commit_id":"b36761194883ce191df4c192a79ca75e987ad705"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"830ca311fbc319797f181ef52c938bc675599e3f","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":336,"context_line":"                self._client.delete_vlan(node, port, vlan)"},{"line_number":337,"context_line":"            except exception.NetAppException as e:"},{"line_number":338,"context_line":"                LOG.error(_LE(\"Vserver VLAN delete failed: %s\"), e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_2d528667","line":338,"range":{"start_line":338,"start_character":16,"end_line":338,"end_character":67},"in_reply_to":"bab6814e_d25ef5e7","updated":"2016-05-26 15:12:04.000000000","message":"it\u0027s hard to please all...had it like you proposed in patchset 1. will change it back :)","commit_id":"b36761194883ce191df4c192a79ca75e987ad705"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"acc9712cf9d40d16b3173a6f25a6bde5b62d92a1","unresolved":false,"context_lines":[{"line_number":333,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":334,"context_line":"                self._client.delete_vlan(node, port, vlan)"},{"line_number":335,"context_line":"            except exception.NetAppException as e:"},{"line_number":336,"context_line":"                LOG.error(_LE(\"%s\"), e)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_b967ffe7","line":336,"range":{"start_line":336,"start_character":20,"end_line":336,"end_character":25},"updated":"2016-05-31 10:46:05.000000000","message":"For such cases we have \"LOG.exception\" message, that can be used only when trace exists:\n\n\"\"\"\nLOG.exception(_LE(\"Failed to delete vlan %s\"), vlan)\n\"\"\"","commit_id":"5baa5d21ab542113b25b4df41925935fcfffb0d5"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"2604e22accf3e8dee396a3ad6d2a5f5f9bc3363c","unresolved":false,"context_lines":[{"line_number":333,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":334,"context_line":"                self._client.delete_vlan(node, port, vlan)"},{"line_number":335,"context_line":"            except exception.NetAppException as e:"},{"line_number":336,"context_line":"                LOG.error(_LE(\"%s\"), e)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_e841b2aa","line":336,"range":{"start_line":336,"start_character":20,"end_line":336,"end_character":25},"in_reply_to":"9abb7d3a_b9241fc5","updated":"2016-05-31 11:20:14.000000000","message":"i will stick to LOG.error\nThere is no LOG.exception.call_count, which i would need\nin test_delete_vserver_vlan_client.","commit_id":"5baa5d21ab542113b25b4df41925935fcfffb0d5"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"a76a8e1dc71422cf272010a90083cbac0608dc75","unresolved":false,"context_lines":[{"line_number":333,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":334,"context_line":"                self._client.delete_vlan(node, port, vlan)"},{"line_number":335,"context_line":"            except exception.NetAppException as e:"},{"line_number":336,"context_line":"                LOG.error(_LE(\"%s\"), e)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_b9241fc5","line":336,"range":{"start_line":336,"start_character":20,"end_line":336,"end_character":25},"in_reply_to":"9abb7d3a_b967ffe7","updated":"2016-05-31 10:57:35.000000000","message":"can change that to LOG.exception.\nWe already discussed the message; this comes already fully descriptive from the client.","commit_id":"5baa5d21ab542113b25b4df41925935fcfffb0d5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e1d5ce19441381e88fa5de9b9ec05b1a4dfd2ddc","unresolved":false,"context_lines":[{"line_number":333,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":334,"context_line":"                self._client.delete_vlan(node, port, vlan)"},{"line_number":335,"context_line":"            except exception.NetAppException as e:"},{"line_number":336,"context_line":"                LOG.error(_LE(\"%s\"), e)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_cd25d809","line":336,"range":{"start_line":336,"start_character":20,"end_line":336,"end_character":25},"in_reply_to":"9abb7d3a_e841b2aa","updated":"2016-05-31 12:59:45.000000000","message":"Tom: https://github.com/openstack/manila/blob/c5b01245/manila/tests/share/test_manager.py#L977","commit_id":"5baa5d21ab542113b25b4df41925935fcfffb0d5"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"ad4a5777e367a101c8cf9d2d5989318d9f1f1f71","unresolved":false,"context_lines":[{"line_number":333,"context_line":"                node \u003d interface[\u0027home-node\u0027]"},{"line_number":334,"context_line":"                self._client.delete_vlan(node, port, vlan)"},{"line_number":335,"context_line":"            except exception.NetAppException as e:"},{"line_number":336,"context_line":"                LOG.exception(_LE(\"%s\"), e)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_a99ddabd","line":336,"range":{"start_line":336,"start_character":30,"end_line":336,"end_character":39},"updated":"2016-05-31 16:09:59.000000000","message":"Here is nothing to translate. Usage of _LE is redundant in current case. So, either _LE is redundant or need to make correct message.\nThen, LOG.exception logs exceptions in any case, you do not need to provide it. Just make some useful short message as was proposed in PS4:\n\n\"\"\"\ntry:\n    raise FOO\nexcept FOO:\n    LOG.exception(_LE(\"FOO was raised and stacktrace will be attached automatically.\"))\n\"\"\"","commit_id":"4ee100cf24fd50ef0f46b0872cc0f6bdff9553e7"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"61ebeb40e615f19d1fea63bc1ce9c28350921938","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        vlan \u003d network_info[\u0027segmentation_id\u0027]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        @utils.synchronized(\u0027VLAN-%s\u0027 % vlan, external\u003dTrue)"},{"line_number":114,"context_line":"        def setup_server_with_lock():"},{"line_number":115,"context_line":"            LOG.debug(\u0027Creating server %s\u0027, network_info[\u0027server_id\u0027])"},{"line_number":116,"context_line":"            self._validate_network_type(network_info)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_774e74c2","line":113,"range":{"start_line":113,"start_character":28,"end_line":113,"end_character":37},"updated":"2016-06-10 14:23:24.000000000","message":"Tom, this is working fine, but could I ask you to add a bit more namespace to the lock name?  The \u0027manila-\u0027 prefix is added automatically, so I see lock files like \u0027manila-VLAN-136\u0027, which is a bit generic.  Something like \u0027manila-netapp-VLAN-136\u0027 or \u0027manila-cDOT-VLAN-136\u0027 would prevent any future collisions.  Thanks!","commit_id":"542fff0fea71b848181e80c933f17832ac2cbb05"}],"manila/tests/share/drivers/netapp/dataontap/client/fakes.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e85ab4abeb5d84aa8e48e3ed698da8b56b3689d1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"SM_DEST_VSERVER \u003d \u0027fake_destination_vserver\u0027"},{"line_number":83,"context_line":"SM_DEST_VOLUME \u003d \u0027fake_destination_volume\u0027"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"NETWORK_INTERFACES \u003d ["},{"line_number":86,"context_line":"    {\u0027interface_name\u0027: \u0027fake_interface\u0027, \u0027address\u0027: IP_ADDRESS,"},{"line_number":87,"context_line":"     \u0027vserver\u0027: VSERVER_NAME, \u0027netmask\u0027: NETMASK, \u0027role\u0027: \u0027data\u0027,"},{"line_number":88,"context_line":"     \u0027home-node\u0027: NODE_NAME, \u0027home-port\u0027: VLAN_PORT}"},{"line_number":89,"context_line":"    ]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"IPSPACES \u003d [{"},{"line_number":92,"context_line":"    \u0027uuid\u0027: \u0027fake_uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_96bf73fb","line":89,"range":{"start_line":85,"start_character":21,"end_line":89,"end_character":5},"updated":"2016-05-25 17:40:38.000000000","message":"Please wrap according to guidelines.  (The following IPSPACES is a fine example.)","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"1900ba9883d4461b60391aa1e1623a96774490fd","unresolved":false,"context_lines":[{"line_number":82,"context_line":"SM_DEST_VSERVER \u003d \u0027fake_destination_vserver\u0027"},{"line_number":83,"context_line":"SM_DEST_VOLUME \u003d \u0027fake_destination_volume\u0027"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"NETWORK_INTERFACES \u003d ["},{"line_number":86,"context_line":"    {\u0027interface_name\u0027: \u0027fake_interface\u0027, \u0027address\u0027: IP_ADDRESS,"},{"line_number":87,"context_line":"     \u0027vserver\u0027: VSERVER_NAME, \u0027netmask\u0027: NETMASK, \u0027role\u0027: \u0027data\u0027,"},{"line_number":88,"context_line":"     \u0027home-node\u0027: NODE_NAME, \u0027home-port\u0027: VLAN_PORT}"},{"line_number":89,"context_line":"    ]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"IPSPACES \u003d [{"},{"line_number":92,"context_line":"    \u0027uuid\u0027: \u0027fake_uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_883732fe","line":89,"range":{"start_line":85,"start_character":21,"end_line":89,"end_character":5},"in_reply_to":"bab6814e_96bf73fb","updated":"2016-05-26 14:39:26.000000000","message":"Done","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"46d6739014701897d028b6890a345de8a2c01343","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    \u0027netmask\u0027: NETMASK,"},{"line_number":90,"context_line":"    \u0027role\u0027: \u0027data\u0027,"},{"line_number":91,"context_line":"    \u0027home-node\u0027: NODE_NAME,"},{"line_number":92,"context_line":"    \u0027home-port\u0027: VLAN_PORT"},{"line_number":93,"context_line":"}]"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"IPSPACES \u003d [{"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_e5d8d181","line":92,"range":{"start_line":92,"start_character":17,"end_line":92,"end_character":26},"updated":"2016-06-11 00:06:36.000000000","message":"trailing comma","commit_id":"a1f33c9e8f642838fcf14d26b1837f0fdf2dbcd3"}],"manila/tests/share/drivers/netapp/dataontap/client/test_client_cmode.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e85ab4abeb5d84aa8e48e3ed698da8b56b3689d1","unresolved":false,"context_lines":[{"line_number":655,"context_line":"                         \u0027get_vserver_volume_count\u0027,"},{"line_number":656,"context_line":"                         mock.Mock(return_value\u003d2))"},{"line_number":657,"context_line":"        self.mock_object(self.vserver_client,"},{"line_number":658,"context_line":"                         \u0027get_network_interfaces\u0027,"},{"line_number":659,"context_line":"                         mock.Mock(return_value\u003dfake.NETWORK_INTERFACES))"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"        self.assertRaises(exception.NetAppException,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_56122b0a","line":658,"range":{"start_line":658,"start_character":25,"end_line":658,"end_character":49},"updated":"2016-05-25 17:40:38.000000000","message":"In some of these methods at least (perhaps not the ones that use assertRaises), you should assert that a mock is called.","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"1900ba9883d4461b60391aa1e1623a96774490fd","unresolved":false,"context_lines":[{"line_number":655,"context_line":"                         \u0027get_vserver_volume_count\u0027,"},{"line_number":656,"context_line":"                         mock.Mock(return_value\u003d2))"},{"line_number":657,"context_line":"        self.mock_object(self.vserver_client,"},{"line_number":658,"context_line":"                         \u0027get_network_interfaces\u0027,"},{"line_number":659,"context_line":"                         mock.Mock(return_value\u003dfake.NETWORK_INTERFACES))"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"        self.assertRaises(exception.NetAppException,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_233d7d2b","line":658,"range":{"start_line":658,"start_character":25,"end_line":658,"end_character":49},"in_reply_to":"bab6814e_56122b0a","updated":"2016-05-26 14:39:26.000000000","message":"Done","commit_id":"d3f4bc5384152684a7b0130821c3e2540ffa0011"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"46d6739014701897d028b6890a345de8a2c01343","unresolved":false,"context_lines":[{"line_number":941,"context_line":"            \u0027vlan-info\u0027: {"},{"line_number":942,"context_line":"                \u0027parent-interface\u0027: fake.PORT,"},{"line_number":943,"context_line":"                \u0027node\u0027: fake.NODE_NAME,"},{"line_number":944,"context_line":"                \u0027vlanid\u0027: fake.VLAN"},{"line_number":945,"context_line":"            }"},{"line_number":946,"context_line":"        }"},{"line_number":947,"context_line":"        self.client.delete_vlan(fake.NODE_NAME, fake.PORT, fake.VLAN)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_a5cd29b9","line":944,"range":{"start_line":944,"start_character":31,"end_line":944,"end_character":35},"updated":"2016-06-11 00:06:36.000000000","message":"trailing comma","commit_id":"a1f33c9e8f642838fcf14d26b1837f0fdf2dbcd3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"46d6739014701897d028b6890a345de8a2c01343","unresolved":false,"context_lines":[{"line_number":961,"context_line":"            \u0027vlan-info\u0027: {"},{"line_number":962,"context_line":"                \u0027parent-interface\u0027: fake.PORT,"},{"line_number":963,"context_line":"                \u0027node\u0027: fake.NODE_NAME,"},{"line_number":964,"context_line":"                \u0027vlanid\u0027: fake.VLAN"},{"line_number":965,"context_line":"            }"},{"line_number":966,"context_line":"        }"},{"line_number":967,"context_line":"        self.client.delete_vlan(fake.NODE_NAME, fake.PORT, fake.VLAN)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_05c51d8d","line":964,"range":{"start_line":964,"start_character":31,"end_line":964,"end_character":35},"updated":"2016-06-11 00:06:36.000000000","message":"trailing comma","commit_id":"a1f33c9e8f642838fcf14d26b1837f0fdf2dbcd3"}],"releasenotes/notes/delete_vlan_on_vserver_delete-a7acd145c0b8236d.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ccde5297672930700395cbeb2151102ea322cb21","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - NetApp cMode driver: configured VLAN will be deleted on Vserver removal"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"bab6814e_32e5c108","line":3,"range":{"start_line":3,"start_character":23,"end_line":3,"end_character":24},"updated":"2016-05-26 14:45:41.000000000","message":"please use \"-\"","commit_id":"b36761194883ce191df4c192a79ca75e987ad705"},{"author":{"_account_id":15371,"name":"Tom Patzig","email":"tom.patzig@sap.com","username":"tpatzig"},"change_message_id":"830ca311fbc319797f181ef52c938bc675599e3f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - NetApp cMode driver: configured VLAN will be deleted on Vserver removal"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"bab6814e_c82c884c","line":3,"range":{"start_line":3,"start_character":23,"end_line":3,"end_character":24},"in_reply_to":"bab6814e_32e5c108","updated":"2016-05-26 15:12:04.000000000","message":"Done","commit_id":"b36761194883ce191df4c192a79ca75e987ad705"}]}
