)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"41eb3db1a15b72e42e607be92b8486f930a5bd7e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"- Implemented NEF objects interfaces in jsonrpc"},{"line_number":11,"context_line":"- Manage existing support."},{"line_number":12,"context_line":"- Revert to snapshot support."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6f7483c35ac0af644a77b18a449480367a8c100c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7faddb67_29cee559","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":0},"updated":"2019-08-01 00:30:00.000000000","message":"Can you please file a blueprint for tracking?\n\nhttps://blueprints.launchpad.net/manila/","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"088c98b6fb61f379635e2e3b9183b7e34b84efb0","unresolved":false,"context_lines":[{"line_number":10,"context_line":"- Implemented NEF objects interfaces in jsonrpc"},{"line_number":11,"context_line":"- Manage existing support."},{"line_number":12,"context_line":"- Revert to snapshot support."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6f7483c35ac0af644a77b18a449480367a8c100c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7faddb67_6a09dd28","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":0},"in_reply_to":"7faddb67_29cee559","updated":"2019-08-06 17:48:07.000000000","message":"Done","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"}],"doc/source/admin/nexentastor5_driver.rst":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":13,"context_line":"      License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"      under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Infortrend Driver for OpenStack Manila"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"The `NexentaStor5 \u003chttp://www.nexenta.com\u003e`__ Manila driver"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_0b9c8f0c","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":38},"updated":"2019-08-27 20:45:17.000000000","message":"NexentaStor5 Driver for OpenStack Manila","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":13,"context_line":"      License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"      under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Infortrend Driver for OpenStack Manila"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"The `NexentaStor5 \u003chttp://www.nexenta.com\u003e`__ Manila driver"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_9b1443eb","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":38},"in_reply_to":"7faddb67_0b9c8f0c","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Supported shared filesystems and operations"},{"line_number":28,"context_line":"-------------------------------------------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This driver supports NFS and CIFS shares."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The following operations are supported:"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_46cef92d","line":30,"range":{"start_line":30,"start_character":29,"end_line":30,"end_character":40},"updated":"2019-08-28 01:05:47.000000000","message":"The NS5 driver doesn\u0027t support CIFS yet...","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Supported shared filesystems and operations"},{"line_number":28,"context_line":"-------------------------------------------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"This driver supports NFS and CIFS shares."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The following operations are supported:"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_5bd48b1f","line":30,"range":{"start_line":30,"start_character":29,"end_line":30,"end_character":40},"in_reply_to":"7faddb67_46cef92d","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":44,"context_line":"- Create snapshot"},{"line_number":45,"context_line":"- Revert to snapshot"},{"line_number":46,"context_line":"- Delete snapshot"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Backend Configuration"},{"line_number":49,"context_line":"---------------------"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_36f3f20b","line":47,"updated":"2019-08-27 20:45:17.000000000","message":"Missing create share from snapshot","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":44,"context_line":"- Create snapshot"},{"line_number":45,"context_line":"- Revert to snapshot"},{"line_number":46,"context_line":"- Delete snapshot"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Backend Configuration"},{"line_number":49,"context_line":"---------------------"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_dbc87b76","line":47,"in_reply_to":"7faddb67_36f3f20b","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":49,"context_line":"---------------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The following parameters need to be configured in the manila configuration"},{"line_number":52,"context_line":"file for the Infortrend driver:"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"- `share_backend_name` \u003d \u003cbackend name to enable\u003e"},{"line_number":55,"context_line":"- `share_driver` \u003d manila.share.drivers.nexenta.ns5.nexenta_nas.NexentaNasDriver"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_9619867b","line":52,"range":{"start_line":52,"start_character":13,"end_line":52,"end_character":23},"updated":"2019-08-27 20:45:17.000000000","message":"NexentaStor5","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":49,"context_line":"---------------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The following parameters need to be configured in the manila configuration"},{"line_number":52,"context_line":"file for the Infortrend driver:"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"- `share_backend_name` \u003d \u003cbackend name to enable\u003e"},{"line_number":55,"context_line":"- `share_driver` \u003d manila.share.drivers.nexenta.ns5.nexenta_nas.NexentaNasDriver"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_1bb7f3f7","line":52,"range":{"start_line":52,"start_character":13,"end_line":52,"end_character":23},"in_reply_to":"7faddb67_9619867b","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"- `driver_handles_share_servers` \u003d False"},{"line_number":57,"context_line":"- `nexenta_nas_host` \u003d \u003cData address to NAS shares\u003e"},{"line_number":58,"context_line":"- `nexenta_user` \u003d \u003cusername for management operations\u003e"},{"line_number":59,"context_line":"- `nexenta_password` \u003d \u003cpassword ffor management operations\u003e"},{"line_number":60,"context_line":"- `nexenta_pool` \u003d \u003cPool name where NAS shares are created\u003e"},{"line_number":61,"context_line":"- `nexenta_rest_addresses` \u003d \u003cManagement address for Rest API access\u003e"},{"line_number":62,"context_line":"- `nexenta_folder` \u003d \u003cParent filesystem where all Manila shares are kept\u003e"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_06d801ee","line":59,"range":{"start_line":59,"start_character":33,"end_line":59,"end_character":37},"updated":"2019-08-28 01:05:47.000000000","message":"for","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":56,"context_line":"- `driver_handles_share_servers` \u003d False"},{"line_number":57,"context_line":"- `nexenta_nas_host` \u003d \u003cData address to NAS shares\u003e"},{"line_number":58,"context_line":"- `nexenta_user` \u003d \u003cusername for management operations\u003e"},{"line_number":59,"context_line":"- `nexenta_password` \u003d \u003cpassword ffor management operations\u003e"},{"line_number":60,"context_line":"- `nexenta_pool` \u003d \u003cPool name where NAS shares are created\u003e"},{"line_number":61,"context_line":"- `nexenta_rest_addresses` \u003d \u003cManagement address for Rest API access\u003e"},{"line_number":62,"context_line":"- `nexenta_folder` \u003d \u003cParent filesystem where all Manila shares are kept\u003e"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_fbb3f708","line":59,"range":{"start_line":59,"start_character":33,"end_line":59,"end_character":37},"in_reply_to":"7faddb67_06d801ee","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"`driver_handles_share_servers` extra-spec. This ensures that the share"},{"line_number":74,"context_line":"will be created on a backend that supports the requested"},{"line_number":75,"context_line":"driver_handles_share_servers (share networks) capability."},{"line_number":76,"context_line":"For the NexentaStor driver, this must be set to False."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Back-end configuration example"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_e6dcc5e2","line":76,"range":{"start_line":76,"start_character":28,"end_line":76,"end_character":33},"updated":"2019-08-28 01:05:47.000000000","message":"this extra-spec\u0027s value","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":73,"context_line":"`driver_handles_share_servers` extra-spec. This ensures that the share"},{"line_number":74,"context_line":"will be created on a backend that supports the requested"},{"line_number":75,"context_line":"driver_handles_share_servers (share networks) capability."},{"line_number":76,"context_line":"For the NexentaStor driver, this must be set to False."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Back-end configuration example"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_5bbd6bd5","line":76,"range":{"start_line":76,"start_character":28,"end_line":76,"end_character":33},"in_reply_to":"7faddb67_e6dcc5e2","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":75,"context_line":"driver_handles_share_servers (share networks) capability."},{"line_number":76,"context_line":"For the NexentaStor driver, this must be set to False."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Back-end configuration example"},{"line_number":80,"context_line":"------------------------------"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_2b838bcd","line":78,"updated":"2019-08-27 20:45:17.000000000","message":"Could you please add the known restrictions?","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"}],"doc/source/admin/share_back_ends_feature_support_mapping.rst":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"9f7913602a7fc8f92f954a91387191bac33b9458","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"7faddb67_1bb373eb","updated":"2019-08-28 13:25:29.000000000","message":"Looks like you have a bad rebase here since you are deleting lines that where recently added (e.g Infortrend driver info)","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":49,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":50,"context_line":"|               EMC Isilon               |           K           |          \\-           |       M      |      \\-      |            K           |              K             |            \\-            |          \\-        |          \\-        |"},{"line_number":51,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":52,"context_line":"|               GlusterFS                |           J           |          \\-           |      \\-      |      \\-      |    volume layout (L)   |      volume layout (L)     |            \\-            |          \\-        |          \\-        |"},{"line_number":53,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":54,"context_line":"|            GlusterFS-Native            |           J           |          \\-           |      \\-      |      \\-      |            K           |              L             |            \\-            |          \\-        |          \\-        |"},{"line_number":55,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_f6d47a4d","line":52,"range":{"start_line":52,"start_character":96,"end_line":52,"end_character":119},"updated":"2019-08-27 20:45:17.000000000","message":"Are this changes really necessary?","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":49,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":50,"context_line":"|               EMC Isilon               |           K           |          \\-           |       M      |      \\-      |            K           |              K             |            \\-            |          \\-        |          \\-        |"},{"line_number":51,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":52,"context_line":"|               GlusterFS                |           J           |          \\-           |      \\-      |      \\-      |    volume layout (L)   |      volume layout (L)     |            \\-            |          \\-        |          \\-        |"},{"line_number":53,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":54,"context_line":"|            GlusterFS-Native            |           J           |          \\-           |      \\-      |      \\-      |            K           |              L             |            \\-            |          \\-        |          \\-        |"},{"line_number":55,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_b867c5ea","line":52,"range":{"start_line":52,"start_character":96,"end_line":52,"end_character":119},"in_reply_to":"7faddb67_f6d47a4d","updated":"2019-08-29 10:02:01.000000000","message":"Definitely not, probably mistake while rebasing","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":50,"context_line":"|               EMC Isilon               |           K           |          \\-           |       M      |      \\-      |            K           |              K             |            \\-            |          \\-        |          \\-        |"},{"line_number":51,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":52,"context_line":"|               GlusterFS                |           J           |          \\-           |      \\-      |      \\-      |    volume layout (L)   |      volume layout (L)     |            \\-            |          \\-        |          \\-        |"},{"line_number":53,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":54,"context_line":"|            GlusterFS-Native            |           J           |          \\-           |      \\-      |      \\-      |            K           |              L             |            \\-            |          \\-        |          \\-        |"},{"line_number":55,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_a6dd6d14","line":52,"range":{"start_line":52,"start_character":96,"end_line":52,"end_character":119},"in_reply_to":"7faddb67_f6d47a4d","updated":"2019-08-28 01:05:47.000000000","message":"Nope, changes to this line need to be reverted, .","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"|             INSPUR AS13000             |           R           |          \\-           |       R      |      \\-      |            R           |              R             |            \\-            |           \\-       |           \\-       |"},{"line_number":71,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":72,"context_line":"|            INSPUR InStorage            |           T           |          \\-           |       T      |      \\-      |           \\-           |             \\-             |            \\-            |           \\-       |           \\-       |"},{"line_number":73,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":74,"context_line":"|                  LVM                   |           M           |          \\-           |       M      |      \\-      |            M           |              M             |            \\-            |           O        |           O        |"},{"line_number":75,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":76,"context_line":"|                Quobyte                 |           K           |          \\-           |       M      |       M      |           \\-           |             \\-             |            \\-            |          \\-        |          \\-        |"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_c64509b6","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":243},"updated":"2019-08-28 01:05:47.000000000","message":"It appears you\u0027ve also inadvertently deleted the Infortrend driver\u0027s row. Please revert this deletion.","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":70,"context_line":"|             INSPUR AS13000             |           R           |          \\-           |       R      |      \\-      |            R           |              R             |            \\-            |           \\-       |           \\-       |"},{"line_number":71,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":72,"context_line":"|            INSPUR InStorage            |           T           |          \\-           |       T      |      \\-      |           \\-           |             \\-             |            \\-            |           \\-       |           \\-       |"},{"line_number":73,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":74,"context_line":"|                  LVM                   |           M           |          \\-           |       M      |      \\-      |            M           |              M             |            \\-            |           O        |           O        |"},{"line_number":75,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+--------------------+--------------------+"},{"line_number":76,"context_line":"|                Quobyte                 |           K           |          \\-           |       M      |       M      |           \\-           |             \\-             |            \\-            |          \\-        |          \\-        |"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_78614dd3","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":243},"in_reply_to":"7faddb67_c64509b6","updated":"2019-08-29 10:02:01.000000000","message":"Will do, looks like a problem with rebase on my side","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":143,"context_line":"|             INSPUR AS13000             |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |      \\-      |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |     \\-     |"},{"line_number":144,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":145,"context_line":"|            INSPUR InStorage            |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |      \\-      |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |     \\-     |"},{"line_number":146,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":147,"context_line":"|              Oracle ZFSSA              |  NFS,CIFS(K) |      \\-      |       \\-       |     \\-     |      \\-      |      \\-      |      \\-      |       \\-       |     \\-     |     \\-     |"},{"line_number":148,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":149,"context_line":"|                 CephFS                 |    NFS (P)   |    NFS (T)   |       \\-       |     \\-     |  CEPHFS (M)  |    NFS (P)   |    NFS (T)   |       \\-       |     \\-     | CEPHFS (N) |"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_26373d4e","line":146,"updated":"2019-08-28 01:05:47.000000000","message":"Appears you\u0027ve deleted the Infortrend driver\u0027s lines in this and tables below, Please revert those changes... \n\nLooks like a bad rebase?","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":143,"context_line":"|             INSPUR AS13000             |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |      \\-      |    NFS (R)   |      \\-      |    CIFS (R)    |     \\-     |     \\-     |"},{"line_number":144,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":145,"context_line":"|            INSPUR InStorage            |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |      \\-      |    NFS (T)   |      \\-      |    CIFS (T)    |     \\-     |     \\-     |"},{"line_number":146,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":147,"context_line":"|              Oracle ZFSSA              |  NFS,CIFS(K) |      \\-      |       \\-       |     \\-     |      \\-      |      \\-      |      \\-      |       \\-       |     \\-     |     \\-     |"},{"line_number":148,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":149,"context_line":"|                 CephFS                 |    NFS (P)   |    NFS (T)   |       \\-       |     \\-     |  CEPHFS (M)  |    NFS (P)   |    NFS (T)   |       \\-       |     \\-     | CEPHFS (N) |"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_b8aca5ee","line":146,"in_reply_to":"7faddb67_26373d4e","updated":"2019-08-29 10:02:01.000000000","message":"Yes, seems like it. Fixing this in next commit.","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":280,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":281,"context_line":"|              NexentaStor4              |     \\-    |      N     |   N    |      N      |         N         |          N         | \\-  |              N             |          \\-        |          \\-        |       P      |      \\-      |"},{"line_number":282,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":283,"context_line":"|              NexentaStor5              |     \\-    |      N     |   N    |      N      |         N         |          N         | \\-  |              N             |          \\-        |          \\-        |       P      |      \\-      |"},{"line_number":284,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":285,"context_line":"|                 MapRFS                 |     \\-    |      N     |   \\-   |      \\-     |        \\-         |          N         | \\-  |              O             |          \\-        |          \\-        |       P      |      \\-      |"},{"line_number":286,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_4659198c","line":283,"range":{"start_line":283,"start_character":176,"end_line":283,"end_character":178},"updated":"2019-08-28 01:05:47.000000000","message":"T","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"80ab489f68e7861283dc96859e37028e1462f979","unresolved":false,"context_lines":[{"line_number":156,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":157,"context_line":"|              NexentaStor4              |    NFS (N)   |      \\-      |       \\-       |     \\-     |      \\-      |    NFS (N)   |      \\-      |       \\-       |     \\-     |     \\-     |"},{"line_number":158,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":159,"context_line":"|              NexentaStor5              |    NFS (N)   |       T      |       \\-       |     \\-     |      \\-      |    NFS (N)   |       T      |       \\-       |     \\-     |     \\-     |"},{"line_number":160,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":161,"context_line":"|                 MapRFS                 |      \\-      |      \\-      |    MapRFS(O)   |     \\-     |      \\-      |      \\-      |      \\-      |    MapRFS(O)   |     \\-     |     \\-     |"},{"line_number":162,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"}],"source_content_type":"text/x-rst","patch_set":24,"id":"7faddb67_f270a30b","line":159,"range":{"start_line":159,"start_character":64,"end_line":159,"end_character":65},"updated":"2019-09-03 18:48:35.000000000","message":"nit: NFS (T)","commit_id":"361b15da21a57b25693c50ffc9c2dc84e42c883b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"80ab489f68e7861283dc96859e37028e1462f979","unresolved":false,"context_lines":[{"line_number":156,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":157,"context_line":"|              NexentaStor4              |    NFS (N)   |      \\-      |       \\-       |     \\-     |      \\-      |    NFS (N)   |      \\-      |       \\-       |     \\-     |     \\-     |"},{"line_number":158,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":159,"context_line":"|              NexentaStor5              |    NFS (N)   |       T      |       \\-       |     \\-     |      \\-      |    NFS (N)   |       T      |       \\-       |     \\-     |     \\-     |"},{"line_number":160,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":161,"context_line":"|                 MapRFS                 |      \\-      |      \\-      |    MapRFS(O)   |     \\-     |      \\-      |      \\-      |      \\-      |    MapRFS(O)   |     \\-     |     \\-     |"},{"line_number":162,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"}],"source_content_type":"text/x-rst","patch_set":24,"id":"7faddb67_126e9f2b","line":159,"range":{"start_line":159,"start_character":138,"end_line":159,"end_character":140},"updated":"2019-09-03 18:48:35.000000000","message":"same","commit_id":"361b15da21a57b25693c50ffc9c2dc84e42c883b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"80ab489f68e7861283dc96859e37028e1462f979","unresolved":false,"context_lines":[{"line_number":288,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":289,"context_line":"|              NexentaStor4              |     \\-    |      N     |   N    |      N      |         N         |          N         | \\-  |              N             |          \\-        |          \\-        |       P      |      \\-      |"},{"line_number":290,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":291,"context_line":"|              NexentaStor5              |     \\-    |      N     |   \\-   |      N      |         N         |          N         | \\-  |              N             |           T        |          \\-        |       P      |      \\-      |"},{"line_number":292,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":293,"context_line":"|                 MapRFS                 |     \\-    |      N     |   \\-   |      \\-     |        \\-         |          N         | \\-  |              O             |          \\-        |          \\-        |       P      |      \\-      |"},{"line_number":294,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"}],"source_content_type":"text/x-rst","patch_set":24,"id":"7faddb67_12477fa5","line":291,"range":{"start_line":291,"start_character":70,"end_line":291,"end_character":72},"updated":"2019-09-03 18:48:35.000000000","message":"In the future, I would recommend separating this documentation bug-fix so you can back port it to older documentation...\n\n\nPlease do this if you make another patch to this changeset. Else, you may submit a simple change directly to the Stein release that we can backport to all maintained releases","commit_id":"361b15da21a57b25693c50ffc9c2dc84e42c883b"}],"doc/source/configuration/shared-file-systems/drivers/nexentastor5-driver.rst":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Supported shared filesystems and operations"},{"line_number":18,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The drivers supports NFS shares."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The following operations are supported:"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_eb1c937c","line":20,"range":{"start_line":20,"start_character":21,"end_line":20,"end_character":24},"updated":"2019-08-27 20:45:17.000000000","message":"Is it correct? In the other file [1] was specified that the driver supports both NFS and CIFS shares.\n\n[1] https://review.opendev.org/#/c/664269/20/doc/source/admin/nexentastor5_driver.rst@30","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Supported shared filesystems and operations"},{"line_number":18,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The drivers supports NFS shares."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The following operations are supported:"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_58857158","line":20,"range":{"start_line":20,"start_character":21,"end_line":20,"end_character":24},"in_reply_to":"7faddb67_eb1c937c","updated":"2019-08-29 10:02:01.000000000","message":"It is NFS only for now, will be adding CIFS in a separate patch","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The following operations are supported:"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- Create share"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- Delete share"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_5698eeca","line":24,"range":{"start_line":24,"start_character":9,"end_line":24,"end_character":14},"updated":"2019-08-27 20:45:17.000000000","message":"If is only NFS, please change here to Create NFS share to make it compatible with the other file you\u0027re adding. If we are talking about NFS and CIFS, I think you could let it as is in this file and replace the occurencies of \"Create NFS share\", changing them to \"Create share\" in the other file.","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The following operations are supported:"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- Create share"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- Delete share"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_187ff966","line":24,"range":{"start_line":24,"start_character":9,"end_line":24,"end_character":14},"in_reply_to":"7faddb67_5698eeca","updated":"2019-08-29 10:02:01.000000000","message":"With CIFS coming later in a separate iteration, should I change this to \"Create NFS share\" or use \"Create share\"?","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"- Pool and parent filesystem configured (this filesystem will contain"},{"line_number":58,"context_line":"  all manila shares)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Configuration"},{"line_number":61,"context_line":"~~~~~~~~~~~~~~"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_36cc52ba","line":59,"updated":"2019-08-27 20:45:17.000000000","message":"Could you please add a Known restrictions section?","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"- Pool and parent filesystem configured (this filesystem will contain"},{"line_number":58,"context_line":"  all manila shares)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Configuration"},{"line_number":61,"context_line":"~~~~~~~~~~~~~~"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7faddb67_bba01f93","line":59,"in_reply_to":"7faddb67_36cc52ba","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"}],"doc/source/configuration/tables/manila-nexentastor5.inc":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"7faddb67_792b9a32","updated":"2019-08-28 01:05:47.000000000","message":"This page causes doc8 to fail with \"D004 Found literal carriage return\" \nThis is because the raw version of this file seems to have windows style line endings (CR+LF)... [0]\n\nAre you using a text/code editor on windows?\nIf yes, you might be able to undo the CR/LF endings and set just the LF endings as expected [1][2]\n\nOr, you can try to replace all the \"\\r\\n\"s in your file with \"\\n\" using an editor capable of making regex replacements\n\n\n[0] https://bugs.launchpad.net/doc8/+bug/1756704\n[1] https://help.github.com/en/articles/configuring-git-to-handle-line-endings#global-settings-for-line-endings\n[2] \"Formatting and Whitespace\" section of https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"7faddb67_5bb9ebc8","in_reply_to":"7faddb67_792b9a32","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"}],"manila/share/drivers/nexenta/ns5/jsonrpc.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import requests"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from manila.exception import ManilaException"},{"line_number":26,"context_line":"from manila.i18n import _"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_de38fcd3","line":25,"range":{"start_line":25,"start_character":29,"end_line":25,"end_character":44},"updated":"2019-07-01 21:52:52.000000000","message":"import modules, not objects:\n\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"daeabdf8811d4207dea87f4a728886faba7fd6c9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import requests"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from manila.exception import ManilaException"},{"line_number":26,"context_line":"from manila.i18n import _"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_367358e9","line":25,"range":{"start_line":25,"start_character":29,"end_line":25,"end_character":44},"updated":"2019-07-01 21:52:52.000000000","message":"import modules please, not objects: https://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"73e28b10cefd211f412b5c870ecbf6c4bf0f5ddb","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        self.retries \u003d len(self.hosts) * conf.nexenta_rest_retry_count"},{"line_number":511,"context_line":"        self.timeout \u003d ("},{"line_number":512,"context_line":"            conf.nexenta_rest_connect_timeout, conf.nexenta_rest_read_timeout)"},{"line_number":513,"context_line":"        max_retries \u003d requests.packages.urllib3.util.retry.Retry("},{"line_number":514,"context_line":"            total\u003dconf.nexenta_rest_retry_count,"},{"line_number":515,"context_line":"            backoff_factor\u003dconf.nexenta_rest_backoff_factor)"},{"line_number":516,"context_line":"        adapter \u003d requests.adapters.HTTPAdapter(max_retries\u003dmax_retries)"},{"line_number":517,"context_line":"        self.session.verify \u003d conf.nexenta_ssl_cert_verify"},{"line_number":518,"context_line":"        self.session.headers.update(self.headers)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_1ac41f92","line":515,"range":{"start_line":513,"start_character":0,"end_line":515,"end_character":60},"updated":"2019-07-22 20:28:58.000000000","message":"Pylint fails here because of the way the requests package loads some components... so, ignoring these would be the way to go.. \n\nFor shorter lines, you can just use \"# pylint: disable\u003dno-member\" inline, example is here: https://github.com/openstack/manila/blob/c4ba394a87dde0bd6da7d7ac9c4ec90abf224950/manila/db/sqlalchemy/models.py#L434 \n\n\nIf used in a separate line, the disable will apply to the rest of the block of code.. See https://github.com/openstack/manila/blob/4b6cfcf69023dc7a4b004c59513c50d92b979152/manila/db/sqlalchemy/api.py#L1879\n\nSometimes, code may be at the top of the file.. So ignoring stuff is harder/dirtier: https://github.com/openstack/manila/blob/3e855d5f60d19dc0ce96fe0e561891e98f75557b/manila/share/drivers/nexenta/ns5/jsonrpc.py#L30-L34","commit_id":"fabb1f284d23e6dee502de78e57f30d174777164"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4b46777a6fa09943bab4628415b423d8fc11e13","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        self.retries \u003d len(self.hosts) * conf.nexenta_rest_retry_count"},{"line_number":513,"context_line":"        self.timeout \u003d ("},{"line_number":514,"context_line":"            conf.nexenta_rest_connect_timeout, conf.nexenta_rest_read_timeout)"},{"line_number":515,"context_line":"        # pylint: disable\u003dno-member,import-error"},{"line_number":516,"context_line":"        max_retries \u003d requests.packages.urllib3.util.retry.Retry("},{"line_number":517,"context_line":"            total\u003dconf.nexenta_rest_retry_count,"},{"line_number":518,"context_line":"            backoff_factor\u003dconf.nexenta_rest_backoff_factor)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_597cd3b4","line":515,"range":{"start_line":515,"start_character":35,"end_line":515,"end_character":48},"updated":"2019-07-23 19:55:23.000000000","message":"This doesn\u0027t need to be ignored here.","commit_id":"3d1680d25f8cefc751bc3ca82e29c24c50cd5c8e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1502431a42c48f7991292c14ea2ff307a259b7e2","unresolved":false,"context_lines":[{"line_number":494,"context_line":"        self.username \u003d conf.nexenta_user"},{"line_number":495,"context_line":"        self.password \u003d conf.nexenta_password"},{"line_number":496,"context_line":"        self.hosts \u003d []"},{"line_number":497,"context_line":"        if conf.nexenta_rest_addresses:"},{"line_number":498,"context_line":"            for host in conf.nexenta_rest_addresses:"},{"line_number":499,"context_line":"                self.hosts.append(host.strip())"},{"line_number":500,"context_line":"        self.root \u003d self.filesystems.path(path)"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_9ac08152","line":497,"range":{"start_line":497,"start_character":0,"end_line":497,"end_character":39},"updated":"2019-08-16 06:34:37.000000000","message":"not necessary","commit_id":"cf37a29aa70641884fc97d387f0da0abc4f93558"}],"manila/share/drivers/nexenta/ns5/nexenta_nas.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":49,"context_line":"        \"\"\"Do initialization.\"\"\""},{"line_number":50,"context_line":"        LOG.debug(\u0027Initializing Nexenta driver.\u0027)"},{"line_number":51,"context_line":"        super(NexentaNasDriver, self).__init__((True, False), *args, **kwargs)"},{"line_number":52,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027)"},{"line_number":53,"context_line":"        if self.configuration:"},{"line_number":54,"context_line":"            self.configuration.append_config_values("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_2bf7b35b","line":51,"range":{"start_line":51,"start_character":47,"end_line":51,"end_character":60},"updated":"2019-07-01 21:52:52.000000000","message":"I can\u0027t see this driver handling share servers yet..","commit_id":"ef00a59237b1229cb28760b58845c9fb605fdef3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":49,"context_line":"        \"\"\"Do initialization.\"\"\""},{"line_number":50,"context_line":"        LOG.debug(\u0027Initializing Nexenta driver.\u0027)"},{"line_number":51,"context_line":"        super(NexentaNasDriver, self).__init__((True, False), *args, **kwargs)"},{"line_number":52,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027)"},{"line_number":53,"context_line":"        if self.configuration:"},{"line_number":54,"context_line":"            self.configuration.append_config_values("}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2138f4d0","line":51,"range":{"start_line":51,"start_character":47,"end_line":51,"end_character":60},"updated":"2019-07-01 21:52:52.000000000","message":"This driver doesn\u0027t support creating/managing share servers, so this should just be False.","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        protocol \u003d \u0027\u0027"},{"line_number":88,"context_line":"        if self.configuration.nexenta_nfs:"},{"line_number":89,"context_line":"            protocol \u003d \u0027NFS\u0027"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            msg \u003d _(\u0027At least 1 storage protocol must be enabled.\u0027)"},{"line_number":92,"context_line":"            raise exception.NexentaException(msg)"},{"line_number":93,"context_line":"        return protocol"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e1b73c20","line":90,"range":{"start_line":90,"start_character":12,"end_line":90,"end_character":13},"updated":"2019-07-01 21:52:52.000000000","message":"missing nexenta_smb..","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                          {\u0027path\u0027: dataset_path, \u0027error\u0027: delete_error})"},{"line_number":173,"context_line":"            raise create_error"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.provisioned_capacity +\u003d share[\u0027size\u0027]"},{"line_number":176,"context_line":"        location \u003d {"},{"line_number":177,"context_line":"            \u0027path\u0027: mount_path,"},{"line_number":178,"context_line":"            \u0027id\u0027: self._get_share_name(share)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2170f471","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":50},"updated":"2019-07-01 21:52:52.000000000","message":"This value will be wrong if the manila-share service is deployed in an active-active fashion. Can you instead enumerate the shares and sizes in the periodic thread (_get_share_stats()) and sum them up dynamically?","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            payload[\u0027referencedReservationSize\u0027] \u003d size"},{"line_number":211,"context_line":"        self.nef.snapshots.clone(snapshot_path, payload)"},{"line_number":212,"context_line":"        self._remount_filesystem(clone_path)"},{"line_number":213,"context_line":"        self.provisioned_capacity +\u003d share[\u0027size\u0027]"},{"line_number":214,"context_line":"        try:"},{"line_number":215,"context_line":"            mount_path \u003d self._mount_filesystem(share)"},{"line_number":216,"context_line":"        except jsonrpc.NefException as create_error:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_610fccdf","line":213,"range":{"start_line":213,"start_character":8,"end_line":213,"end_character":50},"updated":"2019-07-01 21:52:52.000000000","message":"same comment as above.","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        \"\"\"Get share name according to share name template.\"\"\""},{"line_number":242,"context_line":"        return (\u0027%(template)s%(share_id)s\u0027 % {"},{"line_number":243,"context_line":"                \u0027template\u0027: self.configuration.nexenta_share_name_template,"},{"line_number":244,"context_line":"                \u0027share_id\u0027: share[\u0027share_id\u0027]})"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def _get_snapshot_path(self, snapshot):"},{"line_number":247,"context_line":"        \"\"\"Return ZFS snapshot path for the snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_c1731815","line":244,"range":{"start_line":244,"start_character":35,"end_line":244,"end_character":43},"updated":"2019-07-01 21:52:52.000000000","message":"This should have been \"id\". However, looking at the current state of this driver, it always used share[\u0027name\u0027], which resolves to \"share-\"+share[\u0027share_id\u0027] instead of share[\u0027id\u0027]. \n\n \n\nUsing the \"share_id\" is not recommended, because it pertains to a logical share in the manila database that can be back-ended by many physical shares in the storage.\n\n \n\nDuring normal operation, a logical manila share only has one physical share. However, with share replication and share migration, the same logical manila share will have more than one physical shares that it refers to. This driver doesn\u0027t currently implement share replication, but may, in the future; and this may turn out to be an issue.","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    def _get_snapshot_path(self, snapshot):"},{"line_number":247,"context_line":"        \"\"\"Return ZFS snapshot path for the snapshot.\"\"\""},{"line_number":248,"context_line":"        snapshot_id \u003d ("},{"line_number":249,"context_line":"            snapshot[\u0027snapshot_id\u0027] or snapshot[\u0027share_group_snapshot_id\u0027])"},{"line_number":250,"context_line":"        share \u003d snapshot.get(\u0027share\u0027) or snapshot.get(\u0027share_instance\u0027)"},{"line_number":251,"context_line":"        fs_path \u003d self._get_dataset_path(share)"},{"line_number":252,"context_line":"        return \u0027%s@snapshot-%s\u0027 % (fs_path, snapshot_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_81c8c021","line":249,"range":{"start_line":249,"start_character":12,"end_line":249,"end_character":74},"updated":"2019-07-01 21:52:52.000000000","message":"same comment as above. The recommended naming on the backend is to use snapshot[\u0027id\u0027] -\u003e This id parameter is exclusive to each snapshot, even when the share that it belongs to has replicas, or is part of a share group or is being migrated across storage backends.","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"41eb3db1a15b72e42e607be92b8486f930a5bd7e","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        ro_list \u003d []"},{"line_number":421,"context_line":"        if share[\u0027share_proto\u0027] \u003d\u003d \u0027NFS\u0027:"},{"line_number":422,"context_line":"            for rule in access_rules:"},{"line_number":423,"context_line":"                if rule[\u0027access_type\u0027].lower() !\u003d \u0027ip\u0027:"},{"line_number":424,"context_line":"                    msg \u003d _("},{"line_number":425,"context_line":"                        \u0027Only IP access control type is supported for NFS.\u0027)"},{"line_number":426,"context_line":"                    raise exception.InvalidShareAccess(reason\u003dmsg)"},{"line_number":427,"context_line":"                if rule[\u0027access_level\u0027] \u003d\u003d common.ACCESS_LEVEL_RW:"},{"line_number":428,"context_line":"                    rw_list.append(rule[\u0027access_to\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_c973914d","line":425,"range":{"start_line":423,"start_character":16,"end_line":425,"end_character":76},"updated":"2019-08-01 00:30:00.000000000","message":"The update_access call into the driver can present a batch of access rules - if you raise an exception in this code path, it will set all access rules within that batch in an \"error\" state. These \"error\" rules are not presented to the driver again, and the only recourse is that the user that added these rules must remove all of them and re-add the rules. \n\nThis is undesirable...  \n\nPlease handle errors for individual access rules, and return the specific rule as being invalid to your driver... See: https://github.com/openstack/manila/blob/d877b61c5e37ff012341194b8349af6f38155e5d/manila/share/driver.py#L750","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"088c98b6fb61f379635e2e3b9183b7e34b84efb0","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        ro_list \u003d []"},{"line_number":421,"context_line":"        if share[\u0027share_proto\u0027] \u003d\u003d \u0027NFS\u0027:"},{"line_number":422,"context_line":"            for rule in access_rules:"},{"line_number":423,"context_line":"                if rule[\u0027access_type\u0027].lower() !\u003d \u0027ip\u0027:"},{"line_number":424,"context_line":"                    msg \u003d _("},{"line_number":425,"context_line":"                        \u0027Only IP access control type is supported for NFS.\u0027)"},{"line_number":426,"context_line":"                    raise exception.InvalidShareAccess(reason\u003dmsg)"},{"line_number":427,"context_line":"                if rule[\u0027access_level\u0027] \u003d\u003d common.ACCESS_LEVEL_RW:"},{"line_number":428,"context_line":"                    rw_list.append(rule[\u0027access_to\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_ea14ed42","line":425,"range":{"start_line":423,"start_character":16,"end_line":425,"end_character":76},"in_reply_to":"7faddb67_c973914d","updated":"2019-08-06 17:48:07.000000000","message":"Done","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"41eb3db1a15b72e42e607be92b8486f930a5bd7e","unresolved":false,"context_lines":[{"line_number":448,"context_line":"                address \u003d address_mask[0]"},{"line_number":449,"context_line":"                ls \u003d {\"allow\": True, \"etype\": \"fqdn\", \"entity\": address}"},{"line_number":450,"context_line":"                if len(address_mask) \u003d\u003d 2:"},{"line_number":451,"context_line":"                    try:"},{"line_number":452,"context_line":"                        mask \u003d int(address_mask[1])"},{"line_number":453,"context_line":"                        if 0 \u003c\u003d mask \u003c 31:"},{"line_number":454,"context_line":"                            ls[\u0027mask\u0027] \u003d mask"},{"line_number":455,"context_line":"                            ls[\u0027etype\u0027] \u003d \u0027network\u0027"},{"line_number":456,"context_line":"                    except Exception:"},{"line_number":457,"context_line":"                        raise exception.InvalidInput("},{"line_number":458,"context_line":"                            reason\u003d_("},{"line_number":459,"context_line":"                                \u0027\u003c{}\u003e is not a valid access parameter\u0027).format("},{"line_number":460,"context_line":"                                    addr))"},{"line_number":461,"context_line":"                rule_list.append(ls)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"            # Context type with no addresses will result in an API error"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_49aec181","line":460,"range":{"start_line":451,"start_character":0,"end_line":460,"end_character":42},"updated":"2019-08-01 00:30:00.000000000","message":"Same comment here; although - this check (that the IP address or network subnet used as the client) is performed in the API, you can drop it. See: https://github.com/openstack/manila/blob/6d970b7375689eb73fc6a26ceb1c4d6e5553fa70/manila/api/common.py#L368","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"088c98b6fb61f379635e2e3b9183b7e34b84efb0","unresolved":false,"context_lines":[{"line_number":448,"context_line":"                address \u003d address_mask[0]"},{"line_number":449,"context_line":"                ls \u003d {\"allow\": True, \"etype\": \"fqdn\", \"entity\": address}"},{"line_number":450,"context_line":"                if len(address_mask) \u003d\u003d 2:"},{"line_number":451,"context_line":"                    try:"},{"line_number":452,"context_line":"                        mask \u003d int(address_mask[1])"},{"line_number":453,"context_line":"                        if 0 \u003c\u003d mask \u003c 31:"},{"line_number":454,"context_line":"                            ls[\u0027mask\u0027] \u003d mask"},{"line_number":455,"context_line":"                            ls[\u0027etype\u0027] \u003d \u0027network\u0027"},{"line_number":456,"context_line":"                    except Exception:"},{"line_number":457,"context_line":"                        raise exception.InvalidInput("},{"line_number":458,"context_line":"                            reason\u003d_("},{"line_number":459,"context_line":"                                \u0027\u003c{}\u003e is not a valid access parameter\u0027).format("},{"line_number":460,"context_line":"                                    addr))"},{"line_number":461,"context_line":"                rule_list.append(ls)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"            # Context type with no addresses will result in an API error"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_8a29b98a","line":460,"range":{"start_line":451,"start_character":0,"end_line":460,"end_character":42},"in_reply_to":"7faddb67_49aec181","updated":"2019-08-06 17:48:07.000000000","message":"Done","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"41eb3db1a15b72e42e607be92b8486f930a5bd7e","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                        \u0027max_over_subscription_ratio\u0027)),"},{"line_number":523,"context_line":"                \u0027thin_provisioning\u0027:"},{"line_number":524,"context_line":"                    self.configuration.nexenta_thin_provisioning,"},{"line_number":525,"context_line":"                \u0027provisioned_capacity_gb\u0027: self.provisioned_capacity,"},{"line_number":526,"context_line":"            }],"},{"line_number":527,"context_line":"        }"},{"line_number":528,"context_line":"        self._stats.update(data)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_d446c850","line":525,"range":{"start_line":525,"start_character":16,"end_line":525,"end_character":69},"updated":"2019-08-01 00:30:00.000000000","message":"Why not retrieve this from the backend periodically, through the method on line 137.\n\nIf multiple instances of the manila-share process are deployed in an active-active manner, each instance of your driver will report its own provisioned capacity based on the shares it was responsible to create.","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"300a4b48910ce92c452e1e0300a513b3aabc9168","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                        \u0027max_over_subscription_ratio\u0027)),"},{"line_number":523,"context_line":"                \u0027thin_provisioning\u0027:"},{"line_number":524,"context_line":"                    self.configuration.nexenta_thin_provisioning,"},{"line_number":525,"context_line":"                \u0027provisioned_capacity_gb\u0027: self.provisioned_capacity,"},{"line_number":526,"context_line":"            }],"},{"line_number":527,"context_line":"        }"},{"line_number":528,"context_line":"        self._stats.update(data)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_4a11815c","line":525,"range":{"start_line":525,"start_character":16,"end_line":525,"end_character":69},"in_reply_to":"7faddb67_4a7bc179","updated":"2019-08-06 18:17:03.000000000","message":"oh.. ty for letting me know; if you want to do the provisioned capacity gb calculation in the driver safely, you can:\n\n- Isolate a method to handle updates to provisioned capacity Gb, and write this data into your driver\u0027s private data - it\u0027s a dedicated database table for all instances of your driver [1] Example instantiation in the ZFSOnLinux driver is here [2]\n- Ensure concurrency control on that driver method with the help of a distributed tooz lock [2]\n\n\n[1] https://github.com/openstack/manila/blob/cd078020f6140fb401ea59837728d58c5f9bcb34/manila/share/drivers_private_data.py#L42\n[2] https://github.com/openstack/manila/blob/d7c01efb444b7bf02c1729be3554abebaee473a3/manila/share/drivers/zfsonlinux/driver.py#L180\n[3] https://github.com/openstack/manila/blob/97cfb648c4ec24f996d79e95e11484aa6ad586c7/manila/coordination.py#L152","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"088c98b6fb61f379635e2e3b9183b7e34b84efb0","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                        \u0027max_over_subscription_ratio\u0027)),"},{"line_number":523,"context_line":"                \u0027thin_provisioning\u0027:"},{"line_number":524,"context_line":"                    self.configuration.nexenta_thin_provisioning,"},{"line_number":525,"context_line":"                \u0027provisioned_capacity_gb\u0027: self.provisioned_capacity,"},{"line_number":526,"context_line":"            }],"},{"line_number":527,"context_line":"        }"},{"line_number":528,"context_line":"        self._stats.update(data)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_4a7bc179","line":525,"range":{"start_line":525,"start_character":16,"end_line":525,"end_character":69},"in_reply_to":"7faddb67_d446c850","updated":"2019-08-06 17:48:07.000000000","message":"Unfortunately at this point the API call I was initially going to use in _get_provisioned_capacity method is not returning the value we are looking for. \nSo the only way to poll the backed for exact provisioned capacity would have to iterate through all the shares on it and send an API request for each, meaning at least N+1 calls for N shares. This does not seem like a good idea for any production setup with at least 100 shares or more.\n\nAt this point I see only two possibilities: either get the initial provisioned capacity from the manila DB and calculate new ones as the driver is doing right now or just report 0. \n\nWould really like to get your input on this.","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dcac4a44d35704b83d24892a2f3412c644e3d82d","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                if rule[\u0027access_type\u0027].lower() !\u003d \u0027ip\u0027:"},{"line_number":424,"context_line":"                    msg \u003d _("},{"line_number":425,"context_line":"                        \u0027Only IP access control type is supported for NFS.\u0027)"},{"line_number":426,"context_line":"                    LOG.info(msg)"},{"line_number":427,"context_line":"                    update_dict[rule[\u0027access_id\u0027]] \u003d {"},{"line_number":428,"context_line":"                        \u0027state\u0027: \u0027error\u0027,"},{"line_number":429,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_188de029","line":426,"range":{"start_line":426,"start_character":24,"end_line":426,"end_character":28},"updated":"2019-08-09 18:04:06.000000000","message":"warning?","commit_id":"ed83bb6ed5feaff4b926fe0ef4154daddfa7bc49"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"9f7913602a7fc8f92f954a91387191bac33b9458","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        try:"},{"line_number":256,"context_line":"            self.nef.filesystems.delete(share_path, delete_payload)"},{"line_number":257,"context_line":"        except jsonrpc.NefException as error:"},{"line_number":258,"context_line":"            if error.code !\u003d \u0027EEXIST\u0027:"},{"line_number":259,"context_line":"                raise error"},{"line_number":260,"context_line":"            snapshots_tree \u003d {}"},{"line_number":261,"context_line":"            snapshots_payload \u003d {\u0027parent\u0027: share_path, \u0027fields\u0027: \u0027path\u0027}"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_7852ade0","line":258,"range":{"start_line":258,"start_character":30,"end_line":258,"end_character":36},"updated":"2019-08-28 13:25:29.000000000","message":"ENOENT? Actually your delete method already filters ENOENT, it is expected to receive a EEXIST from a delete cmd?","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        try:"},{"line_number":256,"context_line":"            self.nef.filesystems.delete(share_path, delete_payload)"},{"line_number":257,"context_line":"        except jsonrpc.NefException as error:"},{"line_number":258,"context_line":"            if error.code !\u003d \u0027EEXIST\u0027:"},{"line_number":259,"context_line":"                raise error"},{"line_number":260,"context_line":"            snapshots_tree \u003d {}"},{"line_number":261,"context_line":"            snapshots_payload \u003d {\u0027parent\u0027: share_path, \u0027fields\u0027: \u0027path\u0027}"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_9b00c304","line":258,"range":{"start_line":258,"start_character":30,"end_line":258,"end_character":36},"in_reply_to":"7faddb67_7852ade0","updated":"2019-08-29 10:02:01.000000000","message":"In a ZFS system deleting a filesystem that has children (i.e. snapshots) will return a EEXIST error saying that it has children. In this case we try to delete with snapshots, but those snapshots may also have children (read clones) and so on. That is why in this case we iterate over all snapshots and find the one with the largest creationTxg (which means it was created the latest) and promote it.","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"}],"manila/share/drivers/nexenta/options.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"nexenta_connection_opts \u003d ["},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027nexenta_rest_address\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027IP address of Nexenta storage appliance.\u0027),"},{"line_number":28,"context_line":"    cfg.IntOpt(\u0027nexenta_rest_port\u0027,"},{"line_number":29,"context_line":"               default\u003d8457,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_c147984b","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":14},"updated":"2019-07-01 21:52:52.000000000","message":"Why change the option type? HostAddressOpt allows IP addresses and DNS/host names; and validates these.","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\u0027User name to connect to Nexenta SA.\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027nexenta_password\u0027,"},{"line_number":46,"context_line":"               help\u003d\u0027Password to connect to Nexenta SA.\u0027,"},{"line_number":47,"context_line":"               secret\u003dTrue),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027nexenta_volume\u0027,"},{"line_number":49,"context_line":"               default\u003d\u0027volume1\u0027,"},{"line_number":50,"context_line":"               help\u003d\u0027Volume name on NexentaStor.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_01de106c","line":47,"range":{"start_line":47,"start_character":26,"end_line":47,"end_character":27},"updated":"2019-07-01 21:52:52.000000000","message":"as a required option, you can add :\n\n required\u003dTrue \n\nand remove the check on https://review.opendev.org/#/c/664269/7/manila/share/drivers/nexenta/ns5/nexenta_nas.py@63","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":83,"context_line":"]"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"nexenta_nfs_opts \u003d ["},{"line_number":86,"context_line":"    cfg.StrOpt(\u0027nexenta_nas_host\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027IP address of Nexenta storage appliance.\u0027),"},{"line_number":88,"context_line":"    cfg.StrOpt(\u0027nexenta_mount_point_base\u0027,"},{"line_number":89,"context_line":"               default\u003d\u0027$state_path/mnt\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2194748a","line":86,"range":{"start_line":86,"start_character":16,"end_line":86,"end_character":32},"updated":"2019-07-01 21:52:52.000000000","message":"as a required option, you can add :\n\n required\u003dTrue \n\nand remove the check on https://review.opendev.org/#/c/664269/7/manila/share/drivers/nexenta/ns5/nexenta_nas.py@63\n\n\nAlso, is this specifically an NFS option?","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":91,"context_line":"]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"nexenta_dataset_opts \u003d ["},{"line_number":94,"context_line":"    cfg.StrOpt(\u0027nexenta_share_name_template\u0027,"},{"line_number":95,"context_line":"               help\u003d\u0027Nexenta share name template.\u0027,"},{"line_number":96,"context_line":"               default\u003d\u0027share-\u0027),"},{"line_number":97,"context_line":"    cfg.StrOpt(\u0027nexenta_folder\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e1de5c68","line":94,"range":{"start_line":94,"start_character":35,"end_line":94,"end_character":43},"updated":"2019-07-01 21:52:52.000000000","message":"nit: this isn\u0027t a template, \"prefix\" is probably a better term","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"41eb3db1a15b72e42e607be92b8486f930a5bd7e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"nexenta_connection_opts \u003d ["},{"line_number":26,"context_line":"    cfg.HostAddressOpt(\u0027nexenta_host\u0027,"},{"line_number":27,"context_line":"                       help\u003d\u0027IP address of Nexenta storage appliance.\u0027),"},{"line_number":28,"context_line":"    cfg.IntOpt(\u0027nexenta_rest_port\u0027,"},{"line_number":29,"context_line":"               default\u003d8457,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_d45fa80c","side":"PARENT","line":26,"range":{"start_line":26,"start_character":24,"end_line":26,"end_character":36},"updated":"2019-08-01 00:30:00.000000000","message":"You\u0027re renaming this option, You must set this as the deprecated_name for the new option \"nexenta_rest_address\".\n\nAlso, this option is being used by your ns4 driver: https://github.com/openstack/manila/blob/059fae0ed5b99fd31abdc22768da90ed3347ade4/manila/share/drivers/nexenta/ns4/nexenta_nfs_helper.py#L41","commit_id":"35d327e4638aa4bfb2ba68fbc602a827816e782b"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"ad894811fb2c9dd5b1e0c7ccb98ab8f624864409","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"nexenta_connection_opts \u003d ["},{"line_number":26,"context_line":"    cfg.HostAddressOpt(\u0027nexenta_host\u0027,"},{"line_number":27,"context_line":"                       help\u003d\u0027IP address of Nexenta storage appliance.\u0027),"},{"line_number":28,"context_line":"    cfg.IntOpt(\u0027nexenta_rest_port\u0027,"},{"line_number":29,"context_line":"               default\u003d8457,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_4a0bc17b","side":"PARENT","line":26,"range":{"start_line":26,"start_character":24,"end_line":26,"end_character":36},"in_reply_to":"7faddb67_4ac981a9","updated":"2019-08-06 18:05:00.000000000","message":"You may want to consider an approach like this:\n\nhttps://github.com/openstack/manila/blob/master/manila/share/drivers/cephfs/driver.py#L98\n\nhttps://github.com/openstack/manila/blob/master/manila/share/drivers/cephfs/driver.py#L522","commit_id":"35d327e4638aa4bfb2ba68fbc602a827816e782b"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"088c98b6fb61f379635e2e3b9183b7e34b84efb0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"nexenta_connection_opts \u003d ["},{"line_number":26,"context_line":"    cfg.HostAddressOpt(\u0027nexenta_host\u0027,"},{"line_number":27,"context_line":"                       help\u003d\u0027IP address of Nexenta storage appliance.\u0027),"},{"line_number":28,"context_line":"    cfg.IntOpt(\u0027nexenta_rest_port\u0027,"},{"line_number":29,"context_line":"               default\u003d8457,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_4ac981a9","side":"PARENT","line":26,"range":{"start_line":26,"start_character":24,"end_line":26,"end_character":36},"in_reply_to":"7faddb67_d45fa80c","updated":"2019-08-06 17:48:07.000000000","message":"I have to revert this option back to StrOpt because of how our HA configuration works:\nin an HA scenario we have 2 Rest addresses for each pool. In this case we pass them comma-delimited into config file, which will return an error if we use HostAddressOpt.","commit_id":"35d327e4638aa4bfb2ba68fbc602a827816e782b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"41eb3db1a15b72e42e607be92b8486f930a5bd7e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"nexenta_dataset_opts \u003d ["},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027nexenta_nfs_share\u0027,"},{"line_number":63,"context_line":"               default\u003d\u0027nfs_share\u0027,"},{"line_number":64,"context_line":"               help\u003d\u0027Parent folder on NexentaStor.\u0027),"},{"line_number":65,"context_line":"    cfg.StrOpt(\u0027nexenta_dataset_compression\u0027,"},{"line_number":66,"context_line":"               default\u003d\u0027on\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_547ad876","side":"PARENT","line":63,"range":{"start_line":62,"start_character":14,"end_line":63,"end_character":35},"updated":"2019-08-01 00:30:00.000000000","message":"Why remove this option? It\u0027s still being used by your ns4 driver: https://github.com/openstack/manila/blob/059fae0ed5b99fd31abdc22768da90ed3347ade4/manila/share/drivers/nexenta/ns4/nexenta_nfs_helper.py#L43\n\n\nDo you mean to replace it with \"nexenta_folder\"? then can you set this as the \"deprecated_name\"\n\nAll driver configuration options have to be deprecated at least for one release before they are deleted so that deployers have advance notice of removal.","commit_id":"35d327e4638aa4bfb2ba68fbc602a827816e782b"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"088c98b6fb61f379635e2e3b9183b7e34b84efb0","unresolved":false,"context_lines":[{"line_number":59,"context_line":"]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"nexenta_dataset_opts \u003d ["},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027nexenta_nfs_share\u0027,"},{"line_number":63,"context_line":"               default\u003d\u0027nfs_share\u0027,"},{"line_number":64,"context_line":"               help\u003d\u0027Parent folder on NexentaStor.\u0027),"},{"line_number":65,"context_line":"    cfg.StrOpt(\u0027nexenta_dataset_compression\u0027,"},{"line_number":66,"context_line":"               default\u003d\u0027on\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_4a3e618b","side":"PARENT","line":63,"range":{"start_line":62,"start_character":14,"end_line":63,"end_character":35},"in_reply_to":"7faddb67_547ad876","updated":"2019-08-06 17:48:07.000000000","message":"You are right. We are thinking of dropping support for NS4, but looks like it will be done a bit later and definitely in a separate patch. So I will revert all ns4 related options for now.","commit_id":"35d327e4638aa4bfb2ba68fbc602a827816e782b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"41eb3db1a15b72e42e607be92b8486f930a5bd7e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                        \u0027gzip-4\u0027, \u0027gzip-5\u0027, \u0027gzip-6\u0027, \u0027gzip-7\u0027, \u0027gzip-8\u0027,"},{"line_number":69,"context_line":"                        \u0027gzip-9\u0027, \u0027lzjb\u0027, \u0027zle\u0027, \u0027lz4\u0027],"},{"line_number":70,"context_line":"               help\u003d\u0027Compression value for new ZFS folders.\u0027),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027nexenta_dataset_dedupe\u0027,"},{"line_number":72,"context_line":"               default\u003d\u0027off\u0027,"},{"line_number":73,"context_line":"               choices\u003d[\u0027on\u0027, \u0027off\u0027, \u0027sha256\u0027, \u0027verify\u0027, \u0027sha256, verify\u0027],"},{"line_number":74,"context_line":"               help\u003d\u0027Deduplication value for new ZFS folders.\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_1498e0bd","side":"PARENT","line":71,"range":{"start_line":71,"start_character":16,"end_line":71,"end_character":38},"updated":"2019-08-01 00:30:00.000000000","message":"This option is being used by your ns4 driver: https://github.com/openstack/manila/blob/059fae0ed5b99fd31abdc22768da90ed3347ade4/manila/share/drivers/nexenta/ns4/nexenta_nfs_helper.py#L38","commit_id":"35d327e4638aa4bfb2ba68fbc602a827816e782b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dcac4a44d35704b83d24892a2f3412c644e3d82d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"nexenta_connection_opts \u003d ["},{"line_number":26,"context_line":"    cfg.HostAddressOpt(\u0027nexenta_host\u0027,"},{"line_number":27,"context_line":"                       help\u003d\u0027IP address of Nexenta storage appliance.\u0027),"},{"line_number":28,"context_line":"    cfg.ListOpt(\u0027nexenta_rest_address\u0027,"},{"line_number":29,"context_line":"                help\u003d\u0027IP address of Nexenta storage appliance.\u0027),"},{"line_number":30,"context_line":"    cfg.IntOpt(\u0027nexenta_rest_port\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_58f11895","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":72},"updated":"2019-08-09 18:04:06.000000000","message":"What\u0027s the difference between this option, and the option \"nexenta_nas_host\" on line 88?\n\nAs far as I see, this option does not need to support multiple IP addresses like  \"nexenta_rest_address\". So, you can just \"rename\" this option - allows for a smoother transition for operators. \n\nIf you\u0027re renaming this option to \"nexenta_nas_host\", you can do so by adding a deprecated_name - and it won\u0027t affect the existing driver... you can remove the deprecated fall back in a release:\n\n cfg.HostAddressOpt(\u0027nexenta_nas_host\u0027,\n                      deprecated_name\u003d\u0027nexenta_host\u0027,\n                      help\u003d\u0027IP address of Nexenta storage appliance.\u0027,\n                      required\u003dTrue),","commit_id":"ed83bb6ed5feaff4b926fe0ef4154daddfa7bc49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dcac4a44d35704b83d24892a2f3412c644e3d82d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    cfg.HostAddressOpt(\u0027nexenta_host\u0027,"},{"line_number":27,"context_line":"                       help\u003d\u0027IP address of Nexenta storage appliance.\u0027),"},{"line_number":28,"context_line":"    cfg.ListOpt(\u0027nexenta_rest_address\u0027,"},{"line_number":29,"context_line":"                help\u003d\u0027IP address of Nexenta storage appliance.\u0027),"},{"line_number":30,"context_line":"    cfg.IntOpt(\u0027nexenta_rest_port\u0027,"},{"line_number":31,"context_line":"               default\u003d8457,"},{"line_number":32,"context_line":"               help\u003d\u0027Port to connect to Nexenta REST API server.\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_38653c46","line":29,"range":{"start_line":29,"start_character":22,"end_line":29,"end_character":61},"updated":"2019-08-09 18:04:06.000000000","message":"The help text for this is exactly the same as \"nexenta_host\" and \"nexenta_nas_host\". Can you clarify a bit.\n\nAlso, if this is a ListOpt - can you call this \"nexenta_rest_addresses\"\n\nThe help text needs to indicate that this option accepts one or more comma delimited IP addresses to communicate with the backend on the management path to clarify why you need this option.","commit_id":"ed83bb6ed5feaff4b926fe0ef4154daddfa7bc49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dcac4a44d35704b83d24892a2f3412c644e3d82d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"nexenta_dataset_opts \u003d ["},{"line_number":97,"context_line":"    cfg.StrOpt(\u0027nexenta_nfs_share\u0027,"},{"line_number":98,"context_line":"               default\u003d\u0027nfs_share\u0027),"},{"line_number":99,"context_line":"    cfg.StrOpt(\u0027nexenta_share_name_prefix\u0027,"},{"line_number":100,"context_line":"               help\u003d\u0027Nexenta share name prefix.\u0027,"},{"line_number":101,"context_line":"               default\u003d\u0027share-\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_d859888e","line":98,"range":{"start_line":97,"start_character":4,"end_line":98,"end_character":35},"updated":"2019-08-09 18:04:06.000000000","message":"Option is missing help text, maybe add some and indicate that this is only used with the NS4 driver?","commit_id":"ed83bb6ed5feaff4b926fe0ef4154daddfa7bc49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dcac4a44d35704b83d24892a2f3412c644e3d82d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    cfg.StrOpt(\u0027nexenta_dataset_dedupe\u0027,"},{"line_number":113,"context_line":"               default\u003d\u0027off\u0027,"},{"line_number":114,"context_line":"               choices\u003d[\u0027on\u0027, \u0027off\u0027, \u0027sha256\u0027, \u0027verify\u0027, \u0027sha256, verify\u0027],"},{"line_number":115,"context_line":"               help\u003d\u0027Deduplication value for new ZFS folders.\u0027),"},{"line_number":116,"context_line":"    cfg.BoolOpt(\u0027nexenta_thin_provisioning\u0027,"},{"line_number":117,"context_line":"                default\u003dTrue,"},{"line_number":118,"context_line":"                help\u003d(\u0027If True shares will not be space guaranteed and \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_b8504c60","line":115,"range":{"start_line":115,"start_character":60,"end_line":115,"end_character":61},"updated":"2019-08-09 18:04:06.000000000","message":"Only used by the NS4 driver..","commit_id":"ed83bb6ed5feaff4b926fe0ef4154daddfa7bc49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5a196298498d841d2738a2e6392db9f6ff2c015d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"nexenta_connection_opts \u003d ["},{"line_number":26,"context_line":"    cfg.HostAddressOpt(\u0027nexenta_host\u0027,"},{"line_number":27,"context_line":"                       help\u003d\u0027Data IP address of Nexenta storage appliance.\u0027),"},{"line_number":28,"context_line":"    cfg.ListOpt(\u0027nexenta_rest_addresses\u0027,"},{"line_number":29,"context_line":"                help\u003d\u0027One or more comma delimited IP addresses for management \u0027"},{"line_number":30,"context_line":"                     \u0027communication with NexentaStor appliance.\u0027),"}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_e3b6e18a","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":77},"updated":"2019-08-13 18:49:38.000000000","message":"Don\u0027t need this - you\u0027ll get a duplicate option error, because you\u0027re introducing a new option on line 89 that deprecates (but supports) this old option","commit_id":"b7514f39bf39257cead8ed943b3e2c79ed612d93"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"80ab489f68e7861283dc96859e37028e1462f979","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    cfg.IntOpt(\u0027nexenta_rest_port\u0027,"},{"line_number":29,"context_line":"               default\u003d8457,"},{"line_number":30,"context_line":"               help\u003d\u0027Port to connect to Nexenta REST API server.\u0027),"},{"line_number":31,"context_line":"    cfg.IntOpt(\u0027nexenta_retry_count\u0027,"},{"line_number":32,"context_line":"               default\u003d6,"},{"line_number":33,"context_line":"               help\u003d\u0027Number of retries for unsuccessful API calls.\u0027),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027nexenta_rest_protocol\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027auto\u0027,"},{"line_number":36,"context_line":"               choices\u003d[\u0027http\u0027, \u0027https\u0027, \u0027auto\u0027],"}],"source_content_type":"text/x-python","patch_set":24,"id":"7faddb67_d209e794","side":"PARENT","line":33,"range":{"start_line":31,"start_character":0,"end_line":33,"end_character":69},"updated":"2019-09-03 18:48:35.000000000","message":"Hmm, looks like this option was never used in the code... thanks for cleaning it up.","commit_id":"7a3fb6b3254fabb93ff6ea3c1d05295f1b6c90e0"}],"manila/share/drivers/nexenta/utils.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"2503d53d2c38754410e9d5d4850ff0b329e44476","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def ex2err(ex):"},{"line_number":59,"context_line":"    \"\"\"Convert a Cinder Exception to a Nexenta Error.\"\"\""},{"line_number":60,"context_line":"    return ast.literal_eval(ex.msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_82d31401","line":59,"range":{"start_line":59,"start_character":17,"end_line":59,"end_character":23},"updated":"2019-06-27 15:34:45.000000000","message":"cut and paste error?","commit_id":"ef00a59237b1229cb28760b58845c9fb605fdef3"}],"manila/tests/share/drivers/nexenta/ns5/test_jsonrpc.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        response \u003d self.fake_response(method, path, payload, 200, content)"},{"line_number":179,"context_line":"        request.return_value \u003d response"},{"line_number":180,"context_line":"        result \u003d instance(path, payload)"},{"line_number":181,"context_line":"        request.assert_called_with(method, path)"},{"line_number":182,"context_line":"        self.assertEqual(content, result)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_e1dc1ce2","line":181,"range":{"start_line":181,"start_character":16,"end_line":181,"end_character":34},"updated":"2019-07-01 21:52:52.000000000","message":"assert_called_once_with","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        request.return_value \u003d response"},{"line_number":194,"context_line":"        result \u003d instance(path, payload)"},{"line_number":195,"context_line":"        params \u003d {\u0027params\u0027: payload}"},{"line_number":196,"context_line":"        request.assert_called_with(method, path, **params)"},{"line_number":197,"context_line":"        self.assertEqual(content, result)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_41e728ad","line":196,"range":{"start_line":196,"start_character":16,"end_line":196,"end_character":34},"updated":"2019-07-01 21:52:52.000000000","message":"assert_called_once_with","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        instance.data \u003d data"},{"line_number":220,"context_line":"        result \u003d instance(path, payload)"},{"line_number":221,"context_line":"        params \u003d {\u0027params\u0027: payload}"},{"line_number":222,"context_line":"        request.assert_called_with(method, path, **params)"},{"line_number":223,"context_line":"        self.assertEqual(data, result)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def test___call___get_invalid_payload(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_0105b045","line":222,"range":{"start_line":222,"start_character":16,"end_line":222,"end_character":34},"updated":"2019-07-01 21:52:52.000000000","message":"assert_called_once_with","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        response \u003d self.fake_response(method, path, payload, 200, content)"},{"line_number":277,"context_line":"        request.return_value \u003d response"},{"line_number":278,"context_line":"        result \u003d instance(path, payload)"},{"line_number":279,"context_line":"        request.assert_called_with(method, path)"},{"line_number":280,"context_line":"        self.assertEqual(content, result)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2100f433","line":279,"range":{"start_line":279,"start_character":16,"end_line":279,"end_character":34},"updated":"2019-07-01 21:52:52.000000000","message":"assert_called_once_with","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        request.return_value \u003d response"},{"line_number":292,"context_line":"        result \u003d instance(path, payload)"},{"line_number":293,"context_line":"        params \u003d {\u0027data\u0027: json.dumps(payload)}"},{"line_number":294,"context_line":"        request.assert_called_with(method, path, **params)"},{"line_number":295,"context_line":"        self.assertEqual(content, result)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def test___call___post_invalid_payload(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_c1fa3841","line":294,"range":{"start_line":294,"start_character":16,"end_line":294,"end_character":34},"updated":"2019-07-01 21:52:52.000000000","message":"assert_called_once_with","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"53fe34c011ecfc49fa834ce7d134275e52a9b300","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        response \u003d self.fake_response(method, path, payload, 200, content)"},{"line_number":313,"context_line":"        request.return_value \u003d response"},{"line_number":314,"context_line":"        result \u003d instance(path, payload)"},{"line_number":315,"context_line":"        request.assert_called_with(method, path)"},{"line_number":316,"context_line":"        self.assertEqual(content, result)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_819680ef","line":315,"range":{"start_line":315,"start_character":16,"end_line":315,"end_character":34},"updated":"2019-07-01 21:52:52.000000000","message":"all these could be \"assert_called_once_with\" which provides a bit more validation regarding call count.","commit_id":"0e6ba434b78aa4b1a57af3dd425eec2514536944"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62648f5e0cc1118bf75e8831f50bc97e85899106","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"        self.cfg.nexenta_ssl_cert_verify \u003d True"},{"line_number":1031,"context_line":"        self.cfg.nexenta_user \u003d \u0027user\u0027"},{"line_number":1032,"context_line":"        self.cfg.nexenta_password \u003d \u0027pass\u0027"},{"line_number":1033,"context_line":"        self.cfg.nexenta_rest_address \u003d \u00271.1.1.1,2.2.2.2\u0027"},{"line_number":1034,"context_line":"        self.cfg.nexenta_rest_port \u003d 8443"},{"line_number":1035,"context_line":"        self.cfg.nexenta_rest_backoff_factor \u003d 1"},{"line_number":1036,"context_line":"        self.cfg.nexenta_rest_retry_count \u003d 3"}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_6a3e2f2a","line":1033,"range":{"start_line":1033,"start_character":17,"end_line":1033,"end_character":37},"updated":"2019-08-14 19:04:50.000000000","message":"nexenta_rest_addresses, as a list","commit_id":"946abd01dbbb83fd546d3016589c31690bc351dd"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"f23c9833ecb462a7672d2445beec1a80b2f093c5","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"        self.cfg.nexenta_ssl_cert_verify \u003d True"},{"line_number":1031,"context_line":"        self.cfg.nexenta_user \u003d \u0027user\u0027"},{"line_number":1032,"context_line":"        self.cfg.nexenta_password \u003d \u0027pass\u0027"},{"line_number":1033,"context_line":"        self.cfg.nexenta_rest_address \u003d \u00271.1.1.1,2.2.2.2\u0027"},{"line_number":1034,"context_line":"        self.cfg.nexenta_rest_port \u003d 8443"},{"line_number":1035,"context_line":"        self.cfg.nexenta_rest_backoff_factor \u003d 1"},{"line_number":1036,"context_line":"        self.cfg.nexenta_rest_retry_count \u003d 3"}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_eb3d30bb","line":1033,"range":{"start_line":1033,"start_character":17,"end_line":1033,"end_character":37},"in_reply_to":"7faddb67_6a3e2f2a","updated":"2019-08-15 18:21:38.000000000","message":"fixed","commit_id":"946abd01dbbb83fd546d3016589c31690bc351dd"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        response \u003d requests.Response()"},{"line_number":146,"context_line":"        response.request \u003d request"},{"line_number":147,"context_line":"        response.status_code \u003d code"},{"line_number":148,"context_line":"        if content:"},{"line_number":149,"context_line":"            response._content \u003d json.dumps(content)"},{"line_number":150,"context_line":"        else:"},{"line_number":151,"context_line":"            response._content \u003d \u0027\u0027"},{"line_number":152,"context_line":"        return response"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test___call___invalid_method(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_768f2a22","line":151,"range":{"start_line":148,"start_character":8,"end_line":151,"end_character":34},"updated":"2019-08-27 20:45:17.000000000","message":"What about:\nresponse._content \u003d json.dumps(content) if content else \u0027\u0027\n?","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        response \u003d requests.Response()"},{"line_number":146,"context_line":"        response.request \u003d request"},{"line_number":147,"context_line":"        response.status_code \u003d code"},{"line_number":148,"context_line":"        if content:"},{"line_number":149,"context_line":"            response._content \u003d json.dumps(content)"},{"line_number":150,"context_line":"        else:"},{"line_number":151,"context_line":"            response._content \u003d \u0027\u0027"},{"line_number":152,"context_line":"        return response"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test___call___invalid_method(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_9bbe83ac","line":151,"range":{"start_line":148,"start_character":8,"end_line":151,"end_character":34},"in_reply_to":"7faddb67_768f2a22","updated":"2019-08-29 10:02:01.000000000","message":"makes sense","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        response \u003d self.fake_response(method, path, payload, 200, content)"},{"line_number":648,"context_line":"        request.return_value \u003d response"},{"line_number":649,"context_line":"        instance.auth()"},{"line_number":650,"context_line":"        request.assert_called_with(method, path, **payload)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"},{"line_number":653,"context_line":"                \u0027jsonrpc.NefRequest.request\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_d624de10","line":650,"range":{"start_line":650,"start_character":8,"end_line":650,"end_character":34},"updated":"2019-08-27 20:45:17.000000000","message":"Are you able to know all the requests this method is going to receive?\nIf it receives only one, I think you could add this with assert_called_once_with.\nIf it receives more than one and you have all the parameters of all calls, you could call this with an assert_has_calls containing each call and their respective parameters.","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        response \u003d self.fake_response(method, path, payload, 200, content)"},{"line_number":648,"context_line":"        request.return_value \u003d response"},{"line_number":649,"context_line":"        instance.auth()"},{"line_number":650,"context_line":"        request.assert_called_with(method, path, **payload)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"},{"line_number":653,"context_line":"                \u0027jsonrpc.NefRequest.request\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_db371b4b","line":650,"range":{"start_line":650,"start_character":8,"end_line":650,"end_character":34},"in_reply_to":"7faddb67_d624de10","updated":"2019-08-29 10:02:01.000000000","message":"It is called only once, changing to assert_called_once_with","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":678,"context_line":"        response \u003d self.fake_response(method, path, payload, 200, content)"},{"line_number":679,"context_line":"        request.return_value \u003d response"},{"line_number":680,"context_line":"        result \u003d instance.failover()"},{"line_number":681,"context_line":"        request.assert_called_with(method, path)"},{"line_number":682,"context_line":"        expected \u003d True"},{"line_number":683,"context_line":"        self.assertEqual(expected, result)"},{"line_number":684,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_d6693e26","line":681,"range":{"start_line":681,"start_character":16,"end_line":681,"end_character":34},"updated":"2019-08-27 20:45:17.000000000","message":"same as above","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":678,"context_line":"        response \u003d self.fake_response(method, path, payload, 200, content)"},{"line_number":679,"context_line":"        request.return_value \u003d response"},{"line_number":680,"context_line":"        result \u003d instance.failover()"},{"line_number":681,"context_line":"        request.assert_called_with(method, path)"},{"line_number":682,"context_line":"        expected \u003d True"},{"line_number":683,"context_line":"        self.assertEqual(expected, result)"},{"line_number":684,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_fbce972b","line":681,"range":{"start_line":681,"start_character":16,"end_line":681,"end_character":34},"in_reply_to":"7faddb67_d6693e26","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":680,"context_line":"        result \u003d instance.failover()"},{"line_number":681,"context_line":"        request.assert_called_with(method, path)"},{"line_number":682,"context_line":"        expected \u003d True"},{"line_number":683,"context_line":"        self.assertEqual(expected, result)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"},{"line_number":686,"context_line":"                \u0027jsonrpc.NefRequest.request\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_76c72a13","line":683,"range":{"start_line":683,"start_character":13,"end_line":683,"end_character":24},"updated":"2019-08-27 20:45:17.000000000","message":"You also could remove the above value and call this assert with:\nself.assertTrue(result)","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":680,"context_line":"        result \u003d instance.failover()"},{"line_number":681,"context_line":"        request.assert_called_with(method, path)"},{"line_number":682,"context_line":"        expected \u003d True"},{"line_number":683,"context_line":"        self.assertEqual(expected, result)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"},{"line_number":686,"context_line":"                \u0027jsonrpc.NefRequest.request\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_a6b80dc7","line":683,"range":{"start_line":683,"start_character":13,"end_line":683,"end_character":24},"in_reply_to":"7faddb67_76c72a13","updated":"2019-08-28 01:05:47.000000000","message":"assertTrue will allow any value that\u0027s \"truthy\" - i.e, assertTrue(100) will actually pass - so, if you\u0027re expecting to check against the literal/boolean True, you have to use assertEqual(True, result) or assertIs(True, result)  (I prefer the latter)\n\nSee: https://jamescooke.info/python-unittest-asserttrue-is-truthy-assertfalse-is-falsy.html","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"35c6b1c4335b1a1a2a5cb32985786ccf5c75de14","unresolved":false,"context_lines":[{"line_number":680,"context_line":"        result \u003d instance.failover()"},{"line_number":681,"context_line":"        request.assert_called_with(method, path)"},{"line_number":682,"context_line":"        expected \u003d True"},{"line_number":683,"context_line":"        self.assertEqual(expected, result)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"},{"line_number":686,"context_line":"                \u0027jsonrpc.NefRequest.request\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_55b9bac8","line":683,"range":{"start_line":683,"start_character":13,"end_line":683,"end_character":24},"in_reply_to":"7faddb67_a6b80dc7","updated":"2019-08-28 11:12:04.000000000","message":"Alright. Thanks for clarifying this, Goutham.\nAnd sorry, Alexey :)","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        response \u003d self.fake_response(method, path, payload, 200, content)"},{"line_number":694,"context_line":"        request.side_effect \u003d [requests.exceptions.Timeout, response]"},{"line_number":695,"context_line":"        result \u003d instance.failover()"},{"line_number":696,"context_line":"        request.assert_called_with(method, path)"},{"line_number":697,"context_line":"        expected \u003d False"},{"line_number":698,"context_line":"        self.assertEqual(expected, result)"},{"line_number":699,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_f6647a4f","line":696,"range":{"start_line":696,"start_character":16,"end_line":696,"end_character":34},"updated":"2019-08-27 20:45:17.000000000","message":"same as the other assert_called_with comment","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        response \u003d self.fake_response(method, path, payload, 200, content)"},{"line_number":694,"context_line":"        request.side_effect \u003d [requests.exceptions.Timeout, response]"},{"line_number":695,"context_line":"        result \u003d instance.failover()"},{"line_number":696,"context_line":"        request.assert_called_with(method, path)"},{"line_number":697,"context_line":"        expected \u003d False"},{"line_number":698,"context_line":"        self.assertEqual(expected, result)"},{"line_number":699,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_5bc80b20","line":696,"range":{"start_line":696,"start_character":16,"end_line":696,"end_character":34},"in_reply_to":"7faddb67_f6647a4f","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":695,"context_line":"        result \u003d instance.failover()"},{"line_number":696,"context_line":"        request.assert_called_with(method, path)"},{"line_number":697,"context_line":"        expected \u003d False"},{"line_number":698,"context_line":"        self.assertEqual(expected, result)"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"},{"line_number":701,"context_line":"                \u0027jsonrpc.NefRequest.request\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_16cef62c","line":698,"range":{"start_line":698,"start_character":8,"end_line":698,"end_character":42},"updated":"2019-08-27 20:45:17.000000000","message":"You also could remove the above value and call this assert with:\nself.assertFalse(result)","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":695,"context_line":"        result \u003d instance.failover()"},{"line_number":696,"context_line":"        request.assert_called_with(method, path)"},{"line_number":697,"context_line":"        expected \u003d False"},{"line_number":698,"context_line":"        self.assertEqual(expected, result)"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"},{"line_number":701,"context_line":"                \u0027jsonrpc.NefRequest.request\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_66b215e8","line":698,"range":{"start_line":698,"start_character":8,"end_line":698,"end_character":42},"in_reply_to":"7faddb67_16cef62c","updated":"2019-08-28 01:05:47.000000000","message":"assertFalse(result) could be incorrect: https://jamescooke.info/python-unittest-asserttrue-is-truthy-assertfalse-is-falsy.html","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"35c6b1c4335b1a1a2a5cb32985786ccf5c75de14","unresolved":false,"context_lines":[{"line_number":695,"context_line":"        result \u003d instance.failover()"},{"line_number":696,"context_line":"        request.assert_called_with(method, path)"},{"line_number":697,"context_line":"        expected \u003d False"},{"line_number":698,"context_line":"        self.assertEqual(expected, result)"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    @mock.patch(\u0027manila.share.drivers.nexenta.ns5.\u0027"},{"line_number":701,"context_line":"                \u0027jsonrpc.NefRequest.request\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_b5c90e5b","line":698,"range":{"start_line":698,"start_character":8,"end_line":698,"end_character":42},"in_reply_to":"7faddb67_66b215e8","updated":"2019-08-28 11:12:04.000000000","message":"Alright. Thanks for clarifying this, Goutham.\nAnd sorry, Alexey :)","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":708,"context_line":"        response \u003d self.fake_response(method, path, payload, 404, content)"},{"line_number":709,"context_line":"        request.side_effect \u003d [response, response]"},{"line_number":710,"context_line":"        result \u003d instance.failover()"},{"line_number":711,"context_line":"        request.assert_called_with(method, path)"},{"line_number":712,"context_line":"        expected \u003d False"},{"line_number":713,"context_line":"        self.assertEqual(expected, result)"},{"line_number":714,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_565f8e74","line":711,"range":{"start_line":711,"start_character":16,"end_line":711,"end_character":34},"updated":"2019-08-27 20:45:17.000000000","message":"same as the other assert_called_with comment","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":708,"context_line":"        response \u003d self.fake_response(method, path, payload, 404, content)"},{"line_number":709,"context_line":"        request.side_effect \u003d [response, response]"},{"line_number":710,"context_line":"        result \u003d instance.failover()"},{"line_number":711,"context_line":"        request.assert_called_with(method, path)"},{"line_number":712,"context_line":"        expected \u003d False"},{"line_number":713,"context_line":"        self.assertEqual(expected, result)"},{"line_number":714,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_3bc50f0b","line":711,"range":{"start_line":711,"start_character":16,"end_line":711,"end_character":34},"in_reply_to":"7faddb67_565f8e74","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        ]"},{"line_number":725,"context_line":"        result \u003d instance.failover()"},{"line_number":726,"context_line":"        request.assert_called_with(method, path)"},{"line_number":727,"context_line":"        expected \u003d False"},{"line_number":728,"context_line":"        self.assertEqual(expected, result)"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"    def test_getpath(self):"},{"line_number":731,"context_line":"        method \u003d \u0027get\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_f6fb1a45","line":728,"range":{"start_line":727,"start_character":8,"end_line":728,"end_character":42},"updated":"2019-08-27 20:45:17.000000000","message":"You also could remove the above value and call this assert with:\nself.assertFalse(result)","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"35c6b1c4335b1a1a2a5cb32985786ccf5c75de14","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        ]"},{"line_number":725,"context_line":"        result \u003d instance.failover()"},{"line_number":726,"context_line":"        request.assert_called_with(method, path)"},{"line_number":727,"context_line":"        expected \u003d False"},{"line_number":728,"context_line":"        self.assertEqual(expected, result)"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"    def test_getpath(self):"},{"line_number":731,"context_line":"        method \u003d \u0027get\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_95be52ac","line":728,"range":{"start_line":727,"start_character":8,"end_line":728,"end_character":42},"in_reply_to":"7faddb67_f6fb1a45","updated":"2019-08-28 11:12:04.000000000","message":"Please don\u0027t consider this comment","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"daa95f1ed54a0cbe05ce6d308424c537a0e3d721","unresolved":false,"context_lines":[{"line_number":757,"context_line":"        instance \u003d jsonrpc.NefRequest(self.proxy, method)"},{"line_number":758,"context_line":"        result \u003d instance.getpath(content, rel)"},{"line_number":759,"context_line":"        expected \u003d None"},{"line_number":760,"context_line":"        self.assertEqual(expected, result)"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test_getpath_no_links(self):"},{"line_number":763,"context_line":"        method \u003d \u0027get\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_169cb60c","line":760,"range":{"start_line":760,"start_character":8,"end_line":760,"end_character":42},"updated":"2019-08-27 20:45:17.000000000","message":"You could use self.assertIsNone(result) and remove the above variable here and in the below tests that does the same","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f8680311a8d0db96168b9ce4d261cd1c88e28b3e","unresolved":false,"context_lines":[{"line_number":757,"context_line":"        instance \u003d jsonrpc.NefRequest(self.proxy, method)"},{"line_number":758,"context_line":"        result \u003d instance.getpath(content, rel)"},{"line_number":759,"context_line":"        expected \u003d None"},{"line_number":760,"context_line":"        self.assertEqual(expected, result)"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test_getpath_no_links(self):"},{"line_number":763,"context_line":"        method \u003d \u0027get\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_06c9e158","line":760,"range":{"start_line":760,"start_character":8,"end_line":760,"end_character":42},"in_reply_to":"7faddb67_169cb60c","updated":"2019-08-28 01:05:47.000000000","message":"+1","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":757,"context_line":"        instance \u003d jsonrpc.NefRequest(self.proxy, method)"},{"line_number":758,"context_line":"        result \u003d instance.getpath(content, rel)"},{"line_number":759,"context_line":"        expected \u003d None"},{"line_number":760,"context_line":"        self.assertEqual(expected, result)"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test_getpath_no_links(self):"},{"line_number":763,"context_line":"        method \u003d \u0027get\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_7bfb8746","line":760,"range":{"start_line":760,"start_character":8,"end_line":760,"end_character":42},"in_reply_to":"7faddb67_169cb60c","updated":"2019-08-29 10:02:01.000000000","message":"Right, was following the same pattern as in previous methods, but makes sense with assertIsNone here.","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":757,"context_line":"        instance \u003d jsonrpc.NefRequest(self.proxy, method)"},{"line_number":758,"context_line":"        result \u003d instance.getpath(content, rel)"},{"line_number":759,"context_line":"        expected \u003d None"},{"line_number":760,"context_line":"        self.assertEqual(expected, result)"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test_getpath_no_links(self):"},{"line_number":763,"context_line":"        method \u003d \u0027get\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_9ad50b4a","line":760,"range":{"start_line":760,"start_character":8,"end_line":760,"end_character":42},"in_reply_to":"7faddb67_7bfb8746","updated":"2019-08-29 11:57:30.000000000","message":"Thanks for change this. I\u0027ve commented in all the below ocurrences that are using assertEqual instead of assertIsNone","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"965732e8ef632eea892e772a10502cc0902cb207","unresolved":false,"context_lines":[{"line_number":757,"context_line":"        instance \u003d jsonrpc.NefRequest(self.proxy, method)"},{"line_number":758,"context_line":"        result \u003d instance.getpath(content, rel)"},{"line_number":759,"context_line":"        expected \u003d None"},{"line_number":760,"context_line":"        self.assertEqual(expected, result)"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test_getpath_no_links(self):"},{"line_number":763,"context_line":"        method \u003d \u0027get\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_c4adcc31","line":760,"range":{"start_line":760,"start_character":8,"end_line":760,"end_character":42},"in_reply_to":"7faddb67_9ad50b4a","updated":"2019-08-30 16:10:02.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"9f7913602a7fc8f92f954a91387191bac33b9458","unresolved":false,"context_lines":[{"line_number":953,"context_line":"        self.assertEqual(expected, result)"},{"line_number":954,"context_line":""},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"class TestNefFilesystems(test.TestCase):"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"    def setUp(self):"},{"line_number":959,"context_line":"        super(TestNefFilesystems, self).setUp()"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_fba8d78c","line":956,"range":{"start_line":956,"start_character":6,"end_line":956,"end_character":24},"updated":"2019-08-28 13:25:29.000000000","message":"Some tests that are missing here: test_rollback and test_promote.","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"044ae4a1d32055b09c74fec6490b223d70fdb173","unresolved":false,"context_lines":[{"line_number":953,"context_line":"        self.assertEqual(expected, result)"},{"line_number":954,"context_line":""},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"class TestNefFilesystems(test.TestCase):"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"    def setUp(self):"},{"line_number":959,"context_line":"        super(TestNefFilesystems, self).setUp()"}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_c6cdfe86","line":956,"range":{"start_line":956,"start_character":6,"end_line":956,"end_character":24},"in_reply_to":"7faddb67_fba8d78c","updated":"2019-08-29 10:02:01.000000000","message":"Done","commit_id":"e46db7b23f2e165eb3e2fdd4bbc7f2a0d0731db2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":762,"context_line":"        instance \u003d jsonrpc.NefRequest(self.proxy, method)"},{"line_number":763,"context_line":"        result \u003d instance.getpath(content, rel)"},{"line_number":764,"context_line":"        expected \u003d None"},{"line_number":765,"context_line":"        self.assertEqual(expected, result)"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"    def test_getpath_no_rel(self):"},{"line_number":768,"context_line":"        method \u003d \u0027get\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_baa247fb","line":765,"range":{"start_line":765,"start_character":8,"end_line":765,"end_character":42},"updated":"2019-08-29 11:57:30.000000000","message":"Could you please also change this call to assertIsNone()?","commit_id":"f6dd17fd3cca1bec53c43c9315f78477fd0e0492"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":778,"context_line":"        instance \u003d jsonrpc.NefRequest(self.proxy, method)"},{"line_number":779,"context_line":"        result \u003d instance.getpath(content, rel)"},{"line_number":780,"context_line":"        expected \u003d None"},{"line_number":781,"context_line":"        self.assertEqual(expected, result)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    def test_getpath_no_href(self):"},{"line_number":784,"context_line":"        method \u003d \u0027get\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_7aaccfed","line":781,"range":{"start_line":781,"start_character":8,"end_line":781,"end_character":42},"updated":"2019-08-29 11:57:30.000000000","message":"Same as above","commit_id":"f6dd17fd3cca1bec53c43c9315f78477fd0e0492"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        instance \u003d jsonrpc.NefRequest(self.proxy, method)"},{"line_number":794,"context_line":"        result \u003d instance.getpath(content, rel)"},{"line_number":795,"context_line":"        expected \u003d None"},{"line_number":796,"context_line":"        self.assertEqual(expected, result)"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"class TestNefCollections(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_5ab1d343","line":796,"range":{"start_line":796,"start_character":8,"end_line":796,"end_character":42},"updated":"2019-08-29 11:57:30.000000000","message":"Same as above","commit_id":"f6dd17fd3cca1bec53c43c9315f78477fd0e0492"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":828,"context_line":"        self.proxy.put.return_value \u003d expected"},{"line_number":829,"context_line":"        result \u003d self.instance.set(name, payload)"},{"line_number":830,"context_line":"        self.proxy.put.assert_called_with(path, payload)"},{"line_number":831,"context_line":"        self.assertEqual(expected, result)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"    def test_list(self):"},{"line_number":834,"context_line":"        payload \u003d {\u0027key\u0027: \u0027value\u0027}"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_fa819f4e","line":831,"range":{"start_line":831,"start_character":8,"end_line":831,"end_character":42},"updated":"2019-08-29 11:57:30.000000000","message":"Same as above","commit_id":"f6dd17fd3cca1bec53c43c9315f78477fd0e0492"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":852,"context_line":"        self.proxy.post.side_effect \u003d jsonrpc.NefException(code\u003d\u0027EEXIST\u0027)"},{"line_number":853,"context_line":"        result \u003d self.instance.create(payload)"},{"line_number":854,"context_line":"        self.proxy.post.assert_called_with(self.instance.root, payload)"},{"line_number":855,"context_line":"        self.assertEqual(expected, result)"},{"line_number":856,"context_line":""},{"line_number":857,"context_line":"    def test_create_error(self):"},{"line_number":858,"context_line":"        payload \u003d {\u0027key\u0027: \u0027value\u0027}"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_1a859b59","line":855,"range":{"start_line":855,"start_character":8,"end_line":855,"end_character":42},"updated":"2019-08-29 11:57:30.000000000","message":"Same as above","commit_id":"f6dd17fd3cca1bec53c43c9315f78477fd0e0492"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":868,"context_line":"        self.proxy.delete.return_value \u003d expected"},{"line_number":869,"context_line":"        result \u003d self.instance.delete(name, payload)"},{"line_number":870,"context_line":"        self.proxy.delete.assert_called_with(path, payload)"},{"line_number":871,"context_line":"        self.assertEqual(expected, result)"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"    def test_delete_not_found(self):"},{"line_number":874,"context_line":"        name \u003d \u0027parent/child\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_da7e2369","line":871,"range":{"start_line":871,"start_character":8,"end_line":871,"end_character":42},"updated":"2019-08-29 11:57:30.000000000","message":"Same as above","commit_id":"f6dd17fd3cca1bec53c43c9315f78477fd0e0492"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":878,"context_line":"        self.proxy.delete.side_effect \u003d jsonrpc.NefException(code\u003d\u0027ENOENT\u0027)"},{"line_number":879,"context_line":"        result \u003d self.instance.delete(name, payload)"},{"line_number":880,"context_line":"        self.proxy.delete.assert_called_with(path, payload)"},{"line_number":881,"context_line":"        self.assertEqual(expected, result)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"    def test_delete_error(self):"},{"line_number":884,"context_line":"        name \u003d \u0027parent/child\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_7a95af87","line":881,"range":{"start_line":881,"start_character":8,"end_line":881,"end_character":42},"updated":"2019-08-29 11:57:30.000000000","message":"Same as above","commit_id":"f6dd17fd3cca1bec53c43c9315f78477fd0e0492"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":927,"context_line":"        self.proxy.post.return_value \u003d expected"},{"line_number":928,"context_line":"        result \u003d self.instance.rename(name, payload)"},{"line_number":929,"context_line":"        self.proxy.post.assert_called_with(path, payload)"},{"line_number":930,"context_line":"        self.assertEqual(expected, result)"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"class TestNefSnapshots(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_9a90ab98","line":930,"range":{"start_line":930,"start_character":7,"end_line":930,"end_character":42},"updated":"2019-08-29 11:57:30.000000000","message":"Same as above","commit_id":"f6dd17fd3cca1bec53c43c9315f78477fd0e0492"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f30943dd178e5fe70d46920f04205daced02e7d5","unresolved":false,"context_lines":[{"line_number":946,"context_line":"        self.proxy.post.return_value \u003d expected"},{"line_number":947,"context_line":"        result \u003d self.instance.clone(name, payload)"},{"line_number":948,"context_line":"        self.proxy.post.assert_called_with(path, payload)"},{"line_number":949,"context_line":"        self.assertEqual(expected, result)"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":""},{"line_number":952,"context_line":"class TestNefFilesystems(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":22,"id":"7faddb67_3a8f3776","line":949,"range":{"start_line":949,"start_character":8,"end_line":949,"end_character":42},"updated":"2019-08-29 11:57:30.000000000","message":"Same as above","commit_id":"f6dd17fd3cca1bec53c43c9315f78477fd0e0492"}],"releasenotes/notes/nexentastor5-v1.1-1ad6c8f7b5cc11b6.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"41eb3db1a15b72e42e607be92b8486f930a5bd7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7faddb67_14c6a09b","updated":"2019-08-01 00:30:00.000000000","message":"please note any option deprecations here as well.","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"41eb3db1a15b72e42e607be92b8486f930a5bd7e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  - Added manage existing support for NexentaStor5 driver."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - Added a new config option ``nexenta_ssl_cert_verify``."},{"line_number":7,"context_line":"    This option defines whether the driver should check ssl certificate."},{"line_number":8,"context_line":"  - Added a new config option ``nexenta_rest_connect_timeout``. This option"},{"line_number":9,"context_line":"    specifies the time limit (in seconds), within which the connection to"},{"line_number":10,"context_line":"    NexentaStor management REST API server must be established."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7faddb67_b4d78c4b","line":7,"range":{"start_line":7,"start_character":36,"end_line":7,"end_character":42},"updated":"2019-08-01 00:30:00.000000000","message":"Nexenta NS5 driver?","commit_id":"5aa40a1c15c507775bbfdf49ba69333614d880a3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dcac4a44d35704b83d24892a2f3412c644e3d82d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  - Added manage existing support for NexentaStor5 driver."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - Added a new config option ``nexenta_ssl_cert_verify``."},{"line_number":7,"context_line":"    This option defines whether the NexentaStor5 driver should check "},{"line_number":8,"context_line":"    ssl certificate."},{"line_number":9,"context_line":"  - Added a new config option ``nexenta_rest_connect_timeout``. This option"},{"line_number":10,"context_line":"    specifies the time limit (in seconds), within which the connection to"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"7faddb67_f8b484d3","line":7,"range":{"start_line":7,"start_character":67,"end_line":7,"end_character":68},"updated":"2019-08-09 18:04:06.000000000","message":"There\u0027s a trailing space after this that can be removed","commit_id":"ed83bb6ed5feaff4b926fe0ef4154daddfa7bc49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5a196298498d841d2738a2e6392db9f6ff2c015d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  - Added manage existing support for NexentaStor5 driver."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - Added a new config option ``nexenta_ssl_cert_verify``."},{"line_number":7,"context_line":"    This option defines whether the NexentaStor5 driver should check "},{"line_number":8,"context_line":"    ssl certificate."},{"line_number":9,"context_line":"  - Added a new config option ``nexenta_rest_connect_timeout``. This option"},{"line_number":10,"context_line":"    specifies the time limit (in seconds), within which the connection to"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"7faddb67_a37549ce","line":7,"range":{"start_line":7,"start_character":67,"end_line":7,"end_character":68},"updated":"2019-08-13 18:49:38.000000000","message":"nit: Please remove the trailing white space after this character...","commit_id":"b7514f39bf39257cead8ed943b3e2c79ed612d93"}]}
