)]}'
{"manila_tempest_tests/tests/api/admin/test_multi_backend.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"baceb7e04cefcf998a07b8a3e97e0393e9d5150e","unresolved":true,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        pools \u003d cls.shares_v2_client.list_pools(detail\u003dTrue)[\u0027pools\u0027]"},{"line_number":54,"context_line":"        backends_protocols \u003d {"},{"line_number":55,"context_line":"            backend[\u0027capabilities\u0027][\u0027share_backend_name\u0027]: backend["},{"line_number":56,"context_line":"                \u0027capabilities\u0027][\u0027storage_protocol\u0027] for backend in pools"},{"line_number":57,"context_line":"        }"},{"line_number":58,"context_line":"        # Create share types"}],"source_content_type":"text/x-python","patch_set":6,"id":"e34e744e_fa36510d","line":55,"range":{"start_line":55,"start_character":59,"end_line":55,"end_character":66},"updated":"2021-01-20 21:25:34.000000000","message":"pool","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"baceb7e04cefcf998a07b8a3e97e0393e9d5150e","unresolved":true,"context_lines":[{"line_number":53,"context_line":"        pools \u003d cls.shares_v2_client.list_pools(detail\u003dTrue)[\u0027pools\u0027]"},{"line_number":54,"context_line":"        backends_protocols \u003d {"},{"line_number":55,"context_line":"            backend[\u0027capabilities\u0027][\u0027share_backend_name\u0027]: backend["},{"line_number":56,"context_line":"                \u0027capabilities\u0027][\u0027storage_protocol\u0027] for backend in pools"},{"line_number":57,"context_line":"        }"},{"line_number":58,"context_line":"        # Create share types"},{"line_number":59,"context_line":"        for backend in backends_protocols:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7e2f584c_7938cfb2","line":56,"range":{"start_line":56,"start_character":56,"end_line":56,"end_character":63},"updated":"2021-01-20 21:25:34.000000000","message":"pool","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"baceb7e04cefcf998a07b8a3e97e0393e9d5150e","unresolved":true,"context_lines":[{"line_number":69,"context_line":"            share_data_list.append({\"kwargs\": {"},{"line_number":70,"context_line":"                \"share_type_id\": st_id,"},{"line_number":71,"context_line":"                \"share_protocol\": cls._share_protocol("},{"line_number":72,"context_line":"                    backends_protocols[backend])}})"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # Create shares using precreated share types"},{"line_number":75,"context_line":"        cls.shares \u003d cls.create_shares(share_data_list)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baee1a18_c801cdf9","line":72,"range":{"start_line":72,"start_character":20,"end_line":72,"end_character":47},"updated":"2021-01-20 21:25:34.000000000","message":"a pool can support one or more protocols, but, this alone cannot be considered the capability because manila configuration can be used to override what is available.\n\nfor example, a NetApp backend may support \"NFS_CIFS\", but, the cloud administrator may have turned off one of those two protocols. So, you must really check for the intersection of the supported and allowed protocols - there\u0027s a config option for allowed protocols here: https://opendev.org/openstack/manila-tempest-plugin/src/commit/b3089a7ee3da99cc249e4d5bf3e4bad353116877/manila_tempest_tests/config.py#L63-L66","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"cfe8ab5a3d57425d43ff1672d71b7f07e3535f94","unresolved":true,"context_lines":[{"line_number":69,"context_line":"            share_data_list.append({\"kwargs\": {"},{"line_number":70,"context_line":"                \"share_type_id\": st_id,"},{"line_number":71,"context_line":"                \"share_protocol\": cls._share_protocol("},{"line_number":72,"context_line":"                    backends_protocols[backend])}})"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # Create shares using precreated share types"},{"line_number":75,"context_line":"        cls.shares \u003d cls.create_shares(share_data_list)"}],"source_content_type":"text/x-python","patch_set":6,"id":"47023e8d_37bc4957","line":72,"range":{"start_line":72,"start_character":20,"end_line":72,"end_character":47},"in_reply_to":"6955d07d_2216ebe7","updated":"2021-01-21 19:58:41.000000000","message":"Oh now i got it.\nThanks","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c882aa1086c666290965039503bd32dc4b6d44e4","unresolved":true,"context_lines":[{"line_number":69,"context_line":"            share_data_list.append({\"kwargs\": {"},{"line_number":70,"context_line":"                \"share_type_id\": st_id,"},{"line_number":71,"context_line":"                \"share_protocol\": cls._share_protocol("},{"line_number":72,"context_line":"                    backends_protocols[backend])}})"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # Create shares using precreated share types"},{"line_number":75,"context_line":"        cls.shares \u003d cls.create_shares(share_data_list)"}],"source_content_type":"text/x-python","patch_set":6,"id":"6955d07d_2216ebe7","line":72,"range":{"start_line":72,"start_character":20,"end_line":72,"end_character":47},"in_reply_to":"a6ea514d_46cf32e4","updated":"2021-01-21 17:32:38.000000000","message":"Yes, \n\nlet\u0027s say:\n\n CONF.share.enable_protocols \u003d [\u0027nfs\u0027, \u0027cephfs\u0027]\n\nAnd we have the following pools:\n\n Backend1:\n   pools:\n     pool1:\n       capabilities:\n         storage_protocol: \u0027NFS_CIFS\u0027\n     pool2:\n       capabilities:\n         storage_protocol: \u0027NFS_CIFS\u0027\n\n Backend2:\n   pools:\n     poolA:\n       capabilties:\n        storage_protocol: \u0027CEPHFS\u0027\n\n\nYour shares list should have:\n\n  {\n    { share_type: \u0027share-type-Backend1\u0027, \u0027share_protocol\u0027: \u0027NFS\u0027},\n    { share_type: \u0027share-type-Backend2\u0027, \u0027share_protocol\u0027: \u0027CEPHFS\u0027},\n  }\n\n\n\nAnd for example, if CONF.share.enable_protocols is [\u0027nfs\u0027, \u0027cifs\u0027, \u0027cephfs\u0027], you can randomly pick one of the two (nfs or cifs) for backend1.","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"6f9a4b22f47314f8bc388908b47cdd2a743c3983","unresolved":true,"context_lines":[{"line_number":69,"context_line":"            share_data_list.append({\"kwargs\": {"},{"line_number":70,"context_line":"                \"share_type_id\": st_id,"},{"line_number":71,"context_line":"                \"share_protocol\": cls._share_protocol("},{"line_number":72,"context_line":"                    backends_protocols[backend])}})"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # Create shares using precreated share types"},{"line_number":75,"context_line":"        cls.shares \u003d cls.create_shares(share_data_list)"}],"source_content_type":"text/x-python","patch_set":6,"id":"a6ea514d_46cf32e4","line":72,"range":{"start_line":72,"start_character":20,"end_line":72,"end_character":47},"in_reply_to":"baee1a18_c801cdf9","updated":"2021-01-21 10:26:28.000000000","message":"So in case the backend supports multi protocols pool-list should return a list of protocols, \nhowever, it seems that \"storage_protocol\" parameter response is a single value [1].\nWhen we set the extra_specs of the share type we must specify the backend name and the protocol\nassociated with it. So we must compare enable_protocols configuration parameter with pool-list,\notherwise there is no way to know which backend is associated with which protocol. \n\n[1] https://docs.openstack.org/api-ref/shared-file-system/#list-back-end-storage-pools-with-details","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"baceb7e04cefcf998a07b8a3e97e0393e9d5150e","unresolved":true,"context_lines":[{"line_number":86,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)"},{"line_number":87,"context_line":"    def test_share_share_type(self):"},{"line_number":88,"context_line":"        # Share type should be the same as provided with share creation"},{"line_number":89,"context_line":"        for i in range(len(self.shares)):"},{"line_number":90,"context_line":"            get \u003d self.shares_v2_client.get_share(self.shares[i][\u0027id\u0027],"},{"line_number":91,"context_line":"                                                  version\u003d\"2.5\")"},{"line_number":92,"context_line":"            self.assertEqual(self.sts[i][\"name\"], get[\"share_type\"])"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u0027f25e0cb0-d656-4f16-a761-ec23992cd9e7\u0027)"},{"line_number":95,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bd583d78_c2eba22e","line":92,"range":{"start_line":89,"start_character":12,"end_line":92,"end_character":68},"updated":"2021-01-20 21:25:34.000000000","message":"this can be rewritten without loop variables, to enhance readability:\n\n for share, share_type in zip(self.shares, self.sts):\n    share_details \u003d self.shares_v2_client.get_share(share[\u0027id\u0027], version\u003d\"2.5\")\n    self.assertEqual(share_type[\"name\"], share_details[\"share_type\"])","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"6f9a4b22f47314f8bc388908b47cdd2a743c3983","unresolved":true,"context_lines":[{"line_number":86,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)"},{"line_number":87,"context_line":"    def test_share_share_type(self):"},{"line_number":88,"context_line":"        # Share type should be the same as provided with share creation"},{"line_number":89,"context_line":"        for i in range(len(self.shares)):"},{"line_number":90,"context_line":"            get \u003d self.shares_v2_client.get_share(self.shares[i][\u0027id\u0027],"},{"line_number":91,"context_line":"                                                  version\u003d\"2.5\")"},{"line_number":92,"context_line":"            self.assertEqual(self.sts[i][\"name\"], get[\"share_type\"])"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u0027f25e0cb0-d656-4f16-a761-ec23992cd9e7\u0027)"},{"line_number":95,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)"}],"source_content_type":"text/x-python","patch_set":6,"id":"6cebfb80_5ebb643d","line":92,"range":{"start_line":89,"start_character":12,"end_line":92,"end_character":68},"in_reply_to":"bd583d78_c2eba22e","updated":"2021-01-21 10:26:28.000000000","message":"Definitely better.\nThanks!","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"baceb7e04cefcf998a07b8a3e97e0393e9d5150e","unresolved":true,"context_lines":[{"line_number":95,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)"},{"line_number":96,"context_line":"    def test_share_share_type_v_2_6(self):"},{"line_number":97,"context_line":"        # Share type should be the same as provided with share creation"},{"line_number":98,"context_line":"        for i in range(len(self.shares)):"},{"line_number":99,"context_line":"            get \u003d self.shares_v2_client.get_share(self.shares[i][\u0027id\u0027],"},{"line_number":100,"context_line":"                                                  version\u003d\"2.6\")"},{"line_number":101,"context_line":"            self.assertEqual(self.sts[i][\"id\"], get[\"share_type\"])"}],"source_content_type":"text/x-python","patch_set":6,"id":"d1330893_f4335e0e","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":41},"updated":"2021-01-20 21:25:34.000000000","message":"same comment as above","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"6f9a4b22f47314f8bc388908b47cdd2a743c3983","unresolved":true,"context_lines":[{"line_number":95,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)"},{"line_number":96,"context_line":"    def test_share_share_type_v_2_6(self):"},{"line_number":97,"context_line":"        # Share type should be the same as provided with share creation"},{"line_number":98,"context_line":"        for i in range(len(self.shares)):"},{"line_number":99,"context_line":"            get \u003d self.shares_v2_client.get_share(self.shares[i][\u0027id\u0027],"},{"line_number":100,"context_line":"                                                  version\u003d\"2.6\")"},{"line_number":101,"context_line":"            self.assertEqual(self.sts[i][\"id\"], get[\"share_type\"])"}],"source_content_type":"text/x-python","patch_set":6,"id":"059e23cb_6f77baf2","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":41},"in_reply_to":"d1330893_f4335e0e","updated":"2021-01-21 10:26:28.000000000","message":"Done!","commit_id":"b4d99d523a2b34f93205bb6f19ca7a9268439dc7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e405df9ee8108b77b09518c6c092aac67ca491ec","unresolved":true,"context_lines":[{"line_number":69,"context_line":"            st_id \u003d st[\"share_type\"][\"id\"]"},{"line_number":70,"context_line":"            share_data_list.append({\"kwargs\": {"},{"line_number":71,"context_line":"                \"share_type_id\": st_id,"},{"line_number":72,"context_line":"                \"share_protocol\": cls._share_protocol("},{"line_number":73,"context_line":"                    backends_protocols[backend])[0]}})"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # Create shares using precreated share types"},{"line_number":76,"context_line":"        cls.shares \u003d cls.create_shares(share_data_list)"}],"source_content_type":"text/x-python","patch_set":12,"id":"392c4832_a4f542be","line":73,"range":{"start_line":72,"start_character":33,"end_line":73,"end_character":54},"updated":"2021-01-25 18:26:09.000000000","message":"make sure to skip the backend if there\u0027s no intersection between enable_protocols and storage_protocol","commit_id":"f3ec443330160a5b736afffbb0dda6b6d3ce697f"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"eabdc54de7c5af07973a1913e0fa257383d6fc04","unresolved":true,"context_lines":[{"line_number":69,"context_line":"            st_id \u003d st[\"share_type\"][\"id\"]"},{"line_number":70,"context_line":"            share_data_list.append({\"kwargs\": {"},{"line_number":71,"context_line":"                \"share_type_id\": st_id,"},{"line_number":72,"context_line":"                \"share_protocol\": cls._share_protocol("},{"line_number":73,"context_line":"                    backends_protocols[backend])[0]}})"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # Create shares using precreated share types"},{"line_number":76,"context_line":"        cls.shares \u003d cls.create_shares(share_data_list)"}],"source_content_type":"text/x-python","patch_set":12,"id":"275842d9_5af9301f","line":73,"range":{"start_line":72,"start_character":33,"end_line":73,"end_character":54},"in_reply_to":"392c4832_a4f542be","updated":"2021-01-25 19:20:31.000000000","message":"Thanks! Done!","commit_id":"f3ec443330160a5b736afffbb0dda6b6d3ce697f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"97f9becbbe1cb70e97ee5c6fda48c990c53e5553","unresolved":true,"context_lines":[{"line_number":74,"context_line":"                \"share_type_id\": st_id,"},{"line_number":75,"context_line":"                \"share_protocol\": share_protocol[0]}})"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        # Create shares using precreated share types"},{"line_number":78,"context_line":"        cls.shares \u003d cls.create_shares(share_data_list)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @decorators.idempotent_id(\u0027888add9d-4ad0-4d88-a62f-af7ee1d9f9ab\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"aff4dd69_77403be9","line":77,"range":{"start_line":77,"start_character":8,"end_line":77,"end_character":9},"updated":"2021-01-25 20:26:12.000000000","message":"though unlikely, for completeness:\n\n if not shares_data_list:\n    raise cls.skipException(\"Enabled protocols not supported by any of the enabled backends.\")","commit_id":"9266d85d961a1c5d31c6b9b4a8d3eb1f9b8e8482"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"87c4104a26a998f67a217e5140b8aafcb53b0146","unresolved":true,"context_lines":[{"line_number":74,"context_line":"                \"share_type_id\": st_id,"},{"line_number":75,"context_line":"                \"share_protocol\": share_protocol[0]}})"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        # Create shares using precreated share types"},{"line_number":78,"context_line":"        cls.shares \u003d cls.create_shares(share_data_list)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @decorators.idempotent_id(\u0027888add9d-4ad0-4d88-a62f-af7ee1d9f9ab\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"df795321_43dec946","line":77,"range":{"start_line":77,"start_character":8,"end_line":77,"end_character":9},"in_reply_to":"aff4dd69_77403be9","updated":"2021-01-26 06:24:46.000000000","message":"Right! thanks!","commit_id":"9266d85d961a1c5d31c6b9b4a8d3eb1f9b8e8482"}]}
