)]}'
{"doc/source/admin/share_back_ends_feature_support_mapping.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":95,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+------------------------+-----------------------------------+--------------------------+--------------------+--------------------+"},{"line_number":96,"context_line":"|                  QNAP                  |           O           |           O           |             O            |            \\-            |            O           |                 O                 |             O            |          \\-        |          \\-        |"},{"line_number":97,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+------------------------+-----------------------------------+--------------------------+--------------------+--------------------+"},{"line_number":98,"context_line":"|         Pure Storage FlashBlade        |           X           |          \\-           |             X            |             X            |            X           |                \\-           |           \\-          |           X           |            \\-            |"},{"line_number":99,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+------------------------+-----------------------------+-----------------------+-----------------------+--------------------------+"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Mapping of share drivers and share access rules support"}],"source_content_type":"text/x-rst","patch_set":8,"id":"a0a8f451_d65f95da","line":98,"range":{"start_line":98,"start_character":258,"end_line":98,"end_character":274},"updated":"2021-05-25 00:42:56.000000000","message":"This row doesn\u0027t render as expected in the output: https://1817fe6a260e6956efeb-c205db93b3c29bdefc78a96a38b9c4c7.ssl.cf5.rackcdn.com/789384/8/check/openstack-tox-docs/a2d969d/docs/admin/share_back_ends_feature_support_mapping.html#mapping-of-share-drivers-and-share-features-support\n\nThe tabs may be off..","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a1b3a6f6821e1e3b354d13d955df364601ae7398","unresolved":false,"context_lines":[{"line_number":95,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+------------------------+-----------------------------------+--------------------------+--------------------+--------------------+"},{"line_number":96,"context_line":"|                  QNAP                  |           O           |           O           |             O            |            \\-            |            O           |                 O                 |             O            |          \\-        |          \\-        |"},{"line_number":97,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+------------------------+-----------------------------------+--------------------------+--------------------+--------------------+"},{"line_number":98,"context_line":"|         Pure Storage FlashBlade        |           X           |          \\-           |             X            |             X            |            X           |                \\-           |           \\-          |           X           |            \\-            |"},{"line_number":99,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+------------------------+-----------------------------+-----------------------+-----------------------+--------------------------+"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Mapping of share drivers and share access rules support"}],"source_content_type":"text/x-rst","patch_set":8,"id":"e6d93d53_dcbcd690","line":98,"range":{"start_line":98,"start_character":258,"end_line":98,"end_character":274},"in_reply_to":"1af0d2ed_23e18618","updated":"2021-06-07 15:28:50.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":95,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+------------------------+-----------------------------------+--------------------------+--------------------+--------------------+"},{"line_number":96,"context_line":"|                  QNAP                  |           O           |           O           |             O            |            \\-            |            O           |                 O                 |             O            |          \\-        |          \\-        |"},{"line_number":97,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+------------------------+-----------------------------------+--------------------------+--------------------+--------------------+"},{"line_number":98,"context_line":"|         Pure Storage FlashBlade        |           X           |          \\-           |             X            |             X            |            X           |                \\-           |           \\-          |           X           |            \\-            |"},{"line_number":99,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+------------------------+-----------------------------+-----------------------+-----------------------+--------------------------+"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Mapping of share drivers and share access rules support"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1af0d2ed_23e18618","line":98,"range":{"start_line":98,"start_character":258,"end_line":98,"end_character":274},"in_reply_to":"a0a8f451_d65f95da","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":306,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":307,"context_line":"|            INSPUR InStorage            |     \\-    |      T     |   \\-   |      \\-     |       \\-          |          T         | \\-  |             \\-             |          \\-        |          \\-        |       T      |      \\-      |"},{"line_number":308,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":309,"context_line":"|         Pure Storage FlashBlade        |     \\-    |      X     |  \\-    |     \\-      |        \\-         |         \\-         | \\-  |             \\-             |          \\-        |          \\-        |       X      |      \\-      |"},{"line_number":310,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"2365b4c9_fb3b2f7a","line":309,"range":{"start_line":309,"start_character":175,"end_line":309,"end_character":180},"updated":"2021-05-25 00:42:56.000000000","message":"Driver supports reverting shares in place to their snapshots per the code and the first feature mapping table above..","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":306,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":307,"context_line":"|            INSPUR InStorage            |     \\-    |      T     |   \\-   |      \\-     |       \\-          |          T         | \\-  |             \\-             |          \\-        |          \\-        |       T      |      \\-      |"},{"line_number":308,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":309,"context_line":"|         Pure Storage FlashBlade        |     \\-    |      X     |  \\-    |     \\-      |        \\-         |         \\-         | \\-  |             \\-             |          \\-        |          \\-        |       X      |      \\-      |"},{"line_number":310,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"6155e605_b535e567","line":309,"range":{"start_line":309,"start_character":175,"end_line":309,"end_character":180},"in_reply_to":"2365b4c9_fb3b2f7a","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a1b3a6f6821e1e3b354d13d955df364601ae7398","unresolved":false,"context_lines":[{"line_number":306,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":307,"context_line":"|            INSPUR InStorage            |     \\-    |      T     |   \\-   |      \\-     |       \\-          |          T         | \\-  |             \\-             |          \\-        |          \\-        |       T      |      \\-      |"},{"line_number":308,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":309,"context_line":"|         Pure Storage FlashBlade        |     \\-    |      X     |  \\-    |     \\-      |        \\-         |         \\-         | \\-  |             \\-             |          \\-        |          \\-        |       X      |      \\-      |"},{"line_number":310,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dcfbd80f_391c0d1d","line":309,"range":{"start_line":309,"start_character":175,"end_line":309,"end_character":180},"in_reply_to":"6155e605_b535e567","updated":"2021-06-07 15:28:50.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d652fbb324d7c9f42eca6176d0cfa8fef7ff38d1","unresolved":true,"context_lines":[{"line_number":306,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":307,"context_line":"|            INSPUR InStorage            |     \\-    |      T     |   \\-   |      \\-     |       \\-          |          T         | \\-  |             \\-             |          \\-        |          \\-        |       T      |      \\-      |"},{"line_number":308,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":309,"context_line":"|         Pure Storage FlashBlade        |     \\-    |      X     |  \\-    |     \\-      |        \\-         |         \\-         | \\-  |             \\-             |           X        |          \\-        |       X      |      \\-      |"},{"line_number":310,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":20,"id":"c2a46c4e_5a00f188","line":309,"range":{"start_line":309,"start_character":98,"end_line":309,"end_character":101},"updated":"2021-06-24 18:25:06.000000000","message":"thin_provisioning is supported by the driver","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a4117c3b4bce4d1a0dcceac7a4cb44fe505d775a","unresolved":false,"context_lines":[{"line_number":306,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":307,"context_line":"|            INSPUR InStorage            |     \\-    |      T     |   \\-   |      \\-     |       \\-          |          T         | \\-  |             \\-             |          \\-        |          \\-        |       T      |      \\-      |"},{"line_number":308,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":309,"context_line":"|         Pure Storage FlashBlade        |     \\-    |      X     |  \\-    |     \\-      |        \\-         |         \\-         | \\-  |             \\-             |           X        |          \\-        |       X      |      \\-      |"},{"line_number":310,"context_line":"+----------------------------------------+-----------+------------+--------+-------------+-------------------+--------------------+-----+----------------------------+--------------------+--------------------+--------------+--------------+"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":20,"id":"77d0d63d_386ed5ed","line":309,"range":{"start_line":309,"start_character":98,"end_line":309,"end_character":101},"in_reply_to":"c2a46c4e_5a00f188","updated":"2021-06-24 20:08:33.000000000","message":"Done","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"}],"doc/source/configuration/shared-file-systems/drivers/purestorage-flashblade-driver.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- Extend/Shrink a share."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- Create and delete filesystem snapshots (No support for create-from, revert-to or mount)."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- Revert to Snapshot."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"306af357_41c1a4c7","line":17,"range":{"start_line":17,"start_character":70,"end_line":17,"end_character":79},"updated":"2021-05-25 00:42:56.000000000","message":"Incorrect?","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- Extend/Shrink a share."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- Create and delete filesystem snapshots (No support for create-from, revert-to or mount)."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- Revert to Snapshot."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"d7a2c9e2_67684e58","line":17,"range":{"start_line":17,"start_character":70,"end_line":17,"end_character":79},"in_reply_to":"306af357_41c1a4c7","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a1b3a6f6821e1e3b354d13d955df364601ae7398","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- Extend/Shrink a share."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- Create and delete filesystem snapshots (No support for create-from, revert-to or mount)."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- Revert to Snapshot."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"38edc4b6_2440a83e","line":17,"range":{"start_line":17,"start_character":70,"end_line":17,"end_character":79},"in_reply_to":"d7a2c9e2_67684e58","updated":"2021-06-07 15:28:50.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  Note the following limitations:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  - Only IP and USER access types are supported."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  - Both RW and RO access levels are supported."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"705d53b9_0d9b7bfe","line":25,"range":{"start_line":25,"start_character":9,"end_line":25,"end_character":11},"updated":"2021-05-25 00:42:56.000000000","message":"please add for clarity: IP (for NFS shares) and USER (for CIFS shares)","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a1b3a6f6821e1e3b354d13d955df364601ae7398","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  Note the following limitations:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  - Only IP and USER access types are supported."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  - Both RW and RO access levels are supported."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ffb5804d_9a665483","line":25,"range":{"start_line":25,"start_character":9,"end_line":25,"end_character":11},"in_reply_to":"38b13c04_6cc63bc1","updated":"2021-06-07 15:28:50.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  Note the following limitations:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  - Only IP and USER access types are supported."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  - Both RW and RO access levels are supported."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"38b13c04_6cc63bc1","line":25,"range":{"start_line":25,"start_character":9,"end_line":25,"end_character":11},"in_reply_to":"705d53b9_0d9b7bfe","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":81,"context_line":"  be eradicated at the time of deletion in Manila. Data will NOT be"},{"line_number":82,"context_line":"  recoverable after a delete with this set to True! When disabled,"},{"line_number":83,"context_line":"  file systems and snapshots will go into pending eradication state"},{"line_number":84,"context_line":"  and can be recovered. The default setting is True."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  .. code-block:: ini"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"6261083d_994cb835","line":84,"range":{"start_line":84,"start_character":6,"end_line":84,"end_character":22},"updated":"2021-05-25 00:42:56.000000000","message":"we could clarify here that they cannot be recovered into Manila, since the driver doesn\u0027t yet support managing/unmanaging shares.","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":81,"context_line":"  be eradicated at the time of deletion in Manila. Data will NOT be"},{"line_number":82,"context_line":"  recoverable after a delete with this set to True! When disabled,"},{"line_number":83,"context_line":"  file systems and snapshots will go into pending eradication state"},{"line_number":84,"context_line":"  and can be recovered. The default setting is True."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  .. code-block:: ini"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"d0cb7e63_98d80f9c","line":84,"range":{"start_line":84,"start_character":6,"end_line":84,"end_character":22},"in_reply_to":"6261083d_994cb835","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a1b3a6f6821e1e3b354d13d955df364601ae7398","unresolved":false,"context_lines":[{"line_number":81,"context_line":"  be eradicated at the time of deletion in Manila. Data will NOT be"},{"line_number":82,"context_line":"  recoverable after a delete with this set to True! When disabled,"},{"line_number":83,"context_line":"  file systems and snapshots will go into pending eradication state"},{"line_number":84,"context_line":"  and can be recovered. The default setting is True."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  .. code-block:: ini"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"d07f7249_af915371","line":84,"range":{"start_line":84,"start_character":6,"end_line":84,"end_character":22},"in_reply_to":"d0cb7e63_98d80f9c","updated":"2021-06-07 15:28:50.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- Revert to Snapshot."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"- Set access rights to shares."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  Note the following limitations:"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"95ea1180_ec00aef5","line":21,"updated":"2021-06-15 18:20:27.000000000","message":"to NFS shares","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- Revert to Snapshot."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"- Set access rights to shares."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  Note the following limitations:"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"38ab1188_22351180","line":21,"in_reply_to":"95ea1180_ec00aef5","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  Note the following limitations:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  - Only IP (for NFS shares) access types are supported."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  - Both RW and RO access levels are supported."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"f3396bfd_ed69b1ac","line":25,"updated":"2021-06-15 18:20:27.000000000","message":"Are CIFS shares accessible to anyone who knows their export location?  Please explicitly spell out the situation for CIFS.","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"  Note the following limitations:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  - Only IP (for NFS shares) access types are supported."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  - Both RW and RO access levels are supported."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"649b4a90_f2f0bb44","line":25,"in_reply_to":"f3396bfd_ed69b1ac","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  - Only IP (for NFS shares) access types are supported."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  - Both RW and RO access levels are supported."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"External package installation"},{"line_number":30,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":13,"id":"45385ac8_d059b439","line":27,"updated":"2021-06-15 18:20:27.000000000","message":"I\u0027d put this is the Supported Operations section since it is not a limitation.","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  - Only IP (for NFS shares) access types are supported."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  - Both RW and RO access levels are supported."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"External package installation"},{"line_number":30,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":13,"id":"6e66d49c_f1aa901c","line":27,"in_reply_to":"45385ac8_d059b439","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  - Only IP (for NFS shares) access types are supported."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  - CIFS shares are accessible to any user who knows the location."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"- Both RW and RO access levels are supported."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"98fc2a85_ba4d86e2","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":66},"updated":"2021-06-17 01:29:18.000000000","message":"That by default is anyone that can see the export locations of the share. \n\nIn manila, all file systems are unavailable to be mounted when they are created, and those OpenStack users that have control over the shares can determine who can mount them via access rules - so this driver ensures this contract for NFS shares, however, from what I understand, CIFS shares are wide open - and there\u0027s no way to allow (or restrict) access to them. Is this a backend limitation that will be addressed in the future? Can the driver integrate with Active Directory and coordinate access?","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  - Only IP (for NFS shares) access types are supported."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  - CIFS shares are accessible to any user who knows the location."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"- Both RW and RO access levels are supported."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"b9289f63_282f704a","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":66},"in_reply_to":"98fc2a85_ba4d86e2","updated":"2021-06-21 19:33:34.000000000","message":"I\u0027ll change the wording of this - the backend requires AD to be integrated and that coordinates the access","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"}],"doc/source/configuration/tables/manila-purestorage-flashblade.inc":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":14,"context_line":"     - (String) The name (or IP address) for the Pure Storage FlashBlade storage system data port."},{"line_number":15,"context_line":"   * - ``flashblade_api`` \u003d ``None``"},{"line_number":16,"context_line":"     - (String) API token for an administrative level user account."},{"line_number":17,"context_line":"   * - ``flashblade_eradicate`` \u003d ``False``"},{"line_number":18,"context_line":"     - (Boolean) Enable or disable filesystem and snapshot eradication on delete."}],"source_content_type":"text/x-c++src","patch_set":8,"id":"cd0e0584_49b20569","line":17,"range":{"start_line":17,"start_character":36,"end_line":17,"end_character":41},"updated":"2021-05-25 00:42:56.000000000","message":"The default value is True","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a1b3a6f6821e1e3b354d13d955df364601ae7398","unresolved":false,"context_lines":[{"line_number":14,"context_line":"     - (String) The name (or IP address) for the Pure Storage FlashBlade storage system data port."},{"line_number":15,"context_line":"   * - ``flashblade_api`` \u003d ``None``"},{"line_number":16,"context_line":"     - (String) API token for an administrative level user account."},{"line_number":17,"context_line":"   * - ``flashblade_eradicate`` \u003d ``False``"},{"line_number":18,"context_line":"     - (Boolean) Enable or disable filesystem and snapshot eradication on delete."}],"source_content_type":"text/x-c++src","patch_set":8,"id":"d07040ee_34cc41d7","line":17,"range":{"start_line":17,"start_character":36,"end_line":17,"end_character":41},"in_reply_to":"8dbdf15a_d9f74478","updated":"2021-06-07 15:28:50.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":14,"context_line":"     - (String) The name (or IP address) for the Pure Storage FlashBlade storage system data port."},{"line_number":15,"context_line":"   * - ``flashblade_api`` \u003d ``None``"},{"line_number":16,"context_line":"     - (String) API token for an administrative level user account."},{"line_number":17,"context_line":"   * - ``flashblade_eradicate`` \u003d ``False``"},{"line_number":18,"context_line":"     - (Boolean) Enable or disable filesystem and snapshot eradication on delete."}],"source_content_type":"text/x-c++src","patch_set":8,"id":"8dbdf15a_d9f74478","line":17,"range":{"start_line":17,"start_character":36,"end_line":17,"end_character":41},"in_reply_to":"cd0e0584_49b20569","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"}],"manila/share/drivers/purestorage/flashblade.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":16,"context_line":"Pure Storage FlashBlade Share Driver"},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import functools"},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"from oslo_utils import units"},{"line_number":23,"context_line":"import platform"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from manila.common import constants"},{"line_number":26,"context_line":"from manila import exception"}],"source_content_type":"text/x-python","patch_set":8,"id":"3dc2134a_705a92a6","line":23,"range":{"start_line":19,"start_character":0,"end_line":23,"end_character":15},"updated":"2021-05-25 00:42:56.000000000","message":"A convention for imports is to not mix third party libraries and builtins:\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#import-order-template","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Pure Storage FlashBlade Share Driver"},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import functools"},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"from oslo_utils import units"},{"line_number":23,"context_line":"import platform"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from manila.common import constants"},{"line_number":26,"context_line":"from manila import exception"}],"source_content_type":"text/x-python","patch_set":8,"id":"fd57820d_c6356465","line":23,"range":{"start_line":19,"start_character":0,"end_line":23,"end_character":15},"in_reply_to":"3dc2134a_705a92a6","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a1b3a6f6821e1e3b354d13d955df364601ae7398","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Pure Storage FlashBlade Share Driver"},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import functools"},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"from oslo_utils import units"},{"line_number":23,"context_line":"import platform"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from manila.common import constants"},{"line_number":26,"context_line":"from manila import exception"}],"source_content_type":"text/x-python","patch_set":8,"id":"713dd2d1_fe5692e5","line":23,"range":{"start_line":19,"start_character":0,"end_line":23,"end_character":15},"in_reply_to":"fd57820d_c6356465","updated":"2021-06-07 15:28:50.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        \"flashblade_mgmt_vip\","},{"line_number":41,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""},{"line_number":42,"context_line":"        \"FlashBlade storage system management VIP.\","},{"line_number":43,"context_line":"    ),"},{"line_number":44,"context_line":"    cfg.HostAddressOpt("},{"line_number":45,"context_line":"        \"flashblade_data_vip\","},{"line_number":46,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""}],"source_content_type":"text/x-python","patch_set":8,"id":"ccf97cc2_8e4bc93d","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":5},"updated":"2021-05-25 00:42:56.000000000","message":"required\u003dTrue\n\nI suppose the driver always needs these opts","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        \"flashblade_mgmt_vip\","},{"line_number":41,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""},{"line_number":42,"context_line":"        \"FlashBlade storage system management VIP.\","},{"line_number":43,"context_line":"    ),"},{"line_number":44,"context_line":"    cfg.HostAddressOpt("},{"line_number":45,"context_line":"        \"flashblade_data_vip\","},{"line_number":46,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""}],"source_content_type":"text/x-python","patch_set":8,"id":"a0430b28_dd0c5942","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":5},"in_reply_to":"ccf97cc2_8e4bc93d","updated":"2021-05-25 21:26:58.000000000","message":"Not going to be implemented","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        \"flashblade_data_vip\","},{"line_number":46,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""},{"line_number":47,"context_line":"        \"FlashBlade storage system data VIP.\","},{"line_number":48,"context_line":"    ),"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"flashblade_auth_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"7854daa6_40a8b073","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":5},"updated":"2021-05-25 00:42:56.000000000","message":"required\u003dTrue","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \"flashblade_data_vip\","},{"line_number":46,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""},{"line_number":47,"context_line":"        \"FlashBlade storage system data VIP.\","},{"line_number":48,"context_line":"    ),"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"flashblade_auth_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"47b7a82d_750beca9","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":5},"in_reply_to":"7854daa6_40a8b073","updated":"2021-05-25 21:26:58.000000000","message":"Not going to be implemented","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":53,"context_line":"        \"flashblade_api\","},{"line_number":54,"context_line":"        help\u003d(\"API token for an administrative user account\"),"},{"line_number":55,"context_line":"        secret\u003dTrue,"},{"line_number":56,"context_line":"    ),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"flashblade_extra_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"dbef8f53_10e3deb8","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":5},"updated":"2021-05-25 00:42:56.000000000","message":"required\u003dTrue","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"flashblade_api\","},{"line_number":54,"context_line":"        help\u003d(\"API token for an administrative user account\"),"},{"line_number":55,"context_line":"        secret\u003dTrue,"},{"line_number":56,"context_line":"    ),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"flashblade_extra_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"c9f249f4_f806147d","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":5},"in_reply_to":"dbef8f53_10e3deb8","updated":"2021-05-25 21:26:58.000000000","message":"Not going to be implemented","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":119,"context_line":"            )"},{"line_number":120,"context_line":"            raise exception.ManilaException(message\u003dmsg)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.api \u003d self._safe_get_from_config_or_fail(\"flashblade_api\")"},{"line_number":123,"context_line":"        self.management_address \u003d self._safe_get_from_config_or_fail("},{"line_number":124,"context_line":"            \"flashblade_mgmt_vip\""},{"line_number":125,"context_line":"        )"},{"line_number":126,"context_line":"        self.data_address \u003d self._safe_get_from_config_or_fail("},{"line_number":127,"context_line":"            \"flashblade_data_vip\""},{"line_number":128,"context_line":"        )"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        self._sys \u003d purity_fb.PurityFb(self.management_address)"},{"line_number":131,"context_line":"        self._sys.disable_verify_ssl()"}],"source_content_type":"text/x-python","patch_set":8,"id":"22372fa8_29e1c59e","line":128,"range":{"start_line":122,"start_character":8,"end_line":128,"end_character":9},"updated":"2021-05-25 00:42:56.000000000","message":"If you add \"required\u003dTrue\", this method won\u0027t be necessary. Loading the options will cause this error to be raised if values are not specified: \n\nhttps://docs.openstack.org/oslo.config/latest/reference/api/oslo_config.html#oslo_config.cfg.RequiredOptError","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            )"},{"line_number":120,"context_line":"            raise exception.ManilaException(message\u003dmsg)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.api \u003d self._safe_get_from_config_or_fail(\"flashblade_api\")"},{"line_number":123,"context_line":"        self.management_address \u003d self._safe_get_from_config_or_fail("},{"line_number":124,"context_line":"            \"flashblade_mgmt_vip\""},{"line_number":125,"context_line":"        )"},{"line_number":126,"context_line":"        self.data_address \u003d self._safe_get_from_config_or_fail("},{"line_number":127,"context_line":"            \"flashblade_data_vip\""},{"line_number":128,"context_line":"        )"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        self._sys \u003d purity_fb.PurityFb(self.management_address)"},{"line_number":131,"context_line":"        self._sys.disable_verify_ssl()"}],"source_content_type":"text/x-python","patch_set":8,"id":"c8b6742e_8faf5d8f","line":128,"range":{"start_line":122,"start_character":8,"end_line":128,"end_character":9},"in_reply_to":"22372fa8_29e1c59e","updated":"2021-05-25 21:26:58.000000000","message":"Not going to be implemented","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":160,"context_line":"            data_reduction\u003ddata_reduction,"},{"line_number":161,"context_line":"            total_capacity_gb\u003dfloat(physical_capacity_bytes) / units.Gi,"},{"line_number":162,"context_line":"            free_capacity_gb\u003dfloat(free_capacity_bytes) / units.Gi,"},{"line_number":163,"context_line":"            provisioned_capacity_gb\u003dfloat(provisioned_cap_bytes) / units.Gi,"},{"line_number":164,"context_line":"            snapshot_support\u003dTrue,"},{"line_number":165,"context_line":"            create_share_from_snapshot_support\u003dFalse,"},{"line_number":166,"context_line":"            mount_snapshot_support\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"2e66b893_ef3f17c0","line":163,"range":{"start_line":163,"start_character":12,"end_line":163,"end_character":76},"updated":"2021-05-25 00:42:56.000000000","message":"Are shares thinly provisioned? If yes, also add \"reserved_percentage\" as:\n\n \u0027reserved_percentage\u0027: self.configuration.safe_get(\u0027reserved_share_percentage\u0027)\n\n\nTo enable manila to handle oversubscription, you\u0027d need to set \"thin_provisioning\u003dTrue\"","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            data_reduction\u003ddata_reduction,"},{"line_number":161,"context_line":"            total_capacity_gb\u003dfloat(physical_capacity_bytes) / units.Gi,"},{"line_number":162,"context_line":"            free_capacity_gb\u003dfloat(free_capacity_bytes) / units.Gi,"},{"line_number":163,"context_line":"            provisioned_capacity_gb\u003dfloat(provisioned_cap_bytes) / units.Gi,"},{"line_number":164,"context_line":"            snapshot_support\u003dTrue,"},{"line_number":165,"context_line":"            create_share_from_snapshot_support\u003dFalse,"},{"line_number":166,"context_line":"            mount_snapshot_support\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5c2b6b91_4c8b64bf","line":163,"range":{"start_line":163,"start_character":12,"end_line":163,"end_character":76},"in_reply_to":"2e66b893_ef3f17c0","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":164,"context_line":"            snapshot_support\u003dTrue,"},{"line_number":165,"context_line":"            create_share_from_snapshot_support\u003dFalse,"},{"line_number":166,"context_line":"            mount_snapshot_support\u003dFalse,"},{"line_number":167,"context_line":"            manage_existing_support\u003dFalse,"},{"line_number":168,"context_line":"            manage_existing_snapshot_support\u003dFalse,"},{"line_number":169,"context_line":"            revert_to_snapshot_support\u003dTrue,"},{"line_number":170,"context_line":"        )"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"c9ab7f08_59ddd26e","line":168,"range":{"start_line":167,"start_character":12,"end_line":168,"end_character":51},"updated":"2021-05-25 00:42:56.000000000","message":"These aren\u0027t valid capabilities...","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            snapshot_support\u003dTrue,"},{"line_number":165,"context_line":"            create_share_from_snapshot_support\u003dFalse,"},{"line_number":166,"context_line":"            mount_snapshot_support\u003dFalse,"},{"line_number":167,"context_line":"            manage_existing_support\u003dFalse,"},{"line_number":168,"context_line":"            manage_existing_snapshot_support\u003dFalse,"},{"line_number":169,"context_line":"            revert_to_snapshot_support\u003dTrue,"},{"line_number":170,"context_line":"        )"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"d488fbdd_3ee3c8cf","line":168,"range":{"start_line":167,"start_character":12,"end_line":168,"end_character":51},"in_reply_to":"c9ab7f08_59ddd26e","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":198,"context_line":"        return config_value"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def _make_source_name(self, snapshot):"},{"line_number":201,"context_line":"        return \"share-%s-manila\" % snapshot[\"share_instance_id\"]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def _make_share_name(self, manila_share):"},{"line_number":204,"context_line":"        return \"share-%s-manila\" % manila_share[\"id\"]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba47d540_79771304","line":201,"range":{"start_line":201,"start_character":45,"end_line":201,"end_character":62},"updated":"2021-05-25 00:42:56.000000000","message":"\"share_id\"\n\n\nThe driver doesn\u0027t have to deal with \"instances\"","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        return config_value"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def _make_source_name(self, snapshot):"},{"line_number":201,"context_line":"        return \"share-%s-manila\" % snapshot[\"share_instance_id\"]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def _make_share_name(self, manila_share):"},{"line_number":204,"context_line":"        return \"share-%s-manila\" % manila_share[\"id\"]"}],"source_content_type":"text/x-python","patch_set":8,"id":"5045989d_6e4c926a","line":201,"range":{"start_line":201,"start_character":45,"end_line":201,"end_character":62},"in_reply_to":"ba47d540_79771304","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":239,"context_line":"                raise exception.ShareResourceNotFound(share_id\u003dname)"},{"line_number":240,"context_line":"            else:"},{"line_number":241,"context_line":"                return res.items[0]"},{"line_number":242,"context_line":"        except exception.InvalidShare:"},{"line_number":243,"context_line":"            msg \u003d _(\"Filesystem not found on FlashBlade by name: %s\") % name"},{"line_number":244,"context_line":"            LOG.error(msg)"},{"line_number":245,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"}],"source_content_type":"text/x-python","patch_set":8,"id":"a30b94db_75b6385c","line":242,"range":{"start_line":242,"start_character":15,"end_line":242,"end_character":37},"updated":"2021-05-25 00:42:56.000000000","message":"Nothing in the block seems to raise this error...","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                raise exception.ShareResourceNotFound(share_id\u003dname)"},{"line_number":240,"context_line":"            else:"},{"line_number":241,"context_line":"                return res.items[0]"},{"line_number":242,"context_line":"        except exception.InvalidShare:"},{"line_number":243,"context_line":"            msg \u003d _(\"Filesystem not found on FlashBlade by name: %s\") % name"},{"line_number":244,"context_line":"            LOG.error(msg)"},{"line_number":245,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1722bf74_3cafe938","line":242,"range":{"start_line":242,"start_character":15,"end_line":242,"end_character":37},"in_reply_to":"a30b94db_75b6385c","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":243,"context_line":"            msg \u003d _(\"Filesystem not found on FlashBlade by name: %s\") % name"},{"line_number":244,"context_line":"            LOG.error(msg)"},{"line_number":245,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"},{"line_number":246,"context_line":"        return None"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def _get_flashblade_filesystem(self, manila_share):"},{"line_number":249,"context_line":"        filesystem_name \u003d self._make_share_name(manila_share)"}],"source_content_type":"text/x-python","patch_set":8,"id":"403034eb_e313561c","line":246,"range":{"start_line":246,"start_character":8,"end_line":246,"end_character":19},"updated":"2021-05-25 00:42:56.000000000","message":"redundant","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            msg \u003d _(\"Filesystem not found on FlashBlade by name: %s\") % name"},{"line_number":244,"context_line":"            LOG.error(msg)"},{"line_number":245,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"},{"line_number":246,"context_line":"        return None"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def _get_flashblade_filesystem(self, manila_share):"},{"line_number":249,"context_line":"        filesystem_name \u003d self._make_share_name(manila_share)"}],"source_content_type":"text/x-python","patch_set":8,"id":"d2e78a08_915820a9","line":246,"range":{"start_line":246,"start_character":8,"end_line":246,"end_character":19},"in_reply_to":"403034eb_e313561c","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":254,"context_line":"            resu \u003d self._sys.file_system_snapshots.list_file_system_snapshots("},{"line_number":255,"context_line":"                filter\u003dname"},{"line_number":256,"context_line":"            )"},{"line_number":257,"context_line":"        except exception.InvalidShare:"},{"line_number":258,"context_line":"            msg \u003d ("},{"line_number":259,"context_line":"                _(\"Snapshot not found on the FlashBlade by its name: %s\")"},{"line_number":260,"context_line":"                % name"}],"source_content_type":"text/x-python","patch_set":8,"id":"efc1ffce_8538f266","line":257,"range":{"start_line":257,"start_character":8,"end_line":257,"end_character":37},"updated":"2021-05-25 00:42:56.000000000","message":"This exception isn\u0027t raised by anything in the block. Did you mean purity_fb.rest.ApiException? [1]\n\nAlso I\u0027m curious - the doc doesn\u0027t mention it, but will the code raise an exception if no snapshots are found by the name? Looking at the response object [2], I\u0027m assuming it makes sense to return an empty list... but elsewhere in other APIs I see this description: \"If after filtering, there is not at least one resource that matches each of the elements of group names, then an error is returned.\" - so that might apply to this API call as well? \n\n[1] https://purity-fb.readthedocs.io/en/stable/FileSystemSnapshotsApi/#list_file_system_snapshots\n[2] https://purity-fb.readthedocs.io/en/stable/FileSystemSnapshotResponse/","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            resu \u003d self._sys.file_system_snapshots.list_file_system_snapshots("},{"line_number":255,"context_line":"                filter\u003dname"},{"line_number":256,"context_line":"            )"},{"line_number":257,"context_line":"        except exception.InvalidShare:"},{"line_number":258,"context_line":"            msg \u003d ("},{"line_number":259,"context_line":"                _(\"Snapshot not found on the FlashBlade by its name: %s\")"},{"line_number":260,"context_line":"                % name"}],"source_content_type":"text/x-python","patch_set":8,"id":"45cb7ed7_670ae900","line":257,"range":{"start_line":257,"start_character":8,"end_line":257,"end_character":37},"in_reply_to":"efc1ffce_8538f266","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":271,"context_line":"                flashblade_export.get_export_path()"},{"line_number":272,"context_line":"            ),"},{"line_number":273,"context_line":"            \"is_admin_only\": False,"},{"line_number":274,"context_line":"            \"metadata\": {},"},{"line_number":275,"context_line":"        }"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    @purity_fb_to_manila_exceptions"}],"source_content_type":"text/x-python","patch_set":8,"id":"48ed6c44_fdd331bd","line":274,"range":{"start_line":274,"start_character":12,"end_line":274,"end_character":13},"updated":"2021-05-25 00:42:56.000000000","message":"please add \"preferred\", and set it to True\n\n\"preferred\" allows user applications to identify an export to pick for a given share - and if a driver only supplies one export path per share, it makes sense to set the value of preferred to True.","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                flashblade_export.get_export_path()"},{"line_number":272,"context_line":"            ),"},{"line_number":273,"context_line":"            \"is_admin_only\": False,"},{"line_number":274,"context_line":"            \"metadata\": {},"},{"line_number":275,"context_line":"        }"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    @purity_fb_to_manila_exceptions"}],"source_content_type":"text/x-python","patch_set":8,"id":"c32b869f_6e6a2d0c","line":274,"range":{"start_line":274,"start_character":12,"end_line":274,"end_character":13},"in_reply_to":"48ed6c44_fdd331bd","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":280,"context_line":"        try:"},{"line_number":281,"context_line":"            self._get_flashblade_filesystem_by_name(dataset_name)"},{"line_number":282,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":283,"context_line":"            message \u003d ("},{"line_number":284,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":285,"context_line":"                \"extend\""},{"line_number":286,"context_line":"            )"},{"line_number":287,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":288,"context_line":"            return"},{"line_number":289,"context_line":"        attr \u003d {}"},{"line_number":290,"context_line":"        attr[\"provisioned\"] \u003d new_size * units.Gi"},{"line_number":291,"context_line":"        n_attr \u003d purity_fb.FileSystem(**attr)"}],"source_content_type":"text/x-python","patch_set":8,"id":"cd4fae7b_30810f35","line":288,"range":{"start_line":283,"start_character":12,"end_line":288,"end_character":18},"updated":"2021-05-25 00:42:56.000000000","message":"seems like an error that needs to be surfaced - please raise","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        try:"},{"line_number":281,"context_line":"            self._get_flashblade_filesystem_by_name(dataset_name)"},{"line_number":282,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":283,"context_line":"            message \u003d ("},{"line_number":284,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":285,"context_line":"                \"extend\""},{"line_number":286,"context_line":"            )"},{"line_number":287,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":288,"context_line":"            return"},{"line_number":289,"context_line":"        attr \u003d {}"},{"line_number":290,"context_line":"        attr[\"provisioned\"] \u003d new_size * units.Gi"},{"line_number":291,"context_line":"        n_attr \u003d purity_fb.FileSystem(**attr)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fcc1c2b8_9d2e22a2","line":288,"range":{"start_line":283,"start_character":12,"end_line":288,"end_character":18},"in_reply_to":"cd4fae7b_30810f35","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":290,"context_line":"        attr[\"provisioned\"] \u003d new_size * units.Gi"},{"line_number":291,"context_line":"        n_attr \u003d purity_fb.FileSystem(**attr)"},{"line_number":292,"context_line":"        LOG.debug(\"Resizing filesystem...\")"},{"line_number":293,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":294,"context_line":"            name\u003ddataset_name, attributes\u003dn_attr"},{"line_number":295,"context_line":"        )"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":298,"context_line":"    def _get_share_backend_id(self, share):"},{"line_number":299,"context_line":"        \"\"\"Get backend share id."}],"source_content_type":"text/x-python","patch_set":8,"id":"85caa45c_f123f48a","line":296,"range":{"start_line":293,"start_character":8,"end_line":296,"end_character":0},"updated":"2021-05-25 00:42:56.000000000","message":"It\u0027s possible that a user can request shrinking a share to a size less than consumed space. Can you detect that scenario? If not, how do you prevent it?\n\nIf yes, you\u0027ll need to do that, and raise ShareShrinkingPossibleDataLossError - so manila can let the user know (using an asynchronous user message [1]) and revert the share to \"available\"\n\n[1] https://opendev.org/openstack/manila/src/commit/36672dcec6480b449043d652d2e5d6eafb5a6247/manila/share/manager.py#L4296-L4306","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        attr[\"provisioned\"] \u003d new_size * units.Gi"},{"line_number":291,"context_line":"        n_attr \u003d purity_fb.FileSystem(**attr)"},{"line_number":292,"context_line":"        LOG.debug(\"Resizing filesystem...\")"},{"line_number":293,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":294,"context_line":"            name\u003ddataset_name, attributes\u003dn_attr"},{"line_number":295,"context_line":"        )"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":298,"context_line":"    def _get_share_backend_id(self, share):"},{"line_number":299,"context_line":"        \"\"\"Get backend share id."}],"source_content_type":"text/x-python","patch_set":8,"id":"b97d0457_5e44dff5","line":296,"range":{"start_line":293,"start_character":8,"end_line":296,"end_character":0},"in_reply_to":"383d3da8_f9d8e212","updated":"2021-06-21 19:33:34.000000000","message":"OK - I\u0027ll add this check in","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        attr[\"provisioned\"] \u003d new_size * units.Gi"},{"line_number":291,"context_line":"        n_attr \u003d purity_fb.FileSystem(**attr)"},{"line_number":292,"context_line":"        LOG.debug(\"Resizing filesystem...\")"},{"line_number":293,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":294,"context_line":"            name\u003ddataset_name, attributes\u003dn_attr"},{"line_number":295,"context_line":"        )"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":298,"context_line":"    def _get_share_backend_id(self, share):"},{"line_number":299,"context_line":"        \"\"\"Get backend share id."}],"source_content_type":"text/x-python","patch_set":8,"id":"df3fe24e_31256bec","line":296,"range":{"start_line":293,"start_character":8,"end_line":296,"end_character":0},"in_reply_to":"85caa45c_f123f48a","updated":"2021-05-25 21:26:58.000000000","message":"If they shrink a share to less than the used space that is possible, but the volume will go read-only as the \"hard limit\" of the share will be breached - there will be no data loss though.","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        attr[\"provisioned\"] \u003d new_size * units.Gi"},{"line_number":291,"context_line":"        n_attr \u003d purity_fb.FileSystem(**attr)"},{"line_number":292,"context_line":"        LOG.debug(\"Resizing filesystem...\")"},{"line_number":293,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":294,"context_line":"            name\u003ddataset_name, attributes\u003dn_attr"},{"line_number":295,"context_line":"        )"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":298,"context_line":"    def _get_share_backend_id(self, share):"},{"line_number":299,"context_line":"        \"\"\"Get backend share id."}],"source_content_type":"text/x-python","patch_set":8,"id":"383d3da8_f9d8e212","line":296,"range":{"start_line":293,"start_character":8,"end_line":296,"end_character":0},"in_reply_to":"df3fe24e_31256bec","updated":"2021-06-17 01:29:18.000000000","message":"\u003e If they shrink a share to less than the used space that is possible, but the volume will go read-only as the \"hard limit\" of the share will be breached - there will be no data loss though.\n\nGoing read-only silently seems disruptive to an end user/application; if you can detect the consumed space, it makes for a better user experience if you raise ShareShrinkingPossibleDataLossError","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":295,"context_line":"        )"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":298,"context_line":"    def _get_share_backend_id(self, share):"},{"line_number":299,"context_line":"        \"\"\"Get backend share id."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        Try to get backend share id from path in case this is managed share,"}],"source_content_type":"text/x-python","patch_set":8,"id":"11844aad_f249f741","line":298,"range":{"start_line":298,"start_character":0,"end_line":298,"end_character":43},"updated":"2021-05-25 00:42:56.000000000","message":"Unused method","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        )"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":298,"context_line":"    def _get_share_backend_id(self, share):"},{"line_number":299,"context_line":"        \"\"\"Get backend share id."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        Try to get backend share id from path in case this is managed share,"}],"source_content_type":"text/x-python","patch_set":8,"id":"52d6641a_dcac590f","line":298,"range":{"start_line":298,"start_character":0,"end_line":298,"end_character":43},"in_reply_to":"11844aad_f249f741","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":329,"context_line":"        try:"},{"line_number":330,"context_line":"            self._get_flashblade_filesystem_by_name(dataset_name)"},{"line_number":331,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":332,"context_line":"            message \u003d ("},{"line_number":333,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":334,"context_line":"                \"update nfs access\""},{"line_number":335,"context_line":"            )"},{"line_number":336,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":337,"context_line":"            return"},{"line_number":338,"context_line":"        nfs_rules \u003d \"\""},{"line_number":339,"context_line":"        for access in access_rules:"},{"line_number":340,"context_line":"            if access[\"access_type\"] \u003d\u003d \"ip\":"}],"source_content_type":"text/x-python","patch_set":8,"id":"0a2a7831_50d065e8","line":337,"range":{"start_line":332,"start_character":12,"end_line":337,"end_character":18},"updated":"2021-05-25 00:42:56.000000000","message":"This should be an exception","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        try:"},{"line_number":330,"context_line":"            self._get_flashblade_filesystem_by_name(dataset_name)"},{"line_number":331,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":332,"context_line":"            message \u003d ("},{"line_number":333,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":334,"context_line":"                \"update nfs access\""},{"line_number":335,"context_line":"            )"},{"line_number":336,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":337,"context_line":"            return"},{"line_number":338,"context_line":"        nfs_rules \u003d \"\""},{"line_number":339,"context_line":"        for access in access_rules:"},{"line_number":340,"context_line":"            if access[\"access_type\"] \u003d\u003d \"ip\":"}],"source_content_type":"text/x-python","patch_set":8,"id":"c7e5763e_36f452c8","line":337,"range":{"start_line":332,"start_character":12,"end_line":337,"end_character":18},"in_reply_to":"0a2a7831_50d065e8","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":337,"context_line":"            return"},{"line_number":338,"context_line":"        nfs_rules \u003d \"\""},{"line_number":339,"context_line":"        for access in access_rules:"},{"line_number":340,"context_line":"            if access[\"access_type\"] \u003d\u003d \"ip\":"},{"line_number":341,"context_line":"                line \u003d ("},{"line_number":342,"context_line":"                    access[\"access_to\"]"},{"line_number":343,"context_line":"                    + \"(\""}],"source_content_type":"text/x-python","patch_set":8,"id":"6ac448d7_7397d910","line":340,"range":{"start_line":340,"start_character":12,"end_line":340,"end_character":45},"updated":"2021-05-25 00:42:56.000000000","message":"else?\n\nPlease record the access ID and set the state to error. See example here: https://opendev.org/openstack/manila/src/commit/2bc27c5678945d92ffd6b885eeaf6f86c9f16f8c/manila/share/driver.py#L814-L859","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            return"},{"line_number":338,"context_line":"        nfs_rules \u003d \"\""},{"line_number":339,"context_line":"        for access in access_rules:"},{"line_number":340,"context_line":"            if access[\"access_type\"] \u003d\u003d \"ip\":"},{"line_number":341,"context_line":"                line \u003d ("},{"line_number":342,"context_line":"                    access[\"access_to\"]"},{"line_number":343,"context_line":"                    + \"(\""}],"source_content_type":"text/x-python","patch_set":8,"id":"025a3633_6738e47c","line":340,"range":{"start_line":340,"start_character":12,"end_line":340,"end_character":45},"in_reply_to":"6ac448d7_7397d910","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":346,"context_line":"                )"},{"line_number":347,"context_line":"                nfs_rules +\u003d line"},{"line_number":348,"context_line":"        message \u003d \"rules are %(nfs_rules)s, info \" \"update nfs access\""},{"line_number":349,"context_line":"        LOG.info(message, {\"nfs_rules\": nfs_rules})"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":352,"context_line":"            name\u003ddataset_name,"}],"source_content_type":"text/x-python","patch_set":8,"id":"907e9064_d92b7077","line":349,"range":{"start_line":349,"start_character":8,"end_line":349,"end_character":16},"updated":"2021-05-25 00:42:56.000000000","message":"info is useful after an action is performed - you can use \"debug\" to record useful pre-event steps","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                )"},{"line_number":347,"context_line":"                nfs_rules +\u003d line"},{"line_number":348,"context_line":"        message \u003d \"rules are %(nfs_rules)s, info \" \"update nfs access\""},{"line_number":349,"context_line":"        LOG.info(message, {\"nfs_rules\": nfs_rules})"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":352,"context_line":"            name\u003ddataset_name,"}],"source_content_type":"text/x-python","patch_set":8,"id":"8415c098_d548f447","line":349,"range":{"start_line":349,"start_character":8,"end_line":349,"end_character":16},"in_reply_to":"907e9064_d92b7077","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":385,"context_line":"            self._sys.file_systems.create_file_systems(flashblade_fs)"},{"line_number":386,"context_line":"            location \u003d self._get_full_nfs_export_path(share_name)"},{"line_number":387,"context_line":"            LOG.info("},{"line_number":388,"context_line":"                \"FlashBlade creating share %(name)s\", {\"name\": share_name}"},{"line_number":389,"context_line":"            )"},{"line_number":390,"context_line":"        elif share[\"share_proto\"] \u003d\u003d \"CIFS\":"},{"line_number":391,"context_line":"            flashblade_fs \u003d purity_fb.FileSystem("}],"source_content_type":"text/x-python","patch_set":8,"id":"e6dfe58c_b06e702a","line":388,"range":{"start_line":388,"start_character":28,"end_line":388,"end_character":36},"updated":"2021-05-25 00:42:56.000000000","message":"created?\n\nAlso makes sense to do this on line 410 and remove the need for lines 401-403","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            self._sys.file_systems.create_file_systems(flashblade_fs)"},{"line_number":386,"context_line":"            location \u003d self._get_full_nfs_export_path(share_name)"},{"line_number":387,"context_line":"            LOG.info("},{"line_number":388,"context_line":"                \"FlashBlade creating share %(name)s\", {\"name\": share_name}"},{"line_number":389,"context_line":"            )"},{"line_number":390,"context_line":"        elif share[\"share_proto\"] \u003d\u003d \"CIFS\":"},{"line_number":391,"context_line":"            flashblade_fs \u003d purity_fb.FileSystem("}],"source_content_type":"text/x-python","patch_set":8,"id":"46693ee6_638f000e","line":388,"range":{"start_line":388,"start_character":28,"end_line":388,"end_character":36},"in_reply_to":"e6dfe58c_b06e702a","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":420,"context_line":"            self._sys.file_system_snapshots.create_file_system_snapshots("},{"line_number":421,"context_line":"                sources\u003dsource, suffix\u003dpurity_fb.SnapshotSuffix(snapshot[\"id\"])"},{"line_number":422,"context_line":"            )"},{"line_number":423,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":424,"context_line":"            message \u003d ("},{"line_number":425,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":426,"context_line":"                \"create\""}],"source_content_type":"text/x-python","patch_set":8,"id":"fadc137c_69ae097d","line":423,"range":{"start_line":423,"start_character":15,"end_line":423,"end_character":46},"updated":"2021-05-25 00:42:56.000000000","message":"This doesn\u0027t seem to be coming from the call on 420-421","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":true,"context_lines":[{"line_number":420,"context_line":"            self._sys.file_system_snapshots.create_file_system_snapshots("},{"line_number":421,"context_line":"                sources\u003dsource, suffix\u003dpurity_fb.SnapshotSuffix(snapshot[\"id\"])"},{"line_number":422,"context_line":"            )"},{"line_number":423,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":424,"context_line":"            message \u003d ("},{"line_number":425,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":426,"context_line":"                \"create\""}],"source_content_type":"text/x-python","patch_set":8,"id":"b5bb81fa_2ec002fe","line":423,"range":{"start_line":423,"start_character":15,"end_line":423,"end_character":46},"in_reply_to":"fadc137c_69ae097d","updated":"2021-05-25 21:26:58.000000000","message":"Yes it is. The call on 420 tries to create a snapshot and can be parsed a share name that doesn\u0027t exist - that will raise an exception. This is possible if someone has manually deleted the Manila created share on the backend.","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":450,"context_line":"            ),"},{"line_number":451,"context_line":"        )"},{"line_number":452,"context_line":"        if self.configuration.flashblade_eradicate:"},{"line_number":453,"context_line":"            LOG.info("},{"line_number":454,"context_line":"                \"FlashBlade eradicating share %(name)s\", {\"name\": dataset_name}"},{"line_number":455,"context_line":"            )"},{"line_number":456,"context_line":"            self._sys.file_systems.delete_file_systems(name\u003ddataset_name)"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @purity_fb_to_manila_exceptions"}],"source_content_type":"text/x-python","patch_set":8,"id":"1d9b6d02_7edf4f33","line":455,"range":{"start_line":453,"start_character":12,"end_line":455,"end_character":13},"updated":"2021-05-25 00:42:56.000000000","message":"log after deletion.. See the definition of log levels, and adjust logging all over this driver: https://docs.openstack.org/oslo.log/latest/user/guidelines.html#definition-of-log-levels","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            ),"},{"line_number":451,"context_line":"        )"},{"line_number":452,"context_line":"        if self.configuration.flashblade_eradicate:"},{"line_number":453,"context_line":"            LOG.info("},{"line_number":454,"context_line":"                \"FlashBlade eradicating share %(name)s\", {\"name\": dataset_name}"},{"line_number":455,"context_line":"            )"},{"line_number":456,"context_line":"            self._sys.file_systems.delete_file_systems(name\u003ddataset_name)"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    @purity_fb_to_manila_exceptions"}],"source_content_type":"text/x-python","patch_set":8,"id":"bb2eb8e3_b820c4af","line":455,"range":{"start_line":453,"start_character":12,"end_line":455,"end_character":13},"in_reply_to":"1d9b6d02_7edf4f33","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":500,"context_line":"        # We will use the access_rules list to bulk update access"},{"line_number":501,"context_line":"        if share[\"share_proto\"] \u003d\u003d \"NFS\":"},{"line_number":502,"context_line":"            self._update_nfs_access(share, access_rules)"},{"line_number":503,"context_line":"        # TODO(SD): add CIFS access stuff when available"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def get_network_allocations_number(self):"},{"line_number":506,"context_line":"        \"\"\"Not required - return zero\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ac59c55f_a1e3b95f","line":503,"range":{"start_line":503,"start_character":7,"end_line":503,"end_character":56},"updated":"2021-05-25 00:42:56.000000000","message":"How are CIFS access rules accommodated now?","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":true,"context_lines":[{"line_number":500,"context_line":"        # We will use the access_rules list to bulk update access"},{"line_number":501,"context_line":"        if share[\"share_proto\"] \u003d\u003d \"NFS\":"},{"line_number":502,"context_line":"            self._update_nfs_access(share, access_rules)"},{"line_number":503,"context_line":"        # TODO(SD): add CIFS access stuff when available"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def get_network_allocations_number(self):"},{"line_number":506,"context_line":"        \"\"\"Not required - return zero\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"40a81db6_3b154948","line":503,"range":{"start_line":503,"start_character":7,"end_line":503,"end_character":56},"in_reply_to":"ac59c55f_a1e3b95f","updated":"2021-05-25 21:26:58.000000000","message":"Currently there is no way to accommodate CIFS account rules in the FlashBlade - this is a placeholder for a future feature,\nBy default, file sharing over CIFS is configured in AD RFC2307 mode for mixed Windows/UNIX environments","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":502,"context_line":"            self._update_nfs_access(share, access_rules)"},{"line_number":503,"context_line":"        # TODO(SD): add CIFS access stuff when available"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def get_network_allocations_number(self):"},{"line_number":506,"context_line":"        \"\"\"Not required - return zero\"\"\""},{"line_number":507,"context_line":"        return 0"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"},{"line_number":510,"context_line":"        \"\"\"uses resize_share to extend a share\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"45722dda_a7585a01","line":507,"range":{"start_line":505,"start_character":3,"end_line":507,"end_character":16},"updated":"2021-05-25 00:42:56.000000000","message":"Don\u0027t bother implementing this - it\u0027s only for DHSS\u003dTrue drivers","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"56b0ece9b003f22d3fff13e25d5d6d55eef107a7","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            self._update_nfs_access(share, access_rules)"},{"line_number":503,"context_line":"        # TODO(SD): add CIFS access stuff when available"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def get_network_allocations_number(self):"},{"line_number":506,"context_line":"        \"\"\"Not required - return zero\"\"\""},{"line_number":507,"context_line":"        return 0"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"},{"line_number":510,"context_line":"        \"\"\"uses resize_share to extend a share\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"9e0599cb_4157c362","line":507,"range":{"start_line":505,"start_character":3,"end_line":507,"end_character":16},"in_reply_to":"45722dda_a7585a01","updated":"2021-05-25 21:26:58.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":41,"context_line":"        \"flashblade_mgmt_vip\","},{"line_number":42,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""},{"line_number":43,"context_line":"        \"FlashBlade storage system management VIP.\","},{"line_number":44,"context_line":"        #        required\u003dTrue,"},{"line_number":45,"context_line":"    ),"},{"line_number":46,"context_line":"    cfg.HostAddressOpt("},{"line_number":47,"context_line":"        \"flashblade_data_vip\","}],"source_content_type":"text/x-python","patch_set":13,"id":"eaa89eb9_101c586b","line":44,"updated":"2021-06-15 18:20:27.000000000","message":"Uncomment?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"flashblade_mgmt_vip\","},{"line_number":42,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""},{"line_number":43,"context_line":"        \"FlashBlade storage system management VIP.\","},{"line_number":44,"context_line":"        #        required\u003dTrue,"},{"line_number":45,"context_line":"    ),"},{"line_number":46,"context_line":"    cfg.HostAddressOpt("},{"line_number":47,"context_line":"        \"flashblade_data_vip\","}],"source_content_type":"text/x-python","patch_set":13,"id":"b67506e8_87829886","line":44,"in_reply_to":"eaa89eb9_101c586b","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        \"flashblade_data_vip\","},{"line_number":48,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""},{"line_number":49,"context_line":"        \"FlashBlade storage system data VIP.\","},{"line_number":50,"context_line":"        #        required\u003dTrue,"},{"line_number":51,"context_line":"    ),"},{"line_number":52,"context_line":"]"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"24b71ed6_72d55156","line":50,"updated":"2021-06-15 18:20:27.000000000","message":"Uncomment?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        \"flashblade_data_vip\","},{"line_number":48,"context_line":"        help\u003d\"The name (or IP address) for the Pure Storage \""},{"line_number":49,"context_line":"        \"FlashBlade storage system data VIP.\","},{"line_number":50,"context_line":"        #        required\u003dTrue,"},{"line_number":51,"context_line":"    ),"},{"line_number":52,"context_line":"]"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"189d16dd_52211d67","line":50,"in_reply_to":"24b71ed6_72d55156","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":202,"context_line":"                \"%(config_parameter)s configuration parameter \""},{"line_number":203,"context_line":"                \"must be specified\""},{"line_number":204,"context_line":"            ) % {\"config_parameter\": config_parameter}"},{"line_number":205,"context_line":"            LOG.error(reason)"},{"line_number":206,"context_line":"            raise exception.BadConfigurationException(reason\u003dreason)"},{"line_number":207,"context_line":"        return config_value"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"e4d05390_a0d176ef","line":205,"updated":"2021-06-15 18:20:27.000000000","message":"Log.exception?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                \"%(config_parameter)s configuration parameter \""},{"line_number":203,"context_line":"                \"must be specified\""},{"line_number":204,"context_line":"            ) % {\"config_parameter\": config_parameter}"},{"line_number":205,"context_line":"            LOG.error(reason)"},{"line_number":206,"context_line":"            raise exception.BadConfigurationException(reason\u003dreason)"},{"line_number":207,"context_line":"        return config_value"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"d6c4a4f5_62e7434f","line":205,"in_reply_to":"e4d05390_a0d176ef","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":241,"context_line":"        res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":242,"context_line":"        if not res.items[0]:"},{"line_number":243,"context_line":"            msg \u003d _(\"Filesystem not found on FlashBlade by name: %s\") % name"},{"line_number":244,"context_line":"            LOG.error(msg)"},{"line_number":245,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"},{"line_number":246,"context_line":"        return res.items[0]"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"ef0478bf_b9d73136","line":244,"updated":"2021-06-15 18:20:27.000000000","message":"LOG.exception?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":242,"context_line":"        if not res.items[0]:"},{"line_number":243,"context_line":"            msg \u003d _(\"Filesystem not found on FlashBlade by name: %s\") % name"},{"line_number":244,"context_line":"            LOG.error(msg)"},{"line_number":245,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"},{"line_number":246,"context_line":"        return res.items[0]"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7511f07c_2a5f98b7","line":244,"in_reply_to":"ef0478bf_b9d73136","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":257,"context_line":"            msg \u003d ("},{"line_number":258,"context_line":"                _(\"Snapshot not found on the FlashBlade by filter: %s\") % name"},{"line_number":259,"context_line":"            )"},{"line_number":260,"context_line":"            LOG.error(msg)"},{"line_number":261,"context_line":"            raise exception.ShareSnapshotNotFound(snapshot_id\u003dname)"},{"line_number":262,"context_line":"        return resu.items[0]"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"6a9b283f_da008ffb","line":260,"updated":"2021-06-15 18:20:27.000000000","message":"LOG.exception?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":257,"context_line":"            msg \u003d ("},{"line_number":258,"context_line":"                _(\"Snapshot not found on the FlashBlade by filter: %s\") % name"},{"line_number":259,"context_line":"            )"},{"line_number":260,"context_line":"            LOG.error(msg)"},{"line_number":261,"context_line":"            raise exception.ShareSnapshotNotFound(snapshot_id\u003dname)"},{"line_number":262,"context_line":"        return resu.items[0]"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"a37eadb9_2179ac24","line":260,"in_reply_to":"6a9b283f_da008ffb","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":283,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":284,"context_line":"                \"extend\""},{"line_number":285,"context_line":"            )"},{"line_number":286,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":287,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003ddataset_name)"},{"line_number":288,"context_line":"        attr \u003d {}"},{"line_number":289,"context_line":"        attr[\"provisioned\"] \u003d new_size * units.Gi"}],"source_content_type":"text/x-python","patch_set":13,"id":"ec03a5bb_7133671e","line":286,"updated":"2021-06-15 18:20:27.000000000","message":"LOG.exception?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":284,"context_line":"                \"extend\""},{"line_number":285,"context_line":"            )"},{"line_number":286,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":287,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003ddataset_name)"},{"line_number":288,"context_line":"        attr \u003d {}"},{"line_number":289,"context_line":"        attr[\"provisioned\"] \u003d new_size * units.Gi"}],"source_content_type":"text/x-python","patch_set":13,"id":"ad6aecd6_a018f7d6","line":286,"in_reply_to":"ec03a5bb_7133671e","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":303,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":304,"context_line":"                \"update nfs access\""},{"line_number":305,"context_line":"            )"},{"line_number":306,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":307,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003ddataset_name)"},{"line_number":308,"context_line":"        nfs_rules \u003d \"\""},{"line_number":309,"context_line":"        rule_state \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"2908c7f5_432f03d9","line":306,"updated":"2021-06-15 18:20:27.000000000","message":"warning level log and exception seem incompatible.  LOG.exception?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":303,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":304,"context_line":"                \"update nfs access\""},{"line_number":305,"context_line":"            )"},{"line_number":306,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":307,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003ddataset_name)"},{"line_number":308,"context_line":"        nfs_rules \u003d \"\""},{"line_number":309,"context_line":"        rule_state \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"cd410eba_64d6175d","line":306,"in_reply_to":"2908c7f5_432f03d9","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":337,"context_line":"            )"},{"line_number":338,"context_line":"        except Exception:"},{"line_number":339,"context_line":"            message \u003d ("},{"line_number":340,"context_line":"                \"Failed to eet nfs rules %(nfs_rules)s for %(share_name)s\""},{"line_number":341,"context_line":"            )"},{"line_number":342,"context_line":"            LOG.debug("},{"line_number":343,"context_line":"                message, {\"nfs_rules\": nfs_rules, \"share_name\": dataset_name}"}],"source_content_type":"text/x-python","patch_set":13,"id":"be6c357a_8d34b4f5","line":340,"updated":"2021-06-15 18:20:27.000000000","message":"s/eet/set","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            )"},{"line_number":338,"context_line":"        except Exception:"},{"line_number":339,"context_line":"            message \u003d ("},{"line_number":340,"context_line":"                \"Failed to eet nfs rules %(nfs_rules)s for %(share_name)s\""},{"line_number":341,"context_line":"            )"},{"line_number":342,"context_line":"            LOG.debug("},{"line_number":343,"context_line":"                message, {\"nfs_rules\": nfs_rules, \"share_name\": dataset_name}"}],"source_content_type":"text/x-python","patch_set":13,"id":"f3bc6c23_6ff65c07","line":340,"in_reply_to":"be6c357a_8d34b4f5","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":339,"context_line":"            message \u003d ("},{"line_number":340,"context_line":"                \"Failed to eet nfs rules %(nfs_rules)s for %(share_name)s\""},{"line_number":341,"context_line":"            )"},{"line_number":342,"context_line":"            LOG.debug("},{"line_number":343,"context_line":"                message, {\"nfs_rules\": nfs_rules, \"share_name\": dataset_name}"},{"line_number":344,"context_line":"            )"},{"line_number":345,"context_line":"            return rule_state"}],"source_content_type":"text/x-python","patch_set":13,"id":"791dc107_94146886","line":342,"updated":"2021-06-15 18:20:27.000000000","message":"LOG.error?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":339,"context_line":"            message \u003d ("},{"line_number":340,"context_line":"                \"Failed to eet nfs rules %(nfs_rules)s for %(share_name)s\""},{"line_number":341,"context_line":"            )"},{"line_number":342,"context_line":"            LOG.debug("},{"line_number":343,"context_line":"                message, {\"nfs_rules\": nfs_rules, \"share_name\": dataset_name}"},{"line_number":344,"context_line":"            )"},{"line_number":345,"context_line":"            return rule_state"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfaf873d_a42bb286","line":342,"in_reply_to":"791dc107_94146886","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":391,"context_line":"            message \u003d _(\"Unsupported share protocol: %(proto)s.\") % {"},{"line_number":392,"context_line":"                \"proto\": share[\"share_proto\"]"},{"line_number":393,"context_line":"            }"},{"line_number":394,"context_line":"            LOG.error(message)"},{"line_number":395,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":396,"context_line":"        LOG.info(\"FlashBlade created share %(name)s\", {\"name\": share_name})"},{"line_number":397,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bf8be9b3_c30bce68","line":394,"updated":"2021-06-15 18:20:27.000000000","message":"LOG.exception?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            message \u003d _(\"Unsupported share protocol: %(proto)s.\") % {"},{"line_number":392,"context_line":"                \"proto\": share[\"share_proto\"]"},{"line_number":393,"context_line":"            }"},{"line_number":394,"context_line":"            LOG.error(message)"},{"line_number":395,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":396,"context_line":"        LOG.info(\"FlashBlade created share %(name)s\", {\"name\": share_name})"},{"line_number":397,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"c8b8478f_ccb24da5","line":394,"in_reply_to":"bf8be9b3_c30bce68","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":450,"context_line":"            dataset_name, snapshot[\"id\"]"},{"line_number":451,"context_line":"        )"},{"line_number":452,"context_line":"        name \u003d \"{0}.{1}\".format(dataset_name, snapshot[\"id\"])"},{"line_number":453,"context_line":"        LOG.info(\"FlashBlade filter %(name)s\", {\"name\": filt})"},{"line_number":454,"context_line":"        try:"},{"line_number":455,"context_line":"            flashblade_snapshot \u003d self._get_flashblade_snapshot_by_name(filt)"},{"line_number":456,"context_line":"        except exception.ShareResourceNotFound:"}],"source_content_type":"text/x-python","patch_set":13,"id":"a91f1a5b_eb8b5026","line":453,"updated":"2021-06-15 18:20:27.000000000","message":"LOG.debug?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            dataset_name, snapshot[\"id\"]"},{"line_number":451,"context_line":"        )"},{"line_number":452,"context_line":"        name \u003d \"{0}.{1}\".format(dataset_name, snapshot[\"id\"])"},{"line_number":453,"context_line":"        LOG.info(\"FlashBlade filter %(name)s\", {\"name\": filt})"},{"line_number":454,"context_line":"        try:"},{"line_number":455,"context_line":"            flashblade_snapshot \u003d self._get_flashblade_snapshot_by_name(filt)"},{"line_number":456,"context_line":"        except exception.ShareResourceNotFound:"}],"source_content_type":"text/x-python","patch_set":13,"id":"0e537404_ea294b4c","line":453,"in_reply_to":"a91f1a5b_eb8b5026","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"550a34bf66cf0e8010ad34424b60d341630ee6c0","unresolved":true,"context_lines":[{"line_number":511,"context_line":"        filt \u003d \"source_display_name\u003d\u0027{0}\u0027 and suffix\u003d\u0027{1}\u0027\".format("},{"line_number":512,"context_line":"            dataset_name, snapshot[\"id\"]"},{"line_number":513,"context_line":"        )"},{"line_number":514,"context_line":"        LOG.info(\"FlashBlade filter %(name)s\", {\"name\": filt})"},{"line_number":515,"context_line":"        name \u003d \"{0}.{1}\".format(dataset_name, snapshot[\"id\"])"},{"line_number":516,"context_line":"        try:"},{"line_number":517,"context_line":"            flashblade_snapshot \u003d self._get_flashblade_snapshot_by_name(filt)"}],"source_content_type":"text/x-python","patch_set":13,"id":"4df6c49b_5d162192","line":514,"updated":"2021-06-15 18:20:27.000000000","message":"info or debug?","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04b7498696c4b29a34ffa9309efdc2c57d626ba0","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        filt \u003d \"source_display_name\u003d\u0027{0}\u0027 and suffix\u003d\u0027{1}\u0027\".format("},{"line_number":512,"context_line":"            dataset_name, snapshot[\"id\"]"},{"line_number":513,"context_line":"        )"},{"line_number":514,"context_line":"        LOG.info(\"FlashBlade filter %(name)s\", {\"name\": filt})"},{"line_number":515,"context_line":"        name \u003d \"{0}.{1}\".format(dataset_name, snapshot[\"id\"])"},{"line_number":516,"context_line":"        try:"},{"line_number":517,"context_line":"            flashblade_snapshot \u003d self._get_flashblade_snapshot_by_name(filt)"}],"source_content_type":"text/x-python","patch_set":13,"id":"121378ef_22bb9479","line":514,"in_reply_to":"4df6c49b_5d162192","updated":"2021-06-15 19:19:50.000000000","message":"Done","commit_id":"1d6a98ed29e38ba5ef2b4639d81b1e7baa16108c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":75,"context_line":"CONF.register_opts(flashblade_auth_opts)"},{"line_number":76,"context_line":"CONF.register_opts(flashblade_extra_opts)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"_MANILA_TO_FLASHBLADE_ACCESS_LEVEL \u003d {"},{"line_number":79,"context_line":"    constants.ACCESS_LEVEL_RW: \"rw\","},{"line_number":80,"context_line":"    constants.ACCESS_LEVEL_RO: \"ro\","},{"line_number":81,"context_line":"}"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"def purity_fb_to_manila_exceptions(func):"}],"source_content_type":"text/x-python","patch_set":14,"id":"f6b888b2_22a87783","line":81,"range":{"start_line":78,"start_character":0,"end_line":81,"end_character":1},"updated":"2021-06-17 01:29:18.000000000","message":"these are exactly the same as constants, why do you need to re-map them?","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":75,"context_line":"CONF.register_opts(flashblade_auth_opts)"},{"line_number":76,"context_line":"CONF.register_opts(flashblade_extra_opts)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"_MANILA_TO_FLASHBLADE_ACCESS_LEVEL \u003d {"},{"line_number":79,"context_line":"    constants.ACCESS_LEVEL_RW: \"rw\","},{"line_number":80,"context_line":"    constants.ACCESS_LEVEL_RO: \"ro\","},{"line_number":81,"context_line":"}"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"def purity_fb_to_manila_exceptions(func):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ad98bfff_2575acde","line":81,"range":{"start_line":78,"start_character":0,"end_line":81,"end_character":1},"in_reply_to":"f6b888b2_22a87783","updated":"2021-06-21 19:33:34.000000000","message":"Good point - removed","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":236,"context_line":"        filesys \u003d []"},{"line_number":237,"context_line":"        filesys.append(name)"},{"line_number":238,"context_line":"        res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":239,"context_line":"        if not res.items[0]:"},{"line_number":240,"context_line":"            msg \u003d _(\"Filesystem not found on FlashBlade by name: %s\") % name"},{"line_number":241,"context_line":"            LOG.exception(msg)"},{"line_number":242,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"}],"source_content_type":"text/x-python","patch_set":14,"id":"aa8932ce_28a57f00","line":239,"range":{"start_line":239,"start_character":15,"end_line":239,"end_character":27},"updated":"2021-06-17 01:29:18.000000000","message":"this can potentially raise an IndexError. or does the API guarantee atleast one element set to None?","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        filesys \u003d []"},{"line_number":237,"context_line":"        filesys.append(name)"},{"line_number":238,"context_line":"        res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":239,"context_line":"        if not res.items[0]:"},{"line_number":240,"context_line":"            msg \u003d _(\"Filesystem not found on FlashBlade by name: %s\") % name"},{"line_number":241,"context_line":"            LOG.exception(msg)"},{"line_number":242,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"}],"source_content_type":"text/x-python","patch_set":14,"id":"41286674_fb764fce","line":239,"range":{"start_line":239,"start_character":15,"end_line":239,"end_character":27},"in_reply_to":"aa8932ce_28a57f00","updated":"2021-06-21 19:33:34.000000000","message":"True - Fixed","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":304,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003ddataset_name)"},{"line_number":305,"context_line":"        nfs_rules \u003d \"\""},{"line_number":306,"context_line":"        rule_state \u003d {}"},{"line_number":307,"context_line":"        for access in access_rules:"},{"line_number":308,"context_line":"            rule_state[access[\"access_id\"]] \u003d {\"state\": \"error\"}"},{"line_number":309,"context_line":"        for access in access_rules:"},{"line_number":310,"context_line":"            if access[\"access_type\"] \u003d\u003d \"ip\":"},{"line_number":311,"context_line":"                line \u003d ("},{"line_number":312,"context_line":"                    access[\"access_to\"]"},{"line_number":313,"context_line":"                    + \"(\""},{"line_number":314,"context_line":"                    + self._get_flashblade_access_level(access)"},{"line_number":315,"context_line":"                    + \",no_root_squash) \""},{"line_number":316,"context_line":"                )"},{"line_number":317,"context_line":"                nfs_rules +\u003d line"},{"line_number":318,"context_line":"            else:"},{"line_number":319,"context_line":"                message \u003d _("},{"line_number":320,"context_line":"                    \u0027Only \"ip\" access type is allowed for NFS protocol.\u0027"},{"line_number":321,"context_line":"                )"},{"line_number":322,"context_line":"                LOG.error(message)"},{"line_number":323,"context_line":"                raise exception.InvalidShareAccess(reason\u003dmessage)"},{"line_number":324,"context_line":"        try:"},{"line_number":325,"context_line":"            self._sys.file_systems.update_file_systems("},{"line_number":326,"context_line":"                name\u003ddataset_name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"78144bbf_cbb31e4f","line":323,"range":{"start_line":307,"start_character":8,"end_line":323,"end_character":66},"updated":"2021-06-17 01:29:18.000000000","message":"This processing is incorrect; You set all the rules to error to begin with, and then raise an exception if one of the rule types is something other than IP - raising an exception will force all rules to \"error\". \n\n for access in access_rules:\n    if access[\"access_type\"] \u003d\u003d \"ip\":\n       line \u003d (\n             access[\"access_to\"]\n             + \"(\"\n             + self._get_flashblade_access_level(access)\n             + \",no_root_squash) \"\n              )\n             nfs_rules +\u003d line\n    else:\n        message \u003d _(\n              \u0027Only \"ip\" access type is allowed for NFS protocol. Rule %s is invalid\u0027\n              % access[\u0027access_id\u0027]) \n             LOG.error(message)\n             rule_state[access[\"access_id\"]] \u003d {\"state\": \"error\"}","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":304,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003ddataset_name)"},{"line_number":305,"context_line":"        nfs_rules \u003d \"\""},{"line_number":306,"context_line":"        rule_state \u003d {}"},{"line_number":307,"context_line":"        for access in access_rules:"},{"line_number":308,"context_line":"            rule_state[access[\"access_id\"]] \u003d {\"state\": \"error\"}"},{"line_number":309,"context_line":"        for access in access_rules:"},{"line_number":310,"context_line":"            if access[\"access_type\"] \u003d\u003d \"ip\":"},{"line_number":311,"context_line":"                line \u003d ("},{"line_number":312,"context_line":"                    access[\"access_to\"]"},{"line_number":313,"context_line":"                    + \"(\""},{"line_number":314,"context_line":"                    + self._get_flashblade_access_level(access)"},{"line_number":315,"context_line":"                    + \",no_root_squash) \""},{"line_number":316,"context_line":"                )"},{"line_number":317,"context_line":"                nfs_rules +\u003d line"},{"line_number":318,"context_line":"            else:"},{"line_number":319,"context_line":"                message \u003d _("},{"line_number":320,"context_line":"                    \u0027Only \"ip\" access type is allowed for NFS protocol.\u0027"},{"line_number":321,"context_line":"                )"},{"line_number":322,"context_line":"                LOG.error(message)"},{"line_number":323,"context_line":"                raise exception.InvalidShareAccess(reason\u003dmessage)"},{"line_number":324,"context_line":"        try:"},{"line_number":325,"context_line":"            self._sys.file_systems.update_file_systems("},{"line_number":326,"context_line":"                name\u003ddataset_name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"c5bd1531_a83fc13e","line":323,"range":{"start_line":307,"start_character":8,"end_line":323,"end_character":66},"in_reply_to":"78144bbf_cbb31e4f","updated":"2021-06-21 19:33:34.000000000","message":"I see what you are saying here. \nSo I will only raise an error message if any of the access_type is not ip and let the rest be applied","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":338,"context_line":"            )"},{"line_number":339,"context_line":"            LOG.error("},{"line_number":340,"context_line":"                message, {\"nfs_rules\": nfs_rules, \"share_name\": dataset_name}"},{"line_number":341,"context_line":"            )"},{"line_number":342,"context_line":"            return rule_state"},{"line_number":343,"context_line":"        for access in access_rules:"},{"line_number":344,"context_line":"            rule_state[access[\"access_id\"]] \u003d {\"state\": \"active\"}"},{"line_number":345,"context_line":"        return rule_state"}],"source_content_type":"text/x-python","patch_set":14,"id":"3ea72bf3_5a94d6cb","line":342,"range":{"start_line":341,"start_character":12,"end_line":342,"end_character":28},"updated":"2021-06-17 01:29:18.000000000","message":"This looks like an exception you can raise and the share manager will set all rules to \"error\".","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":338,"context_line":"            )"},{"line_number":339,"context_line":"            LOG.error("},{"line_number":340,"context_line":"                message, {\"nfs_rules\": nfs_rules, \"share_name\": dataset_name}"},{"line_number":341,"context_line":"            )"},{"line_number":342,"context_line":"            return rule_state"},{"line_number":343,"context_line":"        for access in access_rules:"},{"line_number":344,"context_line":"            rule_state[access[\"access_id\"]] \u003d {\"state\": \"active\"}"},{"line_number":345,"context_line":"        return rule_state"}],"source_content_type":"text/x-python","patch_set":14,"id":"96948edb_97b87603","line":342,"range":{"start_line":341,"start_character":12,"end_line":342,"end_character":28},"in_reply_to":"3ea72bf3_5a94d6cb","updated":"2021-06-21 19:33:34.000000000","message":"Ack","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":340,"context_line":"                message, {\"nfs_rules\": nfs_rules, \"share_name\": dataset_name}"},{"line_number":341,"context_line":"            )"},{"line_number":342,"context_line":"            return rule_state"},{"line_number":343,"context_line":"        for access in access_rules:"},{"line_number":344,"context_line":"            rule_state[access[\"access_id\"]] \u003d {\"state\": \"active\"}"},{"line_number":345,"context_line":"        return rule_state"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    @purity_fb_to_manila_exceptions"}],"source_content_type":"text/x-python","patch_set":14,"id":"e3d212e4_4657c04e","line":344,"range":{"start_line":343,"start_character":8,"end_line":344,"end_character":65},"updated":"2021-06-17 01:29:18.000000000","message":"No need to do this, it\u0027s handled in the share manager.","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                message, {\"nfs_rules\": nfs_rules, \"share_name\": dataset_name}"},{"line_number":341,"context_line":"            )"},{"line_number":342,"context_line":"            return rule_state"},{"line_number":343,"context_line":"        for access in access_rules:"},{"line_number":344,"context_line":"            rule_state[access[\"access_id\"]] \u003d {\"state\": \"active\"}"},{"line_number":345,"context_line":"        return rule_state"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    @purity_fb_to_manila_exceptions"}],"source_content_type":"text/x-python","patch_set":14,"id":"6f271b4d_8b652ce1","line":344,"range":{"start_line":343,"start_character":8,"end_line":344,"end_character":65},"in_reply_to":"e3d212e4_4657c04e","updated":"2021-06-21 19:33:34.000000000","message":"Ack","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":404,"context_line":"            self._sys.file_system_snapshots.create_file_system_snapshots("},{"line_number":405,"context_line":"                sources\u003dsource, suffix\u003dpurity_fb.SnapshotSuffix(snapshot[\"id\"])"},{"line_number":406,"context_line":"            )"},{"line_number":407,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":408,"context_line":"            message \u003d ("},{"line_number":409,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":410,"context_line":"                \"create\""}],"source_content_type":"text/x-python","patch_set":14,"id":"f9b7874e_62c36678","line":407,"range":{"start_line":407,"start_character":15,"end_line":407,"end_character":46},"updated":"2021-06-17 01:29:18.000000000","message":"In my comment on PS 8, I meant that this specific exception isn\u0027t raised by the call on line 404-406. Did you mean to except on a different \"not found\" sort of exception?","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":404,"context_line":"            self._sys.file_system_snapshots.create_file_system_snapshots("},{"line_number":405,"context_line":"                sources\u003dsource, suffix\u003dpurity_fb.SnapshotSuffix(snapshot[\"id\"])"},{"line_number":406,"context_line":"            )"},{"line_number":407,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":408,"context_line":"            message \u003d ("},{"line_number":409,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":410,"context_line":"                \"create\""}],"source_content_type":"text/x-python","patch_set":14,"id":"e528ff9f_48c24bf2","line":407,"range":{"start_line":407,"start_character":15,"end_line":407,"end_character":46},"in_reply_to":"f9b7874e_62c36678","updated":"2021-06-21 19:33:34.000000000","message":"OK - I\u0027ll set this to an InvalidShare, because I guess that is what it really is....","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":223,"context_line":"        filesys.append(name)"},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":226,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":227,"context_line":"            message \u003d ("},{"line_number":228,"context_line":"                \"sharee %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":229,"context_line":"                \"extend\""}],"source_content_type":"text/x-python","patch_set":18,"id":"b43454bf_51fc6324","line":226,"range":{"start_line":226,"start_character":15,"end_line":226,"end_character":46},"updated":"2021-06-21 23:08:09.000000000","message":"the call on line 225 cannot raise this exception; this exception is defined in manila code, and the list_file_systems call on line 225 is in the purityfb library; perhaps just the bare \"Exception\" class makes sense here.","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        filesys.append(name)"},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":226,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":227,"context_line":"            message \u003d ("},{"line_number":228,"context_line":"                \"sharee %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":229,"context_line":"                \"extend\""}],"source_content_type":"text/x-python","patch_set":18,"id":"c0167426_96a6ccab","line":226,"range":{"start_line":226,"start_character":15,"end_line":226,"end_character":46},"in_reply_to":"b43454bf_51fc6324","updated":"2021-06-23 13:23:55.000000000","message":"Done","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":225,"context_line":"            res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":226,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":227,"context_line":"            message \u003d ("},{"line_number":228,"context_line":"                \"sharee %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":229,"context_line":"                \"extend\""},{"line_number":230,"context_line":"            )"},{"line_number":231,"context_line":"            LOG.exception(message, {\"dataset_name\": name})"}],"source_content_type":"text/x-python","patch_set":18,"id":"5ec410c8_aa248614","line":228,"range":{"start_line":228,"start_character":17,"end_line":228,"end_character":23},"updated":"2021-06-21 23:08:09.000000000","message":"share","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":226,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":227,"context_line":"            message \u003d ("},{"line_number":228,"context_line":"                \"sharee %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":229,"context_line":"                \"extend\""},{"line_number":230,"context_line":"            )"},{"line_number":231,"context_line":"            LOG.exception(message, {\"dataset_name\": name})"}],"source_content_type":"text/x-python","patch_set":18,"id":"c13897da_6459b755","line":228,"range":{"start_line":228,"start_character":17,"end_line":228,"end_character":23},"in_reply_to":"5ec410c8_aa248614","updated":"2021-06-23 13:23:55.000000000","message":"Done","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":225,"context_line":"            res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":226,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":227,"context_line":"            message \u003d ("},{"line_number":228,"context_line":"                \"sharee %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":229,"context_line":"                \"extend\""},{"line_number":230,"context_line":"            )"},{"line_number":231,"context_line":"            LOG.exception(message, {\"dataset_name\": name})"},{"line_number":232,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"}],"source_content_type":"text/x-python","patch_set":18,"id":"56216eda_1f6ce069","line":229,"range":{"start_line":228,"start_character":66,"end_line":229,"end_character":24},"updated":"2021-06-21 23:08:09.000000000","message":"this method is called in multiple places.. not just the extend method","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            res \u003d self._sys.file_systems.list_file_systems(names\u003dfilesys)"},{"line_number":226,"context_line":"        except exception.ShareResourceNotFound:"},{"line_number":227,"context_line":"            message \u003d ("},{"line_number":228,"context_line":"                \"sharee %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":229,"context_line":"                \"extend\""},{"line_number":230,"context_line":"            )"},{"line_number":231,"context_line":"            LOG.exception(message, {\"dataset_name\": name})"},{"line_number":232,"context_line":"            raise exception.ShareResourceNotFound(share_id\u003dname)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9c3dee37_19a0b97d","line":229,"range":{"start_line":228,"start_character":66,"end_line":229,"end_character":24},"in_reply_to":"56216eda_1f6ce069","updated":"2021-06-23 13:23:55.000000000","message":"Done","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":240,"context_line":"            resu \u003d self._sys.file_system_snapshots.list_file_system_snapshots("},{"line_number":241,"context_line":"                filter\u003dname"},{"line_number":242,"context_line":"            )"},{"line_number":243,"context_line":"        except exception.ShareSnapshotNotFound:"},{"line_number":244,"context_line":"            msg \u003d ("},{"line_number":245,"context_line":"                _(\"Snapshot not found on the FlashBlade by filter: %s\") % name"},{"line_number":246,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":18,"id":"aaf0a34c_e714f797","line":243,"range":{"start_line":243,"start_character":15,"end_line":243,"end_character":46},"updated":"2021-06-21 23:08:09.000000000","message":"same issue as pointed out above. When handling exceptions from the third party library, use native exceptions from that library, or handle the \"Exception\" class","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            resu \u003d self._sys.file_system_snapshots.list_file_system_snapshots("},{"line_number":241,"context_line":"                filter\u003dname"},{"line_number":242,"context_line":"            )"},{"line_number":243,"context_line":"        except exception.ShareSnapshotNotFound:"},{"line_number":244,"context_line":"            msg \u003d ("},{"line_number":245,"context_line":"                _(\"Snapshot not found on the FlashBlade by filter: %s\") % name"},{"line_number":246,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":18,"id":"c6561977_9f6abe11","line":243,"range":{"start_line":243,"start_character":15,"end_line":243,"end_character":46},"in_reply_to":"aaf0a34c_e714f797","updated":"2021-06-23 13:23:55.000000000","message":"Done","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":384,"context_line":"            self._sys.file_system_snapshots.create_file_system_snapshots("},{"line_number":385,"context_line":"                sources\u003dsource, suffix\u003dpurity_fb.SnapshotSuffix(snapshot[\"id\"])"},{"line_number":386,"context_line":"            )"},{"line_number":387,"context_line":"        except exception.InvalidShare:"},{"line_number":388,"context_line":"            message \u003d ("},{"line_number":389,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":390,"context_line":"                \"create\""}],"source_content_type":"text/x-python","patch_set":18,"id":"a1f226a2_2c2192e5","line":387,"range":{"start_line":387,"start_character":8,"end_line":387,"end_character":38},"updated":"2021-06-21 23:08:09.000000000","message":"Nope; this has to be \"except Exception:\" \n\nI see the docs in this page referring to an exception from the \"rest\" module if you want to be specific: https://purity-fb.readthedocs.io/en/latest/FileSystemSnapshotsApi/ - but that\u0027s up to you.. I\u0027m okay using the bare Exception class.","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            self._sys.file_system_snapshots.create_file_system_snapshots("},{"line_number":385,"context_line":"                sources\u003dsource, suffix\u003dpurity_fb.SnapshotSuffix(snapshot[\"id\"])"},{"line_number":386,"context_line":"            )"},{"line_number":387,"context_line":"        except exception.InvalidShare:"},{"line_number":388,"context_line":"            message \u003d ("},{"line_number":389,"context_line":"                \"share %(dataset_name)s not found on FlashBlade, skip \""},{"line_number":390,"context_line":"                \"create\""}],"source_content_type":"text/x-python","patch_set":18,"id":"9797906f_8fd63905","line":387,"range":{"start_line":387,"start_character":8,"end_line":387,"end_character":38},"in_reply_to":"a1f226a2_2c2192e5","updated":"2021-06-23 13:23:55.000000000","message":"Done","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":396,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":397,"context_line":"        \"\"\"Called to delete a share\"\"\""},{"line_number":398,"context_line":"        dataset_name \u003d self._make_share_name(share)"},{"line_number":399,"context_line":"        self._get_flashblade_filesystem_by_name(dataset_name)"},{"line_number":400,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":401,"context_line":"            name\u003ddataset_name,"},{"line_number":402,"context_line":"            attributes\u003dpurity_fb.FileSystem("}],"source_content_type":"text/x-python","patch_set":18,"id":"88541c80_3dc185d2","line":399,"range":{"start_line":399,"start_character":13,"end_line":399,"end_character":47},"updated":"2021-06-21 23:08:09.000000000","message":"This code was doing the right thing in PS14, right now, it has the potential to raise an exception on missing/deleted shares - that\u0027ll leave the share in a \"error_deleting\" state. please revert this change..","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":396,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":397,"context_line":"        \"\"\"Called to delete a share\"\"\""},{"line_number":398,"context_line":"        dataset_name \u003d self._make_share_name(share)"},{"line_number":399,"context_line":"        self._get_flashblade_filesystem_by_name(dataset_name)"},{"line_number":400,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":401,"context_line":"            name\u003ddataset_name,"},{"line_number":402,"context_line":"            attributes\u003dpurity_fb.FileSystem("}],"source_content_type":"text/x-python","patch_set":18,"id":"2bc8fbb6_9d5376e1","line":399,"range":{"start_line":399,"start_character":13,"end_line":399,"end_character":47},"in_reply_to":"88541c80_3dc185d2","updated":"2021-06-23 13:23:55.000000000","message":"Done","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":420,"context_line":"        )"},{"line_number":421,"context_line":"        name \u003d \"{0}.{1}\".format(dataset_name, snapshot[\"id\"])"},{"line_number":422,"context_line":"        LOG.debug(\"FlashBlade filter %(name)s\", {\"name\": filt})"},{"line_number":423,"context_line":"        flashblade_snapshot \u003d self._get_flashblade_snapshot_by_name(filt)"},{"line_number":424,"context_line":"        self._sys.file_system_snapshots.update_file_system_snapshots("},{"line_number":425,"context_line":"            name\u003dname, attributes\u003dpurity_fb.FileSystemSnapshot(destroyed\u003dTrue)"},{"line_number":426,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":18,"id":"b4947863_81943bce","line":423,"updated":"2021-06-21 23:08:09.000000000","message":"this was correct the way it was on PS 14 - you should not be raising errors on \"missing\" snapshots.","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        )"},{"line_number":421,"context_line":"        name \u003d \"{0}.{1}\".format(dataset_name, snapshot[\"id\"])"},{"line_number":422,"context_line":"        LOG.debug(\"FlashBlade filter %(name)s\", {\"name\": filt})"},{"line_number":423,"context_line":"        flashblade_snapshot \u003d self._get_flashblade_snapshot_by_name(filt)"},{"line_number":424,"context_line":"        self._sys.file_system_snapshots.update_file_system_snapshots("},{"line_number":425,"context_line":"            name\u003dname, attributes\u003dpurity_fb.FileSystemSnapshot(destroyed\u003dTrue)"},{"line_number":426,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":18,"id":"0d55f16a_bf6ecd2b","line":423,"in_reply_to":"b4947863_81943bce","updated":"2021-06-23 13:23:55.000000000","message":"Done","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":460,"context_line":"            return state_map"},{"line_number":461,"context_line":"        if share[\"share_proto\"] \u003d\u003d \"CIFS\":"},{"line_number":462,"context_line":"            LOG.info("},{"line_number":463,"context_line":"                \"CIFS access levels are controlled through AD/LDAP integration\""},{"line_number":464,"context_line":"            )"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1cbdea_adcab0f0","line":463,"range":{"start_line":463,"start_character":16,"end_line":463,"end_character":79},"updated":"2021-06-21 23:08:09.000000000","message":"most vendor backends support AD/LDAP for CIFS in manila, however, they perform access control via \"user\" access rule. I am unable to understand what\u0027s being implemented here. Does the ability to add CIFS rules not exist via the pure API.. A google search brought up a blog discussing how users can be manipulated/mapped and managed via AD [1] - does this mean users cannot be managed via the storage array? We need to consider the implications of this to _our_ end users. \n\nAs I pointed out in the past reviews, a share begins with no access - i.e., no-one can mount it from anywhere - and manila users can add/remove clients - this is the security model; Assume an ordinary user has two cifs shares on their cloud - one happens to be from Dell-EMC Unity, and another from Pure Storage (they have no idea where these shares come from, they just know the share type they\u0027re using) - they then use manila\u0027s access control APIs to manage authorized users. However, the pure share ignores these access rules - this seems like a hidden/confusing functionality for someone that has to troubleshoot access control issues. \n\nSo what do you think we should do here?\n\n[1] https://en.pureflash.blog/post/flasharray-and-flashblade-configuration-ldap-integration-for-array-management","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":460,"context_line":"            return state_map"},{"line_number":461,"context_line":"        if share[\"share_proto\"] \u003d\u003d \"CIFS\":"},{"line_number":462,"context_line":"            LOG.info("},{"line_number":463,"context_line":"                \"CIFS access levels are controlled through AD/LDAP integration\""},{"line_number":464,"context_line":"            )"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":18,"id":"7903c779_67bb1e8c","line":463,"range":{"start_line":463,"start_character":16,"end_line":463,"end_character":79},"in_reply_to":"1a1cbdea_adcab0f0","updated":"2021-06-23 13:23:55.000000000","message":"Removing all CIFS support for this driver given the FlashBlade has no ability to directly set access to a CIFS share from a `user` level. This is all controlled through integrated AD/LDAP","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d652fbb324d7c9f42eca6176d0cfa8fef7ff38d1","unresolved":true,"context_lines":[{"line_number":203,"context_line":"    def _make_share_name(self, manila_share):"},{"line_number":204,"context_line":"        return \"share-%s-manila\" % manila_share[\"id\"]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":207,"context_line":"    def _get_full_nfs_export_path(self, export_path):"},{"line_number":208,"context_line":"        subnet_ip \u003d self.data_address"},{"line_number":209,"context_line":"        return \"{subnet_ip}:/{export_path}\".format("}],"source_content_type":"text/x-python","patch_set":20,"id":"3eda64ed_f58e1349","line":206,"range":{"start_line":206,"start_character":0,"end_line":206,"end_character":35},"updated":"2021-06-24 18:25:06.000000000","message":"nothing in the method raises a purity exception","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a4117c3b4bce4d1a0dcceac7a4cb44fe505d775a","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    def _make_share_name(self, manila_share):"},{"line_number":204,"context_line":"        return \"share-%s-manila\" % manila_share[\"id\"]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":207,"context_line":"    def _get_full_nfs_export_path(self, export_path):"},{"line_number":208,"context_line":"        subnet_ip \u003d self.data_address"},{"line_number":209,"context_line":"        return \"{subnet_ip}:/{export_path}\".format("}],"source_content_type":"text/x-python","patch_set":20,"id":"8637f894_5430a45a","line":206,"range":{"start_line":206,"start_character":0,"end_line":206,"end_character":35},"in_reply_to":"3eda64ed_f58e1349","updated":"2021-06-24 20:08:33.000000000","message":"Done","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d652fbb324d7c9f42eca6176d0cfa8fef7ff38d1","unresolved":true,"context_lines":[{"line_number":210,"context_line":"            subnet_ip\u003dsubnet_ip, export_path\u003dexport_path"},{"line_number":211,"context_line":"        )"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":214,"context_line":"    def _get_flashblade_filesystem_by_name(self, name):"},{"line_number":215,"context_line":"        filesys \u003d []"},{"line_number":216,"context_line":"        filesys.append(name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"300dc446_49fa0f2a","line":213,"range":{"start_line":213,"start_character":0,"end_line":213,"end_character":35},"updated":"2021-06-24 18:25:06.000000000","message":"method handles purity exceptions internally","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a4117c3b4bce4d1a0dcceac7a4cb44fe505d775a","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            subnet_ip\u003dsubnet_ip, export_path\u003dexport_path"},{"line_number":211,"context_line":"        )"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":214,"context_line":"    def _get_flashblade_filesystem_by_name(self, name):"},{"line_number":215,"context_line":"        filesys \u003d []"},{"line_number":216,"context_line":"        filesys.append(name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"b771d62e_9a6cbd1f","line":213,"range":{"start_line":213,"start_character":0,"end_line":213,"end_character":35},"in_reply_to":"300dc446_49fa0f2a","updated":"2021-06-24 20:08:33.000000000","message":"Done","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d652fbb324d7c9f42eca6176d0cfa8fef7ff38d1","unresolved":true,"context_lines":[{"line_number":266,"context_line":"            name\u003ddataset_name, attributes\u003dn_attr"},{"line_number":267,"context_line":"        )"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":270,"context_line":"    def _update_nfs_access(self, share, access_rules):"},{"line_number":271,"context_line":"        dataset_name \u003d self._make_share_name(share)"},{"line_number":272,"context_line":"        self._get_flashblade_filesystem_by_name(dataset_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"950f304d_3626f10f","line":269,"range":{"start_line":269,"start_character":5,"end_line":269,"end_character":35},"updated":"2021-06-24 18:25:06.000000000","message":"method now handles purity exceptions","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a4117c3b4bce4d1a0dcceac7a4cb44fe505d775a","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            name\u003ddataset_name, attributes\u003dn_attr"},{"line_number":267,"context_line":"        )"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":270,"context_line":"    def _update_nfs_access(self, share, access_rules):"},{"line_number":271,"context_line":"        dataset_name \u003d self._make_share_name(share)"},{"line_number":272,"context_line":"        self._get_flashblade_filesystem_by_name(dataset_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"d20ed47e_a794a141","line":269,"range":{"start_line":269,"start_character":5,"end_line":269,"end_character":35},"in_reply_to":"950f304d_3626f10f","updated":"2021-06-24 20:08:33.000000000","message":"Done","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d652fbb324d7c9f42eca6176d0cfa8fef7ff38d1","unresolved":true,"context_lines":[{"line_number":441,"context_line":"    ):"},{"line_number":442,"context_line":"        \"\"\"Update access of share\"\"\""},{"line_number":443,"context_line":"        # We will use the access_rules list to bulk update access"},{"line_number":444,"context_line":"        if share[\"share_proto\"] \u003d\u003d \"NFS\":"},{"line_number":445,"context_line":"            state_map \u003d self._update_nfs_access(share, access_rules)"},{"line_number":446,"context_line":"            return state_map"},{"line_number":447,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"77ed08c4_472acb03","line":444,"range":{"start_line":444,"start_character":0,"end_line":444,"end_character":41},"updated":"2021-06-24 18:25:06.000000000","message":"redundant check","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a4117c3b4bce4d1a0dcceac7a4cb44fe505d775a","unresolved":false,"context_lines":[{"line_number":441,"context_line":"    ):"},{"line_number":442,"context_line":"        \"\"\"Update access of share\"\"\""},{"line_number":443,"context_line":"        # We will use the access_rules list to bulk update access"},{"line_number":444,"context_line":"        if share[\"share_proto\"] \u003d\u003d \"NFS\":"},{"line_number":445,"context_line":"            state_map \u003d self._update_nfs_access(share, access_rules)"},{"line_number":446,"context_line":"            return state_map"},{"line_number":447,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3386de44_3ef7a0ff","line":444,"range":{"start_line":444,"start_character":0,"end_line":444,"end_character":41},"in_reply_to":"77ed08c4_472acb03","updated":"2021-06-24 20:08:33.000000000","message":"Done","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a7cdc2ccd69ca7a72946486218c331a963ac14af","unresolved":true,"context_lines":[{"line_number":395,"context_line":"            name\u003dname, attributes\u003dpurity_fb.FileSystemSnapshot(destroyed\u003dTrue)"},{"line_number":396,"context_line":"        )"},{"line_number":397,"context_line":"        LOG.debug("},{"line_number":398,"context_line":"            \"Snapshot deleted successfully\","},{"line_number":399,"context_line":"            {\"name\": dataset_name + \".\" + snapshot[\"id\"]},"},{"line_number":400,"context_line":"        )"},{"line_number":401,"context_line":"        if self.configuration.flashblade_eradicate:"}],"source_content_type":"text/x-python","patch_set":24,"id":"a4c6f2f9_ff8fad81","line":398,"range":{"start_line":398,"start_character":21,"end_line":398,"end_character":22},"updated":"2021-06-26 00:48:45.000000000","message":"%(name)s \n\nis missing","commit_id":"66bc56046bd8338cb0d7a8a54c95064d68451093"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9dc810aa19188149926be2a5d8e2bedb13f43d31","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            name\u003dname, attributes\u003dpurity_fb.FileSystemSnapshot(destroyed\u003dTrue)"},{"line_number":396,"context_line":"        )"},{"line_number":397,"context_line":"        LOG.debug("},{"line_number":398,"context_line":"            \"Snapshot deleted successfully\","},{"line_number":399,"context_line":"            {\"name\": dataset_name + \".\" + snapshot[\"id\"]},"},{"line_number":400,"context_line":"        )"},{"line_number":401,"context_line":"        if self.configuration.flashblade_eradicate:"}],"source_content_type":"text/x-python","patch_set":24,"id":"99c139d5_bd2097ef","line":398,"range":{"start_line":398,"start_character":21,"end_line":398,"end_character":22},"in_reply_to":"a4c6f2f9_ff8fad81","updated":"2021-06-26 03:38:49.000000000","message":"Done","commit_id":"66bc56046bd8338cb0d7a8a54c95064d68451093"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"81f3651ed1351867ed0bfebb1e92c2132792abbc","unresolved":true,"context_lines":[{"line_number":358,"context_line":"            )"},{"line_number":359,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":360,"context_line":"            return"},{"line_number":361,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":362,"context_line":"            name\u003ddataset_name,"},{"line_number":363,"context_line":"            attributes\u003dpurity_fb.FileSystem("},{"line_number":364,"context_line":"                nfs\u003dpurity_fb.NfsRule(v3_enabled\u003dFalse, v4_1_enabled\u003dFalse),"},{"line_number":365,"context_line":"                smb\u003dpurity_fb.ProtocolRule(enabled\u003dFalse),"},{"line_number":366,"context_line":"                destroyed\u003dTrue,"},{"line_number":367,"context_line":"            ),"},{"line_number":368,"context_line":"        )"},{"line_number":369,"context_line":"        if self.configuration.flashblade_eradicate:"},{"line_number":370,"context_line":"            self._sys.file_systems.delete_file_systems(name\u003ddataset_name)"},{"line_number":371,"context_line":"            LOG.info("},{"line_number":372,"context_line":"                \"FlashBlade eradicated share %(name)s\", {\"name\": dataset_name}"},{"line_number":373,"context_line":"            )"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":376,"context_line":"    def delete_snapshot(self, context, snapshot, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":25,"id":"bb1c34c0_bb4bf1fa","line":373,"range":{"start_line":361,"start_character":0,"end_line":373,"end_character":13},"updated":"2021-07-16 17:39:14.000000000","message":"This code can raise FB exceptions to manila. Your decorator should work fine here, cause an exception in line 353 would still be treated by the except in line 354, right?","commit_id":"9eb37eca8b228db308b2c07bcecdcca7122b4464"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"3419f1f5a713bc8716dff24af00c5d2ccc4e4599","unresolved":true,"context_lines":[{"line_number":358,"context_line":"            )"},{"line_number":359,"context_line":"            LOG.warning(message, {\"dataset_name\": dataset_name})"},{"line_number":360,"context_line":"            return"},{"line_number":361,"context_line":"        self._sys.file_systems.update_file_systems("},{"line_number":362,"context_line":"            name\u003ddataset_name,"},{"line_number":363,"context_line":"            attributes\u003dpurity_fb.FileSystem("},{"line_number":364,"context_line":"                nfs\u003dpurity_fb.NfsRule(v3_enabled\u003dFalse, v4_1_enabled\u003dFalse),"},{"line_number":365,"context_line":"                smb\u003dpurity_fb.ProtocolRule(enabled\u003dFalse),"},{"line_number":366,"context_line":"                destroyed\u003dTrue,"},{"line_number":367,"context_line":"            ),"},{"line_number":368,"context_line":"        )"},{"line_number":369,"context_line":"        if self.configuration.flashblade_eradicate:"},{"line_number":370,"context_line":"            self._sys.file_systems.delete_file_systems(name\u003ddataset_name)"},{"line_number":371,"context_line":"            LOG.info("},{"line_number":372,"context_line":"                \"FlashBlade eradicated share %(name)s\", {\"name\": dataset_name}"},{"line_number":373,"context_line":"            )"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    @purity_fb_to_manila_exceptions"},{"line_number":376,"context_line":"    def delete_snapshot(self, context, snapshot, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":25,"id":"e2783f8d_2ae22995","line":373,"range":{"start_line":361,"start_character":0,"end_line":373,"end_character":13},"in_reply_to":"bb1c34c0_bb4bf1fa","updated":"2021-07-16 18:54:41.000000000","message":"Yes - correct","commit_id":"9eb37eca8b228db308b2c07bcecdcca7122b4464"}],"manila/tests/share/drivers/purestorage/test_flashblade.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def test_delete_share(self):"},{"line_number":146,"context_line":"        self.driver.delete_share(None, test_nfs_share)"},{"line_number":147,"context_line":"        # should not raise an exception"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_extend_share(self):"},{"line_number":150,"context_line":"        self.driver.extend_share(test_nfs_share, _MOCK_SHARE_SIZE * 2)"}],"source_content_type":"text/x-python","patch_set":14,"id":"90fa7844_0849a6ea","line":147,"range":{"start_line":147,"start_character":8,"end_line":147,"end_character":39},"updated":"2021-06-17 01:29:18.000000000","message":"assert that some calls were made\n\n  self._sys.file_systems.update_file_systems.assert_called_once_with(...)\n  self._sys.file_systems.delete_file_systems.assert_called_once_with(...)","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def test_delete_share(self):"},{"line_number":146,"context_line":"        self.driver.delete_share(None, test_nfs_share)"},{"line_number":147,"context_line":"        # should not raise an exception"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_extend_share(self):"},{"line_number":150,"context_line":"        self.driver.extend_share(test_nfs_share, _MOCK_SHARE_SIZE * 2)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a38cc9c_25469a09","line":147,"range":{"start_line":147,"start_character":8,"end_line":147,"end_character":39},"in_reply_to":"90fa7844_0849a6ea","updated":"2021-06-21 19:33:34.000000000","message":"Done","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_extend_share(self):"},{"line_number":150,"context_line":"        self.driver.extend_share(test_nfs_share, _MOCK_SHARE_SIZE * 2)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_shrink_share(self):"},{"line_number":153,"context_line":"        self.driver.shrink_share(test_nfs_share, _MOCK_SHARE_SIZE / 2)"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9c4e1e7c_d0ecaf60","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":0},"updated":"2021-06-17 01:29:18.000000000","message":"same - all these tests could use assertions","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_extend_share(self):"},{"line_number":150,"context_line":"        self.driver.extend_share(test_nfs_share, _MOCK_SHARE_SIZE * 2)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_shrink_share(self):"},{"line_number":153,"context_line":"        self.driver.shrink_share(test_nfs_share, _MOCK_SHARE_SIZE / 2)"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"033949da_bbb84bcd","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":0},"in_reply_to":"9c4e1e7c_d0ecaf60","updated":"2021-06-21 19:33:34.000000000","message":"Ack","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ff658ef212c0f9a2a433de5f099b57d216b9b641","unresolved":true,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_extend_share(self):"},{"line_number":150,"context_line":"        self.driver.extend_share(test_nfs_share, _MOCK_SHARE_SIZE * 2)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_shrink_share(self):"},{"line_number":153,"context_line":"        self.driver.shrink_share(test_nfs_share, _MOCK_SHARE_SIZE / 2)"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"d3524708_fd95619d","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":0},"in_reply_to":"9c4e1e7c_d0ecaf60","updated":"2021-06-18 19:25:37.000000000","message":"Check this patch for examples: https://review.opendev.org/c/openstack/manila/+/797152","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":160,"context_line":"        self.driver.delete_snapshot(None, test_snapshot)"},{"line_number":161,"context_line":"        # should not raise an exception"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def test_update_access_share(self):"},{"line_number":164,"context_line":"        access_rules \u003d ["},{"line_number":165,"context_line":"            {"},{"line_number":166,"context_line":"                \"access_level\": constants.ACCESS_LEVEL_RO,"}],"source_content_type":"text/x-python","patch_set":14,"id":"af496498_e4a15215","line":163,"range":{"start_line":163,"start_character":4,"end_line":163,"end_character":39},"updated":"2021-06-17 01:29:18.000000000","message":"This test case can test an invalid access type as well; the expected_rule_map can check that the \"state\" is set to error for those rules that have an invalid access type.","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        self.driver.delete_snapshot(None, test_snapshot)"},{"line_number":161,"context_line":"        # should not raise an exception"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def test_update_access_share(self):"},{"line_number":164,"context_line":"        access_rules \u003d ["},{"line_number":165,"context_line":"            {"},{"line_number":166,"context_line":"                \"access_level\": constants.ACCESS_LEVEL_RO,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ed41b2b_c366b8a1","line":163,"range":{"start_line":163,"start_character":4,"end_line":163,"end_character":39},"in_reply_to":"af496498_e4a15215","updated":"2021-06-21 19:33:34.000000000","message":"Ack","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":219,"context_line":"            ),"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        self.assertRaises("},{"line_number":223,"context_line":"            exception.ShareResourceNotFound,"},{"line_number":224,"context_line":"            self.driver.delete_share,"},{"line_number":225,"context_line":"            None,"},{"line_number":226,"context_line":"            test_nfs_share,"},{"line_number":227,"context_line":"        )"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_extend_share(self):"},{"line_number":230,"context_line":"        self.driver.extend_share(test_nfs_share, _MOCK_SHARE_SIZE * 2)"}],"source_content_type":"text/x-python","patch_set":18,"id":"8f5ff9f6_27610a31","line":227,"range":{"start_line":222,"start_character":8,"end_line":227,"end_character":9},"updated":"2021-06-21 23:08:09.000000000","message":"delete_share must swallow exceptions to deleting unavailable shares..","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            ),"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        self.assertRaises("},{"line_number":223,"context_line":"            exception.ShareResourceNotFound,"},{"line_number":224,"context_line":"            self.driver.delete_share,"},{"line_number":225,"context_line":"            None,"},{"line_number":226,"context_line":"            test_nfs_share,"},{"line_number":227,"context_line":"        )"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_extend_share(self):"},{"line_number":230,"context_line":"        self.driver.extend_share(test_nfs_share, _MOCK_SHARE_SIZE * 2)"}],"source_content_type":"text/x-python","patch_set":18,"id":"6dada92a_b3e30581","line":227,"range":{"start_line":222,"start_character":8,"end_line":227,"end_character":9},"in_reply_to":"8f5ff9f6_27610a31","updated":"2021-06-23 13:23:55.000000000","message":"Done","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"11ca415fc6446ddc0ba17cf54c63a53c4625700e","unresolved":true,"context_lines":[{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def test_revert_to_snapshot(self):"},{"line_number":325,"context_line":"        self.driver.revert_to_snapshot(None, test_snapshot, [], [])"},{"line_number":326,"context_line":"        self._sys.file_systems.create_file_systems.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":18,"id":"d3d7720a_0b64a6f4","line":326,"range":{"start_line":326,"start_character":13,"end_line":326,"end_character":69},"updated":"2021-06-21 23:08:09.000000000","message":"assert the parameters that the method was called with..","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e202e0ee642c76842842f03b2c94d5168817b11b","unresolved":false,"context_lines":[{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def test_revert_to_snapshot(self):"},{"line_number":325,"context_line":"        self.driver.revert_to_snapshot(None, test_snapshot, [], [])"},{"line_number":326,"context_line":"        self._sys.file_systems.create_file_systems.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":18,"id":"f9980338_db6641d0","line":326,"range":{"start_line":326,"start_character":13,"end_line":326,"end_character":69},"in_reply_to":"d3d7720a_0b64a6f4","updated":"2021-06-23 13:23:55.000000000","message":"Done","commit_id":"d6796453dffdedafe53327abb9e82bbd3f28ce9a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d652fbb324d7c9f42eca6176d0cfa8fef7ff38d1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":20,"id":"77c20948_a1b2bace","updated":"2021-06-24 18:25:06.000000000","message":"These tests are missing quite a few code branches: https://c452047d92d82353d2d2-a08334862d0eb67d8e86b3486701936d.ssl.cf1.rackcdn.com/789384/20/check/openstack-tox-cover/236138f/cover/manila_share_drivers_purestorage_flashblade_py.html\n\nI encourage adding tests to cover code branches (wherever conditionals, loops are used) so that you leave less room for bugs. We do not have complete tempest test coverage to cover all scenarios, and unit tests are usually useful to prevent us from merging buggy code.","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d652fbb324d7c9f42eca6176d0cfa8fef7ff38d1","unresolved":true,"context_lines":[{"line_number":192,"context_line":"    def test_delete_share_not_found(self):"},{"line_number":193,"context_line":"        self.mock_object("},{"line_number":194,"context_line":"            self.driver,"},{"line_number":195,"context_line":"            \"_get_flashblade_snapshot_by_name\","},{"line_number":196,"context_line":"            mock.Mock("},{"line_number":197,"context_line":"                side_effect\u003dexception.ShareResourceNotFound("},{"line_number":198,"context_line":"                    share_id\u003dtest_nfs_share[\"id\"]"}],"source_content_type":"text/x-python","patch_set":20,"id":"87faf834_663b1819","line":195,"range":{"start_line":195,"start_character":29,"end_line":195,"end_character":37},"updated":"2021-06-24 18:25:06.000000000","message":"filesystem","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a4117c3b4bce4d1a0dcceac7a4cb44fe505d775a","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    def test_delete_share_not_found(self):"},{"line_number":193,"context_line":"        self.mock_object("},{"line_number":194,"context_line":"            self.driver,"},{"line_number":195,"context_line":"            \"_get_flashblade_snapshot_by_name\","},{"line_number":196,"context_line":"            mock.Mock("},{"line_number":197,"context_line":"                side_effect\u003dexception.ShareResourceNotFound("},{"line_number":198,"context_line":"                    share_id\u003dtest_nfs_share[\"id\"]"}],"source_content_type":"text/x-python","patch_set":20,"id":"e124fe7b_57f1f168","line":195,"range":{"start_line":195,"start_character":29,"end_line":195,"end_character":37},"in_reply_to":"87faf834_663b1819","updated":"2021-06-24 20:08:33.000000000","message":"Done","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"}],"releasenotes/notes/add-flashblade-driver-de20b758a8ce2640.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bd91da9468cd5012c817405faaf1ead0df5ed633","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add Pure Storage FlashBlade driver."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"60ad84e1_39259c4d","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"updated":"2021-05-25 00:42:56.000000000","message":"Nit: Added\n\nWould be nice to add 1-2 sentences of context/details, regarding what operations and share protocols the driver supports.","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a1b3a6f6821e1e3b354d13d955df364601ae7398","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add Pure Storage FlashBlade driver."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"e95f30c2_cf9419f7","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"in_reply_to":"60ad84e1_39259c4d","updated":"2021-06-07 15:28:50.000000000","message":"Done","commit_id":"5462574c3e1addaece349e888dfb95aee859afd5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4e5fad07daca1447d8681e72d58f50df00c4c20f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add Pure Storage FlashBlade driver."},{"line_number":5,"context_line":"    Drivers supports NFS and CIFS protocols."},{"line_number":6,"context_line":"    Share operations include create, delete, resize, snapshot and revert-to-snapshot."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"0294e6d4_8963137c","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"updated":"2021-06-17 01:29:18.000000000","message":"nit: Added","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ff15a30c34d76c0c5c8db4b181bbb1c64b323936","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add Pure Storage FlashBlade driver."},{"line_number":5,"context_line":"    Drivers supports NFS and CIFS protocols."},{"line_number":6,"context_line":"    Share operations include create, delete, resize, snapshot and revert-to-snapshot."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"1c0f1ba0_5b521fb3","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"in_reply_to":"0294e6d4_8963137c","updated":"2021-06-21 19:33:34.000000000","message":"Done","commit_id":"d2470979c1e49f7d2b9cd4fac5fb165bf5991b2c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d652fbb324d7c9f42eca6176d0cfa8fef7ff38d1","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added Pure Storage FlashBlade driver."},{"line_number":5,"context_line":"    Drivers supports NFS and CIFS protocols."},{"line_number":6,"context_line":"    Share operations include create, delete, resize, snapshot and revert-to-snapshot."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"41757d84_7071d725","line":5,"range":{"start_line":5,"start_character":24,"end_line":5,"end_character":43},"updated":"2021-06-24 18:25:06.000000000","message":"CIFS isn\u0027t supported any longer","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a4117c3b4bce4d1a0dcceac7a4cb44fe505d775a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added Pure Storage FlashBlade driver."},{"line_number":5,"context_line":"    Drivers supports NFS and CIFS protocols."},{"line_number":6,"context_line":"    Share operations include create, delete, resize, snapshot and revert-to-snapshot."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"c18de26c_b9b8c6b6","line":5,"range":{"start_line":5,"start_character":24,"end_line":5,"end_character":43},"in_reply_to":"41757d84_7071d725","updated":"2021-06-24 20:08:33.000000000","message":"Done","commit_id":"ca499a07e3f064a07c61d33ef6937e1b6cffb17b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a7cdc2ccd69ca7a72946486218c331a963ac14af","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added Pure Storage FlashBlade driver."},{"line_number":5,"context_line":"    Drivers supports NFS protocol."},{"line_number":6,"context_line":"    Share operations include create, delete, resize, snapshot and revert-to-snapshot."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"667b1b25_6e4111bf","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":11},"updated":"2021-06-26 00:48:45.000000000","message":"nit:Driver","commit_id":"66bc56046bd8338cb0d7a8a54c95064d68451093"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9dc810aa19188149926be2a5d8e2bedb13f43d31","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added Pure Storage FlashBlade driver."},{"line_number":5,"context_line":"    Drivers supports NFS protocol."},{"line_number":6,"context_line":"    Share operations include create, delete, resize, snapshot and revert-to-snapshot."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"521ff19d_ab38eabb","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":11},"in_reply_to":"667b1b25_6e4111bf","updated":"2021-06-26 03:38:49.000000000","message":"Done","commit_id":"66bc56046bd8338cb0d7a8a54c95064d68451093"}]}
