)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1fdb2170505726a98be86b76c7654fef96fa45a9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add \"update_access\" interface support for VNX."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The VNX manila driver doesn\u0027t support the \"update_access\" API."},{"line_number":10,"context_line":"Add support for this API which implements forllowing functions:"},{"line_number":11,"context_line":"* Add a list of access rules."},{"line_number":12,"context_line":"* Remove a list of access rules."},{"line_number":13,"context_line":"* Recover access rules."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a629dbe_f325fe08","line":10,"range":{"start_line":10,"start_character":42,"end_line":10,"end_character":52},"updated":"2016-11-10 10:06:28.000000000","message":"following","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"03fe336bec18b9729d5a560dab65da73b7e4fd7b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add \"update_access\" interface support for VNX."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The VNX manila driver doesn\u0027t support the \"update_access\" API."},{"line_number":10,"context_line":"Add support for this API which implements forllowing functions:"},{"line_number":11,"context_line":"* Add a list of access rules."},{"line_number":12,"context_line":"* Remove a list of access rules."},{"line_number":13,"context_line":"* Recover access rules."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a629dbe_dd1e376f","line":10,"range":{"start_line":10,"start_character":42,"end_line":10,"end_character":52},"in_reply_to":"9a629dbe_f325fe08","updated":"2016-11-10 10:55:35.000000000","message":"Done","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"}],"manila/share/drivers/dell_emc/plugins/base.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"303d0392a957f71814b49d2011be74d20669b58f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def deny_access(self, context, share, access, share_server):"},{"line_number":62,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def raise_connect_error(self):"},{"line_number":69,"context_line":"        \"\"\"Check for setup error.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_bcb357e8","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":50},"updated":"2016-12-05 11:16:10.000000000","message":"This is a functioning method, which returns None, and you don\u0027t override it in isilon driver.","commit_id":"8c76a08d34c0cb689e4a5f29527bd6cead5a4c11"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"907b70cbe6add58f8608c70a6b16c9081c2fc984","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def deny_access(self, context, share, access, share_server):"},{"line_number":62,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def raise_connect_error(self):"},{"line_number":69,"context_line":"        \"\"\"Check for setup error.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_7d8a961c","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":50},"in_reply_to":"3a71b18c_bcb357e8","updated":"2016-12-05 13:46:11.000000000","message":"Thanks for pointing this out!  I am updating it to raise an `NotImplementedError` with proper error message.","commit_id":"8c76a08d34c0cb689e4a5f29527bd6cead5a4c11"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a1c436772e7f85e27c4a3156acee0b89c63ce77e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":"        raise NotImplementedError(\u0027This method should be implemented by \u0027"},{"line_number":68,"context_line":"                                  \u0027child classes. Otherwise allow_access and\u0027"},{"line_number":69,"context_line":"                                  \u0027deny_access will be used instead.\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def raise_connect_error(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_c2a821de","line":68,"range":{"start_line":68,"start_character":73,"end_line":68,"end_character":77},"updated":"2016-12-05 15:58:48.000000000","message":"Need a space between \u0027and\u0027 and \u0027deny_access\u0027.","commit_id":"eaedeca95f42d01ade6614c8707cbf868356f1f2"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"03d240ad2d1ee25112c555ea8bb733c086404973","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":"        raise NotImplementedError(\u0027This method should be implemented by \u0027"},{"line_number":68,"context_line":"                                  \u0027child classes. Otherwise allow_access and\u0027"},{"line_number":69,"context_line":"                                  \u0027deny_access will be used instead.\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def raise_connect_error(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_3c049548","line":68,"range":{"start_line":68,"start_character":73,"end_line":68,"end_character":77},"in_reply_to":"3a71b18c_c2a821de","updated":"2016-12-05 17:47:30.000000000","message":"Thanks, updated.","commit_id":"eaedeca95f42d01ade6614c8707cbf868356f1f2"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"03ca3404d1c3e624b3bad3b1fbfd5d62bb3e0442","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":"        raise NotImplementedError(\u0027This method should be implemented by \u0027"},{"line_number":68,"context_line":"                                  \u0027child classes. Otherwise allow_access and \u0027"},{"line_number":69,"context_line":"                                  \u0027deny_access will be used instead.\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def raise_connect_error(self):"},{"line_number":72,"context_line":"        \"\"\"Check for setup error.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_143f49d7","line":69,"range":{"start_line":68,"start_character":50,"end_line":69,"end_character":68},"updated":"2016-12-07 15:41:32.000000000","message":"this will no longer be true once the access rule refactor patch merges. I would prefer if you omit this last part so it is not inconsistent later.","commit_id":"1df548128f6df34e55ccd6530f78752700a188a8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"07622924eaf2249f1d0630d45db8d3448706f0ba","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":"        raise NotImplementedError(\u0027This method should be implemented by \u0027"},{"line_number":68,"context_line":"                                  \u0027child classes. Otherwise allow_access and \u0027"},{"line_number":69,"context_line":"                                  \u0027deny_access will be used instead.\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def raise_connect_error(self):"},{"line_number":72,"context_line":"        \"\"\"Check for setup error.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_ccc0e52d","line":69,"range":{"start_line":68,"start_character":50,"end_line":69,"end_character":68},"in_reply_to":"3a71b18c_09300f9e","updated":"2016-12-07 17:35:14.000000000","message":"The only EMC driver that has not implemented this interface is Isilon.  The Isilon team will be working on adding update_access support soon.","commit_id":"1df548128f6df34e55ccd6530f78752700a188a8"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"e968651deeced7cd4ca34b14c23f9cdbe0d4db81","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":"        raise NotImplementedError(\u0027This method should be implemented by \u0027"},{"line_number":68,"context_line":"                                  \u0027child classes. Otherwise allow_access and \u0027"},{"line_number":69,"context_line":"                                  \u0027deny_access will be used instead.\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def raise_connect_error(self):"},{"line_number":72,"context_line":"        \"\"\"Check for setup error.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_09300f9e","line":69,"range":{"start_line":68,"start_character":50,"end_line":69,"end_character":68},"in_reply_to":"3a71b18c_143f49d7","updated":"2016-12-07 17:09:03.000000000","message":"Yeah, though there\u0027s some ambiguity about *when* the fallback path will be removed, you might as well leave this sentence off so that it won\u0027t be around when it happens.\n\nAlso, probably should go ahead and implement update_access for isilon - separate patch, but soon :)","commit_id":"1df548128f6df34e55ccd6530f78752700a188a8"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"a3831a46ba6d08c3ffc2c3e945cbe501584f4bda","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":"        raise NotImplementedError(\u0027This method should be implemented by \u0027"},{"line_number":68,"context_line":"                                  \u0027child classes. Otherwise allow_access and \u0027"},{"line_number":69,"context_line":"                                  \u0027deny_access will be used instead.\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def raise_connect_error(self):"},{"line_number":72,"context_line":"        \"\"\"Check for setup error.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_8c6c1b0a","line":69,"range":{"start_line":68,"start_character":50,"end_line":69,"end_character":68},"in_reply_to":"3a71b18c_ccc0e52d","updated":"2016-12-08 02:49:10.000000000","message":"Thanks all for the info.  I am removing the second sentence.","commit_id":"1df548128f6df34e55ccd6530f78752700a188a8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6b52022ab22d37a835f83912b72fa43455c26c5d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":"        raise NotImplementedError(\u0027This method should be implemented by \u0027"},{"line_number":68,"context_line":"                                  \u0027child classes.\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def raise_connect_error(self):"},{"line_number":71,"context_line":"        \"\"\"Check for setup error.\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"3a71b18c_e6a8277a","line":68,"range":{"start_line":67,"start_character":34,"end_line":68,"end_character":50},"updated":"2016-12-08 18:26:31.000000000","message":"usually, this message is unnecessary... Who does it benefit?","commit_id":"9608507226f760e727fd848bed1fcf4c6fc1851a"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"730f51c3b37ff729120f136e4c7bde9db8457ba0","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":"        raise NotImplementedError(\u0027This method should be implemented by \u0027"},{"line_number":68,"context_line":"                                  \u0027child classes.\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def raise_connect_error(self):"},{"line_number":71,"context_line":"        \"\"\"Check for setup error.\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"3a71b18c_8b620cd7","line":68,"range":{"start_line":67,"start_character":34,"end_line":68,"end_character":50},"in_reply_to":"3a71b18c_e6a8277a","updated":"2016-12-09 02:42:01.000000000","message":"Ah, yes.  I think it\u0027s more like a document or reminder.  For the logic, raising the error is enough.  I just feel like I should add some description for the \"why\".\n\nI searched the code, it seems most of the `NotImplementedError` don\u0027t include any message.  I will remove them to follow the convention.  Thanks!","commit_id":"9608507226f760e727fd848bed1fcf4c6fc1851a"}],"manila/share/drivers/dell_emc/plugins/vnx/connection.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"330d10f9c1f4fe5b894bf405aa7f884a74942a4b","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %s not found.\") % server_name)"},{"line_number":412,"context_line":"            LOG.error(message)"},{"line_number":413,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_2eb4a6cf","line":411,"range":{"start_line":411,"start_character":26,"end_line":411,"end_character":51},"updated":"2016-12-02 16:47:00.000000000","message":"\"Not OK\" does not mean \"Not Found\".","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"50e433a74127ffd71f8ddc04e085f3077732b8fd","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %s not found.\") % server_name)"},{"line_number":412,"context_line":"            LOG.error(message)"},{"line_number":413,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_eded2db8","line":411,"range":{"start_line":411,"start_character":26,"end_line":411,"end_character":51},"in_reply_to":"3a71b18c_2eb4a6cf","updated":"2016-12-05 03:03:10.000000000","message":"Modify the message to include detail error status.  And I remove `Log.error` because the message will be wrapped and thrown in an exception.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"6e65b77049bade63fc74e643b2e2514cb19d0a1c","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %(server_name)s has issue.  \""},{"line_number":412,"context_line":"                         \"Detail: %(status)s\") %"},{"line_number":413,"context_line":"                       {\u0027server_name\u0027: server_name, \u0027status\u0027: status})"},{"line_number":414,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_394599b2","line":411,"range":{"start_line":411,"start_character":64,"end_line":411,"end_character":66},"updated":"2016-12-05 10:51:54.000000000","message":"extra space","commit_id":"23b5ae5f89e5791242c65983b7f22e8c6d7dc65c"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"21873c6c09f30276b353e2ac6afd424e58676963","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %(server_name)s has issue.  \""},{"line_number":412,"context_line":"                         \"Detail: %(status)s\") %"},{"line_number":413,"context_line":"                       {\u0027server_name\u0027: server_name, \u0027status\u0027: status})"},{"line_number":414,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_d9dd85e1","line":411,"range":{"start_line":411,"start_character":64,"end_line":411,"end_character":66},"in_reply_to":"3a71b18c_394599b2","updated":"2016-12-05 10:53:33.000000000","message":"Do you mean one space, not two between sentences?","commit_id":"23b5ae5f89e5791242c65983b7f22e8c6d7dc65c"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"da0ace830c32ad11f445382fd2a2c5732333cae0","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %(server_name)s has issue.  \""},{"line_number":412,"context_line":"                         \"Detail: %(status)s\") %"},{"line_number":413,"context_line":"                       {\u0027server_name\u0027: server_name, \u0027status\u0027: status})"},{"line_number":414,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_7c061f1e","line":411,"range":{"start_line":411,"start_character":64,"end_line":411,"end_character":66},"in_reply_to":"3a71b18c_79c391ed","updated":"2016-12-05 11:00:34.000000000","message":"Got it.  Updated.  Thanks!","commit_id":"23b5ae5f89e5791242c65983b7f22e8c6d7dc65c"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"cf8184863e853dd74a28edd0d7b6bde6cf84e8e6","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %(server_name)s has issue.  \""},{"line_number":412,"context_line":"                         \"Detail: %(status)s\") %"},{"line_number":413,"context_line":"                       {\u0027server_name\u0027: server_name, \u0027status\u0027: status})"},{"line_number":414,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_79c391ed","line":411,"range":{"start_line":411,"start_character":64,"end_line":411,"end_character":66},"in_reply_to":"3a71b18c_d9dd85e1","updated":"2016-12-05 10:56:17.000000000","message":"yes, should be only one after period and before \"Detail...\"","commit_id":"23b5ae5f89e5791242c65983b7f22e8c6d7dc65c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6b52022ab22d37a835f83912b72fa43455c26c5d","unresolved":false,"context_lines":[{"line_number":373,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":374,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":375,"context_line":"        # deleting rules"},{"line_number":376,"context_line":"        if delete_rules:"},{"line_number":377,"context_line":"            for rule in delete_rules:"},{"line_number":378,"context_line":"                self.deny_access(context, share, rule, share_server)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        # adding rules"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a71b18c_46fe3b6c","line":377,"range":{"start_line":376,"start_character":8,"end_line":377,"end_character":12},"updated":"2016-12-08 18:26:31.000000000","message":"delete_rules by default is an empty list. so, this check is unnecessary...","commit_id":"9608507226f760e727fd848bed1fcf4c6fc1851a"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"730f51c3b37ff729120f136e4c7bde9db8457ba0","unresolved":false,"context_lines":[{"line_number":373,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":374,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":375,"context_line":"        # deleting rules"},{"line_number":376,"context_line":"        if delete_rules:"},{"line_number":377,"context_line":"            for rule in delete_rules:"},{"line_number":378,"context_line":"                self.deny_access(context, share, rule, share_server)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        # adding rules"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a71b18c_8bb92c31","line":377,"range":{"start_line":376,"start_character":8,"end_line":377,"end_character":12},"in_reply_to":"3a71b18c_46fe3b6c","updated":"2016-12-09 02:42:01.000000000","message":"Thanks, updated.","commit_id":"9608507226f760e727fd848bed1fcf4c6fc1851a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6b52022ab22d37a835f83912b72fa43455c26c5d","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                self.deny_access(context, share, rule, share_server)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        # adding rules"},{"line_number":381,"context_line":"        if add_rules:"},{"line_number":382,"context_line":"            for rule in add_rules:"},{"line_number":383,"context_line":"                self.allow_access(context, share, rule, share_server)"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3a71b18c_86f8537e","line":381,"range":{"start_line":381,"start_character":0,"end_line":381,"end_character":21},"updated":"2016-12-08 18:26:31.000000000","message":"same","commit_id":"9608507226f760e727fd848bed1fcf4c6fc1851a"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"730f51c3b37ff729120f136e4c7bde9db8457ba0","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                self.deny_access(context, share, rule, share_server)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        # adding rules"},{"line_number":381,"context_line":"        if add_rules:"},{"line_number":382,"context_line":"            for rule in add_rules:"},{"line_number":383,"context_line":"                self.allow_access(context, share, rule, share_server)"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3a71b18c_abb42835","line":381,"range":{"start_line":381,"start_character":0,"end_line":381,"end_character":21},"in_reply_to":"3a71b18c_86f8537e","updated":"2016-12-09 02:42:01.000000000","message":"Updated.","commit_id":"9608507226f760e727fd848bed1fcf4c6fc1851a"}],"manila/share/drivers/dell_emc/plugins/vnx/object_manager.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"39a22d7b86ee404849f8b71cbef23d35fb0cae76","unresolved":false,"context_lines":[{"line_number":1731,"context_line":"                raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":1732,"context_line":""},{"line_number":1733,"context_line":"    def get_share_access(self, mover_name, share_name):"},{"line_number":1734,"context_line":"        get_str \u003d \u0027sharesd {} dump\u0027.format(share_name)"},{"line_number":1735,"context_line":"        get_access \u003d ["},{"line_number":1736,"context_line":"            \u0027env\u0027, \u0027NAS_DB\u003d/nas\u0027, \u0027/nas/bin/.server_config\u0027, mover_name,"},{"line_number":1737,"context_line":"            \u0027-v\u0027, \"%s\" % get_str,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_672795b6","line":1734,"updated":"2016-12-02 21:11:31.000000000","message":"Please use the %s format.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"50e433a74127ffd71f8ddc04e085f3077732b8fd","unresolved":false,"context_lines":[{"line_number":1731,"context_line":"                raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":1732,"context_line":""},{"line_number":1733,"context_line":"    def get_share_access(self, mover_name, share_name):"},{"line_number":1734,"context_line":"        get_str \u003d \u0027sharesd {} dump\u0027.format(share_name)"},{"line_number":1735,"context_line":"        get_access \u003d ["},{"line_number":1736,"context_line":"            \u0027env\u0027, \u0027NAS_DB\u003d/nas\u0027, \u0027/nas/bin/.server_config\u0027, mover_name,"},{"line_number":1737,"context_line":"            \u0027-v\u0027, \"%s\" % get_str,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_8d4119ac","line":1734,"in_reply_to":"3a71b18c_672795b6","updated":"2016-12-05 03:03:10.000000000","message":"Updated.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"39a22d7b86ee404849f8b71cbef23d35fb0cae76","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"        try:"},{"line_number":1741,"context_line":"            out, err \u003d self._execute_cmd(get_access, check_exit_code\u003dTrue)"},{"line_number":1742,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":1743,"context_line":"            msg \u003d _(\u0027Failed to get access list of CIFS share %s.\u0027) % share_name"},{"line_number":1744,"context_line":"            LOG.exception(msg)"},{"line_number":1745,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmsg)"},{"line_number":1746,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_e742c53d","line":1743,"updated":"2016-12-02 21:11:31.000000000","message":"This function is used for CIFS only, but the function name get_share_access looks generic.  I think either the function name should be changed to get_cifs_share_access or the message should be generic.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"50e433a74127ffd71f8ddc04e085f3077732b8fd","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"        try:"},{"line_number":1741,"context_line":"            out, err \u003d self._execute_cmd(get_access, check_exit_code\u003dTrue)"},{"line_number":1742,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":1743,"context_line":"            msg \u003d _(\u0027Failed to get access list of CIFS share %s.\u0027) % share_name"},{"line_number":1744,"context_line":"            LOG.exception(msg)"},{"line_number":1745,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmsg)"},{"line_number":1746,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_cd9151f3","line":1743,"in_reply_to":"3a71b18c_e742c53d","updated":"2016-12-05 03:03:10.000000000","message":"Thanks for the comment.  It\u0027s a bit confusing to me as well when I first saw the function.  Then I realize that it was actually a method of class `CIFSShare` and it starts to make sense.  All share related methods under this class don\u0027t have the CIFS prefix.  So does the `NFSShare` class.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"39a22d7b86ee404849f8b71cbef23d35fb0cae76","unresolved":false,"context_lines":[{"line_number":2003,"context_line":"            if constants.STATUS_OK !\u003d status:"},{"line_number":2004,"context_line":"                message \u003d (_(\u0027Query nfs share %(path)s failed. \u0027"},{"line_number":2005,"context_line":"                             \u0027Reason %(err)s.\u0027) %"},{"line_number":2006,"context_line":"                           {\u0027path\u0027: share_name, \u0027err\u0027: share})"},{"line_number":2007,"context_line":"                LOG.error(message)"},{"line_number":2008,"context_line":"                raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":2009,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_07f50182","line":2006,"updated":"2016-12-02 21:11:31.000000000","message":"\u0027err\u0027: share?  What is \"share\"?  Is it the failure Reason or is it a \"share\"?  I think the variable should be renamed to \"reason\" or \"err\" or \"msg\", something consistent with the message you are printing here.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"50e433a74127ffd71f8ddc04e085f3077732b8fd","unresolved":false,"context_lines":[{"line_number":2003,"context_line":"            if constants.STATUS_OK !\u003d status:"},{"line_number":2004,"context_line":"                message \u003d (_(\u0027Query nfs share %(path)s failed. \u0027"},{"line_number":2005,"context_line":"                             \u0027Reason %(err)s.\u0027) %"},{"line_number":2006,"context_line":"                           {\u0027path\u0027: share_name, \u0027err\u0027: share})"},{"line_number":2007,"context_line":"                LOG.error(message)"},{"line_number":2008,"context_line":"                raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":2009,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_adafb528","line":2006,"in_reply_to":"3a71b18c_07f50182","updated":"2016-12-05 03:03:10.000000000","message":"Good catch, it should be `status`.  And I remove `LOG.error` below because the message will be wrapped in an exception.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"330d10f9c1f4fe5b894bf405aa7f884a74942a4b","unresolved":false,"context_lines":[{"line_number":2007,"context_line":"                LOG.error(message)"},{"line_number":2008,"context_line":"                raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":2009,"context_line":""},{"line_number":2010,"context_line":"            rwhosts \u003d hosts_to_remove(share[\u0027RwHosts\u0027])"},{"line_number":2011,"context_line":"            roothosts \u003d hosts_to_remove(share[\u0027RootHosts\u0027])"},{"line_number":2012,"context_line":"            accesshosts \u003d hosts_to_remove(share[\u0027AccessHosts\u0027])"},{"line_number":2013,"context_line":"            rohosts \u003d hosts_to_remove(share[\u0027RoHosts\u0027])"},{"line_number":2014,"context_line":""},{"line_number":2015,"context_line":"            self._set_share_access(\u0027/\u0027 + share_name,"},{"line_number":2016,"context_line":"                                   mover_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_89c5b43d","line":2013,"range":{"start_line":2010,"start_character":12,"end_line":2013,"end_character":55},"updated":"2016-12-02 16:47:00.000000000","message":"It could be used inline below.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"50e433a74127ffd71f8ddc04e085f3077732b8fd","unresolved":false,"context_lines":[{"line_number":2007,"context_line":"                LOG.error(message)"},{"line_number":2008,"context_line":"                raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":2009,"context_line":""},{"line_number":2010,"context_line":"            rwhosts \u003d hosts_to_remove(share[\u0027RwHosts\u0027])"},{"line_number":2011,"context_line":"            roothosts \u003d hosts_to_remove(share[\u0027RootHosts\u0027])"},{"line_number":2012,"context_line":"            accesshosts \u003d hosts_to_remove(share[\u0027AccessHosts\u0027])"},{"line_number":2013,"context_line":"            rohosts \u003d hosts_to_remove(share[\u0027RoHosts\u0027])"},{"line_number":2014,"context_line":""},{"line_number":2015,"context_line":"            self._set_share_access(\u0027/\u0027 + share_name,"},{"line_number":2016,"context_line":"                                   mover_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_eda52d47","line":2013,"range":{"start_line":2010,"start_character":12,"end_line":2013,"end_character":55},"in_reply_to":"3a71b18c_89c5b43d","updated":"2016-12-05 03:03:10.000000000","message":"Updated.  Thanks.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"}],"manila/share/drivers/emc/plugins/base.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1fdb2170505726a98be86b76c7654fef96fa45a9","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def deny_access(self, context, share, access, share_server):"},{"line_number":62,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_73672e4d","line":64,"updated":"2016-11-10 10:06:28.000000000","message":"@abc.abstractmethod?","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"03fe336bec18b9729d5a560dab65da73b7e4fd7b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def deny_access(self, context, share, access, share_server):"},{"line_number":62,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":65,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":66,"context_line":"        \"\"\"Update access rules for given share.\"\"\""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_d82c859b","line":64,"in_reply_to":"9a629dbe_73672e4d","updated":"2016-11-10 10:55:35.000000000","message":"This base class has four implementations.  Not all of them support this API yet.  So I didn\u0027t add the decorator here.","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"}],"manila/share/drivers/emc/plugins/vnx/connection.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1fdb2170505726a98be86b76c7654fef96fa45a9","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                white_list.append(rule[\u0027access_to\u0027])"},{"line_number":391,"context_line":"            self.clear_access(share, share_server, white_list)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def clear_access(self, share, share_server, white_list\u003dNone):"},{"line_number":394,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].upper()"},{"line_number":395,"context_line":"        share_name \u003d share[\u0027id\u0027]"},{"line_number":396,"context_line":"        if share_proto \u003d\u003d \u0027CIFS\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_977ca0b6","line":393,"range":{"start_line":393,"start_character":58,"end_line":393,"end_character":63},"updated":"2016-11-10 10:06:28.000000000","message":"this default setting may not be necessary.","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"03fe336bec18b9729d5a560dab65da73b7e4fd7b","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                white_list.append(rule[\u0027access_to\u0027])"},{"line_number":391,"context_line":"            self.clear_access(share, share_server, white_list)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def clear_access(self, share, share_server, white_list\u003dNone):"},{"line_number":394,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].upper()"},{"line_number":395,"context_line":"        share_name \u003d share[\u0027id\u0027]"},{"line_number":396,"context_line":"        if share_proto \u003d\u003d \u0027CIFS\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_788e197a","line":393,"range":{"start_line":393,"start_character":58,"end_line":393,"end_character":63},"in_reply_to":"9a629dbe_977ca0b6","updated":"2016-11-10 10:55:35.000000000","message":"Done","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1fdb2170505726a98be86b76c7654fef96fa45a9","unresolved":false,"context_lines":[{"line_number":401,"context_line":"    @vnx_utils.log_enter_exit"},{"line_number":402,"context_line":"    def _cifs_clear_access(self, share_name, share_server, white_list):"},{"line_number":403,"context_line":"        \"\"\"Clear access for CIFS share except hosts in the white list.\"\"\""},{"line_number":404,"context_line":"        vdm_name \u003d self._get_share_server_name(share_server)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        # Check if CIFS server exists."},{"line_number":407,"context_line":"        server_name \u003d vdm_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_e96b45b7","line":404,"range":{"start_line":404,"start_character":47,"end_line":404,"end_character":59},"updated":"2016-11-10 10:06:28.000000000","message":"Is it possible that share_server is None here?","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"03fe336bec18b9729d5a560dab65da73b7e4fd7b","unresolved":false,"context_lines":[{"line_number":401,"context_line":"    @vnx_utils.log_enter_exit"},{"line_number":402,"context_line":"    def _cifs_clear_access(self, share_name, share_server, white_list):"},{"line_number":403,"context_line":"        \"\"\"Clear access for CIFS share except hosts in the white list.\"\"\""},{"line_number":404,"context_line":"        vdm_name \u003d self._get_share_server_name(share_server)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        # Check if CIFS server exists."},{"line_number":407,"context_line":"        server_name \u003d vdm_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_584a3527","line":404,"range":{"start_line":404,"start_character":47,"end_line":404,"end_character":59},"in_reply_to":"9a629dbe_e96b45b7","updated":"2016-11-10 10:55:35.000000000","message":"Yes, it\u0027s confusing.  Although we have the value defaulted to \u0027None\u0027 but in the base class it is not a parameter with default value.  And technically, it shouldn\u0027t be None.","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1fdb2170505726a98be86b76c7654fef96fa45a9","unresolved":false,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        self._get_context(\u0027CIFSShare\u0027).clear_share_access("},{"line_number":416,"context_line":"            share_name\u003dshare_name,"},{"line_number":417,"context_line":"            mover_name\u003dself._get_share_server_name(share_server),"},{"line_number":418,"context_line":"            domain\u003dserver[\u0027domain\u0027],"},{"line_number":419,"context_line":"            white_list_users\u003dwhite_list)"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_294d3d3e","line":417,"range":{"start_line":417,"start_character":23,"end_line":417,"end_character":64},"updated":"2016-11-10 10:06:28.000000000","message":"why not use vdm_name?","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"03fe336bec18b9729d5a560dab65da73b7e4fd7b","unresolved":false,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        self._get_context(\u0027CIFSShare\u0027).clear_share_access("},{"line_number":416,"context_line":"            share_name\u003dshare_name,"},{"line_number":417,"context_line":"            mover_name\u003dself._get_share_server_name(share_server),"},{"line_number":418,"context_line":"            domain\u003dserver[\u0027domain\u0027],"},{"line_number":419,"context_line":"            white_list_users\u003dwhite_list)"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_b82d1148","line":417,"range":{"start_line":417,"start_character":23,"end_line":417,"end_character":64},"in_reply_to":"9a629dbe_294d3d3e","updated":"2016-11-10 10:55:35.000000000","message":"Done.","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"9d97af03396cf8550b66f4c8b3ba9ec4898ffad9","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %s not found.\") % server_name)"},{"line_number":412,"context_line":"            LOG.error(message)"},{"line_number":413,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        self._get_context(\u0027CIFSShare\u0027).clear_share_access("},{"line_number":416,"context_line":"            share_name\u003dshare_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_e4541ecb","line":413,"range":{"start_line":411,"start_character":12,"end_line":413,"end_character":58},"updated":"2016-11-11 06:26:22.000000000","message":"should be covered by UT.","commit_id":"357e9d9a6686ac266726312aa121bd13adda46b7"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"b560f3e200270817a6075d4902b119ba1c429c6a","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %s not found.\") % server_name)"},{"line_number":412,"context_line":"            LOG.error(message)"},{"line_number":413,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        self._get_context(\u0027CIFSShare\u0027).clear_share_access("},{"line_number":416,"context_line":"            share_name\u003dshare_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_55c9f2aa","line":413,"range":{"start_line":411,"start_character":12,"end_line":413,"end_character":58},"in_reply_to":"9a629dbe_e4541ecb","updated":"2016-11-11 08:53:29.000000000","message":"Done","commit_id":"357e9d9a6686ac266726312aa121bd13adda46b7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"564b85f803efdb517ee75c2c64af4bde9a44833e","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            for rule in add_rules:"},{"line_number":378,"context_line":"                self.allow_access(context, share, rule, share_server)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        # deleting rules"},{"line_number":381,"context_line":"        if delete_rules:"},{"line_number":382,"context_line":"            for rule in delete_rules:"},{"line_number":383,"context_line":"                self.deny_access(context, share, rule, share_server)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        # recovery mode"},{"line_number":386,"context_line":"        if not (add_rules or delete_rules):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_2baa6619","line":383,"range":{"start_line":380,"start_character":3,"end_line":383,"end_character":68},"updated":"2016-11-18 10:49:41.000000000","message":"you should do delete before add, if there are 2 requests such as remove a RO rule and add it back as RW, and they are bundled together, the deny can remove the rule and add can add it back. The way it is right now it could give an error that the rule already exist (depending on your backend), or continue and then remove the rule, leaving it in an inconsistent state","commit_id":"98b9c06f9c1591c5aa8da9b473d281f7b308e036"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"b6d5a61c6ef492c9f9e6698ec295c8fcba578658","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            for rule in add_rules:"},{"line_number":378,"context_line":"                self.allow_access(context, share, rule, share_server)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        # deleting rules"},{"line_number":381,"context_line":"        if delete_rules:"},{"line_number":382,"context_line":"            for rule in delete_rules:"},{"line_number":383,"context_line":"                self.deny_access(context, share, rule, share_server)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        # recovery mode"},{"line_number":386,"context_line":"        if not (add_rules or delete_rules):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_6eec6c2a","line":383,"range":{"start_line":380,"start_character":3,"end_line":383,"end_character":68},"in_reply_to":"7a77a97e_2baa6619","updated":"2016-11-18 10:54:27.000000000","message":"Thanks for the suggestion!  Updated.","commit_id":"98b9c06f9c1591c5aa8da9b473d281f7b308e036"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6f04817089553c3deabe5752659fc9743ce39f1a","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        vdm_name \u003d self._get_share_server_name(share_server)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        # Check if CIFS server exists."},{"line_number":407,"context_line":"        server_name \u003d vdm_name"},{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %s not found.\") % server_name)"},{"line_number":412,"context_line":"            LOG.error(message)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_5b7c7272","line":409,"range":{"start_line":407,"start_character":8,"end_line":409,"end_character":70},"updated":"2016-11-23 17:19:37.000000000","message":"Duplication of the variable. Are you sure you are not mistaken here?","commit_id":"c9c6bbacda2f66725a5a9e93193802df2c0e57da"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"ed724be6be23dd7fdc1da04844867649a9633f3c","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        vdm_name \u003d self._get_share_server_name(share_server)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        # Check if CIFS server exists."},{"line_number":407,"context_line":"        server_name \u003d vdm_name"},{"line_number":408,"context_line":"        status, server \u003d self._get_context(\u0027CIFSServer\u0027).get(server_name,"},{"line_number":409,"context_line":"                                                             vdm_name)"},{"line_number":410,"context_line":"        if status !\u003d constants.STATUS_OK:"},{"line_number":411,"context_line":"            message \u003d (_(\"CIFS server %s not found.\") % server_name)"},{"line_number":412,"context_line":"            LOG.error(message)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_a0a0dca0","line":409,"range":{"start_line":407,"start_character":8,"end_line":409,"end_character":70},"in_reply_to":"5a74a57a_5b7c7272","updated":"2016-11-24 02:54:19.000000000","message":"Yes, for VDM, they are the same.","commit_id":"c9c6bbacda2f66725a5a9e93193802df2c0e57da"}],"manila/share/drivers/emc/plugins/vnx/object_manager.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1fdb2170505726a98be86b76c7654fef96fa45a9","unresolved":false,"context_lines":[{"line_number":1743,"context_line":""},{"line_number":1744,"context_line":"            name \u003d None"},{"line_number":1745,"context_line":""},{"line_number":1746,"context_line":"            ret \u003d {}"},{"line_number":1747,"context_line":"            for line in out.splitlines():"},{"line_number":1748,"context_line":"                if name is None:"},{"line_number":1749,"context_line":"                    names \u003d name_pattern.findall(line)"},{"line_number":1750,"context_line":"                    if names:"},{"line_number":1751,"context_line":"                        name \u003d names[0].lower()"},{"line_number":1752,"context_line":"                else:"},{"line_number":1753,"context_line":"                    accesses \u003d access_pattern.findall(line)"},{"line_number":1754,"context_line":"                    if accesses:"},{"line_number":1755,"context_line":"                        ret[name] \u003d accesses[0].lower()"},{"line_number":1756,"context_line":"                        name \u003d None"},{"line_number":1757,"context_line":"        except processutils.ProcessExecutionError as expt:"},{"line_number":1758,"context_line":"            message \u003d (_(\u0027Failed to get access list of \u0027"},{"line_number":1759,"context_line":"                         \u0027CIFS share %(name)s. Reason: %(err)s.\u0027) %"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_d2054611","line":1756,"range":{"start_line":1746,"start_character":12,"end_line":1756,"end_character":35},"updated":"2016-11-10 10:06:28.000000000","message":"maybe this code could be moved out of the try...except snippet.","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"03fe336bec18b9729d5a560dab65da73b7e4fd7b","unresolved":false,"context_lines":[{"line_number":1743,"context_line":""},{"line_number":1744,"context_line":"            name \u003d None"},{"line_number":1745,"context_line":""},{"line_number":1746,"context_line":"            ret \u003d {}"},{"line_number":1747,"context_line":"            for line in out.splitlines():"},{"line_number":1748,"context_line":"                if name is None:"},{"line_number":1749,"context_line":"                    names \u003d name_pattern.findall(line)"},{"line_number":1750,"context_line":"                    if names:"},{"line_number":1751,"context_line":"                        name \u003d names[0].lower()"},{"line_number":1752,"context_line":"                else:"},{"line_number":1753,"context_line":"                    accesses \u003d access_pattern.findall(line)"},{"line_number":1754,"context_line":"                    if accesses:"},{"line_number":1755,"context_line":"                        ret[name] \u003d accesses[0].lower()"},{"line_number":1756,"context_line":"                        name \u003d None"},{"line_number":1757,"context_line":"        except processutils.ProcessExecutionError as expt:"},{"line_number":1758,"context_line":"            message \u003d (_(\u0027Failed to get access list of \u0027"},{"line_number":1759,"context_line":"                         \u0027CIFS share %(name)s. Reason: %(err)s.\u0027) %"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a629dbe_d8664550","line":1756,"range":{"start_line":1746,"start_character":12,"end_line":1756,"end_character":35},"in_reply_to":"9a629dbe_d2054611","updated":"2016-11-10 10:55:35.000000000","message":"Done","commit_id":"7788117009e724de2597cca1d953f4ff852c89c6"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"9d97af03396cf8550b66f4c8b3ba9ec4898ffad9","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"        try:"},{"line_number":1741,"context_line":"            out, err \u003d self._execute_cmd(get_access, check_exit_code\u003dTrue)"},{"line_number":1742,"context_line":"        except processutils.ProcessExecutionError as expt:"},{"line_number":1743,"context_line":"            message \u003d (_(\u0027Failed to get access list of \u0027"},{"line_number":1744,"context_line":"                         \u0027CIFS share %(name)s. Reason: %(err)s.\u0027) %"},{"line_number":1745,"context_line":"                       {\u0027name\u0027: share_name, \u0027err\u0027: expt})"},{"line_number":1746,"context_line":"            LOG.error(message)"},{"line_number":1747,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":1748,"context_line":""},{"line_number":1749,"context_line":"        ret \u003d {}"},{"line_number":1750,"context_line":"        name_pattern \u003d re.compile(r\"Unix user \u0027(.+?)\u0027\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_8266f727","line":1747,"range":{"start_line":1743,"start_character":12,"end_line":1747,"end_character":58},"updated":"2016-11-11 06:26:22.000000000","message":"UT should cover this exception situation.","commit_id":"357e9d9a6686ac266726312aa121bd13adda46b7"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"b560f3e200270817a6075d4902b119ba1c429c6a","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"        try:"},{"line_number":1741,"context_line":"            out, err \u003d self._execute_cmd(get_access, check_exit_code\u003dTrue)"},{"line_number":1742,"context_line":"        except processutils.ProcessExecutionError as expt:"},{"line_number":1743,"context_line":"            message \u003d (_(\u0027Failed to get access list of \u0027"},{"line_number":1744,"context_line":"                         \u0027CIFS share %(name)s. Reason: %(err)s.\u0027) %"},{"line_number":1745,"context_line":"                       {\u0027name\u0027: share_name, \u0027err\u0027: expt})"},{"line_number":1746,"context_line":"            LOG.error(message)"},{"line_number":1747,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":1748,"context_line":""},{"line_number":1749,"context_line":"        ret \u003d {}"},{"line_number":1750,"context_line":"        name_pattern \u003d re.compile(r\"Unix user \u0027(.+?)\u0027\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_15a4dab7","line":1747,"range":{"start_line":1743,"start_character":12,"end_line":1747,"end_character":58},"in_reply_to":"9a629dbe_8266f727","updated":"2016-11-11 08:53:29.000000000","message":"Done","commit_id":"357e9d9a6686ac266726312aa121bd13adda46b7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"9d97af03396cf8550b66f4c8b3ba9ec4898ffad9","unresolved":false,"context_lines":[{"line_number":2003,"context_line":""},{"line_number":2004,"context_line":"            status, share \u003d self.get(share_name, mover_name)"},{"line_number":2005,"context_line":"            if constants.STATUS_OK !\u003d status:"},{"line_number":2006,"context_line":"                message \u003d (_(\u0027Query nfs share %(path)s failed. \u0027"},{"line_number":2007,"context_line":"                             \u0027Reason %(err)s.\u0027) %"},{"line_number":2008,"context_line":"                           {\u0027path\u0027: share_name, \u0027err\u0027: share})"},{"line_number":2009,"context_line":"                LOG.error(message)"},{"line_number":2010,"context_line":"                raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":2011,"context_line":""},{"line_number":2012,"context_line":"            rwhosts \u003d hosts_to_remove(share[\u0027RwHosts\u0027])"},{"line_number":2013,"context_line":"            roothosts \u003d hosts_to_remove(share[\u0027RootHosts\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_a2505b33","line":2010,"range":{"start_line":2006,"start_character":16,"end_line":2010,"end_character":62},"updated":"2016-11-11 06:26:22.000000000","message":"ditto","commit_id":"357e9d9a6686ac266726312aa121bd13adda46b7"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"b560f3e200270817a6075d4902b119ba1c429c6a","unresolved":false,"context_lines":[{"line_number":2003,"context_line":""},{"line_number":2004,"context_line":"            status, share \u003d self.get(share_name, mover_name)"},{"line_number":2005,"context_line":"            if constants.STATUS_OK !\u003d status:"},{"line_number":2006,"context_line":"                message \u003d (_(\u0027Query nfs share %(path)s failed. \u0027"},{"line_number":2007,"context_line":"                             \u0027Reason %(err)s.\u0027) %"},{"line_number":2008,"context_line":"                           {\u0027path\u0027: share_name, \u0027err\u0027: share})"},{"line_number":2009,"context_line":"                LOG.error(message)"},{"line_number":2010,"context_line":"                raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":2011,"context_line":""},{"line_number":2012,"context_line":"            rwhosts \u003d hosts_to_remove(share[\u0027RwHosts\u0027])"},{"line_number":2013,"context_line":"            roothosts \u003d hosts_to_remove(share[\u0027RootHosts\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_b0117c54","line":2010,"range":{"start_line":2006,"start_character":16,"end_line":2010,"end_character":62},"in_reply_to":"9a629dbe_a2505b33","updated":"2016-11-11 08:53:29.000000000","message":"Done","commit_id":"357e9d9a6686ac266726312aa121bd13adda46b7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"9d97af03396cf8550b66f4c8b3ba9ec4898ffad9","unresolved":false,"context_lines":[{"line_number":2033,"context_line":"        if access_hosts is None:"},{"line_number":2034,"context_line":"            access_hosts \u003d set()"},{"line_number":2035,"context_line":""},{"line_number":2036,"context_line":"        if \u0027-0.0.0.0/0.0.0.0\u0027 not in access_hosts:"},{"line_number":2037,"context_line":"            access_hosts.add(\u0027-0.0.0.0/0.0.0.0\u0027)"},{"line_number":2038,"context_line":""},{"line_number":2039,"context_line":"        access_str \u003d (\u0027access\u003d%(access)s\u0027"},{"line_number":2040,"context_line":"                      % {\u0027access\u0027: \u0027:\u0027.join(access_hosts)})"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_823437fc","line":2037,"range":{"start_line":2036,"start_character":8,"end_line":2037,"end_character":48},"updated":"2016-11-11 06:26:22.000000000","message":"should be covered by UT.","commit_id":"357e9d9a6686ac266726312aa121bd13adda46b7"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"b560f3e200270817a6075d4902b119ba1c429c6a","unresolved":false,"context_lines":[{"line_number":2033,"context_line":"        if access_hosts is None:"},{"line_number":2034,"context_line":"            access_hosts \u003d set()"},{"line_number":2035,"context_line":""},{"line_number":2036,"context_line":"        if \u0027-0.0.0.0/0.0.0.0\u0027 not in access_hosts:"},{"line_number":2037,"context_line":"            access_hosts.add(\u0027-0.0.0.0/0.0.0.0\u0027)"},{"line_number":2038,"context_line":""},{"line_number":2039,"context_line":"        access_str \u003d (\u0027access\u003d%(access)s\u0027"},{"line_number":2040,"context_line":"                      % {\u0027access\u0027: \u0027:\u0027.join(access_hosts)})"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_95754a65","line":2037,"range":{"start_line":2036,"start_character":8,"end_line":2037,"end_character":48},"in_reply_to":"9a629dbe_823437fc","updated":"2016-11-11 08:53:29.000000000","message":"Already covered.","commit_id":"357e9d9a6686ac266726312aa121bd13adda46b7"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6f04817089553c3deabe5752659fc9743ce39f1a","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"        try:"},{"line_number":1741,"context_line":"            out, err \u003d self._execute_cmd(get_access, check_exit_code\u003dTrue)"},{"line_number":1742,"context_line":"        except processutils.ProcessExecutionError as expt:"},{"line_number":1743,"context_line":"            message \u003d (_(\u0027Failed to get access list of \u0027"},{"line_number":1744,"context_line":"                         \u0027CIFS share %(name)s. Reason: %(err)s.\u0027) %"},{"line_number":1745,"context_line":"                       {\u0027name\u0027: share_name, \u0027err\u0027: expt})"},{"line_number":1746,"context_line":"            LOG.error(message)"},{"line_number":1747,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":1748,"context_line":""},{"line_number":1749,"context_line":"        ret \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_7bf84ee6","line":1746,"range":{"start_line":1743,"start_character":12,"end_line":1746,"end_character":30},"updated":"2016-11-23 17:19:37.000000000","message":"To log exception use \"LOG.exception\", in this case you do not need to provide it as part of a meesage. Then you will be able to remove \"as expt:\" part.","commit_id":"c9c6bbacda2f66725a5a9e93193802df2c0e57da"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"ed724be6be23dd7fdc1da04844867649a9633f3c","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"        try:"},{"line_number":1741,"context_line":"            out, err \u003d self._execute_cmd(get_access, check_exit_code\u003dTrue)"},{"line_number":1742,"context_line":"        except processutils.ProcessExecutionError as expt:"},{"line_number":1743,"context_line":"            message \u003d (_(\u0027Failed to get access list of \u0027"},{"line_number":1744,"context_line":"                         \u0027CIFS share %(name)s. Reason: %(err)s.\u0027) %"},{"line_number":1745,"context_line":"                       {\u0027name\u0027: share_name, \u0027err\u0027: expt})"},{"line_number":1746,"context_line":"            LOG.error(message)"},{"line_number":1747,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmessage)"},{"line_number":1748,"context_line":""},{"line_number":1749,"context_line":"        ret \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_a077fc38","line":1746,"range":{"start_line":1743,"start_character":12,"end_line":1746,"end_character":30},"in_reply_to":"5a74a57a_7bf84ee6","updated":"2016-11-24 02:54:19.000000000","message":"Thanks!  Updated.","commit_id":"c9c6bbacda2f66725a5a9e93193802df2c0e57da"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"f12854c995d6bd23517772c190915431838837e7","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"        try:"},{"line_number":1741,"context_line":"            out, err \u003d self._execute_cmd(get_access, check_exit_code\u003dTrue)"},{"line_number":1742,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":1743,"context_line":"            msg \u003d (_LE(\u0027Failed to get access list of CIFS share {0}.\u0027)"},{"line_number":1744,"context_line":"                   .format(share_name))"},{"line_number":1745,"context_line":"            LOG.exception(msg)"},{"line_number":1746,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmsg)"},{"line_number":1747,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_d4ecac2b","line":1744,"range":{"start_line":1743,"start_character":0,"end_line":1744,"end_character":39},"updated":"2016-11-24 11:54:36.000000000","message":"I think you should just use _() rather than _LE() here because msg is presented to the end user when you raise the EMCVnxXLAPIError.  See [1].  And you should use a %s for the share_name format, as illustrated here [2].\n\n[1] http://docs.openstack.org/developer/oslo.i18n/guidelines.html#choosing-a-marker-function\n\n[2] http://docs.openstack.org/developer/oslo.i18n/guidelines.html#adding-variables-to-translated-messages","commit_id":"710839286318f26fe28d9ecddabaf9ac7cf73d25"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"499ac3b73bd447bb872d2298b840198a77f0320b","unresolved":false,"context_lines":[{"line_number":1740,"context_line":"        try:"},{"line_number":1741,"context_line":"            out, err \u003d self._execute_cmd(get_access, check_exit_code\u003dTrue)"},{"line_number":1742,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":1743,"context_line":"            msg \u003d (_LE(\u0027Failed to get access list of CIFS share {0}.\u0027)"},{"line_number":1744,"context_line":"                   .format(share_name))"},{"line_number":1745,"context_line":"            LOG.exception(msg)"},{"line_number":1746,"context_line":"            raise exception.EMCVnxXMLAPIError(err\u003dmsg)"},{"line_number":1747,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_a0828650","line":1744,"range":{"start_line":1743,"start_character":0,"end_line":1744,"end_character":39},"in_reply_to":"5a74a57a_d4ecac2b","updated":"2016-11-24 13:21:57.000000000","message":"Thanks for the comment and the details!  Just updated.","commit_id":"710839286318f26fe28d9ecddabaf9ac7cf73d25"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"15a2dc8caef4d1c874e18501bef765f8d60ca7eb","unresolved":false,"context_lines":[{"line_number":2042,"context_line":"            access_str +\u003d \u0027,rw\u003d%(rw)s\u0027 % {\u0027rw\u0027: \u0027:\u0027.join(rw_hosts)}"},{"line_number":2043,"context_line":"        if ro_hosts:"},{"line_number":2044,"context_line":"            access_str +\u003d \u0027,ro\u003d%(ro)s\u0027 % {\u0027ro\u0027: \u0027:\u0027.join(ro_hosts)}"},{"line_number":2045,"context_line":""},{"line_number":2046,"context_line":"        set_nfs_share_access_cmd \u003d ["},{"line_number":2047,"context_line":"            \u0027env\u0027, \u0027NAS_DB\u003d/nas\u0027, \u0027/nas/bin/server_export\u0027, mover_name,"},{"line_number":2048,"context_line":"            \u0027-ignore\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a74a57a_423ba79c","line":2045,"updated":"2016-11-30 10:24:50.000000000","message":"Not related to the change?","commit_id":"7b3d36702733f76ff7e68c1c6cde9c4cc8c6b653"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"416de83ec90a9ab96a69018fd9051613698ddfc8","unresolved":false,"context_lines":[{"line_number":2042,"context_line":"            access_str +\u003d \u0027,rw\u003d%(rw)s\u0027 % {\u0027rw\u0027: \u0027:\u0027.join(rw_hosts)}"},{"line_number":2043,"context_line":"        if ro_hosts:"},{"line_number":2044,"context_line":"            access_str +\u003d \u0027,ro\u003d%(ro)s\u0027 % {\u0027ro\u0027: \u0027:\u0027.join(ro_hosts)}"},{"line_number":2045,"context_line":""},{"line_number":2046,"context_line":"        set_nfs_share_access_cmd \u003d ["},{"line_number":2047,"context_line":"            \u0027env\u0027, \u0027NAS_DB\u003d/nas\u0027, \u0027/nas/bin/server_export\u0027, mover_name,"},{"line_number":2048,"context_line":"            \u0027-ignore\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a74a57a_6298a36b","line":2045,"in_reply_to":"5a74a57a_423ba79c","updated":"2016-11-30 10:27:52.000000000","message":"Ah, yes.  I modified the test case which is related to the change.  But this extra line is added just to make the code cleaner.  Thanks for the review.","commit_id":"7b3d36702733f76ff7e68c1c6cde9c4cc8c6b653"}],"manila/tests/share/drivers/dell_emc/plugins/vnx/fakes.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"39a22d7b86ee404849f8b71cbef23d35fb0cae76","unresolved":false,"context_lines":[{"line_number":1292,"context_line":"        ]"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"    def cmd_get_access(self):"},{"line_number":1295,"context_line":"        get_str \u003d \u0027sharesd {} dump\u0027.format(self.share_name)"},{"line_number":1296,"context_line":"        return ["},{"line_number":1297,"context_line":"            \u0027env\u0027, \u0027NAS_DB\u003d/nas\u0027,"},{"line_number":1298,"context_line":"            \u0027/nas/bin/.server_config\u0027, self.vdm_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_e7272510","line":1295,"updated":"2016-12-02 21:11:31.000000000","message":"Please use the %s format.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"50e433a74127ffd71f8ddc04e085f3077732b8fd","unresolved":false,"context_lines":[{"line_number":1292,"context_line":"        ]"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"    def cmd_get_access(self):"},{"line_number":1295,"context_line":"        get_str \u003d \u0027sharesd {} dump\u0027.format(self.share_name)"},{"line_number":1296,"context_line":"        return ["},{"line_number":1297,"context_line":"            \u0027env\u0027, \u0027NAS_DB\u003d/nas\u0027,"},{"line_number":1298,"context_line":"            \u0027/nas/bin/.server_config\u0027, self.vdm_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_ad76d5d4","line":1295,"in_reply_to":"3a71b18c_e7272510","updated":"2016-12-05 03:03:10.000000000","message":"Updated.  Thanks.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"}],"manila/tests/share/drivers/dell_emc/plugins/vnx/test_object_manager.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"330d10f9c1f4fe5b894bf405aa7f884a74942a4b","unresolved":false,"context_lines":[{"line_number":3075,"context_line":"            ro_hosts\u003dself.nfs_share.ro_hosts))"},{"line_number":3076,"context_line":"        self.ssh_hook.append(self.nfs_share.output_set_access_success())"},{"line_number":3077,"context_line":"        self.ssh_hook.append(self.nfs_share.output_get_succeed("},{"line_number":3078,"context_line":"            rw_hosts\u003d[\u0027192.168.1.1\u0027], ro_hosts\u003d[\u0027192.168.1.3\u0027]))"},{"line_number":3079,"context_line":""},{"line_number":3080,"context_line":"        context \u003d self.manager.getStorageContext(\u0027NFSShare\u0027)"},{"line_number":3081,"context_line":"        context.conn[\u0027SSH\u0027].run_ssh \u003d utils.EMCNFSShareMock("}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_7f21e6fa","line":3078,"range":{"start_line":3078,"start_character":22,"end_line":3078,"end_character":35},"updated":"2016-12-02 16:47:00.000000000","message":"Better to use variables in such cases. It allows to avoid typos and reduces amount of changed lines in case of variable value update.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"50e433a74127ffd71f8ddc04e085f3077732b8fd","unresolved":false,"context_lines":[{"line_number":3075,"context_line":"            ro_hosts\u003dself.nfs_share.ro_hosts))"},{"line_number":3076,"context_line":"        self.ssh_hook.append(self.nfs_share.output_set_access_success())"},{"line_number":3077,"context_line":"        self.ssh_hook.append(self.nfs_share.output_get_succeed("},{"line_number":3078,"context_line":"            rw_hosts\u003d[\u0027192.168.1.1\u0027], ro_hosts\u003d[\u0027192.168.1.3\u0027]))"},{"line_number":3079,"context_line":""},{"line_number":3080,"context_line":"        context \u003d self.manager.getStorageContext(\u0027NFSShare\u0027)"},{"line_number":3081,"context_line":"        context.conn[\u0027SSH\u0027].run_ssh \u003d utils.EMCNFSShareMock("}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_ed2a8d8f","line":3078,"range":{"start_line":3078,"start_character":22,"end_line":3078,"end_character":35},"in_reply_to":"3a71b18c_7f21e6fa","updated":"2016-12-05 03:03:10.000000000","message":"Updated.  Thanks!","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"330d10f9c1f4fe5b894bf405aa7f884a74942a4b","unresolved":false,"context_lines":[{"line_number":3181,"context_line":"                          mover_name\u003dself.vdm.vdm_name,"},{"line_number":3182,"context_line":"                          white_list_hosts\u003dNone)"},{"line_number":3183,"context_line":""},{"line_number":3184,"context_line":"        ssh_calls \u003d ["},{"line_number":3185,"context_line":"            mock.call(self.nfs_share.cmd_get(), False),"},{"line_number":3186,"context_line":"        ]"},{"line_number":3187,"context_line":"        context.conn[\u0027SSH\u0027].run_ssh.assert_has_calls(ssh_calls)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_7f7806f3","line":3187,"range":{"start_line":3184,"start_character":8,"end_line":3187,"end_character":63},"updated":"2016-12-02 16:47:00.000000000","message":"context.conn[\u0027SSH\u0027].run_ssh.assert_called_once_with(\n    self.nfs_share.cmd_get(), False)","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"50e433a74127ffd71f8ddc04e085f3077732b8fd","unresolved":false,"context_lines":[{"line_number":3181,"context_line":"                          mover_name\u003dself.vdm.vdm_name,"},{"line_number":3182,"context_line":"                          white_list_hosts\u003dNone)"},{"line_number":3183,"context_line":""},{"line_number":3184,"context_line":"        ssh_calls \u003d ["},{"line_number":3185,"context_line":"            mock.call(self.nfs_share.cmd_get(), False),"},{"line_number":3186,"context_line":"        ]"},{"line_number":3187,"context_line":"        context.conn[\u0027SSH\u0027].run_ssh.assert_has_calls(ssh_calls)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_cd04f119","line":3187,"range":{"start_line":3184,"start_character":8,"end_line":3187,"end_character":63},"in_reply_to":"3a71b18c_7f7806f3","updated":"2016-12-05 03:03:10.000000000","message":"Thanks!  I don\u0027t realize we could use this function.","commit_id":"647aaf9d6c1dc52ff3cfc79554f40651f4cde4f9"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a1c436772e7f85e27c4a3156acee0b89c63ce77e","unresolved":false,"context_lines":[{"line_number":2738,"context_line":"        ]"},{"line_number":2739,"context_line":"        context.conn[\u0027SSH\u0027].run_ssh.assert_has_calls(ssh_calls)"},{"line_number":2740,"context_line":""},{"line_number":2741,"context_line":"    def test_get_share_access_two(self):"},{"line_number":2742,"context_line":"        self.ssh_hook.append(fakes.FakeData.cifs_access)"},{"line_number":2743,"context_line":""},{"line_number":2744,"context_line":"        context \u003d self.manager.getStorageContext(\u0027CIFSShare\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_42edf1ed","line":2741,"range":{"start_line":2741,"start_character":7,"end_line":2741,"end_character":33},"updated":"2016-12-05 15:58:48.000000000","message":"Why does this have \u0027two\u0027 in its name?  I don\u0027t find a \u0027test_get_share_access_one\u0027 or \u0027test_get_share_access\u0027?","commit_id":"eaedeca95f42d01ade6614c8707cbf868356f1f2"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"03d240ad2d1ee25112c555ea8bb733c086404973","unresolved":false,"context_lines":[{"line_number":2738,"context_line":"        ]"},{"line_number":2739,"context_line":"        context.conn[\u0027SSH\u0027].run_ssh.assert_has_calls(ssh_calls)"},{"line_number":2740,"context_line":""},{"line_number":2741,"context_line":"    def test_get_share_access_two(self):"},{"line_number":2742,"context_line":"        self.ssh_hook.append(fakes.FakeData.cifs_access)"},{"line_number":2743,"context_line":""},{"line_number":2744,"context_line":"        context \u003d self.manager.getStorageContext(\u0027CIFSShare\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_37b10e48","line":2741,"range":{"start_line":2741,"start_character":7,"end_line":2741,"end_character":33},"in_reply_to":"3a71b18c_42edf1ed","updated":"2016-12-05 17:47:30.000000000","message":"It indicates that the result contains two access entries.  I am renaming it to `test_get_share_access`.  Thanks for the comment!","commit_id":"eaedeca95f42d01ade6614c8707cbf868356f1f2"}],"manila/tests/share/drivers/emc/plugins/vnx/fakes.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cd9883db2b56cff478984418e902c0527b9e3c00","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    emc_nas_password \u003d \u0027fakepassword\u0027"},{"line_number":135,"context_line":"    share_backend_name \u003d \u0027EMC_NAS_Storage\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    cifs_access \u003d \u0027\u0027\u0027"},{"line_number":138,"context_line":"        1478607389: SMB:11: Unix user \u0027Guest\u0027 UID\u003d32769"},{"line_number":139,"context_line":"        1478607389: SMB:10: FindUserUid:Access_Password \u0027Guest\u0027,1\u003d0x8001 T\u003d0"},{"line_number":140,"context_line":"        1478607389: SHARE: 6: ALLOWED:fullcontrol:S-1-5-15-3399d125-6dcdf5f4"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_812ecb89","line":137,"range":{"start_line":137,"start_character":18,"end_line":137,"end_character":21},"updated":"2016-11-29 14:33:31.000000000","message":"use \"","commit_id":"fedf493d6edb80261eed12268c9da6e0706ad2e3"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"97e91fdf14c51f7919e6829612431cedefd8f29d","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    emc_nas_password \u003d \u0027fakepassword\u0027"},{"line_number":135,"context_line":"    share_backend_name \u003d \u0027EMC_NAS_Storage\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    cifs_access \u003d \u0027\u0027\u0027"},{"line_number":138,"context_line":"        1478607389: SMB:11: Unix user \u0027Guest\u0027 UID\u003d32769"},{"line_number":139,"context_line":"        1478607389: SMB:10: FindUserUid:Access_Password \u0027Guest\u0027,1\u003d0x8001 T\u003d0"},{"line_number":140,"context_line":"        1478607389: SHARE: 6: ALLOWED:fullcontrol:S-1-5-15-3399d125-6dcdf5f4"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_7850675f","line":137,"range":{"start_line":137,"start_character":18,"end_line":137,"end_character":21},"in_reply_to":"5a74a57a_812ecb89","updated":"2016-11-30 01:55:57.000000000","message":"Done","commit_id":"fedf493d6edb80261eed12268c9da6e0706ad2e3"}],"manila/tests/share/drivers/emc/plugins/vnx/test_connection.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cd9883db2b56cff478984418e902c0527b9e3c00","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"            mock.call(self.vdm.req_get()),"},{"line_number":1126,"context_line":"            mock.call(self.cifs_server.req_get(self.vdm.vdm_id)),"},{"line_number":1127,"context_line":"        ]"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        xml_req_mock.assert_has_calls(expected_calls)"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"    def test_allow_cifs_rw_access(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_416673ed","line":1128,"range":{"start_line":1128,"start_character":0,"end_line":1128,"end_character":0},"updated":"2016-11-29 14:33:31.000000000","message":"remove blank line","commit_id":"fedf493d6edb80261eed12268c9da6e0706ad2e3"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"97e91fdf14c51f7919e6829612431cedefd8f29d","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"            mock.call(self.vdm.req_get()),"},{"line_number":1126,"context_line":"            mock.call(self.cifs_server.req_get(self.vdm.vdm_id)),"},{"line_number":1127,"context_line":"        ]"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        xml_req_mock.assert_has_calls(expected_calls)"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"    def test_allow_cifs_rw_access(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_b8e11f9d","line":1128,"range":{"start_line":1128,"start_character":0,"end_line":1128,"end_character":0},"in_reply_to":"5a74a57a_416673ed","updated":"2016-11-30 01:55:57.000000000","message":"Done","commit_id":"fedf493d6edb80261eed12268c9da6e0706ad2e3"}],"manila/tests/share/drivers/emc/plugins/vnx/utils.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cd9883db2b56cff478984418e902c0527b9e3c00","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @staticmethod"},{"line_number":139,"context_line":"    def _opt_value_from_map(opt_map, key):"},{"line_number":140,"context_line":"        value \u003d opt_map.get(key, \u0027\u0027)"},{"line_number":141,"context_line":"        if value:"},{"line_number":142,"context_line":"            ret \u003d set(value.split(\u0027:\u0027))"},{"line_number":143,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_21e09728","line":140,"range":{"start_line":140,"start_character":33,"end_line":140,"end_character":35},"updated":"2016-11-29 14:33:31.000000000","message":"why not just use the default, None.\ni.e,  value \u003d opt_map.get(key)","commit_id":"fedf493d6edb80261eed12268c9da6e0706ad2e3"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"97e91fdf14c51f7919e6829612431cedefd8f29d","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @staticmethod"},{"line_number":139,"context_line":"    def _opt_value_from_map(opt_map, key):"},{"line_number":140,"context_line":"        value \u003d opt_map.get(key, \u0027\u0027)"},{"line_number":141,"context_line":"        if value:"},{"line_number":142,"context_line":"            ret \u003d set(value.split(\u0027:\u0027))"},{"line_number":143,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_d8933bff","line":140,"range":{"start_line":140,"start_character":33,"end_line":140,"end_character":35},"in_reply_to":"5a74a57a_21e09728","updated":"2016-11-30 01:55:57.000000000","message":"Good point.  Updated.","commit_id":"fedf493d6edb80261eed12268c9da6e0706ad2e3"}]}
