)]}'
{"contrib/tempest/tempest/api/share/admin/test_share_manage.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"3c07056348d2af01e949fae67d686c9235489770","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        \"Only for driver_handles_share_servers \u003d False driver mode.\")"},{"line_number":111,"context_line":"    def test_manage_retry(self):"},{"line_number":112,"context_line":"        # manage share with invalid parameters"},{"line_number":113,"context_line":"        resp, share \u003d self.shares_client.manage_share("},{"line_number":114,"context_line":"            service_host\u003dself.share2[\u0027host\u0027],"},{"line_number":115,"context_line":"            export_path\u003dself.share2[\u0027export_location\u0027],"},{"line_number":116,"context_line":"            protocol\u003dself.share2[\u0027share_proto\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_d7660829","line":113,"updated":"2015-03-17 10:27:55.000000000","message":"Lines 110-127 can be rewritten:\n\nfor st_id, status in [(self.st_invalid[\u0027share_type\u0027][\u0027id\u0027], \u0027MANAGE_ERROR\u0027), (self.st[\u0027share_type\u0027][\u0027id\u0027], \u0027available\u0027)]:\n\n    resp, share \u003d self.shares_client.manage_share(\n\n        service_host\u003dself.share2[\u0027host\u0027],\n\n        export_path\u003dself.share2[\u0027export_location\u0027],\n\n        protocol\u003dself.share2[\u0027share_proto\u0027],\n\n        share_type_id\u003dst_id)\n\n    self.assertIn(int(resp[\"status\"]), self.HTTP_SUCCESS)\n\n    self.shares_client.wait_for_share_status(share[\u0027id\u0027], status)","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"33cfeed83c6802205fdd4df0a9605b7138f6161d","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        \"Only for driver_handles_share_servers \u003d False driver mode.\")"},{"line_number":111,"context_line":"    def test_manage_retry(self):"},{"line_number":112,"context_line":"        # manage share with invalid parameters"},{"line_number":113,"context_line":"        resp, share \u003d self.shares_client.manage_share("},{"line_number":114,"context_line":"            service_host\u003dself.share2[\u0027host\u0027],"},{"line_number":115,"context_line":"            export_path\u003dself.share2[\u0027export_location\u0027],"},{"line_number":116,"context_line":"            protocol\u003dself.share2[\u0027share_proto\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_6cecaef4","line":113,"in_reply_to":"9a80dd14_d7660829","updated":"2015-03-17 15:54:14.000000000","message":"Done","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"}],"contrib/tempest/tempest/config_share.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e8b5341e6cf89ab62b7fcf199f8854af191de5f2","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    cfg.BoolOpt(\"run_manage_unmanage_tests\","},{"line_number":112,"context_line":"                default\u003dFalse,"},{"line_number":113,"context_line":"                help\u003d\"Defines whether to run manage/unmanage tests or not. \""},{"line_number":114,"context_line":"                     \"These test may leave orphaned resources, so be careful \""},{"line_number":115,"context_line":"                     \"enabling this opt.\"),"},{"line_number":116,"context_line":"]"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_b5df750b","line":114,"updated":"2015-03-18 20:36:31.000000000","message":"tests","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"87bed8d2f733d1a2733415d5a86b5db04a41688f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    cfg.BoolOpt(\"run_manage_unmanage_tests\","},{"line_number":112,"context_line":"                default\u003dFalse,"},{"line_number":113,"context_line":"                help\u003d\"Defines whether to run manage/unmanage tests or not. \""},{"line_number":114,"context_line":"                     \"These test may leave orphaned resources, so be careful \""},{"line_number":115,"context_line":"                     \"enabling this opt.\"),"},{"line_number":116,"context_line":"]"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_4b803ebf","line":114,"in_reply_to":"9a80dd14_b5df750b","updated":"2015-03-19 11:34:28.000000000","message":"Agree, should have been so.","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"}],"contrib/tempest/tempest/services/share/json/shares_client.py":[{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"216cb0a4433c602c2176af1a4369c205d2aca16b","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            share_status \u003d body[\u0027status\u0027]"},{"line_number":194,"context_line":"            if share_status \u003d\u003d status:"},{"line_number":195,"context_line":"                return"},{"line_number":196,"context_line":"            elif \u0027error\u0027 in share_status.lower():"},{"line_number":197,"context_line":"                raise share_exceptions.\\"},{"line_number":198,"context_line":"                    ShareBuildErrorException(share_id\u003dshare_id)"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_fc00fa67","line":196,"updated":"2015-03-18 19:18:24.000000000","message":"This looks like a fix that should be on a separate commit, right?  Just making sure this was not needed for this specific fix.","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"87bed8d2f733d1a2733415d5a86b5db04a41688f","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            share_status \u003d body[\u0027status\u0027]"},{"line_number":194,"context_line":"            if share_status \u003d\u003d status:"},{"line_number":195,"context_line":"                return"},{"line_number":196,"context_line":"            elif \u0027error\u0027 in share_status.lower():"},{"line_number":197,"context_line":"                raise share_exceptions.\\"},{"line_number":198,"context_line":"                    ShareBuildErrorException(share_id\u003dshare_id)"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_abac5aee","line":196,"in_reply_to":"9a80dd14_fc00fa67","updated":"2015-03-19 11:34:28.000000000","message":"It was not enough without this fix, but started to be required with this. Because new statuses are started to be used.","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"}],"manila/api/contrib/share_manage.py":[{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"216cb0a4433c602c2176af1a4369c205d2aca16b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        share \u003d {"},{"line_number":45,"context_line":"            \u0027host\u0027: share_data[\u0027service_host\u0027],"},{"line_number":46,"context_line":"            \u0027export_location\u0027: share_data[\u0027export_path\u0027],"},{"line_number":47,"context_line":"            \u0027share_proto\u0027: share_data[\u0027protocol\u0027].upper(),"},{"line_number":48,"context_line":"            \u0027share_type_id\u0027: share_data[\u0027share_type_id\u0027],"},{"line_number":49,"context_line":"            \u0027display_name\u0027: share_data.get(\u0027display_name\u0027, \u0027\u0027),"},{"line_number":50,"context_line":"            \u0027display_description\u0027: share_data.get(\u0027display_description\u0027, \u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_df1fa859","line":47,"updated":"2015-03-18 19:18:24.000000000","message":"why is this needed?  May want to add an inline comment to the reason.","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"87bed8d2f733d1a2733415d5a86b5db04a41688f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        share \u003d {"},{"line_number":45,"context_line":"            \u0027host\u0027: share_data[\u0027service_host\u0027],"},{"line_number":46,"context_line":"            \u0027export_location\u0027: share_data[\u0027export_path\u0027],"},{"line_number":47,"context_line":"            \u0027share_proto\u0027: share_data[\u0027protocol\u0027].upper(),"},{"line_number":48,"context_line":"            \u0027share_type_id\u0027: share_data[\u0027share_type_id\u0027],"},{"line_number":49,"context_line":"            \u0027display_name\u0027: share_data.get(\u0027display_name\u0027, \u0027\u0027),"},{"line_number":50,"context_line":"            \u0027display_description\u0027: share_data.get(\u0027display_description\u0027, \u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_4bf03efd","line":47,"in_reply_to":"9a80dd14_df1fa859","updated":"2015-03-19 11:34:28.000000000","message":"To remove dependency on case of value that is provided by user.","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"}],"manila/share/api.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e8b5341e6cf89ab62b7fcf199f8854af191de5f2","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":231,"context_line":"            \u0027status\u0027: constants.STATUS_MANAGING,"},{"line_number":232,"context_line":"            \u0027scheduled_at\u0027: timeutils.utcnow(),"},{"line_number":233,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":234,"context_line":"        })"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        retry_states \u003d (constants.STATUS_MANAGE_ERROR,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_f55c8d7f","side":"PARENT","line":233,"updated":"2015-03-18 20:36:31.000000000","message":"Why was this removed?","commit_id":"7b00db5f37f8d40b3cf43ae7f03a644959497d23"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"87bed8d2f733d1a2733415d5a86b5db04a41688f","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":231,"context_line":"            \u0027status\u0027: constants.STATUS_MANAGING,"},{"line_number":232,"context_line":"            \u0027scheduled_at\u0027: timeutils.utcnow(),"},{"line_number":233,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":234,"context_line":"        })"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        retry_states \u003d (constants.STATUS_MANAGE_ERROR,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_4b091e83","side":"PARENT","line":233,"in_reply_to":"9a80dd14_f55c8d7f","updated":"2015-03-19 11:34:28.000000000","message":"It is redundant. Manage API just registered share in DB. It just can not be \"deleted\", so, no need to update.","commit_id":"7b00db5f37f8d40b3cf43ae7f03a644959497d23"}],"manila/share/drivers/generic.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7627b2703a4c3d07ee98d11f753ba9facb2c7af1","unresolved":false,"context_lines":[{"line_number":636,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":637,"context_line":"        if self.driver_handles_share_servers:"},{"line_number":638,"context_line":"            msg \u003d _(\"Invalid driver mode.\")"},{"line_number":639,"context_line":"            raise exception.ManilaException(msg)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        # TODO(u_glide): validate share_type extra spec"},{"line_number":642,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_a001196c","line":639,"updated":"2015-03-12 03:08:34.000000000","message":"We should add an exception for InvalidDriverMode to exception.py.","commit_id":"04b08db3d8198401ebc5035de02a67dfb69f208f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2de91bbd5b395355540898ed538f54733666d4ff","unresolved":false,"context_lines":[{"line_number":650,"context_line":"        )"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        if strutils.bool_from_string(driver_mode):"},{"line_number":653,"context_line":"            msg \u003d \"%s !\u003d False\" % const.ExtraSpecs.DRIVER_HANDLES_SHARE_SERVERS"},{"line_number":654,"context_line":"            raise exception.ManageExistingShareTypeMismatch(reason\u003dmsg)"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        mount_path \u003d self._get_path_from_export_location("}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_3d528767","line":653,"updated":"2015-03-12 19:41:02.000000000","message":"This should use this format:\n\n _(\"%s xxxxxx\") % xx","commit_id":"2849b34296f4df52153b91ba1af896addf5df0e6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2de91bbd5b395355540898ed538f54733666d4ff","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        return size"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":""},{"line_number":722,"context_line":"class NASHelperBase(object):"},{"line_number":723,"context_line":"    \"\"\"Interface to work with share.\"\"\""},{"line_number":724,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_20dee06d","line":721,"updated":"2015-03-12 19:41:02.000000000","message":"What about unmanage?","commit_id":"2849b34296f4df52153b91ba1af896addf5df0e6"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"75cde58d3e385caf76303f0328ee90582640af52","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        return size"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":""},{"line_number":722,"context_line":"class NASHelperBase(object):"},{"line_number":723,"context_line":"    \"\"\"Interface to work with share.\"\"\""},{"line_number":724,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_2c0a4d79","line":721,"in_reply_to":"9a80dd14_20dee06d","updated":"2015-03-13 01:51:33.000000000","message":"Many drivers, including this one apparently, have nothing to do during unmanage.  The superclass doesn\u0027t raise an exception in unmanage, so there\u0027s no need to override an empty method here.","commit_id":"2849b34296f4df52153b91ba1af896addf5df0e6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"209b6ca3493fbd915c5c192fe26219ccf374bba5","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        return size"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":""},{"line_number":722,"context_line":"class NASHelperBase(object):"},{"line_number":723,"context_line":"    \"\"\"Interface to work with share.\"\"\""},{"line_number":724,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_cf1a83c5","line":721,"in_reply_to":"9a80dd14_2c0a4d79","updated":"2015-03-13 02:18:42.000000000","message":"We recently had to fix our driver to implement unmanage (to do nothing) in Cinder after the ABC patch has landed. I just checked again and I think the ABC patch introduced a bug there rather an intended behavior. \n\nAnyway this is fine here and we just need to make sure not to throw exception even if we introduce the ABC thing someday. (someone mentioned about it)","commit_id":"2849b34296f4df52153b91ba1af896addf5df0e6"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"1564dce616ed318bb81429a9d3cb247bee862edd","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            \u0027mount_path\u0027: mount_path,"},{"line_number":215,"context_line":"            \u0027server_id\u0027: server_details[\u0027instance_id\u0027],"},{"line_number":216,"context_line":"        }"},{"line_number":217,"context_line":"        if volume and volume.get(\u0027mountpoint\u0027, \u0027\u0027):"},{"line_number":218,"context_line":"            log_data[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":219,"context_line":"            log_data[\u0027dev_mount_path\u0027] \u003d volume[\u0027mountpoint\u0027]"},{"line_number":220,"context_line":"            msg \u003d (\"Checking whether volume \u0027%(volume_id)s\u0027 with mountpoint \""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_87668b4f","line":217,"updated":"2015-03-13 18:52:22.000000000","message":"Isn\u0027t this better and equivalent?\nif volume and volume.get(\u0027mountpoint\u0027):","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7e1b5755dd5b51b25f11efc7466f09f79e0c0d76","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            \u0027mount_path\u0027: mount_path,"},{"line_number":215,"context_line":"            \u0027server_id\u0027: server_details[\u0027instance_id\u0027],"},{"line_number":216,"context_line":"        }"},{"line_number":217,"context_line":"        if volume and volume.get(\u0027mountpoint\u0027, \u0027\u0027):"},{"line_number":218,"context_line":"            log_data[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":219,"context_line":"            log_data[\u0027dev_mount_path\u0027] \u003d volume[\u0027mountpoint\u0027]"},{"line_number":220,"context_line":"            msg \u003d (\"Checking whether volume \u0027%(volume_id)s\u0027 with mountpoint \""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_02528966","line":217,"in_reply_to":"9a80dd14_87668b4f","updated":"2015-03-13 19:00:13.000000000","message":"Not related to change. It is part of existing code in master.","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"1564dce616ed318bb81429a9d3cb247bee862edd","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            log_data[\u0027dev_mount_path\u0027] \u003d volume[\u0027mountpoint\u0027]"},{"line_number":220,"context_line":"            msg \u003d (\"Checking whether volume \u0027%(volume_id)s\u0027 with mountpoint \""},{"line_number":221,"context_line":"                   \"\u0027%(dev_mount_path)s\u0027 is mounted on mount path \u0027%(mount_p\""},{"line_number":222,"context_line":"                   \"ath)s\u0027 on server \u0027%(server_id)s\u0027 or not.\" % log_data)"},{"line_number":223,"context_line":"        else:"},{"line_number":224,"context_line":"            msg \u003d (\"Checking whether mount path \u0027%(mount_path)s\u0027 exists on \""},{"line_number":225,"context_line":"                   \"server \u0027%(server_id)s\u0027 or not.\" % log_data)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_c714034f","line":222,"updated":"2015-03-13 18:52:22.000000000","message":"I\u0027m thinking that instead of \"Checking whether... or not\", I\u0027d do something like \"Checking if...\" to make it a tiny bit more concise, but the current way is OK.  Up to you.","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7e1b5755dd5b51b25f11efc7466f09f79e0c0d76","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            log_data[\u0027dev_mount_path\u0027] \u003d volume[\u0027mountpoint\u0027]"},{"line_number":220,"context_line":"            msg \u003d (\"Checking whether volume \u0027%(volume_id)s\u0027 with mountpoint \""},{"line_number":221,"context_line":"                   \"\u0027%(dev_mount_path)s\u0027 is mounted on mount path \u0027%(mount_p\""},{"line_number":222,"context_line":"                   \"ath)s\u0027 on server \u0027%(server_id)s\u0027 or not.\" % log_data)"},{"line_number":223,"context_line":"        else:"},{"line_number":224,"context_line":"            msg \u003d (\"Checking whether mount path \u0027%(mount_path)s\u0027 exists on \""},{"line_number":225,"context_line":"                   \"server \u0027%(server_id)s\u0027 or not.\" % log_data)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_224b0db2","line":222,"in_reply_to":"9a80dd14_c714034f","updated":"2015-03-13 19:00:13.000000000","message":"ditto","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"1564dce616ed318bb81429a9d3cb247bee862edd","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                   \"\u0027%(dev_mount_path)s\u0027 is mounted on mount path \u0027%(mount_p\""},{"line_number":222,"context_line":"                   \"ath)s\u0027 on server \u0027%(server_id)s\u0027 or not.\" % log_data)"},{"line_number":223,"context_line":"        else:"},{"line_number":224,"context_line":"            msg \u003d (\"Checking whether mount path \u0027%(mount_path)s\u0027 exists on \""},{"line_number":225,"context_line":"                   \"server \u0027%(server_id)s\u0027 or not.\" % log_data)"},{"line_number":226,"context_line":"        LOG.debug(msg)"},{"line_number":227,"context_line":"        mounts_list_cmd \u003d [\u0027sudo\u0027, \u0027mount\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_070a9b25","line":224,"updated":"2015-03-13 18:52:22.000000000","message":"Same here with the \"or not\".","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7e1b5755dd5b51b25f11efc7466f09f79e0c0d76","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                   \"\u0027%(dev_mount_path)s\u0027 is mounted on mount path \u0027%(mount_p\""},{"line_number":222,"context_line":"                   \"ath)s\u0027 on server \u0027%(server_id)s\u0027 or not.\" % log_data)"},{"line_number":223,"context_line":"        else:"},{"line_number":224,"context_line":"            msg \u003d (\"Checking whether mount path \u0027%(mount_path)s\u0027 exists on \""},{"line_number":225,"context_line":"                   \"server \u0027%(server_id)s\u0027 or not.\" % log_data)"},{"line_number":226,"context_line":"        LOG.debug(msg)"},{"line_number":227,"context_line":"        mounts_list_cmd \u003d [\u0027sudo\u0027, \u0027mount\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_424801b3","line":224,"in_reply_to":"9a80dd14_070a9b25","updated":"2015-03-13 19:00:13.000000000","message":"ditto","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"1564dce616ed318bb81429a9d3cb247bee862edd","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            }"},{"line_number":277,"context_line":"            try:"},{"line_number":278,"context_line":"                if not self._is_device_mounted(mount_path, server_details,"},{"line_number":279,"context_line":"                                               volume):"},{"line_number":280,"context_line":"                    LOG.debug(\"Mounting \u0027%(dev)s\u0027 to path \u0027%(path)s\u0027 on \""},{"line_number":281,"context_line":"                              \"server \u0027%(server)s\u0027.\", log_data)"},{"line_number":282,"context_line":"                    mount_cmd \u003d [\u0027sudo mkdir -p\u0027, mount_path, \u0027\u0026\u0026\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_a2f0ddfd","line":279,"updated":"2015-03-13 18:52:22.000000000","message":"Style guide say -- not a must but a guideline -- separate the args with newline (when they don\u0027t fit on one line).  Again, it\u0027s just a guideline.","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"8fc40f3840e346194cfb577811cc7a151162352c","unresolved":false,"context_lines":[{"line_number":635,"context_line":"        self.service_instance_manager.delete_service_instance("},{"line_number":636,"context_line":"            self.admin_context, server_details)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":639,"context_line":"        if self.driver_handles_share_servers:"},{"line_number":640,"context_line":"            raise exception.InvalidDriverMode("},{"line_number":641,"context_line":"                driver_mode\u003d\"driver_handles_share_servers \u003d True\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_679c37c1","line":638,"updated":"2015-03-13 18:56:50.000000000","message":"Please, add here docstring with description of expected keys like \"volume_id\".","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"c337902ae446c1cc48e6124d2023f6837a27164a","unresolved":false,"context_lines":[{"line_number":635,"context_line":"        self.service_instance_manager.delete_service_instance("},{"line_number":636,"context_line":"            self.admin_context, server_details)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":639,"context_line":"        if self.driver_handles_share_servers:"},{"line_number":640,"context_line":"            raise exception.InvalidDriverMode("},{"line_number":641,"context_line":"                driver_mode\u003d\"driver_handles_share_servers \u003d True\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_adac3cee","line":638,"in_reply_to":"9a80dd14_679c37c1","updated":"2015-03-14 15:05:02.000000000","message":"Done","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"8fc40f3840e346194cfb577811cc7a151162352c","unresolved":false,"context_lines":[{"line_number":638,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":639,"context_line":"        if self.driver_handles_share_servers:"},{"line_number":640,"context_line":"            raise exception.InvalidDriverMode("},{"line_number":641,"context_line":"                driver_mode\u003d\"driver_handles_share_servers \u003d True\")"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        if share[\u0027share_proto\u0027].upper() not in self._helpers.keys():"},{"line_number":644,"context_line":"            msg \u003d _(\"Unsupported protocol\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_e46d8533","line":641,"updated":"2015-03-13 18:56:50.000000000","message":"Error will say that we have \"invalid driver mode\". that is not correct error message. You say nothing about \"manage\" operation. Better to do something like following:\n\n\"\"\"\n\nOperation \"manage\" for shares is supported only driver does not handle share servers.\n\n\"\"\"","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"c337902ae446c1cc48e6124d2023f6837a27164a","unresolved":false,"context_lines":[{"line_number":638,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":639,"context_line":"        if self.driver_handles_share_servers:"},{"line_number":640,"context_line":"            raise exception.InvalidDriverMode("},{"line_number":641,"context_line":"                driver_mode\u003d\"driver_handles_share_servers \u003d True\")"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        if share[\u0027share_proto\u0027].upper() not in self._helpers.keys():"},{"line_number":644,"context_line":"            msg \u003d _(\"Unsupported protocol\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_cdb7b038","line":641,"in_reply_to":"9a80dd14_2274edfc","updated":"2015-03-14 15:05:02.000000000","message":"Done","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7e1b5755dd5b51b25f11efc7466f09f79e0c0d76","unresolved":false,"context_lines":[{"line_number":638,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":639,"context_line":"        if self.driver_handles_share_servers:"},{"line_number":640,"context_line":"            raise exception.InvalidDriverMode("},{"line_number":641,"context_line":"                driver_mode\u003d\"driver_handles_share_servers \u003d True\")"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        if share[\u0027share_proto\u0027].upper() not in self._helpers.keys():"},{"line_number":644,"context_line":"            msg \u003d _(\"Unsupported protocol\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_2274edfc","line":641,"in_reply_to":"9a80dd14_e46d8533","updated":"2015-03-13 19:00:13.000000000","message":"*only when driver*","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"8fc40f3840e346194cfb577811cc7a151162352c","unresolved":false,"context_lines":[{"line_number":641,"context_line":"                driver_mode\u003d\"driver_handles_share_servers \u003d True\")"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        if share[\u0027share_proto\u0027].upper() not in self._helpers.keys():"},{"line_number":644,"context_line":"            msg \u003d _(\"Unsupported protocol\")"},{"line_number":645,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        driver_mode \u003d share_types.get_share_type_extra_specs("}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_64619538","line":644,"updated":"2015-03-13 18:56:50.000000000","message":"Need provide \"which protocol\" is not supported.","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"c337902ae446c1cc48e6124d2023f6837a27164a","unresolved":false,"context_lines":[{"line_number":641,"context_line":"                driver_mode\u003d\"driver_handles_share_servers \u003d True\")"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        if share[\u0027share_proto\u0027].upper() not in self._helpers.keys():"},{"line_number":644,"context_line":"            msg \u003d _(\"Unsupported protocol\")"},{"line_number":645,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        driver_mode \u003d share_types.get_share_type_extra_specs("}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_edb2b447","line":644,"in_reply_to":"9a80dd14_64619538","updated":"2015-03-14 15:05:02.000000000","message":"Done","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"8fc40f3840e346194cfb577811cc7a151162352c","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        def get_volume():"},{"line_number":672,"context_line":"            if \u0027volume_id\u0027 in driver_options:"},{"line_number":673,"context_line":"                try:"},{"line_number":674,"context_line":"                    return self.volume_api.get(context,"},{"line_number":675,"context_line":"                                               driver_options[\u0027volume_id\u0027])"},{"line_number":676,"context_line":"                except exception.VolumeNotFound as e:"},{"line_number":677,"context_line":"                    raise exception.ManageInvalidShare(reason\u003dsix.text_type(e))"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_07945b89","line":674,"updated":"2015-03-13 18:56:50.000000000","message":"Better to use admin context here.","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"c337902ae446c1cc48e6124d2023f6837a27164a","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        def get_volume():"},{"line_number":672,"context_line":"            if \u0027volume_id\u0027 in driver_options:"},{"line_number":673,"context_line":"                try:"},{"line_number":674,"context_line":"                    return self.volume_api.get(context,"},{"line_number":675,"context_line":"                                               driver_options[\u0027volume_id\u0027])"},{"line_number":676,"context_line":"                except exception.VolumeNotFound as e:"},{"line_number":677,"context_line":"                    raise exception.ManageInvalidShare(reason\u003dsix.text_type(e))"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_0d854859","line":674,"in_reply_to":"9a80dd14_07945b89","updated":"2015-03-14 15:05:02.000000000","message":"Done","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"8fc40f3840e346194cfb577811cc7a151162352c","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":706,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":707,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":708,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"    def _get_mounted_share_size(self, mount_path, server_details):"},{"line_number":711,"context_line":"        share_size_cmd \u003d [\u0027df\u0027, \u0027-PBG\u0027, mount_path]"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_84c04951","line":708,"updated":"2015-03-13 18:56:50.000000000","message":"Please, add here \"else\" clause with raising of error. Return of None is not desired here.","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"c337902ae446c1cc48e6124d2023f6837a27164a","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":706,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":707,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":708,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"    def _get_mounted_share_size(self, mount_path, server_details):"},{"line_number":711,"context_line":"        share_size_cmd \u003d [\u0027df\u0027, \u0027-PBG\u0027, mount_path]"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_8d9858c1","line":708,"in_reply_to":"9a80dd14_84c04951","updated":"2015-03-14 15:05:02.000000000","message":"Done","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"8fc40f3840e346194cfb577811cc7a151162352c","unresolved":false,"context_lines":[{"line_number":715,"context_line":"        try:"},{"line_number":716,"context_line":"            size \u003d int(lines[1].split()[1][:-1])"},{"line_number":717,"context_line":"        except Exception:"},{"line_number":718,"context_line":"            msg \u003d _(\"Cannot calculate size of share %s\") % mount_path"},{"line_number":719,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"        return size"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_84a769bc","line":718,"updated":"2015-03-13 18:56:50.000000000","message":"Please, add here original exception details.","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"c337902ae446c1cc48e6124d2023f6837a27164a","unresolved":false,"context_lines":[{"line_number":715,"context_line":"        try:"},{"line_number":716,"context_line":"            size \u003d int(lines[1].split()[1][:-1])"},{"line_number":717,"context_line":"        except Exception:"},{"line_number":718,"context_line":"            msg \u003d _(\"Cannot calculate size of share %s\") % mount_path"},{"line_number":719,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"        return size"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_ad935ca1","line":718,"in_reply_to":"9a80dd14_84a769bc","updated":"2015-03-14 15:05:02.000000000","message":"Done","commit_id":"bfef3eefcd0e7df9e9ad2a3422835ce3e9407a7b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"3c07056348d2af01e949fae67d686c9235489770","unresolved":false,"context_lines":[{"line_number":670,"context_line":"            raise exception.ManageExistingShareTypeMismatch(reason\u003dmsg)"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        mount_path \u003d self._get_path_from_export_location("},{"line_number":673,"context_line":"            share[\u0027share_proto\u0027], share[\u0027export_location\u0027])"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        LOG.debug(\"Manage: mount path \u003d %s\", mount_path)"},{"line_number":676,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_371e840e","line":673,"updated":"2015-03-17 10:27:55.000000000","message":"Here share protocol is provided as is from request, so you get error if user provides not uppercase.","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"33cfeed83c6802205fdd4df0a9605b7138f6161d","unresolved":false,"context_lines":[{"line_number":670,"context_line":"            raise exception.ManageExistingShareTypeMismatch(reason\u003dmsg)"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        mount_path \u003d self._get_path_from_export_location("},{"line_number":673,"context_line":"            share[\u0027share_proto\u0027], share[\u0027export_location\u0027])"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"        LOG.debug(\"Manage: mount path \u003d %s\", mount_path)"},{"line_number":676,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_9d2aef8e","line":673,"in_reply_to":"9a80dd14_371e840e","updated":"2015-03-17 15:54:14.000000000","message":"Done","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"3c07056348d2af01e949fae67d686c9235489770","unresolved":false,"context_lines":[{"line_number":697,"context_line":"        share_volume \u003d get_volume()"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"        if share_volume:"},{"line_number":700,"context_line":"            service_instance_volumes \u003d self.compute_api.instance_volumes_list("},{"line_number":701,"context_line":"                self.admin_context, server_details[\u0027instance_id\u0027])"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"            if share_volume[\u0027id\u0027] not in service_instance_volumes:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_f7b4ec83","line":700,"updated":"2015-03-17 10:27:55.000000000","message":"Volume can be owned by any project, so need to get ALL volumes, now you get project\u0027s volume list only. It causes false raise of error on line 705.","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"33cfeed83c6802205fdd4df0a9605b7138f6161d","unresolved":false,"context_lines":[{"line_number":697,"context_line":"        share_volume \u003d get_volume()"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"        if share_volume:"},{"line_number":700,"context_line":"            service_instance_volumes \u003d self.compute_api.instance_volumes_list("},{"line_number":701,"context_line":"                self.admin_context, server_details[\u0027instance_id\u0027])"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"            if share_volume[\u0027id\u0027] not in service_instance_volumes:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_4f5eef77","line":700,"in_reply_to":"9a80dd14_f7b4ec83","updated":"2015-03-17 15:54:14.000000000","message":"Done","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"3c07056348d2af01e949fae67d686c9235489770","unresolved":false,"context_lines":[{"line_number":701,"context_line":"                self.admin_context, server_details[\u0027instance_id\u0027])"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"            if share_volume[\u0027id\u0027] not in service_instance_volumes:"},{"line_number":704,"context_line":"                msg \u003d _(\"Provided volume is not attached to service instance.\")"},{"line_number":705,"context_line":"                raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"            linked_volume_name \u003d self._get_volume_name(share[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_9749f0b9","line":704,"updated":"2015-03-17 10:27:55.000000000","message":"Which volume? Need provide ID.","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"33cfeed83c6802205fdd4df0a9605b7138f6161d","unresolved":false,"context_lines":[{"line_number":701,"context_line":"                self.admin_context, server_details[\u0027instance_id\u0027])"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"            if share_volume[\u0027id\u0027] not in service_instance_volumes:"},{"line_number":704,"context_line":"                msg \u003d _(\"Provided volume is not attached to service instance.\")"},{"line_number":705,"context_line":"                raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"            linked_volume_name \u003d self._get_volume_name(share[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_580ec533","line":704,"in_reply_to":"9a80dd14_9749f0b9","updated":"2015-03-17 15:54:14.000000000","message":"Done","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"3c07056348d2af01e949fae67d686c9235489770","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"    @staticmethod"},{"line_number":720,"context_line":"    def _get_path_from_export_location(protocol, export_location):"},{"line_number":721,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":722,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_571bf81b","line":721,"updated":"2015-03-17 10:27:55.000000000","message":"s/protocol/protocol.upper()/","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"33cfeed83c6802205fdd4df0a9605b7138f6161d","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"    @staticmethod"},{"line_number":720,"context_line":"    def _get_path_from_export_location(protocol, export_location):"},{"line_number":721,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":722,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_781b8973","line":721,"in_reply_to":"9a80dd14_571bf81b","updated":"2015-03-17 15:54:14.000000000","message":"Done","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"3c07056348d2af01e949fae67d686c9235489770","unresolved":false,"context_lines":[{"line_number":719,"context_line":"    @staticmethod"},{"line_number":720,"context_line":"    def _get_path_from_export_location(protocol, export_location):"},{"line_number":721,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":722,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":725,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_1786e013","line":722,"updated":"2015-03-17 10:27:55.000000000","message":"I provided just path \"/shares/share-9af8bbf6-4cfb-4a3e-b1e5-bdfcadfe47a2\" and took error\n\n\"Manage share failed: list index out of range\"\n\nI suggest to use last index, but not second:\n\nreturn export_location.split(\u0027:\u0027)[-1]","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"33cfeed83c6802205fdd4df0a9605b7138f6161d","unresolved":false,"context_lines":[{"line_number":719,"context_line":"    @staticmethod"},{"line_number":720,"context_line":"    def _get_path_from_export_location(protocol, export_location):"},{"line_number":721,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":722,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":725,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_18728dad","line":722,"in_reply_to":"9a80dd14_1786e013","updated":"2015-03-17 15:54:14.000000000","message":"Done","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"3c07056348d2af01e949fae67d686c9235489770","unresolved":false,"context_lines":[{"line_number":720,"context_line":"    def _get_path_from_export_location(protocol, export_location):"},{"line_number":721,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":722,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":725,"context_line":"        else:"},{"line_number":726,"context_line":"            msg \u003d _(\"Protocol %s is not supported.\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_971570e7","line":723,"updated":"2015-03-17 10:27:55.000000000","message":"s/protocol/protocol.upper()/","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"33cfeed83c6802205fdd4df0a9605b7138f6161d","unresolved":false,"context_lines":[{"line_number":720,"context_line":"    def _get_path_from_export_location(protocol, export_location):"},{"line_number":721,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":722,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":725,"context_line":"        else:"},{"line_number":726,"context_line":"            msg \u003d _(\"Protocol %s is not supported.\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_98183d77","line":723,"in_reply_to":"9a80dd14_971570e7","updated":"2015-03-17 15:54:14.000000000","message":"Done","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"3c07056348d2af01e949fae67d686c9235489770","unresolved":false,"context_lines":[{"line_number":721,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":722,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":725,"context_line":"        else:"},{"line_number":726,"context_line":"            msg \u003d _(\"Protocol %s is not supported.\")"},{"line_number":727,"context_line":"            raise exception.ManilaException(msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_17b420d0","line":724,"updated":"2015-03-17 10:27:55.000000000","message":"Same here, user can provide not export location but path.","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"33cfeed83c6802205fdd4df0a9605b7138f6161d","unresolved":false,"context_lines":[{"line_number":721,"context_line":"        if protocol \u003d\u003d \"NFS\":"},{"line_number":722,"context_line":"            return export_location.split(\u0027:\u0027)[1]"},{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":725,"context_line":"        else:"},{"line_number":726,"context_line":"            msg \u003d _(\"Protocol %s is not supported.\")"},{"line_number":727,"context_line":"            raise exception.ManilaException(msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_ac85c65a","line":724,"in_reply_to":"9a80dd14_17b420d0","updated":"2015-03-17 15:54:14.000000000","message":"Done","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"3c07056348d2af01e949fae67d686c9235489770","unresolved":false,"context_lines":[{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":725,"context_line":"        else:"},{"line_number":726,"context_line":"            msg \u003d _(\"Protocol %s is not supported.\")"},{"line_number":727,"context_line":"            raise exception.ManilaException(msg)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def _get_mounted_share_size(self, mount_path, server_details):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_57e21802","line":726,"updated":"2015-03-17 10:27:55.000000000","message":"No substitution.\n\nShould be\n\n\"\"\"\n\nmsg \u003d _(\"Protocol %s is not supported.\") % protocol\n\n\"\"\"","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":14232,"name":"Igor Malinovskiy","email":"u.glide@gmail.com","username":"imalinovskiy"},"change_message_id":"33cfeed83c6802205fdd4df0a9605b7138f6161d","unresolved":false,"context_lines":[{"line_number":723,"context_line":"        elif protocol \u003d\u003d \"CIFS\":"},{"line_number":724,"context_line":"            return \u0027/\u0027 + \u0027/\u0027.join(export_location.split(\u0027\\\\\u0027)[2:])"},{"line_number":725,"context_line":"        else:"},{"line_number":726,"context_line":"            msg \u003d _(\"Protocol %s is not supported.\")"},{"line_number":727,"context_line":"            raise exception.ManilaException(msg)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def _get_mounted_share_size(self, mount_path, server_details):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_cc7afa76","line":726,"in_reply_to":"9a80dd14_57e21802","updated":"2015-03-17 15:54:14.000000000","message":"Done","commit_id":"980061f87c199acbe8fdd99017746022d39cda5d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e8b5341e6cf89ab62b7fcf199f8854af191de5f2","unresolved":false,"context_lines":[{"line_number":688,"context_line":"                except exception.VolumeNotFound as e:"},{"line_number":689,"context_line":"                    raise exception.ManageInvalidShare(reason\u003dsix.text_type(e))"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"            # NOTE(vponomaryov): Manila can only combine volume name by itself,"},{"line_number":692,"context_line":"            # nowhere to get volume ID from. Return None since Cinder volume"},{"line_number":693,"context_line":"            # names are not unique or fixed, hence, they can not be used for"},{"line_number":694,"context_line":"            # sure."}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_90819f4f","line":691,"updated":"2015-03-18 20:36:31.000000000","message":"I don\u0027t understand what the above sentence means. Maybe better just to remove the first sentence.","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"87bed8d2f733d1a2733415d5a86b5db04a41688f","unresolved":false,"context_lines":[{"line_number":688,"context_line":"                except exception.VolumeNotFound as e:"},{"line_number":689,"context_line":"                    raise exception.ManageInvalidShare(reason\u003dsix.text_type(e))"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"            # NOTE(vponomaryov): Manila can only combine volume name by itself,"},{"line_number":692,"context_line":"            # nowhere to get volume ID from. Return None since Cinder volume"},{"line_number":693,"context_line":"            # names are not unique or fixed, hence, they can not be used for"},{"line_number":694,"context_line":"            # sure."}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_6b5c227e","line":691,"in_reply_to":"9a80dd14_90819f4f","updated":"2015-03-19 11:34:28.000000000","message":"It means that manila has possibility to combine name, and only name. It has no possibility to get volume ID except admin provides it via request. But name does not give us a guarantee.","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"}],"manila/share/manager.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e8b5341e6cf89ab62b7fcf199f8854af191de5f2","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            })"},{"line_number":358,"context_line":"            self.db.share_update(context, share_id, share_update)"},{"line_number":359,"context_line":"        except Exception as e:"},{"line_number":360,"context_line":"            LOG.error(_LW(\"Manage share failed: %s\"), six.text_type(e))"},{"line_number":361,"context_line":"            # NOTE(vponomaryov): set size as 1 because design expects size"},{"line_number":362,"context_line":"            # to be set, it also will allow us to handle delete/unmanage"},{"line_number":363,"context_line":"            # operations properly with this errored share according to quotas."}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_90a0bfa6","line":360,"updated":"2015-03-18 20:36:31.000000000","message":"Should be _LE","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"87bed8d2f733d1a2733415d5a86b5db04a41688f","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            })"},{"line_number":358,"context_line":"            self.db.share_update(context, share_id, share_update)"},{"line_number":359,"context_line":"        except Exception as e:"},{"line_number":360,"context_line":"            LOG.error(_LW(\"Manage share failed: %s\"), six.text_type(e))"},{"line_number":361,"context_line":"            # NOTE(vponomaryov): set size as 1 because design expects size"},{"line_number":362,"context_line":"            # to be set, it also will allow us to handle delete/unmanage"},{"line_number":363,"context_line":"            # operations properly with this errored share according to quotas."}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_0bbd6668","line":360,"in_reply_to":"9a80dd14_90a0bfa6","updated":"2015-03-19 11:34:28.000000000","message":"Agree. Could be updated in addition to below part.","commit_id":"e1746d71378f5116e78070b886df00e3aed1d6a4"}],"manila/volume/cinder.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"83d34165681955f2c245efbda1506fd8fa02470a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinderclient.v2 import client as cinder_client"},{"line_number":26,"context_line":"from oslo_config import cfg"},{"line_number":27,"context_line":"from oslo_log import log"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from manila.db import base"},{"line_number":30,"context_line":"from manila import exception"},{"line_number":31,"context_line":"from manila.i18n import _"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_b2118606","line":28,"updated":"2015-03-17 18:48:52.000000000","message":"import manila.context as ctxt","commit_id":"1728110c47f6465c976a8ce7bd50933723f93640"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2c8f346853b02959bd43af41c13c85f78957b9b4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinderclient.v2 import client as cinder_client"},{"line_number":26,"context_line":"from oslo_config import cfg"},{"line_number":27,"context_line":"from oslo_log import log"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from manila.db import base"},{"line_number":30,"context_line":"from manila import exception"},{"line_number":31,"context_line":"from manila.i18n import _"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_d47b26bc","line":28,"in_reply_to":"9a80dd14_b2118606","updated":"2015-03-18 12:02:22.000000000","message":"Done","commit_id":"1728110c47f6465c976a8ce7bd50933723f93640"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"83d34165681955f2c245efbda1506fd8fa02470a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                help\u003d\u0027Allow attaching between instances and volumes in \u0027"},{"line_number":54,"context_line":"                     \u0027different availability zones.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027cinder_admin_username\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027manila\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Cinder admin username.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027cinder_admin_password\u0027,"},{"line_number":59,"context_line":"               help\u003d\u0027Cinder admin password.\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_d2a19a96","line":56,"updated":"2015-03-17 18:48:52.000000000","message":"Need make it as was. Because it will work only when manila user has same project and password or when it is set intentionally.","commit_id":"1728110c47f6465c976a8ce7bd50933723f93640"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2c8f346853b02959bd43af41c13c85f78957b9b4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                help\u003d\u0027Allow attaching between instances and volumes in \u0027"},{"line_number":54,"context_line":"                     \u0027different availability zones.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027cinder_admin_username\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027manila\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Cinder admin username.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027cinder_admin_password\u0027,"},{"line_number":59,"context_line":"               help\u003d\u0027Cinder admin password.\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_f4490a8f","line":56,"in_reply_to":"9a80dd14_d2a19a96","updated":"2015-03-18 12:02:22.000000000","message":"Done","commit_id":"1728110c47f6465c976a8ce7bd50933723f93640"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"83d34165681955f2c245efbda1506fd8fa02470a","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    @translate_volume_exception"},{"line_number":319,"context_line":"    def update(self, context, volume_id, fields):"},{"line_number":320,"context_line":"        client \u003d cinderclient(context)"},{"line_number":321,"context_line":"        item \u003d client.volumes.get(volume_id)"},{"line_number":322,"context_line":"        client.volumes.update(item, **fields)"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_120252b4","line":320,"updated":"2015-03-17 18:48:52.000000000","message":"Since Cinder has problems with operation of \"update\" with its own context, I propose to use here manila context explicitly without dependency on config options.\n\nSo, line 320 should be replaced with folloowing.\n\n\"\"\"\n\nmanila_admin_context \u003d ctxt.get_admin_context()\n\nclient \u003d cinderclient(manila_admin_context)\n\n...\n\n\"\"\"","commit_id":"1728110c47f6465c976a8ce7bd50933723f93640"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2c8f346853b02959bd43af41c13c85f78957b9b4","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    @translate_volume_exception"},{"line_number":319,"context_line":"    def update(self, context, volume_id, fields):"},{"line_number":320,"context_line":"        client \u003d cinderclient(context)"},{"line_number":321,"context_line":"        item \u003d client.volumes.get(volume_id)"},{"line_number":322,"context_line":"        client.volumes.update(item, **fields)"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_34448273","line":320,"in_reply_to":"9a80dd14_120252b4","updated":"2015-03-18 12:02:22.000000000","message":"Done","commit_id":"1728110c47f6465c976a8ce7bd50933723f93640"}]}
