)]}'
{"manila/share/drivers/inspur/instorage/instorage.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        # As the name in the system should not start with a num,"},{"line_number":157,"context_line":"        # we need change the head char if it is a num,"},{"line_number":158,"context_line":"        # we change it to upper alpha start from \u0027A\u0027, as \u00270\u0027 -\u003e \u0027A\u0027."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        name \u003d share[\u0027id\u0027].replace(\u0027-\u0027, \u0027\u0027).lower()"},{"line_number":161,"context_line":"        if name[0] in \u00270123456789\u0027:"},{"line_number":162,"context_line":"            name \u003d chr(ord(\u0027A\u0027) + (ord(name[0]) - ord(\u00270\u0027))) + name[1:]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_8e039f0f","line":159,"updated":"2019-06-06 20:00:59.000000000","message":"A real example would help us understanding at a glance what all this explanation means:\n\n# e.g.\n# generate_share_name({\n  \u0027id\u0027: \u002746CF5E85-D618-4023-8727-6A1EA9292954\u0027,\n  ...\n})\n# returns \u0027E6cf5e85d618402387276a1ea9292954\u0027","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        # As the name in the system should not start with a num,"},{"line_number":157,"context_line":"        # we need change the head char if it is a num,"},{"line_number":158,"context_line":"        # we change it to upper alpha start from \u0027A\u0027, as \u00270\u0027 -\u003e \u0027A\u0027."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        name \u003d share[\u0027id\u0027].replace(\u0027-\u0027, \u0027\u0027).lower()"},{"line_number":161,"context_line":"        if name[0] in \u00270123456789\u0027:"},{"line_number":162,"context_line":"            name \u003d chr(ord(\u0027A\u0027) + (ord(name[0]) - ord(\u00270\u0027))) + name[1:]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_85944338","line":159,"in_reply_to":"9fb8cfa7_8e039f0f","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        name \u003d share[\u0027id\u0027].replace(\u0027-\u0027, \u0027\u0027).lower()"},{"line_number":161,"context_line":"        if name[0] in \u00270123456789\u0027:"},{"line_number":162,"context_line":"            name \u003d chr(ord(\u0027A\u0027) + (ord(name[0]) - ord(\u00270\u0027))) + name[1:]"},{"line_number":163,"context_line":"        return name"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def get_network_allocations_number(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_4ef4c75b","line":162,"range":{"start_line":162,"start_character":33,"end_line":162,"end_character":59},"updated":"2019-06-06 20:00:59.000000000","message":"nit: You might want to remove these parenthesis, since they are unnecessary, and don\u0027t make it easier to read at all:\n\n    name \u003d chr(ord(\u0027A\u0027) + ord(name[0]) - ord(\u00270\u0027)) + name[1:]","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        name \u003d share[\u0027id\u0027].replace(\u0027-\u0027, \u0027\u0027).lower()"},{"line_number":161,"context_line":"        if name[0] in \u00270123456789\u0027:"},{"line_number":162,"context_line":"            name \u003d chr(ord(\u0027A\u0027) + (ord(name[0]) - ord(\u00270\u0027))) + name[1:]"},{"line_number":163,"context_line":"        return name"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def get_network_allocations_number(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_2597973c","line":162,"range":{"start_line":162,"start_character":33,"end_line":162,"end_character":59},"in_reply_to":"9fb8cfa7_4ef4c75b","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        resp \u003d self.ssh.lsnasportip()"},{"line_number":306,"context_line":"        for port in resp:"},{"line_number":307,"context_line":"            try:"},{"line_number":308,"context_line":"                # Port which is not configured IP is invalid."},{"line_number":309,"context_line":"                if port[\u0027ip\u0027] \u003d\u003d \u0027\u0027:"},{"line_number":310,"context_line":"                    continue"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_fa83f1ca","line":308,"range":{"start_line":308,"start_character":18,"end_line":308,"end_character":60},"updated":"2019-06-06 20:00:59.000000000","message":"\u0027Port is invalid if it has no IP configured\u0027 or \u0027Port is invalid if its IP is not configured\u0027","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        resp \u003d self.ssh.lsnasportip()"},{"line_number":306,"context_line":"        for port in resp:"},{"line_number":307,"context_line":"            try:"},{"line_number":308,"context_line":"                # Port which is not configured IP is invalid."},{"line_number":309,"context_line":"                if port[\u0027ip\u0027] \u003d\u003d \u0027\u0027:"},{"line_number":310,"context_line":"                    continue"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_459acb61","line":308,"range":{"start_line":308,"start_character":18,"end_line":308,"end_character":60},"in_reply_to":"9fb8cfa7_fa83f1ca","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        dirpath \u003d self.get_dirpath_by_name(name)"},{"line_number":355,"context_line":"        self.ssh.addnasdir(dirpath)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        # when for CIFS, we need create a CIFS share base on the directory"},{"line_number":358,"context_line":"        # NFS is enabled when client spec is added, no need to add separate"},{"line_number":359,"context_line":"        if proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":360,"context_line":"            self.ssh.addcifs(name, dirpath)"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_3f641b22","line":358,"range":{"start_line":357,"start_character":0,"end_line":358,"end_character":75},"updated":"2019-06-06 20:00:59.000000000","message":"If I understand it correctly, you have 2 phrases here:\n\"For CIFS, we need to create a CIFS share based on the directory name.\"\n\"For NFS, we don\u0027t need to add separate *something* because of *some reason*\"\n\nBut I couldn\u0027t understand what you meant.\nCould you rephrase it, please?","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        dirpath \u003d self.get_dirpath_by_name(name)"},{"line_number":355,"context_line":"        self.ssh.addnasdir(dirpath)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        # when for CIFS, we need create a CIFS share base on the directory"},{"line_number":358,"context_line":"        # NFS is enabled when client spec is added, no need to add separate"},{"line_number":359,"context_line":"        if proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":360,"context_line":"            self.ssh.addcifs(name, dirpath)"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_e5a41fa8","line":358,"range":{"start_line":357,"start_character":0,"end_line":358,"end_character":75},"in_reply_to":"9fb8cfa7_3f641b22","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        dirpath \u003d self.get_dirpath_by_name(name)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        # first delete all the NAS service like NFS and CIFS"},{"line_number":368,"context_line":"        # NFS no need to delete, as no client spec no NFS, client"},{"line_number":369,"context_line":"        # spec will delete before share delete"},{"line_number":370,"context_line":"        if proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":371,"context_line":"            self.ssh.rmcifs(name)"},{"line_number":372,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_3a85095b","line":369,"range":{"start_line":367,"start_character":0,"end_line":369,"end_character":46},"updated":"2019-06-06 20:00:59.000000000","message":"I understood this phrase partially as:\n\"NFS needs no deletion at all, because of *some reason* and *something* already deleted it\"\n\nCould you rephrase this, please?","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        dirpath \u003d self.get_dirpath_by_name(name)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        # first delete all the NAS service like NFS and CIFS"},{"line_number":368,"context_line":"        # NFS no need to delete, as no client spec no NFS, client"},{"line_number":369,"context_line":"        # spec will delete before share delete"},{"line_number":370,"context_line":"        if proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":371,"context_line":"            self.ssh.rmcifs(name)"},{"line_number":372,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_85e203d4","line":369,"range":{"start_line":367,"start_character":0,"end_line":369,"end_character":46},"in_reply_to":"9fb8cfa7_3a85095b","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        :param name: the name of the share."},{"line_number":406,"context_line":"        :param share_proto: the protocol of the share."},{"line_number":407,"context_line":"        :return: a list of export location."},{"line_number":408,"context_line":"        \"\"\""},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if share_proto \u003d\u003d \u0027NFS\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_badd7971","line":407,"range":{"start_line":407,"start_character":34,"end_line":407,"end_character":42},"updated":"2019-06-06 20:00:59.000000000","message":"locations","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        :param name: the name of the share."},{"line_number":406,"context_line":"        :param share_proto: the protocol of the share."},{"line_number":407,"context_line":"        :return: a list of export location."},{"line_number":408,"context_line":"        \"\"\""},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if share_proto \u003d\u003d \u0027NFS\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_05a0538f","line":407,"range":{"start_line":407,"start_character":34,"end_line":407,"end_character":42},"in_reply_to":"9fb8cfa7_badd7971","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if share_proto \u003d\u003d \u0027NFS\u0027:"},{"line_number":411,"context_line":"            dirpath \u003d self.get_dirpath_by_name(name)"},{"line_number":412,"context_line":"            partern \u003d \u0027%(ip)s:\u0027 + dirpath"},{"line_number":413,"context_line":"        elif share_proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":414,"context_line":"            partern \u003d \u0027\\\\\\\\%(ip)s\\\\\u0027 + name"},{"line_number":415,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_ba4b3929","line":412,"range":{"start_line":412,"start_character":12,"end_line":412,"end_character":19},"updated":"2019-06-06 20:00:59.000000000","message":"did you mean \u0027pattern\u0027?","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        if share_proto \u003d\u003d \u0027NFS\u0027:"},{"line_number":411,"context_line":"            dirpath \u003d self.get_dirpath_by_name(name)"},{"line_number":412,"context_line":"            partern \u003d \u0027%(ip)s:\u0027 + dirpath"},{"line_number":413,"context_line":"        elif share_proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":414,"context_line":"            partern \u003d \u0027\\\\\\\\%(ip)s\\\\\u0027 + name"},{"line_number":415,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_65dfcf0c","line":412,"range":{"start_line":412,"start_character":12,"end_line":412,"end_character":19},"in_reply_to":"9fb8cfa7_ba4b3929","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            dirpath \u003d self.get_dirpath_by_name(name)"},{"line_number":412,"context_line":"            partern \u003d \u0027%(ip)s:\u0027 + dirpath"},{"line_number":413,"context_line":"        elif share_proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":414,"context_line":"            partern \u003d \u0027\\\\\\\\%(ip)s\\\\\u0027 + name"},{"line_number":415,"context_line":"        else:"},{"line_number":416,"context_line":"            msg \u003d _(\u0027share protocol is not support\u0027) % share_proto"},{"line_number":417,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_7a55c1c5","line":414,"range":{"start_line":414,"start_character":12,"end_line":414,"end_character":19},"updated":"2019-06-06 20:00:59.000000000","message":"pattern","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            dirpath \u003d self.get_dirpath_by_name(name)"},{"line_number":412,"context_line":"            partern \u003d \u0027%(ip)s:\u0027 + dirpath"},{"line_number":413,"context_line":"        elif share_proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":414,"context_line":"            partern \u003d \u0027\\\\\\\\%(ip)s\\\\\u0027 + name"},{"line_number":415,"context_line":"        else:"},{"line_number":416,"context_line":"            msg \u003d _(\u0027share protocol is not support\u0027) % share_proto"},{"line_number":417,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_c5bebbac","line":414,"range":{"start_line":414,"start_character":12,"end_line":414,"end_character":19},"in_reply_to":"9fb8cfa7_7a55c1c5","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        elif share_proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":414,"context_line":"            partern \u003d \u0027\\\\\\\\%(ip)s\\\\\u0027 + name"},{"line_number":415,"context_line":"        else:"},{"line_number":416,"context_line":"            msg \u003d _(\u0027share protocol is not support\u0027) % share_proto"},{"line_number":417,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        # we need get the node so that we know which port ip we can use"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_daf4edd1","line":416,"range":{"start_line":416,"start_character":21,"end_line":416,"end_character":50},"updated":"2019-06-06 20:00:59.000000000","message":"share protocol %s is not supported","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        elif share_proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":414,"context_line":"            partern \u003d \u0027\\\\\\\\%(ip)s\\\\\u0027 + name"},{"line_number":415,"context_line":"        else:"},{"line_number":416,"context_line":"            msg \u003d _(\u0027share protocol is not support\u0027) % share_proto"},{"line_number":417,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        # we need get the node so that we know which port ip we can use"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_a5c38737","line":416,"range":{"start_line":416,"start_character":21,"end_line":416,"end_character":50},"in_reply_to":"9fb8cfa7_daf4edd1","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":435,"context_line":"        ports \u003d self.ssh.lsnasportip()"},{"line_number":436,"context_line":"        for port in ports:"},{"line_number":437,"context_line":"            if port[\u0027node_name\u0027] \u003d\u003d node_name and port[\u0027ip\u0027] !\u003d \u0027\u0027:"},{"line_number":438,"context_line":"                location \u003d partern % {\u0027ip\u0027: port[\u0027ip\u0027]}"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"                locations.append({"},{"line_number":441,"context_line":"                    \u0027path\u0027: location,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_fa5a11f1","line":438,"range":{"start_line":438,"start_character":27,"end_line":438,"end_character":34},"updated":"2019-06-06 20:00:59.000000000","message":"pattern","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":435,"context_line":"        ports \u003d self.ssh.lsnasportip()"},{"line_number":436,"context_line":"        for port in ports:"},{"line_number":437,"context_line":"            if port[\u0027node_name\u0027] \u003d\u003d node_name and port[\u0027ip\u0027] !\u003d \u0027\u0027:"},{"line_number":438,"context_line":"                location \u003d partern % {\u0027ip\u0027: port[\u0027ip\u0027]}"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"                locations.append({"},{"line_number":441,"context_line":"                    \u0027path\u0027: location,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_c5a55ba0","line":438,"range":{"start_line":438,"start_character":27,"end_line":438,"end_character":34},"in_reply_to":"9fb8cfa7_fa5a11f1","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def access_rule_to_client_spec(self, access_rule):"},{"line_number":466,"context_line":"        if access_rule[\u0027access_type\u0027] !\u003d \u0027ip\u0027:"},{"line_number":467,"context_line":"            msg \u003d _(\u0027access type %s not support when use NFS protocol\u0027)"},{"line_number":468,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        network \u003d ipaddress.ip_network(six.text_type(access_rule[\u0027access_to\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_5ad79d24","line":467,"range":{"start_line":467,"start_character":53,"end_line":467,"end_character":69},"updated":"2019-06-06 20:00:59.000000000","message":"\u0027using NFS protocol\u0027 or \u0027NFS protocol is in use\u0027","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def access_rule_to_client_spec(self, access_rule):"},{"line_number":466,"context_line":"        if access_rule[\u0027access_type\u0027] !\u003d \u0027ip\u0027:"},{"line_number":467,"context_line":"            msg \u003d _(\u0027access type %s not support when use NFS protocol\u0027)"},{"line_number":468,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        network \u003d ipaddress.ip_network(six.text_type(access_rule[\u0027access_to\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_ba225951","line":467,"range":{"start_line":467,"start_character":40,"end_line":467,"end_character":47},"updated":"2019-06-06 20:00:59.000000000","message":"supported","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def access_rule_to_client_spec(self, access_rule):"},{"line_number":466,"context_line":"        if access_rule[\u0027access_type\u0027] !\u003d \u0027ip\u0027:"},{"line_number":467,"context_line":"            msg \u003d _(\u0027access type %s not support when use NFS protocol\u0027)"},{"line_number":468,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        network \u003d ipaddress.ip_network(six.text_type(access_rule[\u0027access_to\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_05c93357","line":467,"range":{"start_line":467,"start_character":53,"end_line":467,"end_character":69},"in_reply_to":"9fb8cfa7_5ad79d24","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def access_rule_to_client_spec(self, access_rule):"},{"line_number":466,"context_line":"        if access_rule[\u0027access_type\u0027] !\u003d \u0027ip\u0027:"},{"line_number":467,"context_line":"            msg \u003d _(\u0027access type %s not support when use NFS protocol\u0027)"},{"line_number":468,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        network \u003d ipaddress.ip_network(six.text_type(access_rule[\u0027access_to\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_65ba6fc1","line":467,"range":{"start_line":467,"start_character":40,"end_line":467,"end_character":47},"in_reply_to":"9fb8cfa7_ba225951","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        network \u003d ipaddress.ip_network(six.text_type(access_rule[\u0027access_to\u0027]))"},{"line_number":471,"context_line":"        if network.version !\u003d 4:"},{"line_number":472,"context_line":"            msg \u003d _(\u0027only IPV4 is accepted when use NFS protocol\u0027)"},{"line_number":473,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        client_spec \u003d self.NFS_CLIENT_SPEC_PATTERN % {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_bae7b912","line":472,"range":{"start_line":472,"start_character":47,"end_line":472,"end_character":64},"updated":"2019-06-06 20:00:59.000000000","message":"\u0027using NFS protocol\u0027 or \u0027NFS protocol is in use\u0027","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        network \u003d ipaddress.ip_network(six.text_type(access_rule[\u0027access_to\u0027]))"},{"line_number":471,"context_line":"        if network.version !\u003d 4:"},{"line_number":472,"context_line":"            msg \u003d _(\u0027only IPV4 is accepted when use NFS protocol\u0027)"},{"line_number":473,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        client_spec \u003d self.NFS_CLIENT_SPEC_PATTERN % {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_85bd23b8","line":472,"range":{"start_line":472,"start_character":47,"end_line":472,"end_character":64},"in_reply_to":"9fb8cfa7_bae7b912","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def access_rule_to_rights(self, access_rule):"},{"line_number":532,"context_line":"        if access_rule[\u0027access_type\u0027] !\u003d \u0027user\u0027:"},{"line_number":533,"context_line":"            msg \u003d _(\u0027access type %s not support when use CIFS protocol\u0027)"},{"line_number":534,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        rights \u003d self.CIFS_CLIENT_RIGHT_PATTERN % {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_faabf185","line":533,"range":{"start_line":533,"start_character":53,"end_line":533,"end_character":70},"updated":"2019-06-06 20:00:59.000000000","message":"\u0027using CIFS protocol\u0027 or \u0027CIFS protocol is in use\u0027","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def access_rule_to_rights(self, access_rule):"},{"line_number":532,"context_line":"        if access_rule[\u0027access_type\u0027] !\u003d \u0027user\u0027:"},{"line_number":533,"context_line":"            msg \u003d _(\u0027access type %s not support when use CIFS protocol\u0027)"},{"line_number":534,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        rights \u003d self.CIFS_CLIENT_RIGHT_PATTERN % {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_5aa55db4","line":533,"range":{"start_line":533,"start_character":40,"end_line":533,"end_character":47},"updated":"2019-06-06 20:00:59.000000000","message":"supported","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def access_rule_to_rights(self, access_rule):"},{"line_number":532,"context_line":"        if access_rule[\u0027access_type\u0027] !\u003d \u0027user\u0027:"},{"line_number":533,"context_line":"            msg \u003d _(\u0027access type %s not support when use CIFS protocol\u0027)"},{"line_number":534,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        rights \u003d self.CIFS_CLIENT_RIGHT_PATTERN % {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_25b0f7dc","line":533,"range":{"start_line":533,"start_character":40,"end_line":533,"end_character":47},"in_reply_to":"9fb8cfa7_5aa55db4","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def access_rule_to_rights(self, access_rule):"},{"line_number":532,"context_line":"        if access_rule[\u0027access_type\u0027] !\u003d \u0027user\u0027:"},{"line_number":533,"context_line":"            msg \u003d _(\u0027access type %s not support when use CIFS protocol\u0027)"},{"line_number":534,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        rights \u003d self.CIFS_CLIENT_RIGHT_PATTERN % {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_45b3abe9","line":533,"range":{"start_line":533,"start_character":53,"end_line":533,"end_character":70},"in_reply_to":"9fb8cfa7_faabf185","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5c290a2860ec15ca146dd3c4218c0d5aa83732cf","unresolved":false,"context_lines":[{"line_number":593,"context_line":"                msg \u003d _(\"Only %s access type allowed.\") % \"ip\""},{"line_number":594,"context_line":"                raise exception.InvalidShareAccess(reason\u003dmsg)"},{"line_number":595,"context_line":"        else:"},{"line_number":596,"context_line":"            msg \u003d _(\u0027share protocol %s not support\u0027) % share_proto"},{"line_number":597,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_1a88451d","line":596,"range":{"start_line":596,"start_character":43,"end_line":596,"end_character":50},"updated":"2019-06-06 20:00:59.000000000","message":"supported","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"65be01a521d4891698e57b293ec6bf222f9c1dc9","unresolved":false,"context_lines":[{"line_number":593,"context_line":"                msg \u003d _(\"Only %s access type allowed.\") % \"ip\""},{"line_number":594,"context_line":"                raise exception.InvalidShareAccess(reason\u003dmsg)"},{"line_number":595,"context_line":"        else:"},{"line_number":596,"context_line":"            msg \u003d _(\u0027share protocol %s not support\u0027) % share_proto"},{"line_number":597,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_e5cdff65","line":596,"range":{"start_line":596,"start_character":43,"end_line":596,"end_character":50},"in_reply_to":"9fb8cfa7_1a88451d","updated":"2019-06-16 05:15:22.000000000","message":"Done","commit_id":"58b7f9ef3ebc5f9b3df0f7f01db0c1c98ccc3d34"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fc995bcd5cae38651f145fc0b48eb56d8b1d4e2b","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        share_name \u003d self.generate_share_name(share)"},{"line_number":217,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027]"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        @utils.synchronized(\u0027inspur-instorage-access-\u0027 + share_name)"},{"line_number":220,"context_line":"        def _update_access(name, proto, rules, add_rules, delete_rules):"},{"line_number":221,"context_line":"            self.assistant.update_access("},{"line_number":222,"context_line":"                name, proto, rules, add_rules, delete_rules"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_fd0441c8","line":219,"range":{"start_line":219,"start_character":9,"end_line":219,"end_character":27},"updated":"2019-06-22 18:48:32.000000000","message":"This is a local file lock, consider using a distributed lock from this module: https://github.com/openstack/manila/blob/97cfb648c4ec24f996d79e95e11484aa6ad586c7/manila/coordination.py#L152","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"d5400fb6e79a7fb4d3dc0d7590cf9e8da2706b81","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        share_name \u003d self.generate_share_name(share)"},{"line_number":217,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027]"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        @utils.synchronized(\u0027inspur-instorage-access-\u0027 + share_name)"},{"line_number":220,"context_line":"        def _update_access(name, proto, rules, add_rules, delete_rules):"},{"line_number":221,"context_line":"            self.assistant.update_access("},{"line_number":222,"context_line":"                name, proto, rules, add_rules, delete_rules"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_343df98e","line":219,"range":{"start_line":219,"start_character":9,"end_line":219,"end_character":27},"in_reply_to":"9fb8cfa7_fd0441c8","updated":"2019-06-25 08:16:46.000000000","message":"Done","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fc995bcd5cae38651f145fc0b48eb56d8b1d4e2b","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"            available \u003d self.size_to_gb(pool_attr[\u0027available_capacity\u0027])"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"            pool \u003d dict("},{"line_number":291,"context_line":"                pool_name\u003dpool_name,"},{"line_number":292,"context_line":"                total_capacity_gb\u003d(total_allocated_capacity + available),"},{"line_number":293,"context_line":"                free_capacity_gb\u003davailable,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_bd59e9fe","line":290,"range":{"start_line":290,"start_character":19,"end_line":290,"end_character":24},"updated":"2019-06-22 18:48:32.000000000","message":"Please use the literal syntax {}, it\u0027s faster. \n\n \n\n $ python3 -m timeit -n 1000000 -r 5 -v \u0027dict(a\u003d\"A\", b\u003d\"B\", c\u003d\"C\")\u0027\nraw times: 318 msec, 315 msec, 313 msec, 313 msec, 324 msec\n\n1000000 loops, best of 5: 313 nsec per loop\n\n\n $ python3 -m timeit -n 1000000 -r 5 -v \u0027{\"a\": \"A\", \"b\": \"B\", \"c\": \"C\"}\u0027\nraw times: 112 msec, 111 msec, 112 msec, 115 msec, 114 msec\n\n1000000 loops, best of 5: 111 nsec per loop\n\n\n[1] https://doughellmann.com/blog/2012/11/12/the-performance-impact-of-using-dict-instead-of-in-cpython-2-7-2/","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"d5400fb6e79a7fb4d3dc0d7590cf9e8da2706b81","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"            available \u003d self.size_to_gb(pool_attr[\u0027available_capacity\u0027])"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"            pool \u003d dict("},{"line_number":291,"context_line":"                pool_name\u003dpool_name,"},{"line_number":292,"context_line":"                total_capacity_gb\u003d(total_allocated_capacity + available),"},{"line_number":293,"context_line":"                free_capacity_gb\u003davailable,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_b448092d","line":290,"range":{"start_line":290,"start_character":19,"end_line":290,"end_character":24},"in_reply_to":"9fb8cfa7_bd59e9fe","updated":"2019-06-25 08:16:46.000000000","message":"Done. All calls has been changed.","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fc995bcd5cae38651f145fc0b48eb56d8b1d4e2b","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                allocated_capacity_gb\u003dtotal_allocated_capacity,"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"                qos\u003dFalse,"},{"line_number":297,"context_line":"                reserved_percentage\u003d0,"},{"line_number":298,"context_line":"                dedupe\u003dFalse,"},{"line_number":299,"context_line":"                compression\u003dFalse,"},{"line_number":300,"context_line":"                thin_provisioning\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_1d3a7597","line":297,"range":{"start_line":297,"start_character":36,"end_line":297,"end_character":37},"updated":"2019-06-22 18:48:32.000000000","message":"This has to be read from configuration... https://github.com/openstack/manila/blob/d877b61c5e37ff012341194b8349af6f38155e5d/manila/share/driver.py#L41\n\nThe config option can be set for the whole backend, but when the driver supports storage pools, the scheduler ensures that each pool has the percentage of space indicated as reserved.","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"d5400fb6e79a7fb4d3dc0d7590cf9e8da2706b81","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                allocated_capacity_gb\u003dtotal_allocated_capacity,"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"                qos\u003dFalse,"},{"line_number":297,"context_line":"                reserved_percentage\u003d0,"},{"line_number":298,"context_line":"                dedupe\u003dFalse,"},{"line_number":299,"context_line":"                compression\u003dFalse,"},{"line_number":300,"context_line":"                thin_provisioning\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_f45be1f2","line":297,"range":{"start_line":297,"start_character":36,"end_line":297,"end_character":37},"in_reply_to":"9fb8cfa7_1d3a7597","updated":"2019-06-25 08:16:46.000000000","message":"Report this status in whole backend level instead of pool level in \u0027_update_share_stats\u0027 method, which is like the routine in lvm.","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fc995bcd5cae38651f145fc0b48eb56d8b1d4e2b","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    @staticmethod"},{"line_number":330,"context_line":"    def get_fsname_by_name(name):"},{"line_number":331,"context_line":"        return (\u0027%(fsname)s\u0027 % dict(fsname\u003dname))[0:32]"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    @staticmethod"},{"line_number":334,"context_line":"    def get_dirname_by_name(name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_dd5cddee","line":331,"range":{"start_line":331,"start_character":31,"end_line":331,"end_character":48},"updated":"2019-06-22 18:48:32.000000000","message":"{\u0027fsname\u0027: name}","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"d5400fb6e79a7fb4d3dc0d7590cf9e8da2706b81","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    @staticmethod"},{"line_number":330,"context_line":"    def get_fsname_by_name(name):"},{"line_number":331,"context_line":"        return (\u0027%(fsname)s\u0027 % dict(fsname\u003dname))[0:32]"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    @staticmethod"},{"line_number":334,"context_line":"    def get_dirname_by_name(name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_340bb9d6","line":331,"range":{"start_line":331,"start_character":31,"end_line":331,"end_character":48},"in_reply_to":"9fb8cfa7_dd5cddee","updated":"2019-06-25 08:16:46.000000000","message":"Done","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fc995bcd5cae38651f145fc0b48eb56d8b1d4e2b","unresolved":false,"context_lines":[{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    @staticmethod"},{"line_number":334,"context_line":"    def get_dirname_by_name(name):"},{"line_number":335,"context_line":"        return (\u0027%(dirname)s\u0027 % dict(dirname\u003dname))[0:32]"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def get_dirpath_by_name(self, name):"},{"line_number":338,"context_line":"        fsname \u003d self.get_fsname_by_name(name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_7d737181","line":335,"range":{"start_line":335,"start_character":32,"end_line":335,"end_character":50},"updated":"2019-06-22 18:48:32.000000000","message":"Consider fixing all occurrences of the constructor usage to literal usage as mentioned above.","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"d5400fb6e79a7fb4d3dc0d7590cf9e8da2706b81","unresolved":false,"context_lines":[{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    @staticmethod"},{"line_number":334,"context_line":"    def get_dirname_by_name(name):"},{"line_number":335,"context_line":"        return (\u0027%(dirname)s\u0027 % dict(dirname\u003dname))[0:32]"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def get_dirpath_by_name(self, name):"},{"line_number":338,"context_line":"        fsname \u003d self.get_fsname_by_name(name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_d40b3dd2","line":335,"range":{"start_line":335,"start_character":32,"end_line":335,"end_character":50},"in_reply_to":"9fb8cfa7_7d737181","updated":"2019-06-25 08:16:46.000000000","message":"Done","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fc995bcd5cae38651f145fc0b48eb56d8b1d4e2b","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        if proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":378,"context_line":"            self.ssh.rmcifs(name)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        # then delete the directory"},{"line_number":381,"context_line":"        self.ssh.rmnasdir(dirpath)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        # at last delete the file system"},{"line_number":384,"context_line":"        fsname \u003d self.get_fsname_by_name(name)"},{"line_number":385,"context_line":"        self.ssh.rmfs(fsname)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def extend_share(self, name, new_size):"},{"line_number":388,"context_line":"        \"\"\"Extend a given share to a new size."}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_9d6e6594","line":385,"range":{"start_line":380,"start_character":7,"end_line":385,"end_character":29},"updated":"2019-06-22 18:48:32.000000000","message":"Is there any error handling necessary, i.e., if a share does not exist on the backend, will this segment raise an error? If yes, please handle this error and log a warning that the share wasn\u0027t present on the backend, so that manila can safely cleanup the share from its database.","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"d5400fb6e79a7fb4d3dc0d7590cf9e8da2706b81","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        if proto \u003d\u003d \u0027CIFS\u0027:"},{"line_number":378,"context_line":"            self.ssh.rmcifs(name)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        # then delete the directory"},{"line_number":381,"context_line":"        self.ssh.rmnasdir(dirpath)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        # at last delete the file system"},{"line_number":384,"context_line":"        fsname \u003d self.get_fsname_by_name(name)"},{"line_number":385,"context_line":"        self.ssh.rmfs(fsname)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def extend_share(self, name, new_size):"},{"line_number":388,"context_line":"        \"\"\"Extend a given share to a new size."}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_54ff4daa","line":385,"range":{"start_line":380,"start_character":7,"end_line":385,"end_character":29},"in_reply_to":"9fb8cfa7_9d6e6594","updated":"2019-06-25 08:16:46.000000000","message":"Instead of handling of exceptions, we do a check at first.","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ef5e906eb039656d70b6cfdf569cd1bb84f707fd","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.backend_name \u003d self.configuration.safe_get(\u0027share_backend_name\u0027)"},{"line_number":92,"context_line":"        self.backend_pools \u003d self.configuration.instorage_nas_pools"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.ssh_runner \u003d SSHRunner(**{"},{"line_number":95,"context_line":"            \u0027host\u0027: self.configuration.instorage_nas_ip,"},{"line_number":96,"context_line":"            \u0027port\u0027: 22,"},{"line_number":97,"context_line":"            \u0027login\u0027: self.configuration.instorage_nas_login,"},{"line_number":98,"context_line":"            \u0027password\u0027: self.configuration.instorage_nas_password"},{"line_number":99,"context_line":"        })"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        self.assistant \u003d InStorageAssistant(self.ssh_runner)"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_e8921857","line":99,"range":{"start_line":94,"start_character":36,"end_line":99,"end_character":9},"updated":"2019-06-25 22:08:22.000000000","message":"Can\u0027t this just be:\n\n SSHRunner(host\u003dself.configuration.instorage_nas_ip,\n           port\u003d22,\n           login\u003dself.configuration.instorage_nas_login, \n           password\u003dself.configuration.instorage_nas_password)","commit_id":"54d855877bf7b7de7208ac63611882692e33f581"}],"manila/tests/share/drivers/inspur/instorage/test_instorage.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fc995bcd5cae38651f145fc0b48eb56d8b1d4e2b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from manila import context"},{"line_number":30,"context_line":"from manila import exception"},{"line_number":31,"context_line":"from manila.share import driver"},{"line_number":32,"context_line":"from manila.share.drivers.inspur.instorage.cli_helper import CLIParser"},{"line_number":33,"context_line":"from manila.share.drivers.inspur.instorage.cli_helper import InStorageSSH"},{"line_number":34,"context_line":"from manila.share.drivers.inspur.instorage.cli_helper import SSHRunner"},{"line_number":35,"context_line":"from manila.share.drivers.inspur.instorage import instorage"},{"line_number":36,"context_line":"from manila.share.drivers.inspur.instorage.instorage import InStorageAssistant"},{"line_number":37,"context_line":"from manila import test"},{"line_number":38,"context_line":"from manila.tests import fake_share"},{"line_number":39,"context_line":"from manila import utils as manila_utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_5dfd4daf","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":78},"updated":"2019-06-22 18:48:32.000000000","message":"Import modules, not objects:\n\n https://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"d5400fb6e79a7fb4d3dc0d7590cf9e8da2706b81","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from manila import context"},{"line_number":30,"context_line":"from manila import exception"},{"line_number":31,"context_line":"from manila.share import driver"},{"line_number":32,"context_line":"from manila.share.drivers.inspur.instorage.cli_helper import CLIParser"},{"line_number":33,"context_line":"from manila.share.drivers.inspur.instorage.cli_helper import InStorageSSH"},{"line_number":34,"context_line":"from manila.share.drivers.inspur.instorage.cli_helper import SSHRunner"},{"line_number":35,"context_line":"from manila.share.drivers.inspur.instorage import instorage"},{"line_number":36,"context_line":"from manila.share.drivers.inspur.instorage.instorage import InStorageAssistant"},{"line_number":37,"context_line":"from manila import test"},{"line_number":38,"context_line":"from manila.tests import fake_share"},{"line_number":39,"context_line":"from manila import utils as manila_utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_d4249d62","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":78},"in_reply_to":"9fb8cfa7_5dfd4daf","updated":"2019-06-25 08:16:46.000000000","message":"Done","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fc995bcd5cae38651f145fc0b48eb56d8b1d4e2b","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        ret \u003d CLIParser(response, cmdlist, delim\u003d\u0027!\u0027, with_header\u003dTrue)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        self.assertEqual(len(ret), 2)"},{"line_number":404,"context_line":"        self.assertEqual(ret[0][\u0027head1\u0027], \u0027r1c1\u0027)"},{"line_number":405,"context_line":"        self.assertEqual(ret[0][\u0027head2\u0027], \u0027r1c2\u0027)"},{"line_number":406,"context_line":"        self.assertEqual(ret[1][\u0027head1\u0027], \u0027r2c1\u0027)"},{"line_number":407,"context_line":"        self.assertEqual(ret[1][\u0027head2\u0027], \u0027r2c2\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_fdd20134","line":404,"range":{"start_line":404,"start_character":25,"end_line":404,"end_character":48},"updated":"2019-06-22 18:48:32.000000000","message":"The convention in this project is that asserts have the order:  \"expected, actual\"","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"d5400fb6e79a7fb4d3dc0d7590cf9e8da2706b81","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        ret \u003d CLIParser(response, cmdlist, delim\u003d\u0027!\u0027, with_header\u003dTrue)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        self.assertEqual(len(ret), 2)"},{"line_number":404,"context_line":"        self.assertEqual(ret[0][\u0027head1\u0027], \u0027r1c1\u0027)"},{"line_number":405,"context_line":"        self.assertEqual(ret[0][\u0027head2\u0027], \u0027r1c2\u0027)"},{"line_number":406,"context_line":"        self.assertEqual(ret[1][\u0027head1\u0027], \u0027r2c1\u0027)"},{"line_number":407,"context_line":"        self.assertEqual(ret[1][\u0027head2\u0027], \u0027r2c2\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_9422a551","line":404,"range":{"start_line":404,"start_character":25,"end_line":404,"end_character":48},"in_reply_to":"9fb8cfa7_fdd20134","updated":"2019-06-25 08:16:46.000000000","message":"Done. All the \u0027assertEqual\u0027 call\u0027s parameter order has been updated to meet the convention.","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"}],"releasenotes/notes/inspur-instorage-driver-51d7a67f253f3ecd.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fc995bcd5cae38651f145fc0b48eb56d8b1d4e2b","unresolved":false,"context_lines":[{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Add Inspur InStorage driver."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Add new Inspur InStorage driver, which supports all the minimum driver"},{"line_number":6,"context_line":"    features."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9fb8cfa7_1dd6f528","line":6,"range":{"start_line":5,"start_character":52,"end_line":6,"end_character":13},"updated":"2019-06-22 18:48:32.000000000","message":"can you expand this?","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":25648,"name":"wang yong","email":"yongwc@foxmail.com","username":"wangyong"},"change_message_id":"d5400fb6e79a7fb4d3dc0d7590cf9e8da2706b81","unresolved":false,"context_lines":[{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Add Inspur InStorage driver."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Add new Inspur InStorage driver, which supports all the minimum driver"},{"line_number":6,"context_line":"    features."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9fb8cfa7_34d97956","line":6,"range":{"start_line":5,"start_character":52,"end_line":6,"end_character":13},"in_reply_to":"9fb8cfa7_1dd6f528","updated":"2019-06-25 08:16:46.000000000","message":"Done","commit_id":"f9b0e2e8a10e2f522b9d373de688286f62bcdd29"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ef5e906eb039656d70b6cfdf569cd1bb84f707fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9fb8cfa7_88d7dcee","updated":"2019-06-25 22:08:22.000000000","message":"Not a big deal, but release notes are not read in an imperative tone, like commit messages. They are read after the release, so writing in past tense makes sense:\n\n ---\nprelude: \u003e\n    Added a driver to support the Inspur InStorage system.\nfeatures:\n  - Added a new Inspur InStorage driver. It supports creating and deleting\n    NFS and CIFS shares, along with extending and performing access control.","commit_id":"54d855877bf7b7de7208ac63611882692e33f581"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ef5e906eb039656d70b6cfdf569cd1bb84f707fd","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    Add Inspur InStorage driver."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Add new Inspur InStorage driver, support share create, delete, extend,"},{"line_number":6,"context_line":"    and access through NFS and CIFS protocol."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fb8cfa7_08af6c7d","line":6,"range":{"start_line":6,"start_character":44,"end_line":6,"end_character":45},"updated":"2019-06-25 22:08:22.000000000","message":"s","commit_id":"54d855877bf7b7de7208ac63611882692e33f581"}]}
