)]}'
{".gitignore":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f609b78dd3a51fe53289c988ea410edde6917298","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"7faddb67_4bdeab6d","updated":"2019-07-16 21:39:06.000000000","message":"Please revert changes to this file","commit_id":"944181098556d3f905227f490d8ece5d9457100a"}],".vscode/settings.json":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9fb8cfa7_ef98501c","updated":"2019-06-18 21:42:05.000000000","message":"Please remove this file, and you may add it to your global gitignore so that it doesn\u0027t get added next time. \n\nhttp://egorsmirnov.me/2015/05/04/global-gitignore-file.html","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9fb8cfa7_e11f9305","in_reply_to":"9fb8cfa7_ef98501c","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"}],"/COMMIT_MSG":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"bfd5b2adc305386d56cc5de9704dc2f2614968f4","unresolved":false,"context_lines":[{"line_number":13,"context_line":" - Delete a share."},{"line_number":14,"context_line":" - Allow share access."},{"line_number":15,"context_line":" - Deny share access."},{"line_number":16,"context_line":" - Manage a share."},{"line_number":17,"context_line":" - Unmanage a share."},{"line_number":18,"context_line":" - Extend a share."},{"line_number":19,"context_line":" - Shrink a share."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fb8cfa7_9fc2a233","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":20},"updated":"2019-06-11 14:58:00.000000000","message":"You should run manage/unmanage tests, but they were skipped[0].\n\nYou can enable them by editting local.conf file properly[1]:\n\n    [share]\n    ...\n    run_manage_unmanage_tests \u003d True\n    run_manage_unmanage_snapshot_tests \u003d True\n\n\n[0] http://openstack.infortrend.com/438/657775/7/check/infortrend-manila-ci/6bf1f437be193eb01f25109cfadb7d7008c8d6e7/console.html#_2019-06-11_19_52_24_639\n[1] http://openstack.infortrend.com/438/657775/7/check/infortrend-manila-ci/6bf1f437be193eb01f25109cfadb7d7008c8d6e7/logs/local.conf.txt.gz","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":13,"context_line":" - Delete a share."},{"line_number":14,"context_line":" - Allow share access."},{"line_number":15,"context_line":" - Deny share access."},{"line_number":16,"context_line":" - Manage a share."},{"line_number":17,"context_line":" - Unmanage a share."},{"line_number":18,"context_line":" - Extend a share."},{"line_number":19,"context_line":" - Shrink a share."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fb8cfa7_afa2584a","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":20},"in_reply_to":"9fb8cfa7_9fc2a233","updated":"2019-06-18 21:42:05.000000000","message":"+1","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a7f6b9b5993cc4d86d3259ec47309cbf01d9b219","unresolved":false,"context_lines":[{"line_number":18,"context_line":" - Extend a share."},{"line_number":19,"context_line":" - Shrink a share."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"DocImpact"},{"line_number":22,"context_line":"Implements: blueprint infortrend-support-manila-driver"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Ib1adbd8f7f55805387b126851dbb0ff50cfbcd75"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7faddb67_7f872fb8","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":9},"updated":"2019-07-23 21:56:07.000000000","message":"Please be aware that, when this change merges, this tag will create a bug on manila (https://bugs.launchpad.net/manila) - You will need to add any missing documentation to manila and close this bug.","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"16cb94a3e95b202b2e9cd053651b1009f9624613","unresolved":false,"context_lines":[{"line_number":18,"context_line":" - Extend a share."},{"line_number":19,"context_line":" - Shrink a share."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"DocImpact"},{"line_number":22,"context_line":"Implements: blueprint infortrend-support-manila-driver"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Ib1adbd8f7f55805387b126851dbb0ff50cfbcd75"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7faddb67_c788d523","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":9},"in_reply_to":"7faddb67_7f872fb8","updated":"2019-07-24 03:36:32.000000000","message":"I\u0027ll aware that.","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"}],"doc/source/admin/share_back_ends_feature_support_mapping.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":140,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":141,"context_line":"|               INFINIDAT                |    NFS (Q)   |      \\-      |       \\-       |     \\-     |      \\-      |    NFS (Q)   |      \\-      |       \\-       |     \\-     |     \\-     |"},{"line_number":142,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":143,"context_line":"|               Infortrend               |    NFS (T)   |    CIFS (T)  |       \\-       |     \\-     |      \\-      |    NFS (T)   |    CIFS (T)  |       \\-       |     \\-     |     \\-     |"},{"line_number":144,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":145,"context_line":"|                INSPUR                  |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |      \\-      |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |     \\-     |"},{"line_number":146,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_6fad4030","line":143,"range":{"start_line":143,"start_character":61,"end_line":143,"end_character":69},"updated":"2019-06-18 21:42:05.000000000","message":"So, to be clear this backend supports IPv4 only with NFS, and IPv6 only with CIFS?","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":140,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":141,"context_line":"|               INFINIDAT                |    NFS (Q)   |      \\-      |       \\-       |     \\-     |      \\-      |    NFS (Q)   |      \\-      |       \\-       |     \\-     |     \\-     |"},{"line_number":142,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":143,"context_line":"|               Infortrend               |    NFS (T)   |    CIFS (T)  |       \\-       |     \\-     |      \\-      |    NFS (T)   |    CIFS (T)  |       \\-       |     \\-     |     \\-     |"},{"line_number":144,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":145,"context_line":"|                INSPUR                  |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |      \\-      |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |     \\-     |"},{"line_number":146,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_c1228f52","line":143,"range":{"start_line":143,"start_character":61,"end_line":143,"end_character":69},"in_reply_to":"9fb8cfa7_6fad4030","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":264,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":265,"context_line":"|                INFINIDAT               |     \\-    |      Q     |   \\-   |      \\-     |         Q         |          Q         | \\-  |              Q             |          Q         |           Q        |       Q      |      \\-      |"},{"line_number":266,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":267,"context_line":"|               Infortrend               |     \\-    |      T     |   \\-   |      \\-     |        \\-         |          \\-        | \\-  |             \\-             |          \\-        |          \\-        |       \\-     |      \\-      |"},{"line_number":268,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":269,"context_line":"|                   LVM                  |     \\-    |      M     |   \\-   |      \\-     |        \\-         |          M         | \\-  |              K             |          O         |           O        |       P      |      P       |"},{"line_number":270,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_8f443476","line":267,"range":{"start_line":267,"start_character":215,"end_line":267,"end_character":235},"updated":"2019-06-18 21:42:05.000000000","message":"You have to support at least one of these IP based protocols if you support NFS.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":264,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":265,"context_line":"|                INFINIDAT               |     \\-    |      Q     |   \\-   |      \\-     |         Q         |          Q         | \\-  |              Q             |          Q         |           Q        |       Q      |      \\-      |"},{"line_number":266,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":267,"context_line":"|               Infortrend               |     \\-    |      T     |   \\-   |      \\-     |        \\-         |          \\-        | \\-  |             \\-             |          \\-        |          \\-        |       \\-     |      \\-      |"},{"line_number":268,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":269,"context_line":"|                   LVM                  |     \\-    |      M     |   \\-   |      \\-     |        \\-         |          M         | \\-  |              K             |          O         |           O        |       P      |      P       |"},{"line_number":270,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_212a8b2b","line":267,"range":{"start_line":267,"start_character":215,"end_line":267,"end_character":235},"in_reply_to":"9fb8cfa7_8f443476","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":71,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":72,"context_line":"|            INSPUR InStorage            |           T           |          \\-           |       T      |      \\-      |           \\-           |             \\-             |            \\-            |           \\-       |           \\-       |"},{"line_number":73,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":74,"context_line":"|                INSPUR                  |           R           |          \\-           |       R      |      \\-      |            R           |              R             |            \\-            |           \\-       |           \\-       |"},{"line_number":75,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":76,"context_line":"|               Infortrend               |           T           |           T           |       T      |       T      |            \\-          |             \\-             |            \\-            |          \\-        |          \\-        |"},{"line_number":77,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_8ed2e35b","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":243},"updated":"2019-07-08 23:13:11.000000000","message":"A copy paste error? Please remove.","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":72,"context_line":"|            INSPUR InStorage            |           T           |          \\-           |       T      |      \\-      |           \\-           |             \\-             |            \\-            |           \\-       |           \\-       |"},{"line_number":73,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":74,"context_line":"|                INSPUR                  |           R           |          \\-           |       R      |      \\-      |            R           |              R             |            \\-            |           \\-       |           \\-       |"},{"line_number":75,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":76,"context_line":"|               Infortrend               |           T           |           T           |       T      |       T      |            \\-          |             \\-             |            \\-            |          \\-        |          \\-        |"},{"line_number":77,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_6fe72f14","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":243},"in_reply_to":"7faddb67_8ed2e35b","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":148,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":149,"context_line":"|            INSPUR InStorage            |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |      \\-      |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |     \\-     |"},{"line_number":150,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":151,"context_line":"|                INSPUR                  |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |      \\-      |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |     \\-     |"},{"line_number":152,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":153,"context_line":"|               Infortrend               |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |      \\-      |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |     \\-     |"},{"line_number":154,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_4eccebbb","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":190},"updated":"2019-07-08 23:13:11.000000000","message":"Please remove","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":149,"context_line":"|            INSPUR InStorage            |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |      \\-      |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |     \\-     |"},{"line_number":150,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":151,"context_line":"|                INSPUR                  |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |      \\-      |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |     \\-     |"},{"line_number":152,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":153,"context_line":"|               Infortrend               |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |      \\-      |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |     \\-     |"},{"line_number":154,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_2ff137ce","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":190},"in_reply_to":"7faddb67_4eccebbb","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":217,"context_line":"+----------------------------------------+------------------+-----------------+------------------+"},{"line_number":218,"context_line":"|            INSPUR InStorage            |        \\-        |         \\-      |        \\-        |"},{"line_number":219,"context_line":"+----------------------------------------+------------------+-----------------+------------------+"},{"line_number":220,"context_line":"|                INSPUR                  |        \\-        |         \\-      |        \\-        |"},{"line_number":221,"context_line":"+----------------------------------------+------------------+-----------------+------------------+"},{"line_number":222,"context_line":"|               Infortrend               |        \\-        |         \\-      |        \\-        |"},{"line_number":223,"context_line":"+----------------------------------------+------------------+-----------------+------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_eeba7708","line":220,"range":{"start_line":220,"start_character":0,"end_line":220,"end_character":98},"updated":"2019-07-08 23:13:11.000000000","message":"Please remove","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":217,"context_line":"+----------------------------------------+------------------+-----------------+------------------+"},{"line_number":218,"context_line":"|            INSPUR InStorage            |        \\-        |         \\-      |        \\-        |"},{"line_number":219,"context_line":"+----------------------------------------+------------------+-----------------+------------------+"},{"line_number":220,"context_line":"|                INSPUR                  |        \\-        |         \\-      |        \\-        |"},{"line_number":221,"context_line":"+----------------------------------------+------------------+-----------------+------------------+"},{"line_number":222,"context_line":"|               Infortrend               |        \\-        |         \\-      |        \\-        |"},{"line_number":223,"context_line":"+----------------------------------------+------------------+-----------------+------------------+"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7faddb67_8fcb8b70","line":220,"range":{"start_line":220,"start_character":0,"end_line":220,"end_character":98},"in_reply_to":"7faddb67_eeba7708","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"}],"manila/share/drivers/infortrend/driver.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_06a6f8c2","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2019-06-03 23:05:16.000000000","message":"2019","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_85b5f5f0","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"9fb8cfa7_06a6f8c2","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":26,"context_line":"infortrend_nas_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"               default\u003dNone,"},{"line_number":29,"context_line":"               help\u003d\u0027Infortrend nas ip. \u0027"},{"line_number":30,"context_line":"               \u0027It is the ip for management.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_user\u0027,"},{"line_number":32,"context_line":"               default\u003d\u0027manila\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_9b0d6439","line":29,"range":{"start_line":29,"start_character":32,"end_line":29,"end_character":38},"updated":"2019-06-03 23:05:16.000000000","message":"Capitalize the acronyms (e.g. \"NAS IP\")","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"infortrend_nas_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"               default\u003dNone,"},{"line_number":29,"context_line":"               help\u003d\u0027Infortrend nas ip. \u0027"},{"line_number":30,"context_line":"               \u0027It is the ip for management.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_user\u0027,"},{"line_number":32,"context_line":"               default\u003d\u0027manila\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_a5ba79db","line":29,"range":{"start_line":29,"start_character":32,"end_line":29,"end_character":38},"in_reply_to":"9fb8cfa7_9b0d6439","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"               default\u003dNone,"},{"line_number":29,"context_line":"               help\u003d\u0027Infortrend nas ip. \u0027"},{"line_number":30,"context_line":"               \u0027It is the ip for management.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_user\u0027,"},{"line_number":32,"context_line":"               default\u003d\u0027manila\u0027,"},{"line_number":33,"context_line":"               help\u003d\u0027User for the Infortrend NAS server.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_786c3608","line":30,"range":{"start_line":30,"start_character":16,"end_line":30,"end_character":21},"updated":"2019-06-03 23:05:16.000000000","message":"You\u0027re using \"It is\" and \"This is\" for different options.\nYou might want to make it consistent using only one of them.\n\nAlso, you could make it shorter (e.g. \"Infortrend NAS IP for management.\")","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"               default\u003dNone,"},{"line_number":29,"context_line":"               help\u003d\u0027Infortrend nas ip. \u0027"},{"line_number":30,"context_line":"               \u0027It is the ip for management.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_user\u0027,"},{"line_number":32,"context_line":"               default\u003d\u0027manila\u0027,"},{"line_number":33,"context_line":"               help\u003d\u0027User for the Infortrend NAS server.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_45cffd7e","line":30,"range":{"start_line":30,"start_character":16,"end_line":30,"end_character":21},"in_reply_to":"9fb8cfa7_786c3608","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    cfg.StrOpt(\u0027infortrend_share_pools\u0027,"},{"line_number":45,"context_line":"               default\u003dNone,"},{"line_number":46,"context_line":"               help\u003d\u0027Infortrend nas pool name list. \u0027"},{"line_number":47,"context_line":"               \u0027It is separated with comma.\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":49,"context_line":"               default\u003dNone,"},{"line_number":50,"context_line":"               help\u003d\u0027Infortrend channels for file service. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_983faad5","line":47,"range":{"start_line":47,"start_character":22,"end_line":47,"end_character":42},"updated":"2019-06-03 23:05:16.000000000","message":"separated by comma.\nCould rephrase it to \"Infortrend NAS pool names separated by comma\".","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    cfg.StrOpt(\u0027infortrend_share_pools\u0027,"},{"line_number":45,"context_line":"               default\u003dNone,"},{"line_number":46,"context_line":"               help\u003d\u0027Infortrend nas pool name list. \u0027"},{"line_number":47,"context_line":"               \u0027It is separated with comma.\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":49,"context_line":"               default\u003dNone,"},{"line_number":50,"context_line":"               help\u003d\u0027Infortrend channels for file service. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_65cc8189","line":47,"range":{"start_line":47,"start_character":22,"end_line":47,"end_character":42},"in_reply_to":"9fb8cfa7_983faad5","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    cfg.StrOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":49,"context_line":"               default\u003dNone,"},{"line_number":50,"context_line":"               help\u003d\u0027Infortrend channels for file service. \u0027"},{"line_number":51,"context_line":"               \u0027It is separated with comma.\u0027),"},{"line_number":52,"context_line":"    cfg.IntOpt(\u0027infortrend_ssh_timeout\u0027,"},{"line_number":53,"context_line":"               default\u003d30,"},{"line_number":54,"context_line":"               help\u003d\u0027SSH timeout in seconds.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_7b6f50c5","line":51,"range":{"start_line":51,"start_character":32,"end_line":51,"end_character":36},"updated":"2019-06-03 23:05:16.000000000","message":"by","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    cfg.StrOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":49,"context_line":"               default\u003dNone,"},{"line_number":50,"context_line":"               help\u003d\u0027Infortrend channels for file service. \u0027"},{"line_number":51,"context_line":"               \u0027It is separated with comma.\u0027),"},{"line_number":52,"context_line":"    cfg.IntOpt(\u0027infortrend_ssh_timeout\u0027,"},{"line_number":53,"context_line":"               default\u003d30,"},{"line_number":54,"context_line":"               help\u003d\u0027SSH timeout in seconds.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_05c90577","line":51,"range":{"start_line":51,"start_character":32,"end_line":51,"end_character":36},"in_reply_to":"9fb8cfa7_7b6f50c5","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        tmp_pool_list \u003d pools_name.split(\u0027,\u0027)"},{"line_number":106,"context_line":"        for pool in tmp_pool_list:"},{"line_number":107,"context_line":"            temp_pool_dict[pool.strip()] \u003d {}"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return temp_pool_dict"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_a3591eff","line":106,"updated":"2019-06-03 23:05:16.000000000","message":"nit: you may use dict comprehension here:\n\n    return {el: {} for el in tmp_pool_list}","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        tmp_pool_list \u003d pools_name.split(\u0027,\u0027)"},{"line_number":106,"context_line":"        for pool in tmp_pool_list:"},{"line_number":107,"context_line":"            temp_pool_dict[pool.strip()] \u003d {}"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return temp_pool_dict"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_25c68969","line":106,"in_reply_to":"9fb8cfa7_a3591eff","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        tmp_ch_list \u003d channels.split(\u0027,\u0027)"},{"line_number":119,"context_line":"        for channel in tmp_ch_list:"},{"line_number":120,"context_line":"            temp_ch_dict[channel.strip()] \u003d \u0027\u0027"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        return temp_ch_dict"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_83709a74","line":119,"updated":"2019-06-03 23:05:16.000000000","message":"nit: dict comprehension here as well:\n\n    return {el: \u0027\u0027 for el in tmp_ch_list}","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        tmp_ch_list \u003d channels.split(\u0027,\u0027)"},{"line_number":119,"context_line":"        for channel in tmp_ch_list:"},{"line_number":120,"context_line":"            temp_ch_dict[channel.strip()] \u003d \u0027\u0027"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        return temp_ch_dict"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_c5a0cda8","line":119,"in_reply_to":"9fb8cfa7_83709a74","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return self.ift_nas.update_access(share, access_rules, add_rules,"},{"line_number":184,"context_line":"                                          delete_rules, share_server)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _list_of_dict(self, list_of_dict):"},{"line_number":187,"context_line":"        temp_list \u003d []"},{"line_number":188,"context_line":"        for data in list_of_dict:"},{"line_number":189,"context_line":"            temp_dict \u003d dict(data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_e38e3626","line":186,"updated":"2019-06-03 23:05:16.000000000","message":"Looks like that this method returns exactly the same list that it received as parameter.\n\nOtherwise, you could add a comment explaining what\u0027s the difference between the original list_of_dict and the temp_list it returns.","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return self.ift_nas.update_access(share, access_rules, add_rules,"},{"line_number":184,"context_line":"                                          delete_rules, share_server)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def _list_of_dict(self, list_of_dict):"},{"line_number":187,"context_line":"        temp_list \u003d []"},{"line_number":188,"context_line":"        for data in list_of_dict:"},{"line_number":189,"context_line":"            temp_dict \u003d dict(data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_e5a5d1b6","line":186,"in_reply_to":"9fb8cfa7_e38e3626","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        return temp_list"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"},{"line_number":194,"context_line":"        \"\"\"Is called to create share.\"\"\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        LOG.debug(\u0027Creating share: %s.\u0027, share[\u0027share_id\u0027])"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_e62de446","line":194,"updated":"2019-06-03 23:05:16.000000000","message":"You say \"Is called to create ...\" \"Is called to remove ...\" in some methods and \"Allow access to ...\" \"Deny access to ...\" in others.\n\nThe latter form is straightforward and IMO it\u0027s easier to read, so you could make it consistent by rephrasing the former ones to \"Create a share.\" \"Remove a share.\" etc.","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        return temp_list"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"},{"line_number":194,"context_line":"        \"\"\"Is called to create share.\"\"\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        LOG.debug(\u0027Creating share: %s.\u0027, share[\u0027share_id\u0027])"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_85aad582","line":194,"in_reply_to":"9fb8cfa7_e62de446","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"infortrend_nas_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"               default\u003dNone,"},{"line_number":29,"context_line":"               help\u003d\u0027Infortrend NAS IP. \u0027"},{"line_number":30,"context_line":"               \u0027Infortrend NAS IP for management.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_820debe9","line":27,"range":{"start_line":27,"start_character":8,"end_line":27,"end_character":14},"updated":"2019-06-18 21:42:05.000000000","message":"use cfg.HostAddressPort","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"infortrend_nas_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"               default\u003dNone,"},{"line_number":29,"context_line":"               help\u003d\u0027Infortrend NAS IP. \u0027"},{"line_number":30,"context_line":"               \u0027Infortrend NAS IP for management.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_5753bd17","line":27,"range":{"start_line":27,"start_character":8,"end_line":27,"end_character":14},"in_reply_to":"9fb8cfa7_820debe9","updated":"2019-07-02 07:33:15.000000000","message":"I didn\u0027t found HostAddressPort,I think it\u0027s HostAddressOpt, right?","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"infortrend_nas_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"               default\u003dNone,"},{"line_number":29,"context_line":"               help\u003d\u0027Infortrend NAS IP. \u0027"},{"line_number":30,"context_line":"               \u0027Infortrend NAS IP for management.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_user\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_42e5b309","line":28,"range":{"start_line":28,"start_character":15,"end_line":28,"end_character":27},"updated":"2019-06-18 21:42:05.000000000","message":"required\u003dTrue","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"infortrend_nas_opts \u003d ["},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"               default\u003dNone,"},{"line_number":29,"context_line":"               help\u003d\u0027Infortrend NAS IP. \u0027"},{"line_number":30,"context_line":"               \u0027Infortrend NAS IP for management.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_user\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_82d3de5f","line":28,"range":{"start_line":28,"start_character":15,"end_line":28,"end_character":27},"in_reply_to":"9fb8cfa7_42e5b309","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"               help\u003d\u0027User for the Infortrend NAS server.\u0027),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_password\u0027,"},{"line_number":35,"context_line":"               default\u003dNone,"},{"line_number":36,"context_line":"               help\u003d\u0027Password for the Infortrend NAS server. \u0027"},{"line_number":37,"context_line":"               \u0027This is not necessary \u0027"},{"line_number":38,"context_line":"               \u0027if infortrend_nas_ssh_key is set.\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ssh_key\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_626f9792","line":36,"range":{"start_line":36,"start_character":15,"end_line":36,"end_character":19},"updated":"2019-06-18 21:42:05.000000000","message":"add:\n\nsecret\u003dTrue,","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":33,"context_line":"               help\u003d\u0027User for the Infortrend NAS server.\u0027),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_password\u0027,"},{"line_number":35,"context_line":"               default\u003dNone,"},{"line_number":36,"context_line":"               help\u003d\u0027Password for the Infortrend NAS server. \u0027"},{"line_number":37,"context_line":"               \u0027This is not necessary \u0027"},{"line_number":38,"context_line":"               \u0027if infortrend_nas_ssh_key is set.\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ssh_key\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_a2d6224e","line":36,"range":{"start_line":36,"start_character":15,"end_line":36,"end_character":19},"in_reply_to":"9fb8cfa7_626f9792","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":41,"context_line":"               help\u003d\u0027SSH key for the Infortrend NAS server. \u0027"},{"line_number":42,"context_line":"               \u0027This is not necessary \u0027"},{"line_number":43,"context_line":"               \u0027if infortrend_nas_password is set.\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027infortrend_share_pools\u0027,"},{"line_number":45,"context_line":"               default\u003dNone,"},{"line_number":46,"context_line":"               help\u003d\u0027Infortrend nas pool name list. \u0027"},{"line_number":47,"context_line":"               \u0027It is separated by comma.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_62f477d0","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":14},"updated":"2019-06-18 21:42:05.000000000","message":"Use cfg.ListOpt if a comma separated list","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":41,"context_line":"               help\u003d\u0027SSH key for the Infortrend NAS server. \u0027"},{"line_number":42,"context_line":"               \u0027This is not necessary \u0027"},{"line_number":43,"context_line":"               \u0027if infortrend_nas_password is set.\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027infortrend_share_pools\u0027,"},{"line_number":45,"context_line":"               default\u003dNone,"},{"line_number":46,"context_line":"               help\u003d\u0027Infortrend nas pool name list. \u0027"},{"line_number":47,"context_line":"               \u0027It is separated by comma.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_42c966a9","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":14},"in_reply_to":"9fb8cfa7_62f477d0","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               default\u003dNone,"},{"line_number":46,"context_line":"               help\u003d\u0027Infortrend nas pool name list. \u0027"},{"line_number":47,"context_line":"               \u0027It is separated by comma.\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":49,"context_line":"               default\u003dNone,"},{"line_number":50,"context_line":"               help\u003d\u0027Infortrend channels for file service. \u0027"},{"line_number":51,"context_line":"               \u0027It is separated by comma.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_4220534a","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":14},"updated":"2019-06-18 21:42:05.000000000","message":"same\n\nhttps://docs.openstack.org/oslo.config/latest/reference/opts.html#oslo_config.cfg.ListOpt","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               default\u003dNone,"},{"line_number":46,"context_line":"               help\u003d\u0027Infortrend nas pool name list. \u0027"},{"line_number":47,"context_line":"               \u0027It is separated by comma.\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":49,"context_line":"               default\u003dNone,"},{"line_number":50,"context_line":"               help\u003d\u0027Infortrend channels for file service. \u0027"},{"line_number":51,"context_line":"               \u0027It is separated by comma.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_62ccaaba","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":14},"in_reply_to":"9fb8cfa7_4220534a","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        timeout \u003d self.configuration.safe_get(\u0027infortrend_ssh_timeout\u0027)"},{"line_number":81,"context_line":"        self.backend_name \u003d self.configuration.safe_get(\u0027share_backend_name\u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if not nas_ip:"},{"line_number":84,"context_line":"            msg \u003d _(\u0027The infortrend_nas_ip is not set.\u0027)"},{"line_number":85,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if not (password or ssh_key):"},{"line_number":88,"context_line":"            msg \u003d _(\u0027Either infortrend_nas_password or infortrend_nas_ssh_key \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e2bf07ce","line":85,"range":{"start_line":83,"start_character":0,"end_line":85,"end_character":58},"updated":"2019-06-18 21:42:05.000000000","message":"If you add \"required \u003d True\" to the option, you don\u0027t need this check","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        timeout \u003d self.configuration.safe_get(\u0027infortrend_ssh_timeout\u0027)"},{"line_number":81,"context_line":"        self.backend_name \u003d self.configuration.safe_get(\u0027share_backend_name\u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if not nas_ip:"},{"line_number":84,"context_line":"            msg \u003d _(\u0027The infortrend_nas_ip is not set.\u0027)"},{"line_number":85,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if not (password or ssh_key):"},{"line_number":88,"context_line":"            msg \u003d _(\u0027Either infortrend_nas_password or infortrend_nas_ssh_key \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_c2bc7607","line":85,"range":{"start_line":83,"start_character":0,"end_line":85,"end_character":58},"in_reply_to":"9fb8cfa7_e2bf07ce","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                                    pool_dict, channel_dict)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _init_pool_dict(self):"},{"line_number":99,"context_line":"        pools_name \u003d self.configuration.safe_get(\u0027infortrend_share_pools\u0027)"},{"line_number":100,"context_line":"        if not pools_name:"},{"line_number":101,"context_line":"            msg \u003d _(\u0027The infortrend_share_pools is not set.\u0027)"},{"line_number":102,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_029d7b65","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":18},"updated":"2019-06-18 21:42:05.000000000","message":"nit: pool_names","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                                    pool_dict, channel_dict)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _init_pool_dict(self):"},{"line_number":99,"context_line":"        pools_name \u003d self.configuration.safe_get(\u0027infortrend_share_pools\u0027)"},{"line_number":100,"context_line":"        if not pools_name:"},{"line_number":101,"context_line":"            msg \u003d _(\u0027The infortrend_share_pools is not set.\u0027)"},{"line_number":102,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e2b73a20","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":18},"in_reply_to":"9fb8cfa7_029d7b65","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _init_pool_dict(self):"},{"line_number":99,"context_line":"        pools_name \u003d self.configuration.safe_get(\u0027infortrend_share_pools\u0027)"},{"line_number":100,"context_line":"        if not pools_name:"},{"line_number":101,"context_line":"            msg \u003d _(\u0027The infortrend_share_pools is not set.\u0027)"},{"line_number":102,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        tmp_pool_list \u003d pools_name.split(\u0027,\u0027)"},{"line_number":105,"context_line":"        return {el: {} for el in tmp_pool_list}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_c288c323","line":102,"range":{"start_line":100,"start_character":8,"end_line":102,"end_character":58},"updated":"2019-06-18 21:42:05.000000000","message":"if not configured, can you use all available pools in the system?","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _init_pool_dict(self):"},{"line_number":99,"context_line":"        pools_name \u003d self.configuration.safe_get(\u0027infortrend_share_pools\u0027)"},{"line_number":100,"context_line":"        if not pools_name:"},{"line_number":101,"context_line":"            msg \u003d _(\u0027The infortrend_share_pools is not set.\u0027)"},{"line_number":102,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        tmp_pool_list \u003d pools_name.split(\u0027,\u0027)"},{"line_number":105,"context_line":"        return {el: {} for el in tmp_pool_list}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_370649d0","line":102,"range":{"start_line":100,"start_character":8,"end_line":102,"end_character":58},"in_reply_to":"9fb8cfa7_c288c323","updated":"2019-07-02 07:33:15.000000000","message":"Not really.Can only use the pools in the config file.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            msg \u003d _(\u0027The infortrend_share_pools is not set.\u0027)"},{"line_number":102,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        tmp_pool_list \u003d pools_name.split(\u0027,\u0027)"},{"line_number":105,"context_line":"        return {el: {} for el in tmp_pool_list}"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _init_channel_dict(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_02ab3b75","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":45},"updated":"2019-06-18 21:42:05.000000000","message":"Not needed if the option is changed to ListOpt","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            msg \u003d _(\u0027The infortrend_share_pools is not set.\u0027)"},{"line_number":102,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        tmp_pool_list \u003d pools_name.split(\u0027,\u0027)"},{"line_number":105,"context_line":"        return {el: {} for el in tmp_pool_list}"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _init_channel_dict(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_423e468b","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":45},"in_reply_to":"9fb8cfa7_02ab3b75","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _init_channel_dict(self):"},{"line_number":108,"context_line":"        channels \u003d self.configuration.safe_get(\u0027infortrend_share_channels\u0027)"},{"line_number":109,"context_line":"        if not channels:"},{"line_number":110,"context_line":"            msg \u003d _(\u0027The infortrend_share_channels is not set.\u0027)"},{"line_number":111,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        tmp_ch_list \u003d channels.split(\u0027,\u0027)"},{"line_number":114,"context_line":"        return {el: \u0027\u0027 for el in tmp_ch_list}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_a2b58fcf","line":111,"range":{"start_line":109,"start_character":8,"end_line":111,"end_character":58},"updated":"2019-06-18 21:42:05.000000000","message":"maybe set this opt to \"required\u003dTrue\" too?","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _init_channel_dict(self):"},{"line_number":108,"context_line":"        channels \u003d self.configuration.safe_get(\u0027infortrend_share_channels\u0027)"},{"line_number":109,"context_line":"        if not channels:"},{"line_number":110,"context_line":"            msg \u003d _(\u0027The infortrend_share_channels is not set.\u0027)"},{"line_number":111,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        tmp_ch_list \u003d channels.split(\u0027,\u0027)"},{"line_number":114,"context_line":"        return {el: \u0027\u0027 for el in tmp_ch_list}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_a23b8299","line":111,"range":{"start_line":109,"start_character":8,"end_line":111,"end_character":58},"in_reply_to":"9fb8cfa7_a2b58fcf","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            msg \u003d _(\u0027The infortrend_share_channels is not set.\u0027)"},{"line_number":111,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        tmp_ch_list \u003d channels.split(\u0027,\u0027)"},{"line_number":114,"context_line":"        return {el: \u0027\u0027 for el in tmp_ch_list}"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def do_setup(self, context):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_c2b683dd","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":41},"updated":"2019-06-18 21:42:05.000000000","message":"Not required if the option is changed to ListOpt","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            msg \u003d _(\u0027The infortrend_share_channels is not set.\u0027)"},{"line_number":111,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        tmp_ch_list \u003d channels.split(\u0027,\u0027)"},{"line_number":114,"context_line":"        return {el: \u0027\u0027 for el in tmp_ch_list}"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def do_setup(self, context):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_62410a0a","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":41},"in_reply_to":"9fb8cfa7_c2b683dd","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                    vendor_name\u003d\u0027Infortrend\u0027,"},{"line_number":133,"context_line":"                    driver_version\u003dself.VERSION,"},{"line_number":134,"context_line":"                    storage_protocol\u003dself.PROTOCOL,"},{"line_number":135,"context_line":"                    total_capacity_gb\u003d0.0,"},{"line_number":136,"context_line":"                    free_capacity_gb\u003d0.0,"},{"line_number":137,"context_line":"                    reserved_percentage\u003d0,"},{"line_number":138,"context_line":"                    pools\u003dself.ift_nas.update_pools_stats())"},{"line_number":139,"context_line":"        LOG.debug(\u0027Infortrend pools status: %s\u0027, data[\u0027pools\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_a2702fde","line":136,"range":{"start_line":135,"start_character":0,"end_line":136,"end_character":41},"updated":"2019-06-18 21:42:05.000000000","message":"It\u0027s alright to remove these from here, since your backend supports pools, that information will be used for scheduling.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                    vendor_name\u003d\u0027Infortrend\u0027,"},{"line_number":133,"context_line":"                    driver_version\u003dself.VERSION,"},{"line_number":134,"context_line":"                    storage_protocol\u003dself.PROTOCOL,"},{"line_number":135,"context_line":"                    total_capacity_gb\u003d0.0,"},{"line_number":136,"context_line":"                    free_capacity_gb\u003d0.0,"},{"line_number":137,"context_line":"                    reserved_percentage\u003d0,"},{"line_number":138,"context_line":"                    pools\u003dself.ift_nas.update_pools_stats())"},{"line_number":139,"context_line":"        LOG.debug(\u0027Infortrend pools status: %s\u0027, data[\u0027pools\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_a264e2b9","line":136,"range":{"start_line":135,"start_character":0,"end_line":136,"end_character":41},"in_reply_to":"9fb8cfa7_a2702fde","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    storage_protocol\u003dself.PROTOCOL,"},{"line_number":135,"context_line":"                    total_capacity_gb\u003d0.0,"},{"line_number":136,"context_line":"                    free_capacity_gb\u003d0.0,"},{"line_number":137,"context_line":"                    reserved_percentage\u003d0,"},{"line_number":138,"context_line":"                    pools\u003dself.ift_nas.update_pools_stats())"},{"line_number":139,"context_line":"        LOG.debug(\u0027Infortrend pools status: %s\u0027, data[\u0027pools\u0027])"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_a25fcf70","line":137,"range":{"start_line":137,"start_character":40,"end_line":137,"end_character":41},"updated":"2019-06-18 21:42:05.000000000","message":"This has to be read from configuration: self.configuration.reserved_share_percentage","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    storage_protocol\u003dself.PROTOCOL,"},{"line_number":135,"context_line":"                    total_capacity_gb\u003d0.0,"},{"line_number":136,"context_line":"                    free_capacity_gb\u003d0.0,"},{"line_number":137,"context_line":"                    reserved_percentage\u003d0,"},{"line_number":138,"context_line":"                    pools\u003dself.ift_nas.update_pools_stats())"},{"line_number":139,"context_line":"        LOG.debug(\u0027Infortrend pools status: %s\u0027, data[\u0027pools\u0027])"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_425726cb","line":137,"range":{"start_line":137,"start_character":40,"end_line":137,"end_character":41},"in_reply_to":"9fb8cfa7_a25fcf70","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                  the driver is ordered to resync, i.e. rules in the"},{"line_number":163,"context_line":"                  ``access_rules`` parameter."},{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        LOG.debug("},{"line_number":166,"context_line":"            \u0027Update access rules for share: %(share)s, \u0027"},{"line_number":167,"context_line":"            \u0027access_rules: %(access_rules)s, \u0027"},{"line_number":168,"context_line":"            \u0027add_rules: %(add_rules)s, \u0027"},{"line_number":169,"context_line":"            \u0027delete_rules: %(delete_rules)s\u0027, {"},{"line_number":170,"context_line":"                \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":171,"context_line":"                \u0027access_rules\u0027: access_rules,"},{"line_number":172,"context_line":"                \u0027add_rules\u0027: add_rules,"},{"line_number":173,"context_line":"                \u0027delete_rules\u0027: delete_rules,"},{"line_number":174,"context_line":"            })"},{"line_number":175,"context_line":"        return self.ift_nas.update_access(share, access_rules, add_rules,"},{"line_number":176,"context_line":"                                          delete_rules, share_server)"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_222aff8f","line":174,"range":{"start_line":165,"start_character":8,"end_line":174,"end_character":14},"updated":"2019-06-18 21:42:05.000000000","message":"Do you really need these debug statements here and everywhere else? They may clutter debug logs and negatively affect the share process\u0027s performance.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                  the driver is ordered to resync, i.e. rules in the"},{"line_number":163,"context_line":"                  ``access_rules`` parameter."},{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        LOG.debug("},{"line_number":166,"context_line":"            \u0027Update access rules for share: %(share)s, \u0027"},{"line_number":167,"context_line":"            \u0027access_rules: %(access_rules)s, \u0027"},{"line_number":168,"context_line":"            \u0027add_rules: %(add_rules)s, \u0027"},{"line_number":169,"context_line":"            \u0027delete_rules: %(delete_rules)s\u0027, {"},{"line_number":170,"context_line":"                \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":171,"context_line":"                \u0027access_rules\u0027: access_rules,"},{"line_number":172,"context_line":"                \u0027add_rules\u0027: add_rules,"},{"line_number":173,"context_line":"                \u0027delete_rules\u0027: delete_rules,"},{"line_number":174,"context_line":"            })"},{"line_number":175,"context_line":"        return self.ift_nas.update_access(share, access_rules, add_rules,"},{"line_number":176,"context_line":"                                          delete_rules, share_server)"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_625a6af2","line":174,"range":{"start_line":165,"start_character":8,"end_line":174,"end_character":14},"in_reply_to":"9fb8cfa7_222aff8f","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"},{"line_number":179,"context_line":"        \"\"\"Create a share.\"\"\""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        LOG.debug(\u0027Creating share: %s.\u0027, share[\u0027share_id\u0027])"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        return self.ift_nas.create_share(share, share_server)"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e234e7fd","line":181,"range":{"start_line":181,"start_character":41,"end_line":181,"end_character":58},"updated":"2019-06-18 21:42:05.000000000","message":"share[\u0027id\u0027] is the ID of the share as far as the share driver is concerned. You shouldn\u0027t need share[\u0027share_id\u0027]","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"},{"line_number":179,"context_line":"        \"\"\"Create a share.\"\"\""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        LOG.debug(\u0027Creating share: %s.\u0027, share[\u0027share_id\u0027])"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        return self.ift_nas.create_share(share, share_server)"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2270f271","line":181,"range":{"start_line":181,"start_character":41,"end_line":181,"end_character":58},"in_reply_to":"9fb8cfa7_e234e7fd","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":186,"context_line":"        \"\"\"Remove a share.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        LOG.debug(\u0027Deleting share: %s.\u0027, share[\u0027share_id\u0027])"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        return self.ift_nas.delete_share(share, share_server)"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e21dc773","line":188,"range":{"start_line":188,"start_character":41,"end_line":188,"end_character":58},"updated":"2019-06-18 21:42:05.000000000","message":"same comment as above","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":186,"context_line":"        \"\"\"Remove a share.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        LOG.debug(\u0027Deleting share: %s.\u0027, share[\u0027share_id\u0027])"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        return self.ift_nas.delete_share(share, share_server)"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_c26a367f","line":188,"range":{"start_line":188,"start_character":41,"end_line":188,"end_character":58},"in_reply_to":"9fb8cfa7_e21dc773","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        \"\"\""},{"line_number":208,"context_line":"        return self.ift_nas.ensure_share(share, share_server)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def allow_access(self, context, share, access, share_server\u003dNone):"},{"line_number":211,"context_line":"        \"\"\"Allow access to the share.\"\"\""},{"line_number":212,"context_line":"        return self.ift_nas.allow_access(share, access, share_server)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def deny_access(self, context, share, access, share_server\u003dNone):"},{"line_number":215,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":216,"context_line":"        return self.ift_nas.deny_access(share, access, share_server)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":219,"context_line":"        \"\"\"Brings an existing share under Manila management."}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_650ec133","line":216,"range":{"start_line":210,"start_character":1,"end_line":216,"end_character":68},"updated":"2019-06-18 21:42:05.000000000","message":"These interfaces aren\u0027t necessary. Support for them has been deprecated, and the functionality has been converted into \"update_access\"","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        \"\"\""},{"line_number":208,"context_line":"        return self.ift_nas.ensure_share(share, share_server)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def allow_access(self, context, share, access, share_server\u003dNone):"},{"line_number":211,"context_line":"        \"\"\"Allow access to the share.\"\"\""},{"line_number":212,"context_line":"        return self.ift_nas.allow_access(share, access, share_server)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def deny_access(self, context, share, access, share_server\u003dNone):"},{"line_number":215,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":216,"context_line":"        return self.ift_nas.deny_access(share, access, share_server)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":219,"context_line":"        \"\"\"Brings an existing share under Manila management."}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e265faaf","line":216,"range":{"start_line":210,"start_character":1,"end_line":216,"end_character":68},"in_reply_to":"9fb8cfa7_650ec133","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            \u0027Manage existing for share: %(share)s, \u0027"},{"line_number":240,"context_line":"            \u0027driver_options: %(driver_options)s, \u0027, {"},{"line_number":241,"context_line":"                \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":242,"context_line":"                \u0027driver_options\u0027: dict(driver_options),"},{"line_number":243,"context_line":"            })"},{"line_number":244,"context_line":"        return self.ift_nas.manage_existing(share, driver_options)"},{"line_number":245,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2518c973","line":242,"range":{"start_line":242,"start_character":34,"end_line":242,"end_character":54},"updated":"2019-06-18 21:42:05.000000000","message":"not a good option to log this - it can contain tenant secrets.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            \u0027Manage existing for share: %(share)s, \u0027"},{"line_number":240,"context_line":"            \u0027driver_options: %(driver_options)s, \u0027, {"},{"line_number":241,"context_line":"                \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":242,"context_line":"                \u0027driver_options\u0027: dict(driver_options),"},{"line_number":243,"context_line":"            })"},{"line_number":244,"context_line":"        return self.ift_nas.manage_existing(share, driver_options)"},{"line_number":245,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_620fcadf","line":242,"range":{"start_line":242,"start_character":34,"end_line":242,"end_character":54},"in_reply_to":"9fb8cfa7_2518c973","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f609b78dd3a51fe53289c988ea410edde6917298","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ssh_key\u0027,"},{"line_number":41,"context_line":"               default\u003dNone,"},{"line_number":42,"context_line":"               help\u003d\u0027SSH key for the Infortrend NAS server. \u0027"},{"line_number":43,"context_line":"               \u0027This is not necessary\u0027"},{"line_number":44,"context_line":"               \u0027if infortrend_nas_password is set.\u0027),"},{"line_number":45,"context_line":"    cfg.ListOpt(\u0027infortrend_share_pools\u0027,"},{"line_number":46,"context_line":"                required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_6bdb677b","line":43,"range":{"start_line":43,"start_character":37,"end_line":43,"end_character":38},"updated":"2019-07-16 21:39:06.000000000","message":"missing space","commit_id":"944181098556d3f905227f490d8ece5d9457100a"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"603c4f68c854cb041067dccf259e08089bf8f3c2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ssh_key\u0027,"},{"line_number":41,"context_line":"               default\u003dNone,"},{"line_number":42,"context_line":"               help\u003d\u0027SSH key for the Infortrend NAS server. \u0027"},{"line_number":43,"context_line":"               \u0027This is not necessary\u0027"},{"line_number":44,"context_line":"               \u0027if infortrend_nas_password is set.\u0027),"},{"line_number":45,"context_line":"    cfg.ListOpt(\u0027infortrend_share_pools\u0027,"},{"line_number":46,"context_line":"                required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_4dc22d5b","line":43,"range":{"start_line":43,"start_character":37,"end_line":43,"end_character":38},"in_reply_to":"7faddb67_6bdb677b","updated":"2019-07-17 08:05:02.000000000","message":"Done","commit_id":"944181098556d3f905227f490d8ece5d9457100a"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"603c4f68c854cb041067dccf259e08089bf8f3c2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ssh_key\u0027,"},{"line_number":41,"context_line":"               default\u003dNone,"},{"line_number":42,"context_line":"               help\u003d\u0027SSH key for the Infortrend NAS server. \u0027"},{"line_number":43,"context_line":"               \u0027This is not necessary\u0027"},{"line_number":44,"context_line":"               \u0027if infortrend_nas_password is set.\u0027),"},{"line_number":45,"context_line":"    cfg.ListOpt(\u0027infortrend_share_pools\u0027,"},{"line_number":46,"context_line":"                required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_8dbfc5a8","line":43,"range":{"start_line":43,"start_character":37,"end_line":43,"end_character":38},"in_reply_to":"7faddb67_6bdb677b","updated":"2019-07-17 08:05:02.000000000","message":"Done","commit_id":"944181098556d3f905227f490d8ece5d9457100a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a7f6b9b5993cc4d86d3259ec47309cbf01d9b219","unresolved":false,"context_lines":[{"line_number":26,"context_line":"infortrend_nas_opts \u003d ["},{"line_number":27,"context_line":"    cfg.HostAddressOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"                       required\u003dTrue,"},{"line_number":29,"context_line":"                       help\u003d\u0027Infortrend NAS IP. \u0027"},{"line_number":30,"context_line":"                       \u0027Infortrend NAS IP for management.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_user\u0027,"},{"line_number":32,"context_line":"               default\u003d\u0027manila\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_5fefd3af","line":29,"range":{"start_line":29,"start_character":29,"end_line":29,"end_character":47},"updated":"2019-07-23 21:56:07.000000000","message":"You can remove this; it\u0027s repeated.","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"16cb94a3e95b202b2e9cd053651b1009f9624613","unresolved":false,"context_lines":[{"line_number":26,"context_line":"infortrend_nas_opts \u003d ["},{"line_number":27,"context_line":"    cfg.HostAddressOpt(\u0027infortrend_nas_ip\u0027,"},{"line_number":28,"context_line":"                       required\u003dTrue,"},{"line_number":29,"context_line":"                       help\u003d\u0027Infortrend NAS IP. \u0027"},{"line_number":30,"context_line":"                       \u0027Infortrend NAS IP for management.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_user\u0027,"},{"line_number":32,"context_line":"               default\u003d\u0027manila\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_87e5fdde","line":29,"range":{"start_line":29,"start_character":29,"end_line":29,"end_character":47},"in_reply_to":"7faddb67_5fefd3af","updated":"2019-07-24 03:36:32.000000000","message":"Done","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a7f6b9b5993cc4d86d3259ec47309cbf01d9b219","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               default\u003dNone,"},{"line_number":36,"context_line":"               secret\u003dTrue,"},{"line_number":37,"context_line":"               help\u003d\u0027Password for the Infortrend NAS server. \u0027"},{"line_number":38,"context_line":"               \u0027This is not necessary\u0027"},{"line_number":39,"context_line":"               \u0027if infortrend_nas_ssh_key is set.\u0027),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ssh_key\u0027,"},{"line_number":41,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_1f2f1bf7","line":38,"range":{"start_line":38,"start_character":37,"end_line":38,"end_character":38},"updated":"2019-07-23 21:56:07.000000000","message":"missing space","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"16cb94a3e95b202b2e9cd053651b1009f9624613","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               default\u003dNone,"},{"line_number":36,"context_line":"               secret\u003dTrue,"},{"line_number":37,"context_line":"               help\u003d\u0027Password for the Infortrend NAS server. \u0027"},{"line_number":38,"context_line":"               \u0027This is not necessary\u0027"},{"line_number":39,"context_line":"               \u0027if infortrend_nas_ssh_key is set.\u0027),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027infortrend_nas_ssh_key\u0027,"},{"line_number":41,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_c7dbf51e","line":38,"range":{"start_line":38,"start_character":37,"end_line":38,"end_character":38},"in_reply_to":"7faddb67_1f2f1bf7","updated":"2019-07-24 03:36:32.000000000","message":"Done","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a7f6b9b5993cc4d86d3259ec47309cbf01d9b219","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               \u0027if infortrend_nas_password is set.\u0027),"},{"line_number":45,"context_line":"    cfg.ListOpt(\u0027infortrend_share_pools\u0027,"},{"line_number":46,"context_line":"                required\u003dTrue,"},{"line_number":47,"context_line":"                help\u003d\u0027Infortrend nas pool name list. \u0027"},{"line_number":48,"context_line":"                \u0027It is separated by comma.\u0027),"},{"line_number":49,"context_line":"    cfg.ListOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":50,"context_line":"                required\u003dTrue,"},{"line_number":51,"context_line":"                help\u003d\u0027Infortrend channels for file service. \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_5f44b3b7","line":48,"range":{"start_line":47,"start_character":22,"end_line":48,"end_character":42},"updated":"2019-07-23 21:56:07.000000000","message":"suggestion:\n\n\"Comma separated list of Infortrend NAS pools.\"","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"16cb94a3e95b202b2e9cd053651b1009f9624613","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               \u0027if infortrend_nas_password is set.\u0027),"},{"line_number":45,"context_line":"    cfg.ListOpt(\u0027infortrend_share_pools\u0027,"},{"line_number":46,"context_line":"                required\u003dTrue,"},{"line_number":47,"context_line":"                help\u003d\u0027Infortrend nas pool name list. \u0027"},{"line_number":48,"context_line":"                \u0027It is separated by comma.\u0027),"},{"line_number":49,"context_line":"    cfg.ListOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":50,"context_line":"                required\u003dTrue,"},{"line_number":51,"context_line":"                help\u003d\u0027Infortrend channels for file service. \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_07c4ad3f","line":48,"range":{"start_line":47,"start_character":22,"end_line":48,"end_character":42},"in_reply_to":"7faddb67_5f44b3b7","updated":"2019-07-24 03:36:32.000000000","message":"Done","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a7f6b9b5993cc4d86d3259ec47309cbf01d9b219","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                \u0027It is separated by comma.\u0027),"},{"line_number":49,"context_line":"    cfg.ListOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":50,"context_line":"                required\u003dTrue,"},{"line_number":51,"context_line":"                help\u003d\u0027Infortrend channels for file service. \u0027"},{"line_number":52,"context_line":"                \u0027It is separated by comma.\u0027),"},{"line_number":53,"context_line":"    cfg.IntOpt(\u0027infortrend_ssh_timeout\u0027,"},{"line_number":54,"context_line":"               default\u003d30,"},{"line_number":55,"context_line":"               help\u003d\u0027SSH timeout in seconds.\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_bf0cc794","line":52,"range":{"start_line":51,"start_character":22,"end_line":52,"end_character":42},"updated":"2019-07-23 21:56:07.000000000","message":"suggestion:\n\n\"Comma separated list of Infortrend channels.\"","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"16cb94a3e95b202b2e9cd053651b1009f9624613","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                \u0027It is separated by comma.\u0027),"},{"line_number":49,"context_line":"    cfg.ListOpt(\u0027infortrend_share_channels\u0027,"},{"line_number":50,"context_line":"                required\u003dTrue,"},{"line_number":51,"context_line":"                help\u003d\u0027Infortrend channels for file service. \u0027"},{"line_number":52,"context_line":"                \u0027It is separated by comma.\u0027),"},{"line_number":53,"context_line":"    cfg.IntOpt(\u0027infortrend_ssh_timeout\u0027,"},{"line_number":54,"context_line":"               default\u003d30,"},{"line_number":55,"context_line":"               help\u003d\u0027SSH timeout in seconds.\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_27c1a92f","line":52,"range":{"start_line":51,"start_character":22,"end_line":52,"end_character":42},"in_reply_to":"7faddb67_bf0cc794","updated":"2019-07-24 03:36:32.000000000","message":"Done","commit_id":"7e42277a3e6cb9111538cb43e7e10f2c506eaa97"}],"manila/share/drivers/infortrend/infortrend_nas.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_46c6306a","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2019-06-03 23:05:16.000000000","message":"2019","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_259be972","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"9fb8cfa7_46c6306a","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        path \u003d self.pool_dict[pool_name][\u0027path\u0027]"},{"line_number":338,"context_line":"        command_line \u003d [\u0027pagelist\u0027, \u0027folder\u0027, path]"},{"line_number":339,"context_line":"        rc, subfolders \u003d self._execute(command_line)"},{"line_number":340,"context_line":"        for subfolder in subfolders:"},{"line_number":341,"context_line":"            if subfolder[\u0027name\u0027] \u003d\u003d share_name:"},{"line_number":342,"context_line":"                return True"},{"line_number":343,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_061918d6","line":340,"updated":"2019-06-03 23:05:16.000000000","message":"nit: you can use the any() function here:\n\n    return any(subfolder[\u0027name\u0027] \u003d\u003d share_name for subfolder in subfolders)","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        path \u003d self.pool_dict[pool_name][\u0027path\u0027]"},{"line_number":338,"context_line":"        command_line \u003d [\u0027pagelist\u0027, \u0027folder\u0027, path]"},{"line_number":339,"context_line":"        rc, subfolders \u003d self._execute(command_line)"},{"line_number":340,"context_line":"        for subfolder in subfolders:"},{"line_number":341,"context_line":"            if subfolder[\u0027name\u0027] \u003d\u003d share_name:"},{"line_number":342,"context_line":"                return True"},{"line_number":343,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_c589ad26","line":340,"in_reply_to":"9fb8cfa7_061918d6","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":445,"context_line":"    def _check_user_exist(self, user_name):"},{"line_number":446,"context_line":"        command_line \u003d [\u0027useradmin\u0027, \u0027user\u0027, \u0027list\u0027]"},{"line_number":447,"context_line":"        rc, user_list \u003d self._execute(command_line)"},{"line_number":448,"context_line":"        for user in user_list:"},{"line_number":449,"context_line":"            if user[\u0027Name\u0027] \u003d\u003d user_name:"},{"line_number":450,"context_line":"                return True"},{"line_number":451,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_66557450","line":448,"updated":"2019-06-03 23:05:16.000000000","message":"nit: you can use the any() function here as well:\n    return any(user[\u0027name\u0027] \u003d\u003d user_name for user in user_list)","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":445,"context_line":"    def _check_user_exist(self, user_name):"},{"line_number":446,"context_line":"        command_line \u003d [\u0027useradmin\u0027, \u0027user\u0027, \u0027list\u0027]"},{"line_number":447,"context_line":"        rc, user_list \u003d self._execute(command_line)"},{"line_number":448,"context_line":"        for user in user_list:"},{"line_number":449,"context_line":"            if user[\u0027Name\u0027] \u003d\u003d user_name:"},{"line_number":450,"context_line":"                return True"},{"line_number":451,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_e58e312d","line":448,"in_reply_to":"9fb8cfa7_66557450","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":630,"context_line":"        return ip, folder_name"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"    def _check_channel_ip(self, channel_ip):"},{"line_number":633,"context_line":"        for ch, ip in self.channel_dict.items():"},{"line_number":634,"context_line":"            if ip \u003d\u003d channel_ip:"},{"line_number":635,"context_line":"                return True"},{"line_number":636,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_868508b0","line":633,"updated":"2019-06-03 23:05:16.000000000","message":"nit: you can use any function here as well:\n    return any(ip \u003d\u003d channel_ip for ip in self.channel_dict.values())\n\nNote that you\u0027re not using the dict keys at all, so you can iterate just over the values.","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":630,"context_line":"        return ip, folder_name"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"    def _check_channel_ip(self, channel_ip):"},{"line_number":633,"context_line":"        for ch, ip in self.channel_dict.items():"},{"line_number":634,"context_line":"            if ip \u003d\u003d channel_ip:"},{"line_number":635,"context_line":"                return True"},{"line_number":636,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_8583b504","line":633,"in_reply_to":"9fb8cfa7_868508b0","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3144568775b596b633bda66a03659646b41cd2b3","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            LOG.warning(\u0027Share [%(share_name)s] does not exist.\u0027, {"},{"line_number":644,"context_line":"                \u0027share_name\u0027: share_name})"},{"line_number":645,"context_line":"            return"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        LOG.info(\u0027Successfully Unmanaged Share [%(share)s].\u0027, {"},{"line_number":648,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_e630840a","line":646,"updated":"2019-06-03 23:07:03.000000000","message":"Shouldn\u0027t you do something here to actually unmanage the share?\nSeems that it\u0027s just getting a share and checking if it exists.","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            LOG.warning(\u0027Share [%(share_name)s] does not exist.\u0027, {"},{"line_number":644,"context_line":"                \u0027share_name\u0027: share_name})"},{"line_number":645,"context_line":"            return"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        LOG.info(\u0027Successfully Unmanaged Share [%(share)s].\u0027, {"},{"line_number":648,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_457dbd1a","line":646,"in_reply_to":"9fb8cfa7_093369ad","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            LOG.warning(\u0027Share [%(share_name)s] does not exist.\u0027, {"},{"line_number":644,"context_line":"                \u0027share_name\u0027: share_name})"},{"line_number":645,"context_line":"            return"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        LOG.info(\u0027Successfully Unmanaged Share [%(share)s].\u0027, {"},{"line_number":648,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_a588391f","line":646,"in_reply_to":"9fb8cfa7_e630840a","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"5429bc759b79bcfa83ca506af81bb229286c5a89","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            LOG.warning(\u0027Share [%(share_name)s] does not exist.\u0027, {"},{"line_number":644,"context_line":"                \u0027share_name\u0027: share_name})"},{"line_number":645,"context_line":"            return"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        LOG.info(\u0027Successfully Unmanaged Share [%(share)s].\u0027, {"},{"line_number":648,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_093369ad","line":646,"in_reply_to":"9fb8cfa7_e630840a","updated":"2019-06-03 23:47:29.000000000","message":"Oops sorry, my mistake. Unmanage indeed doesn\u0027t need any operation.","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                break"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        if len(pool_list) !\u003d 0:"},{"line_number":179,"context_line":"            msg \u003d _(\u0027Please create %(pool_list)s pool in advance!\u0027) % {"},{"line_number":180,"context_line":"                \u0027pool_list\u0027: pool_list}"},{"line_number":181,"context_line":"            LOG.error(msg)"},{"line_number":182,"context_line":"            raise exception.InfortrendNASException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e59e31b7","line":179,"range":{"start_line":179,"start_character":49,"end_line":179,"end_character":53},"updated":"2019-06-18 21:42:05.000000000","message":"pool/s","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                break"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        if len(pool_list) !\u003d 0:"},{"line_number":179,"context_line":"            msg \u003d _(\u0027Please create %(pool_list)s pool in advance!\u0027) % {"},{"line_number":180,"context_line":"                \u0027pool_list\u0027: pool_list}"},{"line_number":181,"context_line":"            LOG.error(msg)"},{"line_number":182,"context_line":"            raise exception.InfortrendNASException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_822f5e3d","line":179,"range":{"start_line":179,"start_character":49,"end_line":179,"end_character":53},"in_reply_to":"9fb8cfa7_e59e31b7","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":253,"context_line":"        folder_name \u003d self._extract_lv_name(pool_data)"},{"line_number":254,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":255,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":256,"context_line":"        share_path \u003d pool_data[\u0027path\u0027] + share_name"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        command_line \u003d [\u0027folder\u0027, \u0027options\u0027, pool_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_258d297b","line":255,"range":{"start_line":255,"start_character":21,"end_line":255,"end_character":55},"updated":"2019-06-18 21:42:05.000000000","message":"please use share[\u0027id\u0027]\n\n \n\nshare[\u0027share_id\u0027] is internal and user facing as a share, but the representation of that share in the Manila database is as a Share Instance. A user\u0027s share can have multiple share instances, which will come into play when they use share migration or share replication.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":253,"context_line":"        folder_name \u003d self._extract_lv_name(pool_data)"},{"line_number":254,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":255,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":256,"context_line":"        share_path \u003d pool_data[\u0027path\u0027] + share_name"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        command_line \u003d [\u0027folder\u0027, \u0027options\u0027, pool_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_a232a2a5","line":255,"range":{"start_line":255,"start_character":21,"end_line":255,"end_character":55},"in_reply_to":"9fb8cfa7_258d297b","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0981b532fe2471665f2a9a77f83bb2e3f12669c6","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            \u0027share_name\u0027: share_name,"},{"line_number":277,"context_line":"        }"},{"line_number":278,"context_line":"        self._check_channels_status()"},{"line_number":279,"context_line":"        for ch in sorted(self.channel_dict.keys()):"},{"line_number":280,"context_line":"            ip \u003d self.channel_dict[ch]"},{"line_number":281,"context_line":"            if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":282,"context_line":"                location.append("}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e50871da","line":279,"range":{"start_line":279,"start_character":12,"end_line":279,"end_character":51},"updated":"2019-06-18 21:42:05.000000000","message":"Is there any way to tag any of these channels as a \"Preferred\" path? \n\nWe support export location metadata in manila, and you can set one or more export locations as \"preferred\" locations in case there is a direct or a high bandwidth network path. See an example export location structure here: https://opendev.org/openstack/manila/src/commit/1ce9a33f1741cebad5506e1001149dabd7162fc0/manila/share/driver.py#L477","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            \u0027share_name\u0027: share_name,"},{"line_number":277,"context_line":"        }"},{"line_number":278,"context_line":"        self._check_channels_status()"},{"line_number":279,"context_line":"        for ch in sorted(self.channel_dict.keys()):"},{"line_number":280,"context_line":"            ip \u003d self.channel_dict[ch]"},{"line_number":281,"context_line":"            if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":282,"context_line":"                location.append("}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_02960e4d","line":279,"range":{"start_line":279,"start_character":12,"end_line":279,"end_character":51},"in_reply_to":"9fb8cfa7_e50871da","updated":"2019-07-02 07:33:15.000000000","message":"The \"export location\" is metadata under snapshot , Can I use it directly?","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":321,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":322,"context_line":"        folder_name \u003d self._extract_lv_name(pool_data)"},{"line_number":323,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        if self._check_share_exist(pool_name, share_name):"},{"line_number":326,"context_line":"            command_line \u003d [\u0027folder\u0027, \u0027options\u0027, pool_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_b5a6feaa","line":323,"range":{"start_line":323,"start_character":28,"end_line":323,"end_character":36},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":321,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":322,"context_line":"        folder_name \u003d self._extract_lv_name(pool_data)"},{"line_number":323,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        if self._check_share_exist(pool_name, share_name):"},{"line_number":326,"context_line":"            command_line \u003d [\u0027folder\u0027, \u0027options\u0027, pool_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2291d252","line":323,"range":{"start_line":323,"start_character":28,"end_line":323,"end_character":36},"in_reply_to":"9fb8cfa7_b5a6feaa","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                \u0027share_name\u0027: share_name})"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        LOG.info(\u0027Delete Share [%(share)s] completed.\u0027, {"},{"line_number":334,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def _check_share_exist(self, pool_name, share_name):"},{"line_number":337,"context_line":"        path \u003d self.pool_dict[pool_name][\u0027path\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_75bac6c0","line":334,"range":{"start_line":334,"start_character":28,"end_line":334,"end_character":36},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                \u0027share_name\u0027: share_name})"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        LOG.info(\u0027Delete Share [%(share)s] completed.\u0027, {"},{"line_number":334,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def _check_share_exist(self, pool_name, share_name):"},{"line_number":337,"context_line":"        path \u003d self.pool_dict[pool_name][\u0027path\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_c29b1670","line":334,"range":{"start_line":334,"start_character":28,"end_line":334,"end_character":36},"in_reply_to":"9fb8cfa7_75bac6c0","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":343,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":344,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":345,"context_line":"            self._clear_access(share, share_server)"},{"line_number":346,"context_line":"            for access in access_rules:"},{"line_number":347,"context_line":"                self.allow_access(share, access, share_server)"},{"line_number":348,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_d5a13297","line":345,"range":{"start_line":345,"start_character":12,"end_line":345,"end_character":51},"updated":"2019-06-20 17:58:36.000000000","message":"Instead of evicting all the clients, is there a way you can get the current access rules on the backend and evict only those that are not present in \"access_rules\"?\n\nEvicting all clients like this can be disruptive to clients!","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":343,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":344,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":345,"context_line":"            self._clear_access(share, share_server)"},{"line_number":346,"context_line":"            for access in access_rules:"},{"line_number":347,"context_line":"                self.allow_access(share, access, share_server)"},{"line_number":348,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_59ddd83e","line":345,"range":{"start_line":345,"start_character":12,"end_line":345,"end_character":51},"in_reply_to":"9fb8cfa7_d5a13297","updated":"2019-07-02 07:33:15.000000000","message":"I will submit at 7/4 Thu.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":344,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":345,"context_line":"            self._clear_access(share, share_server)"},{"line_number":346,"context_line":"            for access in access_rules:"},{"line_number":347,"context_line":"                self.allow_access(share, access, share_server)"},{"line_number":348,"context_line":"        else:"},{"line_number":349,"context_line":"            for access in delete_rules:"},{"line_number":350,"context_line":"                self.deny_access(share, access, share_server)"},{"line_number":351,"context_line":"            for access in add_rules:"},{"line_number":352,"context_line":"                self.allow_access(share, access, share_server)"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _clear_access(self, share, share_server\u003dNone):"},{"line_number":355,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_15982a68","line":352,"range":{"start_line":346,"start_character":12,"end_line":352,"end_character":62},"updated":"2019-06-20 17:58:36.000000000","message":"Can you please handle errors here?\n\nYou can return a model object to the share manager, and set individual access rules to \"error\". This will provide a good user experience. Please take a look at [1]\n\n\nYou can try...except your exceptions, if an exception occurs for a particular rule, you can pass a dictionary with the rule_id and the state set to \"error\"\n\n[1] https://github.com/openstack/manila/blob/master/manila/share/driver.py#L777","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":344,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":345,"context_line":"            self._clear_access(share, share_server)"},{"line_number":346,"context_line":"            for access in access_rules:"},{"line_number":347,"context_line":"                self.allow_access(share, access, share_server)"},{"line_number":348,"context_line":"        else:"},{"line_number":349,"context_line":"            for access in delete_rules:"},{"line_number":350,"context_line":"                self.deny_access(share, access, share_server)"},{"line_number":351,"context_line":"            for access in add_rules:"},{"line_number":352,"context_line":"                self.allow_access(share, access, share_server)"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _clear_access(self, share, share_server\u003dNone):"},{"line_number":355,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_f9e7ec10","line":352,"range":{"start_line":346,"start_character":12,"end_line":352,"end_character":62},"in_reply_to":"9fb8cfa7_15982a68","updated":"2019-07-02 07:33:15.000000000","message":"I will submit at 7/4 Thu.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    def allow_access(self, share, access, share_server\u003dNone):"},{"line_number":382,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":383,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":384,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":385,"context_line":"        share_path \u003d pool_data[\u0027path\u0027] + share_name"},{"line_number":386,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":387,"context_line":"        access_type \u003d access[\u0027access_type\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_758c0635","line":384,"range":{"start_line":384,"start_character":28,"end_line":384,"end_character":36},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    def allow_access(self, share, access, share_server\u003dNone):"},{"line_number":382,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":383,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":384,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":385,"context_line":"        share_path \u003d pool_data[\u0027path\u0027] + share_name"},{"line_number":386,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":387,"context_line":"        access_type \u003d access[\u0027access_type\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_7929bc87","line":384,"range":{"start_line":384,"start_character":28,"end_line":384,"end_character":36},"in_reply_to":"9fb8cfa7_758c0635","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":450,"context_line":"    def _check_access_legal(self, share_proto, access_type):"},{"line_number":451,"context_line":"        msg \u003d None"},{"line_number":452,"context_line":"        if share_proto \u003d\u003d \u0027cifs\u0027 and access_type !\u003d \u0027user\u0027:"},{"line_number":453,"context_line":"            msg \u003d _(\u0027Infortrend CIFS share can only access by USER.\u0027)"},{"line_number":454,"context_line":"        elif share_proto \u003d\u003d \u0027nfs\u0027 and access_type !\u003d \u0027ip\u0027:"},{"line_number":455,"context_line":"            msg \u003d _(\u0027Infortrend NFS share can only access by IP.\u0027)"},{"line_number":456,"context_line":"        elif share_proto not in (\u0027nfs\u0027, \u0027cifs\u0027):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_75d5e61a","line":453,"range":{"start_line":453,"start_character":43,"end_line":453,"end_character":61},"updated":"2019-06-20 17:58:36.000000000","message":"\"only supports USER access type\"","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":450,"context_line":"    def _check_access_legal(self, share_proto, access_type):"},{"line_number":451,"context_line":"        msg \u003d None"},{"line_number":452,"context_line":"        if share_proto \u003d\u003d \u0027cifs\u0027 and access_type !\u003d \u0027user\u0027:"},{"line_number":453,"context_line":"            msg \u003d _(\u0027Infortrend CIFS share can only access by USER.\u0027)"},{"line_number":454,"context_line":"        elif share_proto \u003d\u003d \u0027nfs\u0027 and access_type !\u003d \u0027ip\u0027:"},{"line_number":455,"context_line":"            msg \u003d _(\u0027Infortrend NFS share can only access by IP.\u0027)"},{"line_number":456,"context_line":"        elif share_proto not in (\u0027nfs\u0027, \u0027cifs\u0027):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_19e3e006","line":453,"range":{"start_line":453,"start_character":43,"end_line":453,"end_character":61},"in_reply_to":"9fb8cfa7_75d5e61a","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        if share_proto \u003d\u003d \u0027cifs\u0027 and access_type !\u003d \u0027user\u0027:"},{"line_number":453,"context_line":"            msg \u003d _(\u0027Infortrend CIFS share can only access by USER.\u0027)"},{"line_number":454,"context_line":"        elif share_proto \u003d\u003d \u0027nfs\u0027 and access_type !\u003d \u0027ip\u0027:"},{"line_number":455,"context_line":"            msg \u003d _(\u0027Infortrend NFS share can only access by IP.\u0027)"},{"line_number":456,"context_line":"        elif share_proto not in (\u0027nfs\u0027, \u0027cifs\u0027):"},{"line_number":457,"context_line":"            msg \u003d _(\u0027Unsupported protocol [%s].\u0027) % share_proto"},{"line_number":458,"context_line":"        return msg"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_95ef3ae8","line":455,"range":{"start_line":455,"start_character":42,"end_line":455,"end_character":64},"updated":"2019-06-20 17:58:36.000000000","message":"only supports IP access type","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        if share_proto \u003d\u003d \u0027cifs\u0027 and access_type !\u003d \u0027user\u0027:"},{"line_number":453,"context_line":"            msg \u003d _(\u0027Infortrend CIFS share can only access by USER.\u0027)"},{"line_number":454,"context_line":"        elif share_proto \u003d\u003d \u0027nfs\u0027 and access_type !\u003d \u0027ip\u0027:"},{"line_number":455,"context_line":"            msg \u003d _(\u0027Infortrend NFS share can only access by IP.\u0027)"},{"line_number":456,"context_line":"        elif share_proto not in (\u0027nfs\u0027, \u0027cifs\u0027):"},{"line_number":457,"context_line":"            msg \u003d _(\u0027Unsupported protocol [%s].\u0027) % share_proto"},{"line_number":458,"context_line":"        return msg"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_b9edf4f0","line":455,"range":{"start_line":455,"start_character":42,"end_line":455,"end_character":64},"in_reply_to":"9fb8cfa7_95ef3ae8","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        elif share_proto \u003d\u003d \u0027nfs\u0027 and access_type !\u003d \u0027ip\u0027:"},{"line_number":455,"context_line":"            msg \u003d _(\u0027Infortrend NFS share can only access by IP.\u0027)"},{"line_number":456,"context_line":"        elif share_proto not in (\u0027nfs\u0027, \u0027cifs\u0027):"},{"line_number":457,"context_line":"            msg \u003d _(\u0027Unsupported protocol [%s].\u0027) % share_proto"},{"line_number":458,"context_line":"        return msg"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def deny_access(self, share, access, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_d520524c","line":457,"range":{"start_line":457,"start_character":33,"end_line":457,"end_character":41},"updated":"2019-06-20 17:58:36.000000000","message":"share protocol","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        elif share_proto \u003d\u003d \u0027nfs\u0027 and access_type !\u003d \u0027ip\u0027:"},{"line_number":455,"context_line":"            msg \u003d _(\u0027Infortrend NFS share can only access by IP.\u0027)"},{"line_number":456,"context_line":"        elif share_proto not in (\u0027nfs\u0027, \u0027cifs\u0027):"},{"line_number":457,"context_line":"            msg \u003d _(\u0027Unsupported protocol [%s].\u0027) % share_proto"},{"line_number":458,"context_line":"        return msg"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def deny_access(self, share, access, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_d9e8e8df","line":457,"range":{"start_line":457,"start_character":33,"end_line":457,"end_character":41},"in_reply_to":"9fb8cfa7_d520524c","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":457,"context_line":"            msg \u003d _(\u0027Unsupported protocol [%s].\u0027) % share_proto"},{"line_number":458,"context_line":"        return msg"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def deny_access(self, share, access, share_server\u003dNone):"},{"line_number":461,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":462,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":463,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_55a0e2a5","line":460,"range":{"start_line":460,"start_character":8,"end_line":460,"end_character":19},"updated":"2019-06-20 17:58:36.000000000","message":"please mark this a private method:\n\ndef _deny_access","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":457,"context_line":"            msg \u003d _(\u0027Unsupported protocol [%s].\u0027) % share_proto"},{"line_number":458,"context_line":"        return msg"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def deny_access(self, share, access, share_server\u003dNone):"},{"line_number":461,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":462,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":463,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_79bd3cd6","line":460,"range":{"start_line":460,"start_character":8,"end_line":460,"end_character":19},"in_reply_to":"9fb8cfa7_55a0e2a5","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":460,"context_line":"    def deny_access(self, share, access, share_server\u003dNone):"},{"line_number":461,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":462,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":463,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":464,"context_line":"        share_path \u003d pool_data[\u0027path\u0027] + share_name"},{"line_number":465,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":466,"context_line":"        access_type \u003d access[\u0027access_type\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_15aa6a84","line":463,"range":{"start_line":463,"start_character":28,"end_line":463,"end_character":36},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":460,"context_line":"    def deny_access(self, share, access, share_server\u003dNone):"},{"line_number":461,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":462,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":463,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":464,"context_line":"        share_path \u003d pool_data[\u0027path\u0027] + share_name"},{"line_number":465,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":466,"context_line":"        access_type \u003d access[\u0027access_type\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_99c03052","line":463,"range":{"start_line":463,"start_character":28,"end_line":463,"end_character":36},"in_reply_to":"9fb8cfa7_15aa6a84","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":506,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":507,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":508,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":509,"context_line":"        return self._export_location("},{"line_number":510,"context_line":"            share_name, share_proto, pool_data[\u0027path\u0027])"},{"line_number":511,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_150eeae4","line":508,"range":{"start_line":508,"start_character":28,"end_line":508,"end_character":36},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":506,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":507,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":508,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":509,"context_line":"        return self._export_location("},{"line_number":510,"context_line":"            share_name, share_proto, pool_data[\u0027path\u0027])"},{"line_number":511,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_39b3440c","line":508,"range":{"start_line":508,"start_character":28,"end_line":508,"end_character":36},"in_reply_to":"9fb8cfa7_150eeae4","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":512,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"},{"line_number":513,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":514,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":515,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":516,"context_line":"        self._set_share_size(pool_data[\u0027id\u0027], pool_name, share_name, new_size)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        LOG.info(\u0027Successfully Extend Share [%(share)s] \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_750726cb","line":515,"range":{"start_line":515,"start_character":28,"end_line":515,"end_character":36},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":512,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"},{"line_number":513,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":514,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":515,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":516,"context_line":"        self._set_share_size(pool_data[\u0027id\u0027], pool_name, share_name, new_size)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        LOG.info(\u0027Successfully Extend Share [%(share)s] \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_f9d04c21","line":515,"range":{"start_line":515,"start_character":28,"end_line":515,"end_character":36},"in_reply_to":"9fb8cfa7_750726cb","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        LOG.info(\u0027Successfully Extend Share [%(share)s] \u0027"},{"line_number":519,"context_line":"                 \u0027to size [%(new_size)s G].\u0027, {"},{"line_number":520,"context_line":"                     \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":521,"context_line":"                     \u0027new_size\u0027: new_size})"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def shrink_share(self, share, new_size, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_956c1a9d","line":520,"range":{"start_line":520,"start_character":37,"end_line":520,"end_character":45},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        LOG.info(\u0027Successfully Extend Share [%(share)s] \u0027"},{"line_number":519,"context_line":"                 \u0027to size [%(new_size)s G].\u0027, {"},{"line_number":520,"context_line":"                     \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":521,"context_line":"                     \u0027new_size\u0027: new_size})"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def shrink_share(self, share, new_size, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_19cc4087","line":520,"range":{"start_line":520,"start_character":37,"end_line":520,"end_character":45},"in_reply_to":"9fb8cfa7_956c1a9d","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":523,"context_line":"    def shrink_share(self, share, new_size, share_server\u003dNone):"},{"line_number":524,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":525,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":526,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":527,"context_line":"        folder_name \u003d self._extract_lv_name(pool_data)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        command_line \u003d [\u0027fquota\u0027, \u0027status\u0027, pool_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_7562c6af","line":526,"range":{"start_line":526,"start_character":28,"end_line":526,"end_character":36},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":523,"context_line":"    def shrink_share(self, share, new_size, share_server\u003dNone):"},{"line_number":524,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":525,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":526,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":527,"context_line":"        folder_name \u003d self._extract_lv_name(pool_data)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        command_line \u003d [\u0027fquota\u0027, \u0027status\u0027, pool_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_b9c65467","line":526,"range":{"start_line":526,"start_character":28,"end_line":526,"end_character":36},"in_reply_to":"9fb8cfa7_7562c6af","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        LOG.info(\u0027Successfully Shrink Share [%(share)s] \u0027"},{"line_number":544,"context_line":"                 \u0027to size [%(new_size)s G].\u0027, {"},{"line_number":545,"context_line":"                     \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":546,"context_line":"                     \u0027new_size\u0027: new_size})"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def manage_existing(self, share, driver_options):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_f56d5699","line":545,"range":{"start_line":545,"start_character":37,"end_line":545,"end_character":45},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        LOG.info(\u0027Successfully Shrink Share [%(share)s] \u0027"},{"line_number":544,"context_line":"                 \u0027to size [%(new_size)s G].\u0027, {"},{"line_number":545,"context_line":"                     \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":546,"context_line":"                     \u0027new_size\u0027: new_size})"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def manage_existing(self, share, driver_options):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_d9c1c84f","line":545,"range":{"start_line":545,"start_character":37,"end_line":545,"end_character":45},"in_reply_to":"9fb8cfa7_f56d5699","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":552,"context_line":"        volume_name \u003d self._extract_lv_name(pool_data)"},{"line_number":553,"context_line":"        input_location \u003d share[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":554,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        ch_ip, folder_name \u003d self._parse_location(input_location, share_proto)"},{"line_number":557,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_0a50095e","line":554,"range":{"start_line":554,"start_character":28,"end_line":554,"end_character":36},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":552,"context_line":"        volume_name \u003d self._extract_lv_name(pool_data)"},{"line_number":553,"context_line":"        input_location \u003d share[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":554,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        ch_ip, folder_name \u003d self._parse_location(input_location, share_proto)"},{"line_number":557,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_99a590b7","line":554,"range":{"start_line":554,"start_character":28,"end_line":554,"end_character":36},"in_reply_to":"9fb8cfa7_0a50095e","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":631,"context_line":""},{"line_number":632,"context_line":"    def unmanage(self, share):"},{"line_number":633,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":634,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"        if not self._check_share_exist(pool_name, share_name):"},{"line_number":637,"context_line":"            LOG.warning(\u0027Share [%(share_name)s] does not exist.\u0027, {"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2a82adc9","line":634,"range":{"start_line":634,"start_character":28,"end_line":634,"end_character":36},"updated":"2019-06-20 17:58:36.000000000","message":"id","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":631,"context_line":""},{"line_number":632,"context_line":"    def unmanage(self, share):"},{"line_number":633,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":634,"context_line":"        share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"        if not self._check_share_exist(pool_name, share_name):"},{"line_number":637,"context_line":"            LOG.warning(\u0027Share [%(share_name)s] does not exist.\u0027, {"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_39a8248a","line":634,"range":{"start_line":634,"start_character":28,"end_line":634,"end_character":36},"in_reply_to":"9fb8cfa7_2a82adc9","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"1c20c176c5ea0c16bd6a673779ed9291fe0c5e55","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def bi_to_gi(bi_size):"},{"line_number":32,"context_line":"    return bi_size / units.Gi"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_940d3b39","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":12},"updated":"2019-07-05 06:05:04.000000000","message":"If this function is not used outside this module, I think it\u0027s better if it\u0027s called _bi_to_gi (notice the leading underscore) to mark it as \"private\".","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def bi_to_gi(bi_size):"},{"line_number":32,"context_line":"    return bi_size / units.Gi"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_c346427d","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":12},"in_reply_to":"7faddb67_940d3b39","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"1c20c176c5ea0c16bd6a673779ed9291fe0c5e55","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def __init__(self, nas_ip, username, password, ssh_key,"},{"line_number":38,"context_line":"                 timeout, pool_dict, channel_dict):"},{"line_number":39,"context_line":"        self.nas_ip \u003d nas_ip"},{"line_number":40,"context_line":"        self.port \u003d 22"},{"line_number":41,"context_line":"        self.username \u003d username"},{"line_number":42,"context_line":"        self.password \u003d password"},{"line_number":43,"context_line":"        self.ssh_key \u003d ssh_key"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_343b27d2","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":22},"updated":"2019-07-05 06:05:04.000000000","message":"As I see this is a constant (SSH port) and used only once when creating the SSHPool, would move to a class-level member (e.g. _SSH_PORT).","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def __init__(self, nas_ip, username, password, ssh_key,"},{"line_number":38,"context_line":"                 timeout, pool_dict, channel_dict):"},{"line_number":39,"context_line":"        self.nas_ip \u003d nas_ip"},{"line_number":40,"context_line":"        self.port \u003d 22"},{"line_number":41,"context_line":"        self.username \u003d username"},{"line_number":42,"context_line":"        self.password \u003d password"},{"line_number":43,"context_line":"        self.ssh_key \u003d ssh_key"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_e349fe8a","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":22},"in_reply_to":"7faddb67_343b27d2","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"1c20c176c5ea0c16bd6a673779ed9291fe0c5e55","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        return self._parser(cli_out)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @manila_utils.retry(exception\u003dexception.InfortrendNASException,"},{"line_number":63,"context_line":"                        interval\u003d3,"},{"line_number":64,"context_line":"                        retries\u003d5)"},{"line_number":65,"context_line":"    def _ssh_execute(self, commands):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_34aec7e7","line":62,"updated":"2019-07-05 06:05:04.000000000","message":"I see that on L#75 you remove self.ssh and recreate it, so it should take care of a case where after an exception your SSH session was left in a \"limbo\" state. However - are you sure this is enough?\nMy approach to this would be to recreate the a local ssh attribute from sshpool anew, anyway.","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        return self._parser(cli_out)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @manila_utils.retry(exception\u003dexception.InfortrendNASException,"},{"line_number":63,"context_line":"                        interval\u003d3,"},{"line_number":64,"context_line":"                        retries\u003d5)"},{"line_number":65,"context_line":"    def _ssh_execute(self, commands):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_83604a03","line":62,"in_reply_to":"7faddb67_34aec7e7","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"1c20c176c5ea0c16bd6a673779ed9291fe0c5e55","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                        retries\u003d5)"},{"line_number":65,"context_line":"    def _ssh_execute(self, commands):"},{"line_number":66,"context_line":"        if not (self.sshpool and self.ssh):"},{"line_number":67,"context_line":"            self.sshpool \u003d manila_utils.SSHPool(ip\u003dself.nas_ip,"},{"line_number":68,"context_line":"                                                port\u003dself.port,"},{"line_number":69,"context_line":"                                                conn_timeout\u003dNone,"},{"line_number":70,"context_line":"                                                login\u003dself.username,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_f4626fd8","line":67,"updated":"2019-07-05 06:05:04.000000000","message":"Why create sshpool only on the first time someone is running _ssh_execute? It should be independent of usage time and already be present before.","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                        retries\u003d5)"},{"line_number":65,"context_line":"    def _ssh_execute(self, commands):"},{"line_number":66,"context_line":"        if not (self.sshpool and self.ssh):"},{"line_number":67,"context_line":"            self.sshpool \u003d manila_utils.SSHPool(ip\u003dself.nas_ip,"},{"line_number":68,"context_line":"                                                port\u003dself.port,"},{"line_number":69,"context_line":"                                                conn_timeout\u003dNone,"},{"line_number":70,"context_line":"                                                login\u003dself.username,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_435a524f","line":67,"in_reply_to":"7faddb67_f4626fd8","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"1c20c176c5ea0c16bd6a673779ed9291fe0c5e55","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        content \u003d content.replace(\"\\r\", \"\")"},{"line_number":97,"context_line":"        content \u003d content.strip()"},{"line_number":98,"context_line":"        json_string \u003d content.replace(\"\u0027\", \"\\\"\")"},{"line_number":99,"context_line":"        cli_data \u003d json_string.split(\"\\n\")[2]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if cli_data:"},{"line_number":102,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_f4902f98","line":99,"range":{"start_line":99,"start_character":19,"end_line":99,"end_character":42},"updated":"2019-07-05 06:05:04.000000000","message":"json_string.splitlines()","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        content \u003d content.replace(\"\\r\", \"\")"},{"line_number":97,"context_line":"        content \u003d content.strip()"},{"line_number":98,"context_line":"        json_string \u003d content.replace(\"\u0027\", \"\\\"\")"},{"line_number":99,"context_line":"        cli_data \u003d json_string.split(\"\\n\")[2]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if cli_data:"},{"line_number":102,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_4308122b","line":99,"range":{"start_line":99,"start_character":19,"end_line":99,"end_character":42},"in_reply_to":"7faddb67_f4902f98","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"b3860e04b764a6eb0068d10cf2c5bbb5038154ac"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        self._ensure_protocol_on(share_path, share_proto, share_name)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        LOG.info(\u0027Create Share [%(share)s] completed.\u0027, {"},{"line_number":267,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        return self._export_location("},{"line_number":270,"context_line":"            share_name, share_proto, pool_data[\u0027path\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_d4762c07","line":267,"range":{"start_line":267,"start_character":28,"end_line":267,"end_character":36},"updated":"2019-07-08 23:13:11.000000000","message":"id","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        self._ensure_protocol_on(share_path, share_proto, share_name)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        LOG.info(\u0027Create Share [%(share)s] completed.\u0027, {"},{"line_number":267,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        return self._export_location("},{"line_number":270,"context_line":"            share_name, share_proto, pool_data[\u0027path\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_5403ea0f","line":267,"range":{"start_line":267,"start_character":28,"end_line":267,"end_character":36},"in_reply_to":"7faddb67_d4762c07","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":343,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":344,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":345,"context_line":"            self._check_access(share, access_rules, share_server)"},{"line_number":346,"context_line":"            share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":347,"context_line":"            for access in access_rules:"},{"line_number":348,"context_line":"                access_type \u003d access[\u0027access_type\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_941434a2","line":345,"range":{"start_line":345,"start_character":12,"end_line":345,"end_character":65},"updated":"2019-07-08 23:13:11.000000000","message":"This method currently removes IPs or Users that have access to the share, but are not present in the \"access_rules\" list from manila. \n\nThat\u0027s good; but you\u0027re not providing access to those IPs/users in \"access_rules\" that still don\u0027t have access....\n\n\nThe following is what should be implemented:\n\n * if not (add_rules or delete_rules):\n\n   - Check backend share\u0027s access rules against the \"access_rules\" list, \n      remove any backend share\u0027s access rules for IPs/Users not in \n      access_rules\n   - Add missing \"access_rules\" to the backend","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":343,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":344,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":345,"context_line":"            self._check_access(share, access_rules, share_server)"},{"line_number":346,"context_line":"            share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":347,"context_line":"            for access in access_rules:"},{"line_number":348,"context_line":"                access_type \u003d access[\u0027access_type\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_c970a3a8","line":345,"range":{"start_line":345,"start_character":12,"end_line":345,"end_character":65},"in_reply_to":"7faddb67_941434a2","updated":"2019-07-12 09:01:48.000000000","message":"So , all I need to do is provide access for \"access_rules\",those IP/users in \"access_rules\" list,right?","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7fe29bc2adb719e460c204570c98f814308beb6","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":343,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":344,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":345,"context_line":"            self._check_access(share, access_rules, share_server)"},{"line_number":346,"context_line":"            share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":347,"context_line":"            for access in access_rules:"},{"line_number":348,"context_line":"                access_type \u003d access[\u0027access_type\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_f35c4cee","line":345,"range":{"start_line":345,"start_character":12,"end_line":345,"end_character":65},"in_reply_to":"7faddb67_c970a3a8","updated":"2019-07-13 01:51:09.000000000","message":"Yes, with this implemented, you no longer need the \"else\" portion...","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            for access in access_rules:"},{"line_number":348,"context_line":"                access_type \u003d access[\u0027access_type\u0027]"},{"line_number":349,"context_line":"                msg \u003d self._check_access_legal(share_proto, access_type)"},{"line_number":350,"context_line":"                if msg:"},{"line_number":351,"context_line":"                    LOG.warning(msg)"},{"line_number":352,"context_line":"                    access[\u0027state\u0027] \u003d \u0027error\u0027"},{"line_number":353,"context_line":"                    return access"},{"line_number":354,"context_line":"        else:"},{"line_number":355,"context_line":"            for access in delete_rules:"},{"line_number":356,"context_line":"                self._deny_access(share, access, share_server)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_34c78048","line":353,"range":{"start_line":350,"start_character":16,"end_line":353,"end_character":33},"updated":"2019-07-08 23:13:11.000000000","message":"This will just return the first access rule that has a problem... \nplease create a dictionary, like this:\n\n https://github.com/openstack/manila/blob/da4b33344c0a71e0450a21c8a32bb4535ff19ae6/manila/share/driver.py#L752","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            for access in access_rules:"},{"line_number":348,"context_line":"                access_type \u003d access[\u0027access_type\u0027]"},{"line_number":349,"context_line":"                msg \u003d self._check_access_legal(share_proto, access_type)"},{"line_number":350,"context_line":"                if msg:"},{"line_number":351,"context_line":"                    LOG.warning(msg)"},{"line_number":352,"context_line":"                    access[\u0027state\u0027] \u003d \u0027error\u0027"},{"line_number":353,"context_line":"                    return access"},{"line_number":354,"context_line":"        else:"},{"line_number":355,"context_line":"            for access in delete_rules:"},{"line_number":356,"context_line":"                self._deny_access(share, access, share_server)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_3408ae2a","line":353,"range":{"start_line":350,"start_character":16,"end_line":353,"end_character":33},"in_reply_to":"7faddb67_34c78048","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        LOG.info(\u0027Share [%(share)s] access to [%(access_to)s] \u0027"},{"line_number":436,"context_line":"                 \u0027level [%(level)s] protocol [%(share_proto)s] completed.\u0027, {"},{"line_number":437,"context_line":"                     \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":438,"context_line":"                     \u0027access_to\u0027: access_to,"},{"line_number":439,"context_line":"                     \u0027level\u0027: access_level,"},{"line_number":440,"context_line":"                     \u0027share_proto\u0027: share_proto})"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_947994fd","line":437,"range":{"start_line":437,"start_character":37,"end_line":437,"end_character":45},"updated":"2019-07-08 23:13:11.000000000","message":"id","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        LOG.info(\u0027Share [%(share)s] access to [%(access_to)s] \u0027"},{"line_number":436,"context_line":"                 \u0027level [%(level)s] protocol [%(share_proto)s] completed.\u0027, {"},{"line_number":437,"context_line":"                     \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":438,"context_line":"                     \u0027access_to\u0027: access_to,"},{"line_number":439,"context_line":"                     \u0027level\u0027: access_level,"},{"line_number":440,"context_line":"                     \u0027share_proto\u0027: share_proto})"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_6f13af5d","line":437,"range":{"start_line":437,"start_character":37,"end_line":437,"end_character":45},"in_reply_to":"7faddb67_947994fd","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        LOG.info(\u0027Share [%(share)s] deny access [%(access_to)s] \u0027"},{"line_number":505,"context_line":"                 \u0027protocol [%(share_proto)s] completed.\u0027, {"},{"line_number":506,"context_line":"                     \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":507,"context_line":"                     \u0027access_to\u0027: access_to,"},{"line_number":508,"context_line":"                     \u0027share_proto\u0027: share_proto})"},{"line_number":509,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_b47cd0eb","line":506,"range":{"start_line":506,"start_character":37,"end_line":506,"end_character":45},"updated":"2019-07-08 23:13:11.000000000","message":"id","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        LOG.info(\u0027Share [%(share)s] deny access [%(access_to)s] \u0027"},{"line_number":505,"context_line":"                 \u0027protocol [%(share_proto)s] completed.\u0027, {"},{"line_number":506,"context_line":"                     \u0027share\u0027: share[\u0027share_id\u0027],"},{"line_number":507,"context_line":"                     \u0027access_to\u0027: access_to,"},{"line_number":508,"context_line":"                     \u0027share_proto\u0027: share_proto})"},{"line_number":509,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_cf2503ad","line":506,"range":{"start_line":506,"start_character":37,"end_line":506,"end_character":45},"in_reply_to":"7faddb67_b47cd0eb","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":510,"context_line":"    def get_pool(self, share):"},{"line_number":511,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":512,"context_line":"        if not pool_name:"},{"line_number":513,"context_line":"            share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":514,"context_line":"            for pool in self.pool_dict.keys():"},{"line_number":515,"context_line":"                if self._check_share_exist(pool, share_name):"},{"line_number":516,"context_line":"                    pool_name \u003d pool"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_54831ccd","line":513,"range":{"start_line":513,"start_character":32,"end_line":513,"end_character":40},"updated":"2019-07-08 23:13:11.000000000","message":"id","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":510,"context_line":"    def get_pool(self, share):"},{"line_number":511,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":512,"context_line":"        if not pool_name:"},{"line_number":513,"context_line":"            share_name \u003d share[\u0027share_id\u0027].replace(\u0027-\u0027, \u0027\u0027)"},{"line_number":514,"context_line":"            for pool in self.pool_dict.keys():"},{"line_number":515,"context_line":"                if self._check_share_exist(pool, share_name):"},{"line_number":516,"context_line":"                    pool_name \u003d pool"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_8f370be4","line":513,"range":{"start_line":513,"start_character":32,"end_line":513,"end_character":40},"in_reply_to":"7faddb67_54831ccd","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":655,"context_line":"            return"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        LOG.info(\u0027Successfully Unmanaged Share [%(share)s].\u0027, {"},{"line_number":658,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_3468e01f","line":658,"range":{"start_line":658,"start_character":28,"end_line":658,"end_character":36},"updated":"2019-07-08 23:13:11.000000000","message":"id","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":655,"context_line":"            return"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        LOG.info(\u0027Successfully Unmanaged Share [%(share)s].\u0027, {"},{"line_number":658,"context_line":"            \u0027share\u0027: share[\u0027share_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_2f3617e8","line":658,"range":{"start_line":658,"start_character":28,"end_line":658,"end_character":36},"in_reply_to":"7faddb67_3468e01f","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"02b0bd542b98ba7e06f1c4081ac46e06223e7731","unresolved":false,"context_lines":[{"line_number":356,"context_line":"                msg \u003d self._check_access_legal(share_proto, access_type)"},{"line_number":357,"context_line":"                if msg:"},{"line_number":358,"context_line":"                    LOG.warning(msg)"},{"line_number":359,"context_line":"                    access[\u0027state\u0027] \u003d \u0027error\u0027"},{"line_number":360,"context_line":"                    access_key \u003d access[\u0027access_key\u0027]"},{"line_number":361,"context_line":"                    access_state \u003d access[\u0027state\u0027]"},{"line_number":362,"context_line":"                    access_state_dict \u003d {\u0027access_key\u0027: access_key,"},{"line_number":363,"context_line":"                                         \u0027state\u0027: access_state}"},{"line_number":364,"context_line":"                    access_dict.setdefault(access[\u0027id\u0027], access_state_dict)"},{"line_number":365,"context_line":"                else:"},{"line_number":366,"context_line":"                    self._allow_access(share, access, share_server)"},{"line_number":367,"context_line":"            if(access_dict):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_1c8fcd75","line":364,"range":{"start_line":359,"start_character":20,"end_line":364,"end_character":75},"updated":"2019-07-11 23:18:55.000000000","message":"your backend doesn\u0027t provide an \"access_key\".. what you need here is just this:\n\n access_dict[access[\u0027id\u0027]] \u003d {\u0027state\u0027: \u0027error\u0027}","commit_id":"10017574fc5c427776a4dcd673bbc5ef02ef08b1"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":356,"context_line":"                msg \u003d self._check_access_legal(share_proto, access_type)"},{"line_number":357,"context_line":"                if msg:"},{"line_number":358,"context_line":"                    LOG.warning(msg)"},{"line_number":359,"context_line":"                    access[\u0027state\u0027] \u003d \u0027error\u0027"},{"line_number":360,"context_line":"                    access_key \u003d access[\u0027access_key\u0027]"},{"line_number":361,"context_line":"                    access_state \u003d access[\u0027state\u0027]"},{"line_number":362,"context_line":"                    access_state_dict \u003d {\u0027access_key\u0027: access_key,"},{"line_number":363,"context_line":"                                         \u0027state\u0027: access_state}"},{"line_number":364,"context_line":"                    access_dict.setdefault(access[\u0027id\u0027], access_state_dict)"},{"line_number":365,"context_line":"                else:"},{"line_number":366,"context_line":"                    self._allow_access(share, access, share_server)"},{"line_number":367,"context_line":"            if(access_dict):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_85935c5b","line":364,"range":{"start_line":359,"start_character":20,"end_line":364,"end_character":75},"in_reply_to":"7faddb67_1c8fcd75","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"10017574fc5c427776a4dcd673bbc5ef02ef08b1"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"02b0bd542b98ba7e06f1c4081ac46e06223e7731","unresolved":false,"context_lines":[{"line_number":364,"context_line":"                    access_dict.setdefault(access[\u0027id\u0027], access_state_dict)"},{"line_number":365,"context_line":"                else:"},{"line_number":366,"context_line":"                    self._allow_access(share, access, share_server)"},{"line_number":367,"context_line":"            if(access_dict):"},{"line_number":368,"context_line":"                return access_dict"},{"line_number":369,"context_line":"        else:"},{"line_number":370,"context_line":"            for access in delete_rules:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_9cf09dff","line":367,"range":{"start_line":367,"start_character":12,"end_line":367,"end_character":28},"updated":"2019-07-11 23:18:55.000000000","message":"not necessary, there\u0027s a check in the share manager to ignore empty dictionaries returned by the share drivers","commit_id":"10017574fc5c427776a4dcd673bbc5ef02ef08b1"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":364,"context_line":"                    access_dict.setdefault(access[\u0027id\u0027], access_state_dict)"},{"line_number":365,"context_line":"                else:"},{"line_number":366,"context_line":"                    self._allow_access(share, access, share_server)"},{"line_number":367,"context_line":"            if(access_dict):"},{"line_number":368,"context_line":"                return access_dict"},{"line_number":369,"context_line":"        else:"},{"line_number":370,"context_line":"            for access in delete_rules:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_0591ac4e","line":367,"range":{"start_line":367,"start_character":12,"end_line":367,"end_character":28},"in_reply_to":"7faddb67_9cf09dff","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"10017574fc5c427776a4dcd673bbc5ef02ef08b1"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7fe29bc2adb719e460c204570c98f814308beb6","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":350,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":351,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":352,"context_line":"            self._check_access(share, access_rules, share_server)"},{"line_number":353,"context_line":"            share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":354,"context_line":"            access_dict \u003d {}"},{"line_number":355,"context_line":"            for access in access_rules:"},{"line_number":356,"context_line":"                msg \u003d self._check_access_legal(share_proto,"},{"line_number":357,"context_line":"                                               access[\u0027access_type\u0027])"},{"line_number":358,"context_line":"                if msg:"},{"line_number":359,"context_line":"                    LOG.warning(msg)"},{"line_number":360,"context_line":"                    access_dict[access[\u0027id\u0027]] \u003d {\u0027state\u0027: \u0027error\u0027}"},{"line_number":361,"context_line":"                else:"},{"line_number":362,"context_line":"                    self._allow_access(share, access, share_server)"},{"line_number":363,"context_line":"        else:"},{"line_number":364,"context_line":"            for access in delete_rules:"},{"line_number":365,"context_line":"                self._deny_access(share, access, share_server)"},{"line_number":366,"context_line":"            for access in add_rules:"},{"line_number":367,"context_line":"                self._allow_access(share, access, share_server)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _check_access(self, share, access_rules, share_server\u003dNone):"},{"line_number":370,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_9375d866","line":367,"range":{"start_line":351,"start_character":0,"end_line":367,"end_character":63},"updated":"2019-07-13 01:51:09.000000000","message":"As long as you just rely on \"access_rules\", and ensure the rules on teh backend are exactly as they are in \"access_rules\", you don\u0027t need to worry about \"add_rules\" or \"delete_rules\"... Looking at the _allow_access method, since you\u0027re handling a legal check over there, you can enhance this method:\n\n\n       self._check_access(share, access_rules, share_server)\n       access_dict \u003d {}\n       for access in access_rules:\n             try:\n                 self._allow_access(share, access, share_server)\n             except (exception.InvalidShareAccess,\n                          exception.InfortrendNASException) as e:\n                  msg \u003d _(\"Failed to allow access to client %s, reason %s\" % (access[\u0027access_to\u0027], e)\n                  access_dict[access[\u0027id\u0027]] \u003d \u0027error\u0027\n\n\n       return access_dict","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"814823ca522580d76f0eb089bca2cc24986a5e38","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":350,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":351,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":352,"context_line":"            self._check_access(share, access_rules, share_server)"},{"line_number":353,"context_line":"            share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":354,"context_line":"            access_dict \u003d {}"},{"line_number":355,"context_line":"            for access in access_rules:"},{"line_number":356,"context_line":"                msg \u003d self._check_access_legal(share_proto,"},{"line_number":357,"context_line":"                                               access[\u0027access_type\u0027])"},{"line_number":358,"context_line":"                if msg:"},{"line_number":359,"context_line":"                    LOG.warning(msg)"},{"line_number":360,"context_line":"                    access_dict[access[\u0027id\u0027]] \u003d {\u0027state\u0027: \u0027error\u0027}"},{"line_number":361,"context_line":"                else:"},{"line_number":362,"context_line":"                    self._allow_access(share, access, share_server)"},{"line_number":363,"context_line":"        else:"},{"line_number":364,"context_line":"            for access in delete_rules:"},{"line_number":365,"context_line":"                self._deny_access(share, access, share_server)"},{"line_number":366,"context_line":"            for access in add_rules:"},{"line_number":367,"context_line":"                self._allow_access(share, access, share_server)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _check_access(self, share, access_rules, share_server\u003dNone):"},{"line_number":370,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_a0d98a57","line":367,"range":{"start_line":351,"start_character":0,"end_line":367,"end_character":63},"in_reply_to":"7faddb67_21036775","updated":"2019-07-16 02:30:18.000000000","message":"Done","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"ab384146457b269194588e9178682e9ecf2c712f","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":350,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":351,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":352,"context_line":"            self._check_access(share, access_rules, share_server)"},{"line_number":353,"context_line":"            share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":354,"context_line":"            access_dict \u003d {}"},{"line_number":355,"context_line":"            for access in access_rules:"},{"line_number":356,"context_line":"                msg \u003d self._check_access_legal(share_proto,"},{"line_number":357,"context_line":"                                               access[\u0027access_type\u0027])"},{"line_number":358,"context_line":"                if msg:"},{"line_number":359,"context_line":"                    LOG.warning(msg)"},{"line_number":360,"context_line":"                    access_dict[access[\u0027id\u0027]] \u003d {\u0027state\u0027: \u0027error\u0027}"},{"line_number":361,"context_line":"                else:"},{"line_number":362,"context_line":"                    self._allow_access(share, access, share_server)"},{"line_number":363,"context_line":"        else:"},{"line_number":364,"context_line":"            for access in delete_rules:"},{"line_number":365,"context_line":"                self._deny_access(share, access, share_server)"},{"line_number":366,"context_line":"            for access in add_rules:"},{"line_number":367,"context_line":"                self._allow_access(share, access, share_server)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _check_access(self, share, access_rules, share_server\u003dNone):"},{"line_number":370,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_21036775","line":367,"range":{"start_line":351,"start_character":0,"end_line":367,"end_character":63},"in_reply_to":"7faddb67_9375d866","updated":"2019-07-14 11:44:00.000000000","message":"Done","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"814823ca522580d76f0eb089bca2cc24986a5e38","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":350,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":351,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":352,"context_line":"            self._check_access(share, access_rules, share_server)"},{"line_number":353,"context_line":"            share_proto \u003d share[\u0027share_proto\u0027].lower()"},{"line_number":354,"context_line":"            access_dict \u003d {}"},{"line_number":355,"context_line":"            for access in access_rules:"},{"line_number":356,"context_line":"                msg \u003d self._check_access_legal(share_proto,"},{"line_number":357,"context_line":"                                               access[\u0027access_type\u0027])"},{"line_number":358,"context_line":"                if msg:"},{"line_number":359,"context_line":"                    LOG.warning(msg)"},{"line_number":360,"context_line":"                    access_dict[access[\u0027id\u0027]] \u003d {\u0027state\u0027: \u0027error\u0027}"},{"line_number":361,"context_line":"                else:"},{"line_number":362,"context_line":"                    self._allow_access(share, access, share_server)"},{"line_number":363,"context_line":"        else:"},{"line_number":364,"context_line":"            for access in delete_rules:"},{"line_number":365,"context_line":"                self._deny_access(share, access, share_server)"},{"line_number":366,"context_line":"            for access in add_rules:"},{"line_number":367,"context_line":"                self._allow_access(share, access, share_server)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _check_access(self, share, access_rules, share_server\u003dNone):"},{"line_number":370,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_80d48e21","line":367,"range":{"start_line":351,"start_character":0,"end_line":367,"end_character":63},"in_reply_to":"7faddb67_9375d866","updated":"2019-07-16 02:30:18.000000000","message":"Done","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7fe29bc2adb719e460c204570c98f814308beb6","unresolved":false,"context_lines":[{"line_number":366,"context_line":"            for access in add_rules:"},{"line_number":367,"context_line":"                self._allow_access(share, access, share_server)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _check_access(self, share, access_rules, share_server\u003dNone):"},{"line_number":370,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":371,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":372,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_73685c86","line":369,"range":{"start_line":369,"start_character":8,"end_line":369,"end_character":21},"updated":"2019-07-13 01:51:09.000000000","message":"I suggest renaming this method so it conveys the meaning of what it means\n\nperhaps: \"def _evict_unauthorized_clients()\"?","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"ab384146457b269194588e9178682e9ecf2c712f","unresolved":false,"context_lines":[{"line_number":366,"context_line":"            for access in add_rules:"},{"line_number":367,"context_line":"                self._allow_access(share, access, share_server)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _check_access(self, share, access_rules, share_server\u003dNone):"},{"line_number":370,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":371,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":372,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027].lower()"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_c1fb7376","line":369,"range":{"start_line":369,"start_character":8,"end_line":369,"end_character":21},"in_reply_to":"7faddb67_73685c86","updated":"2019-07-14 11:44:00.000000000","message":"Done","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7fe29bc2adb719e460c204570c98f814308beb6","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                    host_ip_list.append(host[\u0027host\u0027])"},{"line_number":388,"context_line":"            for ip in host_ip_list:"},{"line_number":389,"context_line":"                if ip not in access_list:"},{"line_number":390,"context_line":"                    command_line \u003d [\u0027share\u0027, \u0027options\u0027, share_path,"},{"line_number":391,"context_line":"                                    \u0027nfs\u0027, \u0027-c\u0027, ip]"},{"line_number":392,"context_line":"                    self._execute(command_line)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"},{"line_number":395,"context_line":"            host_user_list \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_b3f7b4d3","line":392,"range":{"start_line":390,"start_character":20,"end_line":392,"end_character":47},"updated":"2019-07-13 01:51:09.000000000","message":"What if a rule was never applied? Can you try...except a Not found error, and pass?","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"ab384146457b269194588e9178682e9ecf2c712f","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                    host_ip_list.append(host[\u0027host\u0027])"},{"line_number":388,"context_line":"            for ip in host_ip_list:"},{"line_number":389,"context_line":"                if ip not in access_list:"},{"line_number":390,"context_line":"                    command_line \u003d [\u0027share\u0027, \u0027options\u0027, share_path,"},{"line_number":391,"context_line":"                                    \u0027nfs\u0027, \u0027-c\u0027, ip]"},{"line_number":392,"context_line":"                    self._execute(command_line)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"},{"line_number":395,"context_line":"            host_user_list \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_41f22372","line":392,"range":{"start_line":390,"start_character":20,"end_line":392,"end_character":47},"in_reply_to":"7faddb67_b3f7b4d3","updated":"2019-07-14 11:44:00.000000000","message":"Done","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7fe29bc2adb719e460c204570c98f814308beb6","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                if user not in access_list:"},{"line_number":402,"context_line":"                    command_line \u003d [\u0027acl\u0027, \u0027set\u0027, share_path, \u0027-u\u0027,"},{"line_number":403,"context_line":"                                    user, \u0027-a\u0027, \u0027d\u0027]"},{"line_number":404,"context_line":"                    self._execute(command_line)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def _allow_access(self, share, access, share_server\u003dNone):"},{"line_number":407,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_5300c0ab","line":404,"range":{"start_line":404,"start_character":0,"end_line":404,"end_character":47},"updated":"2019-07-13 01:51:09.000000000","message":"same comment as above","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"ab384146457b269194588e9178682e9ecf2c712f","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                if user not in access_list:"},{"line_number":402,"context_line":"                    command_line \u003d [\u0027acl\u0027, \u0027set\u0027, share_path, \u0027-u\u0027,"},{"line_number":403,"context_line":"                                    user, \u0027-a\u0027, \u0027d\u0027]"},{"line_number":404,"context_line":"                    self._execute(command_line)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def _allow_access(self, share, access, share_server\u003dNone):"},{"line_number":407,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_81e25b9f","line":404,"range":{"start_line":404,"start_character":0,"end_line":404,"end_character":47},"in_reply_to":"7faddb67_5300c0ab","updated":"2019-07-14 11:44:00.000000000","message":"Done","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7fe29bc2adb719e460c204570c98f814308beb6","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                    command_line \u003d [\u0027acl\u0027, \u0027set\u0027, share_path, \u0027-u\u0027,"},{"line_number":403,"context_line":"                                    user, \u0027-a\u0027, \u0027d\u0027]"},{"line_number":404,"context_line":"                    self._execute(command_line)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def _allow_access(self, share, access, share_server\u003dNone):"},{"line_number":407,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":408,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_d3da7049","line":405,"range":{"start_line":405,"start_character":0,"end_line":405,"end_character":0},"updated":"2019-07-13 01:51:09.000000000","message":"In general, make sure this method has errors handled; log any errors as warnings if possible, or else, you can never add or remove access rules for a given share because if there are any fatal exceptions","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"ab384146457b269194588e9178682e9ecf2c712f","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                    command_line \u003d [\u0027acl\u0027, \u0027set\u0027, share_path, \u0027-u\u0027,"},{"line_number":403,"context_line":"                                    user, \u0027-a\u0027, \u0027d\u0027]"},{"line_number":404,"context_line":"                    self._execute(command_line)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def _allow_access(self, share, access, share_server\u003dNone):"},{"line_number":407,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":408,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_a1df57d4","line":405,"range":{"start_line":405,"start_character":0,"end_line":405,"end_character":0},"in_reply_to":"7faddb67_d3da7049","updated":"2019-07-14 11:44:00.000000000","message":"Done","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7fe29bc2adb719e460c204570c98f814308beb6","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        access_level \u003d access[\u0027access_level\u0027] or constants.ACCESS_LEVEL_RW"},{"line_number":414,"context_line":"        access_to \u003d access[\u0027access_to\u0027]"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        msg \u003d self._check_access_legal(share_proto, access_type)"},{"line_number":417,"context_line":"        if msg:"},{"line_number":418,"context_line":"            raise exception.InvalidShareAccess(reason\u003dmsg)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":421,"context_line":"            command_line \u003d [\u0027share\u0027, \u0027options\u0027, share_path, \u0027nfs\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_1307a8cc","line":418,"range":{"start_line":416,"start_character":8,"end_line":418,"end_character":58},"updated":"2019-07-13 01:51:09.000000000","message":"If you\u0027re doing the legal check here, why do it on line 355...356? Feels like a good idea to keep the check here and remove it from the above method, see suggestion above.","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"ab384146457b269194588e9178682e9ecf2c712f","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        access_level \u003d access[\u0027access_level\u0027] or constants.ACCESS_LEVEL_RW"},{"line_number":414,"context_line":"        access_to \u003d access[\u0027access_to\u0027]"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        msg \u003d self._check_access_legal(share_proto, access_type)"},{"line_number":417,"context_line":"        if msg:"},{"line_number":418,"context_line":"            raise exception.InvalidShareAccess(reason\u003dmsg)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":421,"context_line":"            command_line \u003d [\u0027share\u0027, \u0027options\u0027, share_path, \u0027nfs\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_01fe6b6a","line":418,"range":{"start_line":416,"start_character":8,"end_line":418,"end_character":58},"in_reply_to":"7faddb67_1307a8cc","updated":"2019-07-14 11:44:00.000000000","message":"Done","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7fe29bc2adb719e460c204570c98f814308beb6","unresolved":false,"context_lines":[{"line_number":482,"context_line":"            msg \u003d _(\u0027Unsupported share protocol [%s].\u0027) % share_proto"},{"line_number":483,"context_line":"        return msg"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"    def _deny_access(self, share, access, share_server\u003dNone):"},{"line_number":486,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":487,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":488,"context_line":"        share_name \u003d share[\u0027id\u0027].replace(\u0027-\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_93e878e2","line":485,"range":{"start_line":485,"start_character":4,"end_line":485,"end_character":61},"updated":"2019-07-13 01:51:09.000000000","message":"You don\u0027t need this method at all any more.","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"ab384146457b269194588e9178682e9ecf2c712f","unresolved":false,"context_lines":[{"line_number":482,"context_line":"            msg \u003d _(\u0027Unsupported share protocol [%s].\u0027) % share_proto"},{"line_number":483,"context_line":"        return msg"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"    def _deny_access(self, share, access, share_server\u003dNone):"},{"line_number":486,"context_line":"        pool_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":487,"context_line":"        pool_data \u003d self._get_share_pool_data(pool_name)"},{"line_number":488,"context_line":"        share_name \u003d share[\u0027id\u0027].replace(\u0027-\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_4108e390","line":485,"range":{"start_line":485,"start_character":4,"end_line":485,"end_character":61},"in_reply_to":"7faddb67_93e878e2","updated":"2019-07-14 11:44:00.000000000","message":"Done","commit_id":"20daf6bc9b0affa92892328f4e4b2986bf2ffad9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6096b17f5938d09e4396ea2b6441a3f7346f50e7","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":350,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":351,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":352,"context_line":"            self._evict_unauthorized_clients(share, access_rules, share_server)"},{"line_number":353,"context_line":"            access_dict \u003d {}"},{"line_number":354,"context_line":"            for access in access_rules:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_b7b22b48","line":351,"range":{"start_line":351,"start_character":0,"end_line":351,"end_character":43},"updated":"2019-07-15 18:01:54.000000000","message":"Please remove this condition","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"814823ca522580d76f0eb089bca2cc24986a5e38","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def update_access(self, share, access_rules, add_rules,"},{"line_number":350,"context_line":"                      delete_rules, share_server\u003dNone):"},{"line_number":351,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":352,"context_line":"            self._evict_unauthorized_clients(share, access_rules, share_server)"},{"line_number":353,"context_line":"            access_dict \u003d {}"},{"line_number":354,"context_line":"            for access in access_rules:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_e689cfc9","line":351,"range":{"start_line":351,"start_character":0,"end_line":351,"end_character":43},"in_reply_to":"7faddb67_b7b22b48","updated":"2019-07-16 02:30:18.000000000","message":"Done","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6096b17f5938d09e4396ea2b6441a3f7346f50e7","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                    try:"},{"line_number":391,"context_line":"                        self._execute(command_line)"},{"line_number":392,"context_line":"                    except exception.InfortrendNASException:"},{"line_number":393,"context_line":"                        msg \u003d _(\"Failed to found share %s\") % (share_name)"},{"line_number":394,"context_line":"                        LOG.error(msg)"},{"line_number":395,"context_line":"                        pass"},{"line_number":396,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_57ead70e","line":393,"range":{"start_line":393,"start_character":73,"end_line":393,"end_character":74},"updated":"2019-07-15 18:01:54.000000000","message":"Please log the access rule ID and/or client (In this case \"ip\")","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6096b17f5938d09e4396ea2b6441a3f7346f50e7","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                    try:"},{"line_number":391,"context_line":"                        self._execute(command_line)"},{"line_number":392,"context_line":"                    except exception.InfortrendNASException:"},{"line_number":393,"context_line":"                        msg \u003d _(\"Failed to found share %s\") % (share_name)"},{"line_number":394,"context_line":"                        LOG.error(msg)"},{"line_number":395,"context_line":"                        pass"},{"line_number":396,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_978e0f77","line":393,"range":{"start_line":393,"start_character":43,"end_line":393,"end_character":54},"updated":"2019-07-15 18:01:54.000000000","message":"remove share access rule","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"814823ca522580d76f0eb089bca2cc24986a5e38","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                    try:"},{"line_number":391,"context_line":"                        self._execute(command_line)"},{"line_number":392,"context_line":"                    except exception.InfortrendNASException:"},{"line_number":393,"context_line":"                        msg \u003d _(\"Failed to found share %s\") % (share_name)"},{"line_number":394,"context_line":"                        LOG.error(msg)"},{"line_number":395,"context_line":"                        pass"},{"line_number":396,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_86c49bf6","line":393,"range":{"start_line":393,"start_character":73,"end_line":393,"end_character":74},"in_reply_to":"7faddb67_57ead70e","updated":"2019-07-16 02:30:18.000000000","message":"Done","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"814823ca522580d76f0eb089bca2cc24986a5e38","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                    try:"},{"line_number":391,"context_line":"                        self._execute(command_line)"},{"line_number":392,"context_line":"                    except exception.InfortrendNASException:"},{"line_number":393,"context_line":"                        msg \u003d _(\"Failed to found share %s\") % (share_name)"},{"line_number":394,"context_line":"                        LOG.error(msg)"},{"line_number":395,"context_line":"                        pass"},{"line_number":396,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_66bf1f61","line":393,"range":{"start_line":393,"start_character":43,"end_line":393,"end_character":54},"in_reply_to":"7faddb67_978e0f77","updated":"2019-07-16 02:30:18.000000000","message":"Done","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6096b17f5938d09e4396ea2b6441a3f7346f50e7","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                        self._execute(command_line)"},{"line_number":392,"context_line":"                    except exception.InfortrendNASException:"},{"line_number":393,"context_line":"                        msg \u003d _(\"Failed to found share %s\") % (share_name)"},{"line_number":394,"context_line":"                        LOG.error(msg)"},{"line_number":395,"context_line":"                        pass"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_d79807c1","line":394,"range":{"start_line":394,"start_character":28,"end_line":394,"end_character":33},"updated":"2019-07-15 18:01:54.000000000","message":"exception","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"814823ca522580d76f0eb089bca2cc24986a5e38","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                        self._execute(command_line)"},{"line_number":392,"context_line":"                    except exception.InfortrendNASException:"},{"line_number":393,"context_line":"                        msg \u003d _(\"Failed to found share %s\") % (share_name)"},{"line_number":394,"context_line":"                        LOG.error(msg)"},{"line_number":395,"context_line":"                        pass"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_c68cd3d8","line":394,"range":{"start_line":394,"start_character":28,"end_line":394,"end_character":33},"in_reply_to":"7faddb67_d79807c1","updated":"2019-07-16 02:30:18.000000000","message":"Done","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6096b17f5938d09e4396ea2b6441a3f7346f50e7","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                    try:"},{"line_number":408,"context_line":"                        self._execute(command_line)"},{"line_number":409,"context_line":"                    except exception.InfortrendNASException:"},{"line_number":410,"context_line":"                        msg \u003d _(\"Failed to found share %s\") % (share_name)"},{"line_number":411,"context_line":"                        LOG.error(msg)"},{"line_number":412,"context_line":"                        pass"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    def _allow_access(self, share, access, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_37f5dbed","line":411,"range":{"start_line":410,"start_character":24,"end_line":411,"end_character":38},"updated":"2019-07-15 18:01:54.000000000","message":"same comments as above","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"814823ca522580d76f0eb089bca2cc24986a5e38","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                    try:"},{"line_number":408,"context_line":"                        self._execute(command_line)"},{"line_number":409,"context_line":"                    except exception.InfortrendNASException:"},{"line_number":410,"context_line":"                        msg \u003d _(\"Failed to found share %s\") % (share_name)"},{"line_number":411,"context_line":"                        LOG.error(msg)"},{"line_number":412,"context_line":"                        pass"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    def _allow_access(self, share, access, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_a68f57cb","line":411,"range":{"start_line":410,"start_character":24,"end_line":411,"end_character":38},"in_reply_to":"7faddb67_37f5dbed","updated":"2019-07-16 02:30:18.000000000","message":"Done","commit_id":"9098d1dcb4f918c0667cc120f8d1f3500bb1c713"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"19a187f8eb743bd52c8da6bd198ea4497a2f8aa3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"7faddb67_d512b162","updated":"2019-07-24 19:27:23.000000000","message":"The unit test coverage on this file is quite poor: http://logs.openstack.org/75/657775/18/check/openstack-tox-cover/c42c295/cover/manila_share_drivers_infortrend_infortrend_nas_py.html\n\nPlease add some more tests in places where there are conditionals and loops, so that there are no surprises - our black-box/tempest tests do not cover all possibilities and code paths.","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"433f6fef404a701d761e957c952fa2c47bc08510","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"7faddb67_44be0d00","in_reply_to":"7faddb67_d512b162","updated":"2019-07-25 02:31:33.000000000","message":"I\u0027ll add more unit test in next version, thank for your review.:)","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"4faad67f2605f7a22e795233ee0af46955e8e668","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            \u0027share_name\u0027: share_name,"},{"line_number":284,"context_line":"        }"},{"line_number":285,"context_line":"        self._check_channels_status()"},{"line_number":286,"context_line":"        for ch in sorted(self.channel_dict.keys()):"},{"line_number":287,"context_line":"            ip \u003d self.channel_dict[ch]"},{"line_number":288,"context_line":"            if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":289,"context_line":"                location.append("}],"source_content_type":"text/x-python","patch_set":18,"id":"7faddb67_c898b276","line":286,"range":{"start_line":286,"start_character":18,"end_line":286,"end_character":51},"updated":"2019-07-26 20:49:20.000000000","message":"Suggestion: maybe use collections\u0027 OrderedDict for channel_dict  instead and then iterate over the dict\u0027s values (ip) so L#287 becomes redundant.","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"c50fabfe3d767af946245cf0eb413a85b823179e","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            \u0027share_name\u0027: share_name,"},{"line_number":284,"context_line":"        }"},{"line_number":285,"context_line":"        self._check_channels_status()"},{"line_number":286,"context_line":"        for ch in sorted(self.channel_dict.keys()):"},{"line_number":287,"context_line":"            ip \u003d self.channel_dict[ch]"},{"line_number":288,"context_line":"            if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":289,"context_line":"                location.append("}],"source_content_type":"text/x-python","patch_set":18,"id":"7faddb67_c4be13ad","line":286,"range":{"start_line":286,"start_character":18,"end_line":286,"end_character":51},"in_reply_to":"7faddb67_c898b276","updated":"2019-08-01 07:44:48.000000000","message":"If using OrderedDict(channel_dict) directly , it will be disorder . I think it need to OrderedDict(channel_dict) need to be using in driver.py file.","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"4faad67f2605f7a22e795233ee0af46955e8e668","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                LOG.error(msg)"},{"line_number":438,"context_line":"                raise exception.InfortrendNASException(err\u003dmsg)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"            if access_level \u003d\u003d constants.ACCESS_LEVEL_RW:"},{"line_number":441,"context_line":"                cifs_access \u003d \u0027f\u0027"},{"line_number":442,"context_line":"            elif access_level \u003d\u003d constants.ACCESS_LEVEL_RO:"},{"line_number":443,"context_line":"                cifs_access \u003d \u0027r\u0027"},{"line_number":444,"context_line":"            else:"},{"line_number":445,"context_line":"                msg \u003d _(\u0027Unsupported access_level: [%s].\u0027) % access_level"},{"line_number":446,"context_line":"                raise exception.InvalidInput(msg)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7faddb67_88915a49","line":443,"range":{"start_line":440,"start_character":12,"end_line":443,"end_character":33},"updated":"2019-07-26 20:49:20.000000000","message":"You can use a mapping dict for that and fail if the key does not exist in it, e.g.:\ntry:\n    access_level \u003d self.ACCESS_LEVEL_MAP[access_level]\nexcept KeyError:\n    msg \u003d ...","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"c50fabfe3d767af946245cf0eb413a85b823179e","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                LOG.error(msg)"},{"line_number":438,"context_line":"                raise exception.InfortrendNASException(err\u003dmsg)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"            if access_level \u003d\u003d constants.ACCESS_LEVEL_RW:"},{"line_number":441,"context_line":"                cifs_access \u003d \u0027f\u0027"},{"line_number":442,"context_line":"            elif access_level \u003d\u003d constants.ACCESS_LEVEL_RO:"},{"line_number":443,"context_line":"                cifs_access \u003d \u0027r\u0027"},{"line_number":444,"context_line":"            else:"},{"line_number":445,"context_line":"                msg \u003d _(\u0027Unsupported access_level: [%s].\u0027) % access_level"},{"line_number":446,"context_line":"                raise exception.InvalidInput(msg)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7faddb67_e47d4f1c","line":443,"range":{"start_line":440,"start_character":12,"end_line":443,"end_character":33},"in_reply_to":"7faddb67_88915a49","updated":"2019-08-01 07:44:48.000000000","message":"Done","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"4faad67f2605f7a22e795233ee0af46955e8e668","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        folder_name \u003d None"},{"line_number":605,"context_line":"        if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":606,"context_line":"            location \u003d input_location.split(\u0027:/\u0027)"},{"line_number":607,"context_line":"            if len(location) \u003d\u003d 2:"},{"line_number":608,"context_line":"                ip \u003d location[0]"},{"line_number":609,"context_line":"                folder_name \u003d location[1].split(\u0027/\u0027)[2]"},{"line_number":610,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"}],"source_content_type":"text/x-python","patch_set":18,"id":"7faddb67_a8d9b622","line":607,"range":{"start_line":607,"start_character":12,"end_line":607,"end_character":33},"updated":"2019-07-26 20:49:20.000000000","message":"Please see the next comment.","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"c50fabfe3d767af946245cf0eb413a85b823179e","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        folder_name \u003d None"},{"line_number":605,"context_line":"        if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":606,"context_line":"            location \u003d input_location.split(\u0027:/\u0027)"},{"line_number":607,"context_line":"            if len(location) \u003d\u003d 2:"},{"line_number":608,"context_line":"                ip \u003d location[0]"},{"line_number":609,"context_line":"                folder_name \u003d location[1].split(\u0027/\u0027)[2]"},{"line_number":610,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"}],"source_content_type":"text/x-python","patch_set":18,"id":"7faddb67_3e662bc3","line":607,"range":{"start_line":607,"start_character":12,"end_line":607,"end_character":33},"in_reply_to":"7faddb67_a8d9b622","updated":"2019-08-01 07:44:48.000000000","message":"Done","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"4faad67f2605f7a22e795233ee0af46955e8e668","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                folder_name \u003d location[1].split(\u0027/\u0027)[2]"},{"line_number":610,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"},{"line_number":611,"context_line":"            location \u003d input_location.split(\u0027\\\\\u0027)"},{"line_number":612,"context_line":"            if (len(location) \u003d\u003d 4 and"},{"line_number":613,"context_line":"                    location[0] \u003d\u003d \"\" and"},{"line_number":614,"context_line":"                    location[1] \u003d\u003d \"\"):"},{"line_number":615,"context_line":"                ip \u003d location[2]"},{"line_number":616,"context_line":"                folder_name \u003d location[3]"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"        if not (ip and folder_name):"},{"line_number":619,"context_line":"            msg \u003d _(\u0027Export location error, please check \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"7faddb67_28e626ea","line":616,"range":{"start_line":612,"start_character":12,"end_line":616,"end_character":41},"updated":"2019-07-26 20:49:20.000000000","message":"This seems somewhat risky, what if I give you the following:\ninput_location \u003d \"\\\\\\\\not_an_ip\\\\not_a_folder\"\nthen you\u0027ll get:\nlocation \u003d [\u0027\u0027, \u0027\u0027, \u0027not_an_ip\u0027, \u0027not_a_folder\u0027]\n\nI suggest using a regexp expression to identify the IP and folder are in place and match them.","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"c50fabfe3d767af946245cf0eb413a85b823179e","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                folder_name \u003d location[1].split(\u0027/\u0027)[2]"},{"line_number":610,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"},{"line_number":611,"context_line":"            location \u003d input_location.split(\u0027\\\\\u0027)"},{"line_number":612,"context_line":"            if (len(location) \u003d\u003d 4 and"},{"line_number":613,"context_line":"                    location[0] \u003d\u003d \"\" and"},{"line_number":614,"context_line":"                    location[1] \u003d\u003d \"\"):"},{"line_number":615,"context_line":"                ip \u003d location[2]"},{"line_number":616,"context_line":"                folder_name \u003d location[3]"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"        if not (ip and folder_name):"},{"line_number":619,"context_line":"            msg \u003d _(\u0027Export location error, please check \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"7faddb67_1e61efa9","line":616,"range":{"start_line":612,"start_character":12,"end_line":616,"end_character":41},"in_reply_to":"7faddb67_28e626ea","updated":"2019-08-01 07:44:48.000000000","message":"Done","commit_id":"f82c8dedfa7b99163b324961114d3d22cc5f4183"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"33679feca6c4b410f03f7a3eebaeb6d0195bc953","unresolved":false,"context_lines":[{"line_number":399,"context_line":"            command_line \u003d [\u0027acl\u0027, \u0027get\u0027, share_path]"},{"line_number":400,"context_line":"            rc, cifs_status \u003d self._execute(command_line)"},{"line_number":401,"context_line":"            for cifs_rule in cifs_status:"},{"line_number":402,"context_line":"                if cifs_rule[\u0027name\u0027] !\u003d \u0027\u0027:"},{"line_number":403,"context_line":"                    host_user_list.append(cifs_rule[\u0027name\u0027])"},{"line_number":404,"context_line":"            for user in host_user_list:"},{"line_number":405,"context_line":"                if user not in access_list:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_eb2d1795","line":402,"range":{"start_line":402,"start_character":36,"end_line":402,"end_character":42},"updated":"2019-08-01 15:47:24.000000000","message":"nit: in python, an empty string is falsy, so you could just do\n\n    if cifs_rule[\u0027name\u0027]:","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"81cb629b412edccbd9fcd24da4e0d114a9b54e2e","unresolved":false,"context_lines":[{"line_number":399,"context_line":"            command_line \u003d [\u0027acl\u0027, \u0027get\u0027, share_path]"},{"line_number":400,"context_line":"            rc, cifs_status \u003d self._execute(command_line)"},{"line_number":401,"context_line":"            for cifs_rule in cifs_status:"},{"line_number":402,"context_line":"                if cifs_rule[\u0027name\u0027] !\u003d \u0027\u0027:"},{"line_number":403,"context_line":"                    host_user_list.append(cifs_rule[\u0027name\u0027])"},{"line_number":404,"context_line":"            for user in host_user_list:"},{"line_number":405,"context_line":"                if user not in access_list:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_3e712477","line":402,"range":{"start_line":402,"start_character":36,"end_line":402,"end_character":42},"in_reply_to":"7faddb67_eb2d1795","updated":"2019-08-02 09:59:31.000000000","message":"Done","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2dd20338ee4cbf7ffe47a1c4cf8cfebceb411b82","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        access_type \u003d access[\u0027access_type\u0027]"},{"line_number":422,"context_line":"        access_level \u003d access[\u0027access_level\u0027] or constants.ACCESS_LEVEL_RW"},{"line_number":423,"context_line":"        access_to \u003d access[\u0027access_to\u0027]"},{"line_number":424,"context_line":"        ACCESS_LEVEL_MAP \u003d {access_level: access_level}"},{"line_number":425,"context_line":"        msg \u003d self._check_access_legal(share_proto, access_type)"},{"line_number":426,"context_line":"        if msg:"},{"line_number":427,"context_line":"            raise exception.InvalidShareAccess(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_2be6d2b1","line":424,"range":{"start_line":424,"start_character":28,"end_line":424,"end_character":40},"updated":"2019-08-01 14:26:04.000000000","message":"should this be:\nACCESS_LEVEL_MAP \u003d {\u0027access_level\u0027: access_level}\n?","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"81cb629b412edccbd9fcd24da4e0d114a9b54e2e","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        access_type \u003d access[\u0027access_type\u0027]"},{"line_number":422,"context_line":"        access_level \u003d access[\u0027access_level\u0027] or constants.ACCESS_LEVEL_RW"},{"line_number":423,"context_line":"        access_to \u003d access[\u0027access_to\u0027]"},{"line_number":424,"context_line":"        ACCESS_LEVEL_MAP \u003d {access_level: access_level}"},{"line_number":425,"context_line":"        msg \u003d self._check_access_legal(share_proto, access_type)"},{"line_number":426,"context_line":"        if msg:"},{"line_number":427,"context_line":"            raise exception.InvalidShareAccess(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_c367d74c","line":424,"range":{"start_line":424,"start_character":28,"end_line":424,"end_character":40},"in_reply_to":"7faddb67_2be6d2b1","updated":"2019-08-02 09:59:31.000000000","message":"As Amit Oren\u0027s comment,using a mapping dict for that and fail if the key does not exist.","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"c3186033e38e942f94f17c3beb65f3fe7164b1a0","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        access_type \u003d access[\u0027access_type\u0027]"},{"line_number":422,"context_line":"        access_level \u003d access[\u0027access_level\u0027] or constants.ACCESS_LEVEL_RW"},{"line_number":423,"context_line":"        access_to \u003d access[\u0027access_to\u0027]"},{"line_number":424,"context_line":"        ACCESS_LEVEL_MAP \u003d {access_level: access_level}"},{"line_number":425,"context_line":"        msg \u003d self._check_access_legal(share_proto, access_type)"},{"line_number":426,"context_line":"        if msg:"},{"line_number":427,"context_line":"            raise exception.InvalidShareAccess(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_38191821","line":424,"range":{"start_line":424,"start_character":28,"end_line":424,"end_character":40},"in_reply_to":"7faddb67_c367d74c","updated":"2019-08-05 17:05:33.000000000","message":"Ok, Great. Sorry, I haven\u0027t seen Amit\u0027s comment.","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2dd20338ee4cbf7ffe47a1c4cf8cfebceb411b82","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        ip \u003d None"},{"line_number":607,"context_line":"        folder_name \u003d None"},{"line_number":608,"context_line":"        if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":609,"context_line":"            pattern_ip \u003d \u0027[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\u0027"},{"line_number":610,"context_line":"            pattern_folder \u003d \u0027[^\\/]+$\u0027"},{"line_number":611,"context_line":"            ip \u003d \"\".join(re.findall(pattern_ip, input_location))"},{"line_number":612,"context_line":"            folder_name \u003d \"\".join(re.findall(pattern_folder, input_location))"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_6b95aae3","line":609,"range":{"start_line":609,"start_character":12,"end_line":609,"end_character":73},"updated":"2019-08-01 14:26:04.000000000","message":"This declaration is duplicated. What about declare this outside the if statement?","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"81cb629b412edccbd9fcd24da4e0d114a9b54e2e","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        ip \u003d None"},{"line_number":607,"context_line":"        folder_name \u003d None"},{"line_number":608,"context_line":"        if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":609,"context_line":"            pattern_ip \u003d \u0027[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\u0027"},{"line_number":610,"context_line":"            pattern_folder \u003d \u0027[^\\/]+$\u0027"},{"line_number":611,"context_line":"            ip \u003d \"\".join(re.findall(pattern_ip, input_location))"},{"line_number":612,"context_line":"            folder_name \u003d \"\".join(re.findall(pattern_folder, input_location))"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_a362db3c","line":609,"range":{"start_line":609,"start_character":12,"end_line":609,"end_character":73},"in_reply_to":"7faddb67_6b95aae3","updated":"2019-08-02 09:59:31.000000000","message":"Done","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2dd20338ee4cbf7ffe47a1c4cf8cfebceb411b82","unresolved":false,"context_lines":[{"line_number":608,"context_line":"        if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":609,"context_line":"            pattern_ip \u003d \u0027[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\u0027"},{"line_number":610,"context_line":"            pattern_folder \u003d \u0027[^\\/]+$\u0027"},{"line_number":611,"context_line":"            ip \u003d \"\".join(re.findall(pattern_ip, input_location))"},{"line_number":612,"context_line":"            folder_name \u003d \"\".join(re.findall(pattern_folder, input_location))"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_8b6826f5","line":611,"range":{"start_line":611,"start_character":12,"end_line":611,"end_character":64},"updated":"2019-08-01 14:26:04.000000000","message":"Manila already has a function where it verifies if the IP is valid [1]. The function covers IPV4 and IPV6.\n[1] https://github.com/openstack/manila/blob/master/manila/utils.py#L378","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"c3186033e38e942f94f17c3beb65f3fe7164b1a0","unresolved":false,"context_lines":[{"line_number":608,"context_line":"        if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":609,"context_line":"            pattern_ip \u003d \u0027[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\u0027"},{"line_number":610,"context_line":"            pattern_folder \u003d \u0027[^\\/]+$\u0027"},{"line_number":611,"context_line":"            ip \u003d \"\".join(re.findall(pattern_ip, input_location))"},{"line_number":612,"context_line":"            folder_name \u003d \"\".join(re.findall(pattern_folder, input_location))"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_58973446","line":611,"range":{"start_line":611,"start_character":12,"end_line":611,"end_character":64},"in_reply_to":"7faddb67_1e746867","updated":"2019-08-05 17:05:33.000000000","message":"I think that adding a line to check if the IP is valid will not be necessary. Looks good in the way it is.","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"81cb629b412edccbd9fcd24da4e0d114a9b54e2e","unresolved":false,"context_lines":[{"line_number":608,"context_line":"        if share_proto \u003d\u003d \u0027nfs\u0027:"},{"line_number":609,"context_line":"            pattern_ip \u003d \u0027[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\u0027"},{"line_number":610,"context_line":"            pattern_folder \u003d \u0027[^\\/]+$\u0027"},{"line_number":611,"context_line":"            ip \u003d \"\".join(re.findall(pattern_ip, input_location))"},{"line_number":612,"context_line":"            folder_name \u003d \"\".join(re.findall(pattern_folder, input_location))"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        elif share_proto \u003d\u003d \u0027cifs\u0027:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_1e746867","line":611,"range":{"start_line":611,"start_character":12,"end_line":611,"end_character":64},"in_reply_to":"7faddb67_8b6826f5","updated":"2019-08-02 09:59:31.000000000","message":"Do you mean that I need add a line to check ip is valid?\nI using *\"\".join* to make sure the return value\u0027s type will be string instead of list.","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"}],"manila/tests/share/drivers/infortrend/fake_infortrend_manila_data.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_c6af8092","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2019-06-03 23:05:16.000000000","message":"2019","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_657a4125","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"9fb8cfa7_c6af8092","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"}],"manila/tests/share/drivers/infortrend/fake_infortrend_nas_data.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_66949445","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2019-06-03 23:05:16.000000000","message":"2019","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_0577c53c","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"9fb8cfa7_66949445","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"}],"manila/tests/share/drivers/infortrend/test_infortrend_nas.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"7e3d4898834fb014dc5f343c8dda22d9000ce8a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_269e9c63","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2019-06-03 23:05:16.000000000","message":"2019","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"6c74a0a27b6b6a4e50376a9c446a46007b6f8d2e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2017 Infortrend Technology, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_25744935","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"9fb8cfa7_269e9c63","updated":"2019-06-12 01:21:26.000000000","message":"Done","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":794,"context_line":"            {})"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":797,"context_line":"    def test_unmanage_nfs(self, mock_execute):"},{"line_number":798,"context_line":"        self._get_driver(self.fake_conf, True)"},{"line_number":799,"context_line":"        mock_execute.side_effect \u003d ["},{"line_number":800,"context_line":"            (0, self.nas_data.fake_subfolder_data),  # pagelist folder"},{"line_number":801,"context_line":"        ]"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"        self._driver.unmanage("},{"line_number":804,"context_line":"            self.m_data.fake_share_nfs,"},{"line_number":805,"context_line":"        )"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        mock_execute.assert_called_once_with("},{"line_number":808,"context_line":"            [\u0027pagelist\u0027, \u0027folder\u0027, self.pool_path[0]],"},{"line_number":809,"context_line":"        )"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":812,"context_line":"    def test_unmanage_cifs(self, mock_execute):"},{"line_number":813,"context_line":"        self._get_driver(self.fake_conf, True)"},{"line_number":814,"context_line":"        mock_execute.side_effect \u003d ["},{"line_number":815,"context_line":"            (0, self.nas_data.fake_subfolder_data),  # pagelist folder"},{"line_number":816,"context_line":"        ]"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"        self._driver.unmanage("},{"line_number":819,"context_line":"            self.m_data.fake_share_cifs,"},{"line_number":820,"context_line":"        )"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"        mock_execute.assert_called_once_with("},{"line_number":823,"context_line":"            [\u0027pagelist\u0027, \u0027folder\u0027, self.pool_path[0]],"},{"line_number":824,"context_line":"        )"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    @mock.patch.object(infortrend_nas.LOG, \u0027warning\u0027)"},{"line_number":827,"context_line":"    def test_unmanage_share_not_exist(self, log_warning):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_8a1639a7","line":824,"range":{"start_line":797,"start_character":0,"end_line":824,"end_character":9},"updated":"2019-06-20 17:58:36.000000000","message":"These tests only differ from each other by one parameter. Can you consider rewriting them with ddt [1]\n\nFor example:\n\n   @ddt.data(\u0027NFS\u0027, \u0027CIFS\u0027)\n   @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)   \n    def test_unmanage_nfs(self, mock_execute, protocol):\n        share_to_manage \u003d (self.m_data.fake_share_nfs \n                         if protocol \u003d\u003d \u0027NFS\u0027 else \n                         self.m_data.fake_share_cifs)\n        self._get_driver(self.fake_conf, True)\n        mock_execute.side_effect \u003d [\n            (0, self.nas_data.fake_subfolder_data),  # pagelist folder\n        ]\n\n        self._driver.unmanage(share_to_manage )\n\n        mock_execute.assert_called_once_with(\n            [\u0027pagelist\u0027, \u0027folder\u0027, self.pool_path[0]],\n        )","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    @ddt.data(\u0027NFS\u0027, \u0027CIFS\u0027)"},{"line_number":797,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":798,"context_line":"    def test_unmanage_nfs(self, mock_execute, protocol):"},{"line_number":799,"context_line":"        share_to_manage \u003d ("},{"line_number":800,"context_line":"            self.m_data.fake_share_nfs"},{"line_number":801,"context_line":"            if protocol \u003d\u003d \u0027NFS\u0027 else"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_94c75413","line":798,"range":{"start_line":798,"start_character":8,"end_line":798,"end_character":25},"updated":"2019-07-08 23:13:11.000000000","message":"test_unmanage","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    @ddt.data(\u0027NFS\u0027, \u0027CIFS\u0027)"},{"line_number":797,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":798,"context_line":"    def test_unmanage_nfs(self, mock_execute, protocol):"},{"line_number":799,"context_line":"        share_to_manage \u003d ("},{"line_number":800,"context_line":"            self.m_data.fake_share_nfs"},{"line_number":801,"context_line":"            if protocol \u003d\u003d \u0027NFS\u0027 else"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_cf5ae328","line":798,"range":{"start_line":798,"start_character":8,"end_line":798,"end_character":25},"in_reply_to":"7faddb67_94c75413","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":796,"context_line":"    @ddt.data(\u0027NFS\u0027, \u0027CIFS\u0027)"},{"line_number":797,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":798,"context_line":"    def test_unmanage_nfs(self, mock_execute, protocol):"},{"line_number":799,"context_line":"        share_to_manage \u003d ("},{"line_number":800,"context_line":"            self.m_data.fake_share_nfs"},{"line_number":801,"context_line":"            if protocol \u003d\u003d \u0027NFS\u0027 else"},{"line_number":802,"context_line":"            self.m_data.fake_share_cifs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_9462f43d","line":799,"range":{"start_line":799,"start_character":8,"end_line":799,"end_character":23},"updated":"2019-07-08 23:13:11.000000000","message":"share_to_unmanage","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":796,"context_line":"    @ddt.data(\u0027NFS\u0027, \u0027CIFS\u0027)"},{"line_number":797,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":798,"context_line":"    def test_unmanage_nfs(self, mock_execute, protocol):"},{"line_number":799,"context_line":"        share_to_manage \u003d ("},{"line_number":800,"context_line":"            self.m_data.fake_share_nfs"},{"line_number":801,"context_line":"            if protocol \u003d\u003d \u0027NFS\u0027 else"},{"line_number":802,"context_line":"            self.m_data.fake_share_cifs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_2f4b7759","line":799,"range":{"start_line":799,"start_character":8,"end_line":799,"end_character":23},"in_reply_to":"7faddb67_9462f43d","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            (0, self.nas_data.fake_subfolder_data),  # pagelist folder"},{"line_number":806,"context_line":"        ]"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        self._driver.unmanage(share_to_manage)"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":"        mock_execute.assert_called_once_with("},{"line_number":811,"context_line":"            [\u0027pagelist\u0027, \u0027folder\u0027, self.pool_path[0]],"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_545c7c7d","line":808,"range":{"start_line":808,"start_character":30,"end_line":808,"end_character":45},"updated":"2019-07-08 23:13:11.000000000","message":"share_to_unmanage","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            (0, self.nas_data.fake_subfolder_data),  # pagelist folder"},{"line_number":806,"context_line":"        ]"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        self._driver.unmanage(share_to_manage)"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":"        mock_execute.assert_called_once_with("},{"line_number":811,"context_line":"            [\u0027pagelist\u0027, \u0027folder\u0027, self.pool_path[0]],"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_4f46f351","line":808,"range":{"start_line":808,"start_character":30,"end_line":808,"end_character":45},"in_reply_to":"7faddb67_545c7c7d","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"25058af00646f3fffdfdbbb94dfad8b969ff4f98","unresolved":false,"context_lines":[{"line_number":811,"context_line":"            [\u0027pagelist\u0027, \u0027folder\u0027, self.pool_path[0]],"},{"line_number":812,"context_line":"        )"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":815,"context_line":"    def test_unmanage_cifs(self, mock_execute):"},{"line_number":816,"context_line":"        self._get_driver(self.fake_conf, True)"},{"line_number":817,"context_line":"        mock_execute.side_effect \u003d ["},{"line_number":818,"context_line":"            (0, self.nas_data.fake_subfolder_data),  # pagelist folder"},{"line_number":819,"context_line":"        ]"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"        self._driver.unmanage("},{"line_number":822,"context_line":"            self.m_data.fake_share_cifs,"},{"line_number":823,"context_line":"        )"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        mock_execute.assert_called_once_with("},{"line_number":826,"context_line":"            [\u0027pagelist\u0027, \u0027folder\u0027, self.pool_path[0]],"},{"line_number":827,"context_line":"        )"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"    @mock.patch.object(infortrend_nas.LOG, \u0027warning\u0027)"},{"line_number":830,"context_line":"    def test_unmanage_share_not_exist(self, log_warning):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_d44f0cbb","line":827,"range":{"start_line":814,"start_character":1,"end_line":827,"end_character":9},"updated":"2019-07-08 23:13:11.000000000","message":"You don\u0027t need this anymore. This test has been covered by converting the above test to use DDT.","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":811,"context_line":"            [\u0027pagelist\u0027, \u0027folder\u0027, self.pool_path[0]],"},{"line_number":812,"context_line":"        )"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":815,"context_line":"    def test_unmanage_cifs(self, mock_execute):"},{"line_number":816,"context_line":"        self._get_driver(self.fake_conf, True)"},{"line_number":817,"context_line":"        mock_execute.side_effect \u003d ["},{"line_number":818,"context_line":"            (0, self.nas_data.fake_subfolder_data),  # pagelist folder"},{"line_number":819,"context_line":"        ]"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"        self._driver.unmanage("},{"line_number":822,"context_line":"            self.m_data.fake_share_cifs,"},{"line_number":823,"context_line":"        )"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"        mock_execute.assert_called_once_with("},{"line_number":826,"context_line":"            [\u0027pagelist\u0027, \u0027folder\u0027, self.pool_path[0]],"},{"line_number":827,"context_line":"        )"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"    @mock.patch.object(infortrend_nas.LOG, \u0027warning\u0027)"},{"line_number":830,"context_line":"    def test_unmanage_share_not_exist(self, log_warning):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_ef76bfa4","line":827,"range":{"start_line":814,"start_character":1,"end_line":827,"end_character":9},"in_reply_to":"7faddb67_d44f0cbb","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"a2f0bba08db6d0541dedd087b7b1df11c2a61c3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"02b0bd542b98ba7e06f1c4081ac46e06223e7731","unresolved":false,"context_lines":[{"line_number":715,"context_line":""},{"line_number":716,"context_line":"    @ddt.data(\u0027NFS\u0027, \u0027CIFS\u0027)"},{"line_number":717,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":718,"context_line":"    def test_unmanage_nfs(self, protocol, mock_execute):"},{"line_number":719,"context_line":"        share_to_manage \u003d (self.m_data.fake_share_nfs"},{"line_number":720,"context_line":"                           if protocol \u003d\u003d \u0027NFS\u0027 else"},{"line_number":721,"context_line":"                           self.m_data.fake_share_cifs)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_dcd3755f","line":718,"range":{"start_line":718,"start_character":8,"end_line":718,"end_character":25},"updated":"2019-07-11 23:18:55.000000000","message":"test_unmanage\n\nYou\u0027re testing both nfs and cifs.","commit_id":"10017574fc5c427776a4dcd673bbc5ef02ef08b1"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":715,"context_line":""},{"line_number":716,"context_line":"    @ddt.data(\u0027NFS\u0027, \u0027CIFS\u0027)"},{"line_number":717,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":718,"context_line":"    def test_unmanage_nfs(self, protocol, mock_execute):"},{"line_number":719,"context_line":"        share_to_manage \u003d (self.m_data.fake_share_nfs"},{"line_number":720,"context_line":"                           if protocol \u003d\u003d \u0027NFS\u0027 else"},{"line_number":721,"context_line":"                           self.m_data.fake_share_cifs)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_4572444b","line":718,"range":{"start_line":718,"start_character":8,"end_line":718,"end_character":25},"in_reply_to":"7faddb67_dcd3755f","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"10017574fc5c427776a4dcd673bbc5ef02ef08b1"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b58a6f6cb99233d45171132ce0d792a50b1d34f4","unresolved":false,"context_lines":[{"line_number":716,"context_line":"    @ddt.data(\u0027NFS\u0027, \u0027CIFS\u0027)"},{"line_number":717,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":718,"context_line":"    def test_unmanage_nfs(self, protocol, mock_execute):"},{"line_number":719,"context_line":"        share_to_manage \u003d (self.m_data.fake_share_nfs"},{"line_number":720,"context_line":"                           if protocol \u003d\u003d \u0027NFS\u0027 else"},{"line_number":721,"context_line":"                           self.m_data.fake_share_cifs)"},{"line_number":722,"context_line":"        self._get_driver(self.fake_conf, True)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_1c526ddf","line":719,"range":{"start_line":719,"start_character":8,"end_line":719,"end_character":23},"updated":"2019-07-11 23:20:19.000000000","message":"please rename to share_to_unmanage\n\n\nYou\u0027re unmanaging this share in the test, not managing","commit_id":"10017574fc5c427776a4dcd673bbc5ef02ef08b1"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"0ba42cc037a00c38e8c68dd25970e040e5844c8a","unresolved":false,"context_lines":[{"line_number":716,"context_line":"    @ddt.data(\u0027NFS\u0027, \u0027CIFS\u0027)"},{"line_number":717,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":718,"context_line":"    def test_unmanage_nfs(self, protocol, mock_execute):"},{"line_number":719,"context_line":"        share_to_manage \u003d (self.m_data.fake_share_nfs"},{"line_number":720,"context_line":"                           if protocol \u003d\u003d \u0027NFS\u0027 else"},{"line_number":721,"context_line":"                           self.m_data.fake_share_cifs)"},{"line_number":722,"context_line":"        self._get_driver(self.fake_conf, True)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_e5901046","line":719,"range":{"start_line":719,"start_character":8,"end_line":719,"end_character":23},"in_reply_to":"7faddb67_1c526ddf","updated":"2019-07-12 09:01:48.000000000","message":"Done","commit_id":"10017574fc5c427776a4dcd673bbc5ef02ef08b1"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2dd20338ee4cbf7ffe47a1c4cf8cfebceb411b82","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            mock.call([\u0027fquota\u0027, \u0027status\u0027, self.pool_id[0],"},{"line_number":402,"context_line":"                       \u0027LV-1\u0027, \u0027-t\u0027, \u0027folder\u0027]),"},{"line_number":403,"context_line":"            mock.call([\u0027fquota\u0027, \u0027create\u0027, self.pool_id[0],"},{"line_number":404,"context_line":"                       \u0027LV-1\u0027, share_name, \u002710G\u0027,"},{"line_number":405,"context_line":"                       \u0027-t\u0027, \u0027folder\u0027])"},{"line_number":406,"context_line":"        ])"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_4610e300","line":405,"range":{"start_line":404,"start_character":49,"end_line":405,"end_character":23},"updated":"2019-08-01 14:26:04.000000000","message":"Is this line break necessary? May all the content can fit in one line","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"81cb629b412edccbd9fcd24da4e0d114a9b54e2e","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            mock.call([\u0027fquota\u0027, \u0027status\u0027, self.pool_id[0],"},{"line_number":402,"context_line":"                       \u0027LV-1\u0027, \u0027-t\u0027, \u0027folder\u0027]),"},{"line_number":403,"context_line":"            mock.call([\u0027fquota\u0027, \u0027create\u0027, self.pool_id[0],"},{"line_number":404,"context_line":"                       \u0027LV-1\u0027, share_name, \u002710G\u0027,"},{"line_number":405,"context_line":"                       \u0027-t\u0027, \u0027folder\u0027])"},{"line_number":406,"context_line":"        ])"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_031bafc9","line":405,"range":{"start_line":404,"start_character":49,"end_line":405,"end_character":23},"in_reply_to":"7faddb67_4610e300","updated":"2019-08-02 09:59:31.000000000","message":"Done","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2dd20338ee4cbf7ffe47a1c4cf8cfebceb411b82","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            self._driver.manage_existing,"},{"line_number":517,"context_line":"            fake_share, {})"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    def test_manage_existing_with_wrong_ip(self):"},{"line_number":520,"context_line":"        self._get_driver(self.fake_conf, True)"},{"line_number":521,"context_line":"        fake_share \u003d self.m_data._get_fake_share_for_manage("},{"line_number":522,"context_line":"            \u0027172.27.1.1:/share-pool-01/LV-1/test-folder\u0027)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        self.assertRaises("},{"line_number":525,"context_line":"            exception.InfortrendNASException,"},{"line_number":526,"context_line":"            self._driver.manage_existing,"},{"line_number":527,"context_line":"            fake_share, {})"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    def test_manage_existing_with_wrong_share_name(self):"},{"line_number":530,"context_line":"        self._get_driver(self.fake_conf, True)"},{"line_number":531,"context_line":"        fake_share \u003d self.m_data._get_fake_share_for_manage("},{"line_number":532,"context_line":"            \u0027172.27.112.223:/share-pool-01/LV-1/some-folder\u0027)"},{"line_number":533,"context_line":"        self._iftnas._execute \u003d mock.Mock("},{"line_number":534,"context_line":"            return_value\u003d(0, self.nas_data.fake_subfolder_data))"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        self.assertRaises("},{"line_number":537,"context_line":"            exception.InfortrendNASException,"},{"line_number":538,"context_line":"            self._driver.manage_existing,"},{"line_number":539,"context_line":"            fake_share, {})"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":542,"context_line":"    def test_manage_existing_with_no_size_setting(self, mock_execute):"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_a6a8b777","line":539,"range":{"start_line":519,"start_character":0,"end_line":539,"end_character":27},"updated":"2019-08-01 14:26:04.000000000","message":"This two tests may be converted in one using ddt like this:\n@ddt.data(\u0027172.27.1.1:/share-pool-01/LV-1/test-folder\u0027,\n          \u0027172.27.112.223:/share-pool-01/LV-1/some-folder\u0027)\ndef test_manage_existing_wrong_ip_or_name(self, fake_share_path):\n    self._get_driver(self.fake_conf, True)\n    fake_share \u003d self.m_data._get_fake_share_for_manage(fake_share_path)\n    self._iftnas._execute \u003d mock.Mock(\n        return_value\u003d(0, self.nas_data.fake_subfolder_data))\n\n    self.assertRaises(\n        exception.InfortrendNASException,\n        self._driver.manage_existing,\n        fake_share, {})","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"81cb629b412edccbd9fcd24da4e0d114a9b54e2e","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            self._driver.manage_existing,"},{"line_number":517,"context_line":"            fake_share, {})"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    def test_manage_existing_with_wrong_ip(self):"},{"line_number":520,"context_line":"        self._get_driver(self.fake_conf, True)"},{"line_number":521,"context_line":"        fake_share \u003d self.m_data._get_fake_share_for_manage("},{"line_number":522,"context_line":"            \u0027172.27.1.1:/share-pool-01/LV-1/test-folder\u0027)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        self.assertRaises("},{"line_number":525,"context_line":"            exception.InfortrendNASException,"},{"line_number":526,"context_line":"            self._driver.manage_existing,"},{"line_number":527,"context_line":"            fake_share, {})"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    def test_manage_existing_with_wrong_share_name(self):"},{"line_number":530,"context_line":"        self._get_driver(self.fake_conf, True)"},{"line_number":531,"context_line":"        fake_share \u003d self.m_data._get_fake_share_for_manage("},{"line_number":532,"context_line":"            \u0027172.27.112.223:/share-pool-01/LV-1/some-folder\u0027)"},{"line_number":533,"context_line":"        self._iftnas._execute \u003d mock.Mock("},{"line_number":534,"context_line":"            return_value\u003d(0, self.nas_data.fake_subfolder_data))"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        self.assertRaises("},{"line_number":537,"context_line":"            exception.InfortrendNASException,"},{"line_number":538,"context_line":"            self._driver.manage_existing,"},{"line_number":539,"context_line":"            fake_share, {})"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    @mock.patch.object(infortrend_nas.InfortrendNAS, \u0027_execute\u0027)"},{"line_number":542,"context_line":"    def test_manage_existing_with_no_size_setting(self, mock_execute):"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_e3721312","line":539,"range":{"start_line":519,"start_character":0,"end_line":539,"end_character":27},"in_reply_to":"7faddb67_a6a8b777","updated":"2019-08-02 09:59:31.000000000","message":"Done","commit_id":"2fc78242a86a729e92ee79af453e45a8d0c2d3bf"}],"releasenotes/notes/bug-1818081-fix-inferred-script-name-in-case-of-proxy-urls-e33466af856708b4.yaml":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3144568775b596b633bda66a03659646b41cd2b3","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    parsing the major API version requested incorrectly, leading to incorrect\r"},{"line_number":6,"context_line":"    responses. This behavior has now been fixed. See `launchpad bug 1818081\r"},{"line_number":7,"context_line":"    \u003chttps://bugs.launchpad.net/manila/+bug/1818081\u003e`_ for more details.\r"},{"line_number":8,"context_line":"    "}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9fb8cfa7_0636f804","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":4},"updated":"2019-06-03 23:07:03.000000000","message":"Seems that the original commiter of this file put \u0027\\t\\t\\t\u0027 in the filename by mistake, and you\u0027re fixing it to the correct name.\nI think it\u0027s OK, although it\u0027s not related to the feature you\u0027re proposing.\n\nJust remove the trailing spaces you added, please.","commit_id":"92c7899f32de09c3d81f2567c4379d751230015c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9fb8cfa7_af91e148","updated":"2019-06-20 17:58:36.000000000","message":"Please revert changes to this file.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9fb8cfa7_398104fc","in_reply_to":"9fb8cfa7_af91e148","updated":"2019-07-02 07:33:15.000000000","message":"Done","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"}],"releasenotes/notes/bug-1818081-fix-inferred-script-name-in-case-of-proxy-urls-e33466af856708b4.yaml\t\t\t":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"bbb4fef978fd00c2e71a5a024a63a36b56a4b69e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bfb3d3c7_8f100459","line":1,"updated":"2019-05-30 13:05:50.000000000","message":"I think you deleted this file by mistake.","commit_id":"85588f9d9b2533dfdf91e90d5fc9a0150e05effe"}],"releasenotes/notes/releasenotes/notes/infortrend-manila-driver-a1a2af20de6368cb.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"58faa22e1aaa44d5d3e351e627706b44b72b62b8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"features:\r"},{"line_number":3,"context_line":"  - Added Manila share driver for Infortrend GS/GSe Family storages.\r"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fb8cfa7_0fcb4d53","line":3,"range":{"start_line":2,"start_character":0,"end_line":3,"end_character":68},"updated":"2019-06-20 17:58:36.000000000","message":"prelude: \u003e\n    Added Manila share driver for Infortrend storage systems.\n\nfeatures:\n  - The new Infortrend driver supports GS/GSe Family storage systems.","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"},{"author":{"_account_id":29311,"name":"KuiRong","email":"Kuirong.Chen@infortrend.com","username":"Kuirong.Chen"},"change_message_id":"109c597a637990fc6b84492af3d7137175bc0ced","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"features:\r"},{"line_number":3,"context_line":"  - Added Manila share driver for Infortrend GS/GSe Family storages.\r"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9fb8cfa7_f9fa8c72","line":3,"range":{"start_line":2,"start_character":0,"end_line":3,"end_character":68},"in_reply_to":"9fb8cfa7_0fcb4d53","updated":"2019-07-02 07:33:15.000000000","message":"I change the releasenotes path\n\"releasenotes/notes/releasenotes/notes/infortrend-manila-driver-a1a2af20de6368cb.yaml\"\nto\n\"releasenotes/notes/infortrend-manila-driver-a1a2af20de6368cb.yaml\"","commit_id":"6bf1f437be193eb01f25109cfadb7d7008c8d6e7"}]}
