)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f04820ea7bdba8821739284d30be13a4af7ccef5","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NVMe connector support MD replication spec."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ibeebc62ec649933747b30537d3a6d4d84641fad0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9483ebb5_fcb76177","line":9,"updated":"2020-12-15 16:41:42.000000000","message":"-1: Forgot to mention, this is missing the blueprint footer\n\nImplements: blueprint nvme-of-add-client-raid-1","commit_id":"b033bc60859865305bfab227a4e8fa126516bd39"}],"specs/wallaby/nvme-connector-md-support.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a34dcc01c51a66dbaf20c109df9f7edb3dc1ef5f","unresolved":true,"context_lines":[{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"When consuming block storage, resilience of the the block volumes is required."},{"line_number":22,"context_line":"This can be achieved on the storage backend, though with NVMe and iSCSI there"},{"line_number":23,"context_line":"is still a single point of failure on the target. And even with multipathing,"},{"line_number":24,"context_line":"the HA of paths to a target does not handle replication of the volumes being"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6695a6c7_01520b45","line":21,"range":{"start_line":21,"start_character":44,"end_line":21,"end_character":51},"updated":"2020-12-15 03:08:22.000000000","message":"nit: only need one \u0027the\u0027","commit_id":"e91ff9b8e8b7ae4ec884264b6ab7f4b9a01e2cd3"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"When consuming block storage, resilience of the the block volumes is required."},{"line_number":22,"context_line":"This can be achieved on the storage backend, though with NVMe and iSCSI there"},{"line_number":23,"context_line":"is still a single point of failure on the target. And even with multipathing,"},{"line_number":24,"context_line":"the HA of paths to a target does not handle replication of the volumes being"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b540f764_6c376158","line":21,"range":{"start_line":21,"start_character":44,"end_line":21,"end_character":51},"in_reply_to":"6695a6c7_01520b45","updated":"2020-12-16 12:01:23.000000000","message":"Ack","commit_id":"e91ff9b8e8b7ae4ec884264b6ab7f4b9a01e2cd3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a34dcc01c51a66dbaf20c109df9f7edb3dc1ef5f","unresolved":true,"context_lines":[{"line_number":25,"context_line":"used."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"a way to handle volume replication. This is a way of doing it using RAID1"},{"line_number":29,"context_line":"on the host."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bba3c782_6468d543","line":28,"range":{"start_line":28,"start_character":36,"end_line":28,"end_character":61},"updated":"2020-12-15 03:08:22.000000000","message":"maybe, \"We propose achieving this by\"","commit_id":"e91ff9b8e8b7ae4ec884264b6ab7f4b9a01e2cd3"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":25,"context_line":"used."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"a way to handle volume replication. This is a way of doing it using RAID1"},{"line_number":29,"context_line":"on the host."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"94888950_cd8f02e8","line":28,"range":{"start_line":28,"start_character":36,"end_line":28,"end_character":61},"in_reply_to":"bba3c782_6468d543","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"e91ff9b8e8b7ae4ec884264b6ab7f4b9a01e2cd3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a34dcc01c51a66dbaf20c109df9f7edb3dc1ef5f","unresolved":true,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"replicated volume connection properties::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    volume_replicas: ["},{"line_number":78,"context_line":"        uuid"},{"line_number":79,"context_line":"        nqn"},{"line_number":80,"context_line":"        portals: ["},{"line_number":81,"context_line":"            address"},{"line_number":82,"context_line":"            port"},{"line_number":83,"context_line":"            transport"},{"line_number":84,"context_line":"        ]"},{"line_number":85,"context_line":"    ]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"REST API impact"},{"line_number":88,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3d80eca7_e87a8d40","line":85,"range":{"start_line":77,"start_character":0,"end_line":85,"end_character":5},"updated":"2020-12-15 03:08:22.000000000","message":"This doesn\u0027t quite look like a python dictionary.  The key thing you need here is to outline what\u0027s in volume_replicas, in terms of what\u0027s common data to each replica (if any), and what will be contained in the object representing a single replica.","commit_id":"e91ff9b8e8b7ae4ec884264b6ab7f4b9a01e2cd3"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"replicated volume connection properties::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    volume_replicas: ["},{"line_number":78,"context_line":"        uuid"},{"line_number":79,"context_line":"        nqn"},{"line_number":80,"context_line":"        portals: ["},{"line_number":81,"context_line":"            address"},{"line_number":82,"context_line":"            port"},{"line_number":83,"context_line":"            transport"},{"line_number":84,"context_line":"        ]"},{"line_number":85,"context_line":"    ]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"REST API impact"},{"line_number":88,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3c173a55_118e712a","line":85,"range":{"start_line":77,"start_character":0,"end_line":85,"end_character":5},"in_reply_to":"3d80eca7_e87a8d40","updated":"2020-12-16 12:01:23.000000000","message":"this is pseudo code for readability, made it look more pythonic, let me know if needs more adjustments","commit_id":"e91ff9b8e8b7ae4ec884264b6ab7f4b9a01e2cd3"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":24,"context_line":"the HA of paths to a target does not handle replication of the volumes being"},{"line_number":25,"context_line":"used."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"a way to handle volume replication. We propose achiving this by using RAID1"},{"line_number":29,"context_line":"on the host, since the relative performance impact will be less significant"},{"line_number":30,"context_line":"in such an enviornment and will be greatly outweighed by the benefits."}],"source_content_type":"text/x-rst","patch_set":5,"id":"b662b044_877ad1f0","line":27,"range":{"start_line":27,"start_character":71,"end_line":27,"end_character":72},"updated":"2020-12-15 16:38:45.000000000","message":"nit: duplicated \"a\"","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":24,"context_line":"the HA of paths to a target does not handle replication of the volumes being"},{"line_number":25,"context_line":"used."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"a way to handle volume replication. We propose achiving this by using RAID1"},{"line_number":29,"context_line":"on the host, since the relative performance impact will be less significant"},{"line_number":30,"context_line":"in such an enviornment and will be greatly outweighed by the benefits."}],"source_content_type":"text/x-rst","patch_set":5,"id":"06ccda82_8886c1fb","line":27,"range":{"start_line":27,"start_character":71,"end_line":27,"end_character":72},"in_reply_to":"b662b044_877ad1f0","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fb02dfb08e6f514d3cb3513acc0ce4b775d11acc","unresolved":true,"context_lines":[{"line_number":25,"context_line":"used."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"a way to handle volume replication. We propose achiving this by using RAID1"},{"line_number":29,"context_line":"on the host, since the relative performance impact will be less significant"},{"line_number":30,"context_line":"in such an enviornment and will be greatly outweighed by the benefits."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"2df9fe04_5ec1a283","line":28,"range":{"start_line":28,"start_character":47,"end_line":28,"end_character":55},"updated":"2020-12-15 13:56:35.000000000","message":"achieving","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":25,"context_line":"used."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"a way to handle volume replication. We propose achiving this by using RAID1"},{"line_number":29,"context_line":"on the host, since the relative performance impact will be less significant"},{"line_number":30,"context_line":"in such an enviornment and will be greatly outweighed by the benefits."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"b60c173f_4962f84e","line":28,"range":{"start_line":28,"start_character":47,"end_line":28,"end_character":55},"in_reply_to":"2df9fe04_5ec1a283","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fb02dfb08e6f514d3cb3513acc0ce4b775d11acc","unresolved":true,"context_lines":[{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"a way to handle volume replication. We propose achiving this by using RAID1"},{"line_number":29,"context_line":"on the host, since the relative performance impact will be less significant"},{"line_number":30,"context_line":"in such an enviornment and will be greatly outweighed by the benefits."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f0d17d02_f9aa79a8","line":30,"range":{"start_line":30,"start_character":11,"end_line":30,"end_character":22},"updated":"2020-12-15 13:56:35.000000000","message":"environment","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"a way to handle volume replication. We propose achiving this by using RAID1"},{"line_number":29,"context_line":"on the host, since the relative performance impact will be less significant"},{"line_number":30,"context_line":"in such an enviornment and will be greatly outweighed by the benefits."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":5,"id":"6f0494c2_6937aaf5","line":30,"range":{"start_line":30,"start_character":11,"end_line":30,"end_character":22},"in_reply_to":"f0d17d02_f9aa79a8","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":64,"context_line":"the way it is commonly done. However, with NVMe on a high performance fabric,"},{"line_number":65,"context_line":"the benefits of handling replication on the consumer host can outweigh the"},{"line_number":66,"context_line":"performance costs."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Data model impact"},{"line_number":69,"context_line":"-----------------"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"78067c93_313f1df5","line":67,"updated":"2020-12-15 16:38:45.000000000","message":"nit: Adding support for this also incrases the type of backends we fully support, as not all vendors will chose supporting replication on the backend side.\n\nAnd the good thing is that we can support both without any kind of impact on each one.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":64,"context_line":"the way it is commonly done. However, with NVMe on a high performance fabric,"},{"line_number":65,"context_line":"the benefits of handling replication on the consumer host can outweigh the"},{"line_number":66,"context_line":"performance costs."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Data model impact"},{"line_number":69,"context_line":"-----------------"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"2fe5ce2a_a952cd7c","line":67,"in_reply_to":"78067c93_313f1df5","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fb02dfb08e6f514d3cb3513acc0ce4b775d11acc","unresolved":true,"context_lines":[{"line_number":69,"context_line":"-----------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"NVMe Connector\u0027s `connect_volume` and `disconnect_volume` param"},{"line_number":72,"context_line":"`connection_properties` can now also hold a `volume_replicas` dict, which will"},{"line_number":73,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"97f87c56_3d3aa8a3","line":72,"range":{"start_line":72,"start_character":62,"end_line":72,"end_character":66},"updated":"2020-12-15 13:56:35.000000000","message":"strictly speaking, this is a list, each element of which is a dict representing a replica","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":69,"context_line":"-----------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"NVMe Connector\u0027s `connect_volume` and `disconnect_volume` param"},{"line_number":72,"context_line":"`connection_properties` can now also hold a `volume_replicas` dict, which will"},{"line_number":73,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"90401068_28f831b6","line":72,"range":{"start_line":72,"start_character":62,"end_line":72,"end_character":66},"in_reply_to":"97f87c56_3d3aa8a3","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"NVMe Connector\u0027s `connect_volume` and `disconnect_volume` param"},{"line_number":72,"context_line":"`connection_properties` can now also hold a `volume_replicas` dict, which will"},{"line_number":73,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"replicated volume connection properties::"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"2cc1e62d_5722f872","line":74,"range":{"start_line":73,"start_character":0,"end_line":74,"end_character":44},"updated":"2020-12-15 16:38:45.000000000","message":"?: Does this new key-value hold ALL the replicas, or all BUT the one defined in the normal connection_properties fields (for non MDRAID cases)","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"NVMe Connector\u0027s `connect_volume` and `disconnect_volume` param"},{"line_number":72,"context_line":"`connection_properties` can now also hold a `volume_replicas` dict, which will"},{"line_number":73,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"replicated volume connection properties::"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a2eb05dc_cb6491ea","line":74,"range":{"start_line":73,"start_character":0,"end_line":74,"end_character":44},"in_reply_to":"2cc1e62d_5722f872","updated":"2020-12-16 12:01:23.000000000","message":"either or, if it holds a single replica it will be treated as a non-replicated volume.\nif volume_replicas is missing and connection info (portal and nqn) is provided in the flat connection_properties, use that for non-replicated volume.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":72,"context_line":"`connection_properties` can now also hold a `volume_replicas` dict, which will"},{"line_number":73,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"replicated volume connection properties::"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    volume_replicas: [{"}],"source_content_type":"text/x-rst","patch_set":5,"id":"eec13687_211970f4","line":75,"updated":"2020-12-15 16:38:45.000000000","message":"?: I have some additional questions:\n\n- What is the expected result if MDRAID is not present on the host?\n\n- How could we protect ourselves against this scenario? (or maybe it\u0027s something that cannot happen):\n  * We have a working instance with a MDRAID NVMe volume attached (4 replicas)\n  * Targets #3 and #4 go down\n  * We keep writing to targets #1 and #2\n  * We stop the instance\n  * We attach the volume after a couple of days\n  * Now we are only able to attach to targets #3 and #4, which have old data.\n\n- And against this similar scenario? (again, maybe there\u0027s already protection at another level)\n  * We have a working instance on host #1 with MDRAID NVMe volume as boot volume (4 replicas)\n  * Targets #3 and #4 go down\n  * Now we do a live migration of the instance to host #2\n  * On host #2 we attach the volume but we only have access to target #3 and #4 (old data)\n  * Hypervisor believes it\u0027s the exact same volume and does the live migration, and when it switches to running it on host #2... Who knows what\u0027s actually running.\n\n- What\u0027s the impact on multi-attach?\n\n- How does this interact with encryption?  I assume in the same way as multipathed devices.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c1949f1d583914d681864f2bd6a1d7e0a53b61b7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"`connection_properties` can now also hold a `volume_replicas` dict, which will"},{"line_number":73,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"replicated volume connection properties::"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    volume_replicas: [{"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5f3d8d_4b6329db","line":75,"in_reply_to":"563d9a9a_7cab60a6","updated":"2020-12-16 17:58:40.000000000","message":"1. Then the spec should explicitly say that for replicated NVMe volumes the connect_volume method will fail if MDRAID is not present in the system.\n\n2-3. I think these are really concerning scenarios, so we should explicitly mention them in the spec, and in the documentation as a possibility (unlikely, but still).\n\n4. When I talk about multi-attach I don\u0027t mean attaching in two host simultaneously as part of a live migration, because in that case Nova orchestrates that only one hypervisor writes to the disk. I\u0027m referring to the possibility of having 2 different instances accessing simultaneously the same block volume, which is the feature called multi-attach in Cinder.  So I believe multi-attach should not be supported for NVMe MDRAID volumes, though I could be wrong.\n\n5. You can see the decryptor code under `os_brick/encryptors`, a good example is `lucks.py`.  And the code calling it will be in somewhere in Nova. It will probably be useful to look at the patch I submitted to the iSCSI connector to fix this issue because I broke encryption when I started returning the real device after refactoring the iSCSI connector: https://review.opendev.org/c/openstack/os-brick/+/483069","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"3b88e84ade62ff5f5e80327e62ec6823e4f6bab6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"`connection_properties` can now also hold a `volume_replicas` dict, which will"},{"line_number":73,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"replicated volume connection properties::"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    volume_replicas: [{"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d6327d4b_f0184a1b","line":75,"in_reply_to":"ba5f3d8d_4b6329db","updated":"2020-12-16 20:07:38.000000000","message":"1. Added to \"Other deployer impact\" section.\n\n2-3. Mentioning in \"Other end user impact\" and adding a note about possible remedy.\n\n4. Got it, thank you, yes multi attach is not supported, added a note about it under \"Other end user impact\"\n\n5. Great pointers, thank you! So yes, expose all devices (bare NVMe and MDRAID) by symlink. Adding it to \"Work items\" section.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":72,"context_line":"`connection_properties` can now also hold a `volume_replicas` dict, which will"},{"line_number":73,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"replicated volume connection properties::"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    volume_replicas: [{"}],"source_content_type":"text/x-rst","patch_set":5,"id":"563d9a9a_7cab60a6","line":75,"in_reply_to":"eec13687_211970f4","updated":"2020-12-16 12:01:23.000000000","message":"1. It is operator responsibiliy to have necessary linux modules on hosts, this of course will be documented in storage backend docs. If MDRAID replication is required, MDRAID needs to be available. We can also make a check for it and fail if it\u0027s missing, but installation should be admin/operator responsibility.\n\n2. As far as I can see there is no way to protect from this (very special scenario) from the consumer / OpenStack side. The storage backend needs to be aware of the divergence, and either sync the old volumes or be aware that they are faulted and not valid candidates as RAID replicas anymore.\n\n3. Same for above. The storage backend (which already handles management of replicated volume replicas metadata, which is something OpenStack is unaware of) is the place to handle this.\n\nOf course, suggestions are welcomed!\n\n4. No impact on multi-attach as far as we saw. We had working demos of live migration. This is something that should be investigated further. Any pointers here would be helpful!\n\n5. Good question, can we please get a pointer to what needs to be handled in the case of encryption? Thank you!","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"replicated volume connection properties::"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    volume_replicas: [{"},{"line_number":79,"context_line":"        uuid: \u003cvolume uuid\u003e"},{"line_number":80,"context_line":"        nqn: \u003ctarget nqn\u003e"},{"line_number":81,"context_line":"        portals: [{"},{"line_number":82,"context_line":"            address: \u003caddress\u003e"},{"line_number":83,"context_line":"            port: \u003cport\u003e"},{"line_number":84,"context_line":"            transport: \u003ctransport\u003e"},{"line_number":85,"context_line":"        }]"},{"line_number":86,"context_line":"    }]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"REST API impact"},{"line_number":89,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7feaa694_b788b949","line":86,"range":{"start_line":77,"start_character":0,"end_line":86,"end_character":6},"updated":"2020-12-15 16:38:45.000000000","message":"nit: It would be good to have the full connection_info dictionary with fake values.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":74,"context_line":"for then doing MDRAID replication over them."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"replicated volume connection properties::"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    volume_replicas: [{"},{"line_number":79,"context_line":"        uuid: \u003cvolume uuid\u003e"},{"line_number":80,"context_line":"        nqn: \u003ctarget nqn\u003e"},{"line_number":81,"context_line":"        portals: [{"},{"line_number":82,"context_line":"            address: \u003caddress\u003e"},{"line_number":83,"context_line":"            port: \u003cport\u003e"},{"line_number":84,"context_line":"            transport: \u003ctransport\u003e"},{"line_number":85,"context_line":"        }]"},{"line_number":86,"context_line":"    }]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"REST API impact"},{"line_number":89,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"55058f4f_9f24df48","line":86,"range":{"start_line":77,"start_character":0,"end_line":86,"end_character":6},"in_reply_to":"7feaa694_b788b949","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":117,"context_line":"Performance Impact"},{"line_number":118,"context_line":"------------------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"None greater than what current NVMe connector already does"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Other deployer impact"},{"line_number":123,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"cc37b91a_bb740921","line":120,"updated":"2020-12-15 16:38:45.000000000","message":"nit: It has some impact, as attachments will be slower.  It\u0027s a fair trade-off, slower attachments, more resiliency for your data.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":117,"context_line":"Performance Impact"},{"line_number":118,"context_line":"------------------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"None greater than what current NVMe connector already does"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Other deployer impact"},{"line_number":123,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"14d31379_38d21309","line":120,"in_reply_to":"cc37b91a_bb740921","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Other deployer impact"},{"line_number":123,"context_line":"---------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"To use this feature, volume drivers will need to expose NVMe storage that is"},{"line_number":126,"context_line":"replicated and provide necessary connection information for it when using this"},{"line_number":127,"context_line":"feature of the connector."},{"line_number":128,"context_line":"Non-replicated volume usage of the connector should remain the same."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Developer impact"},{"line_number":131,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"34408e94_d87fdd20","line":128,"range":{"start_line":124,"start_character":0,"end_line":128,"end_character":68},"updated":"2020-12-15 16:38:45.000000000","message":"This is developer impact (as in driver developer), since deployers will not be exposed to this.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":125,"context_line":"To use this feature, volume drivers will need to expose NVMe storage that is"},{"line_number":126,"context_line":"replicated and provide necessary connection information for it when using this"},{"line_number":127,"context_line":"feature of the connector."},{"line_number":128,"context_line":"Non-replicated volume usage of the connector should remain the same."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Developer impact"},{"line_number":131,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8417f38b_a693208f","line":128,"range":{"start_line":128,"start_character":45,"end_line":128,"end_character":51},"updated":"2020-12-15 16:38:45.000000000","message":"nit: will","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Other deployer impact"},{"line_number":123,"context_line":"---------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"To use this feature, volume drivers will need to expose NVMe storage that is"},{"line_number":126,"context_line":"replicated and provide necessary connection information for it when using this"},{"line_number":127,"context_line":"feature of the connector."},{"line_number":128,"context_line":"Non-replicated volume usage of the connector should remain the same."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Developer impact"},{"line_number":131,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3b5aeb81_a4c31b8d","line":128,"range":{"start_line":124,"start_character":0,"end_line":128,"end_character":68},"in_reply_to":"34408e94_d87fdd20","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":125,"context_line":"To use this feature, volume drivers will need to expose NVMe storage that is"},{"line_number":126,"context_line":"replicated and provide necessary connection information for it when using this"},{"line_number":127,"context_line":"feature of the connector."},{"line_number":128,"context_line":"Non-replicated volume usage of the connector should remain the same."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Developer impact"},{"line_number":131,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"81cded17_109bd684","line":128,"range":{"start_line":128,"start_character":45,"end_line":128,"end_character":51},"in_reply_to":"8417f38b_a693208f","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Create MD RAID1 array over devices."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Return path to the MDRAID device."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"`disconnect_volume` destroy the MDRAID."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"0069aed7_6dd652d1","line":158,"range":{"start_line":158,"start_character":0,"end_line":158,"end_character":33},"updated":"2020-12-15 16:38:45.000000000","message":"-1: Not for encrypted volumes, you\u0027ll need to return a symlink to your MDRAID device or Nova will break your device.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":true,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Create MD RAID1 array over devices."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Return path to the MDRAID device."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"`disconnect_volume` destroy the MDRAID."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"f6861ef4_ff4e3bfd","line":158,"range":{"start_line":158,"start_character":0,"end_line":158,"end_character":33},"in_reply_to":"0069aed7_6dd652d1","updated":"2020-12-16 12:01:23.000000000","message":"Is this what the current NVMe connector does?","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"3b88e84ade62ff5f5e80327e62ec6823e4f6bab6","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Create MD RAID1 array over devices."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Return path to the MDRAID device."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"`disconnect_volume` destroy the MDRAID."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"b3b5057f_102d06c5","line":158,"range":{"start_line":158,"start_character":0,"end_line":158,"end_character":33},"in_reply_to":"8f485422_f291894b","updated":"2020-12-16 20:07:38.000000000","message":"Fixing","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c1949f1d583914d681864f2bd6a1d7e0a53b61b7","unresolved":true,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Create MD RAID1 array over devices."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Return path to the MDRAID device."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"`disconnect_volume` destroy the MDRAID."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"8f485422_f291894b","line":158,"range":{"start_line":158,"start_character":0,"end_line":158,"end_character":33},"in_reply_to":"f6861ef4_ff4e3bfd","updated":"2020-12-16 17:58:40.000000000","message":"No, it doesn\u0027t, which is another bug on the NVMe connector, like the one where it\u0027s not flushing buffers on disconnect.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"All done in NVMe connector:"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"In `connect_volume` parse connection information for replicated"},{"line_number":152,"context_line":"volumes."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Connect to NVMeoF targets and identify the devices."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Create MD RAID1 array over devices."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Return path to the MDRAID device."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"`disconnect_volume` destroy the MDRAID."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"`extend_volume` grow the MDRAID."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":5,"id":"229a73a5_368389af","line":162,"range":{"start_line":151,"start_character":0,"end_line":162,"end_character":32},"updated":"2020-12-15 16:38:45.000000000","message":"nit: Please use \"-\" on each item to make it more readable.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"All done in NVMe connector:"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"In `connect_volume` parse connection information for replicated"},{"line_number":152,"context_line":"volumes."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Connect to NVMeoF targets and identify the devices."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Create MD RAID1 array over devices."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Return path to the MDRAID device."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"`disconnect_volume` destroy the MDRAID."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"`extend_volume` grow the MDRAID."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":5,"id":"67af374d_df528044","line":162,"range":{"start_line":151,"start_character":0,"end_line":162,"end_character":32},"in_reply_to":"229a73a5_368389af","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":171,"context_line":"Testing"},{"line_number":172,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"In order to properly test this in tempest, programmatic access will be needed"},{"line_number":175,"context_line":"to the storage backend. For example, to fail one of the drives of a replicated"},{"line_number":176,"context_line":"volume."},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"39dd83d9_a64e8dc0","line":174,"range":{"start_line":174,"start_character":34,"end_line":174,"end_character":41},"updated":"2020-12-15 16:38:45.000000000","message":"This will need to be added to the Cinder tempest plugin, because it won\u0027t be accept in Tempest itself.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":171,"context_line":"Testing"},{"line_number":172,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"In order to properly test this in tempest, programmatic access will be needed"},{"line_number":175,"context_line":"to the storage backend. For example, to fail one of the drives of a replicated"},{"line_number":176,"context_line":"volume."},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"f337032a_9ee3b52d","line":174,"range":{"start_line":174,"start_character":34,"end_line":174,"end_character":41},"in_reply_to":"39dd83d9_a64e8dc0","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":175,"context_line":"to the storage backend. For example, to fail one of the drives of a replicated"},{"line_number":176,"context_line":"volume."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"We could also slide by with just a check of connected NVMe subsystems"},{"line_number":179,"context_line":"(`nvme list`) and scan of MDRAID arrays (`mdadm -D scan`) to see that multiple"},{"line_number":180,"context_line":"NVMe devices were connected and a RAID was created."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"In either case tempest will need to be aware that the storage backend is"},{"line_number":183,"context_line":"configured to use replicated NVMe volumes and only then do these checks."}],"source_content_type":"text/x-rst","patch_set":5,"id":"da733e36_8e187faf","line":180,"range":{"start_line":178,"start_character":0,"end_line":180,"end_character":51},"updated":"2020-12-15 16:38:45.000000000","message":"I think this is probably the most \"reasonable\", because the programmatic access that works for different vendors is going to be more painful.","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":175,"context_line":"to the storage backend. For example, to fail one of the drives of a replicated"},{"line_number":176,"context_line":"volume."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"We could also slide by with just a check of connected NVMe subsystems"},{"line_number":179,"context_line":"(`nvme list`) and scan of MDRAID arrays (`mdadm -D scan`) to see that multiple"},{"line_number":180,"context_line":"NVMe devices were connected and a RAID was created."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"In either case tempest will need to be aware that the storage backend is"},{"line_number":183,"context_line":"configured to use replicated NVMe volumes and only then do these checks."}],"source_content_type":"text/x-rst","patch_set":5,"id":"0efa4ad3_3f6e6e5c","line":180,"range":{"start_line":178,"start_character":0,"end_line":180,"end_character":51},"in_reply_to":"da733e36_8e187faf","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"31d8539207dd0262d1c11a64be0141079f466e9f","unresolved":true,"context_lines":[{"line_number":198,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Architectural diagram"},{"line_number":201,"context_line":"https://wiki.openstack.org/wiki/File:Nvme-of-add-client-raid1-detail.png"}],"source_content_type":"text/x-rst","patch_set":5,"id":"94157c7c_99daf1f3","line":201,"updated":"2020-12-15 16:38:45.000000000","message":"nit: I think this could be added with the `image` directive to the proposed change section.\n\n.. image:: https://wiki.openstack.org/w/images/a/ab/Nvme-of-add-client-raid1-detail.png\n   :width: 448\n   :alt: NVMe client RAID diagram","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":198,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Architectural diagram"},{"line_number":201,"context_line":"https://wiki.openstack.org/wiki/File:Nvme-of-add-client-raid1-detail.png"}],"source_content_type":"text/x-rst","patch_set":5,"id":"97a5d8f3_3bcda126","line":201,"in_reply_to":"94157c7c_99daf1f3","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"1b6e5c03772e1026a3d42cce7c57733a59fc3089"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6be80b5d0e9c993255e2f459af75832c4619bdfe","unresolved":true,"context_lines":[{"line_number":171,"context_line":"Testing"},{"line_number":172,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"In order to properly test this in tempest, programmatic access will be needed"},{"line_number":175,"context_line":"to the storage backend. For example, to fail one of the drives of a replicated"},{"line_number":176,"context_line":"volume."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"We could also slide by with just a check of connected NVMe subsystems"},{"line_number":179,"context_line":"(`nvme list`) and scan of MDRAID arrays (`mdadm -D scan`) to see that multiple"},{"line_number":180,"context_line":"NVMe devices were connected and a RAID was created."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"In either case tempest will need to be aware that the storage backend is"},{"line_number":183,"context_line":"configured to use replicated NVMe volumes and only then do these checks."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Aside from that, running tempest with NVMe replicated volume backend"},{"line_number":186,"context_line":"will still fully test this functionality, it\u0027s just the specific assertions"},{"line_number":187,"context_line":"(nvme devices and RAID info) that would be different."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Documentation Impact"},{"line_number":191,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"2758ae8d_4cfc3ceb","line":188,"range":{"start_line":174,"start_character":0,"end_line":188,"end_character":0},"updated":"2020-12-15 17:37:40.000000000","message":"I think it would be better to have unit-tests and as a stretch goal to have functional tests in os-brick.","commit_id":"b033bc60859865305bfab227a4e8fa126516bd39"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"926d454b031bddcc7bb63b4c144e3294bb66aa14","unresolved":false,"context_lines":[{"line_number":171,"context_line":"Testing"},{"line_number":172,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"In order to properly test this in tempest, programmatic access will be needed"},{"line_number":175,"context_line":"to the storage backend. For example, to fail one of the drives of a replicated"},{"line_number":176,"context_line":"volume."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"We could also slide by with just a check of connected NVMe subsystems"},{"line_number":179,"context_line":"(`nvme list`) and scan of MDRAID arrays (`mdadm -D scan`) to see that multiple"},{"line_number":180,"context_line":"NVMe devices were connected and a RAID was created."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"In either case tempest will need to be aware that the storage backend is"},{"line_number":183,"context_line":"configured to use replicated NVMe volumes and only then do these checks."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Aside from that, running tempest with NVMe replicated volume backend"},{"line_number":186,"context_line":"will still fully test this functionality, it\u0027s just the specific assertions"},{"line_number":187,"context_line":"(nvme devices and RAID info) that would be different."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Documentation Impact"},{"line_number":191,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"c841fbbb_e8f57514","line":188,"range":{"start_line":174,"start_character":0,"end_line":188,"end_character":0},"in_reply_to":"2758ae8d_4cfc3ceb","updated":"2020-12-16 12:01:23.000000000","message":"Done","commit_id":"b033bc60859865305bfab227a4e8fa126516bd39"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a05e5872ad901b3691028df4d5575a4e04c1678e","unresolved":true,"context_lines":[{"line_number":69,"context_line":"the benefits of handling replication on the consumer host can outweigh the"},{"line_number":70,"context_line":"performance costs."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Adding support for this also incrases the type of backends we fully support,"},{"line_number":73,"context_line":"as not all vendors will chose supporting replication on the backend side."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"And we can support both without any kind of impact on each one."}],"source_content_type":"text/x-rst","patch_set":8,"id":"c9e8b8a1_5fd25def","line":72,"range":{"start_line":72,"start_character":29,"end_line":72,"end_character":37},"updated":"2020-12-16 20:06:17.000000000","message":"increases","commit_id":"f890cfbdc68d55e53931d1a4e09071ede289f2ac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c1949f1d583914d681864f2bd6a1d7e0a53b61b7","unresolved":true,"context_lines":[{"line_number":82,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":83,"context_line":"for then doing MDRAID replication over them."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"If `volume_replicas` has only one replica, treat it as non-replicated volume."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"If `volume_replicas` is ommitted, use the normal flat connection properties"},{"line_number":88,"context_line":"for NVMe as in the existing version of this NVMe connector."}],"source_content_type":"text/x-rst","patch_set":8,"id":"2237f574_0ff95849","line":85,"updated":"2020-12-16 17:58:40.000000000","message":"nit: We should be explicit and mention that `volume_replicas` must include the normal flat connection properties.\n\nHere we are indirectly saying it, but I think explicit is best.","commit_id":"f890cfbdc68d55e53931d1a4e09071ede289f2ac"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"3b88e84ade62ff5f5e80327e62ec6823e4f6bab6","unresolved":false,"context_lines":[{"line_number":82,"context_line":"contain necessary info for connecting to and identifying the NVMe subsystems"},{"line_number":83,"context_line":"for then doing MDRAID replication over them."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"If `volume_replicas` has only one replica, treat it as non-replicated volume."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"If `volume_replicas` is ommitted, use the normal flat connection properties"},{"line_number":88,"context_line":"for NVMe as in the existing version of this NVMe connector."}],"source_content_type":"text/x-rst","patch_set":8,"id":"c345b1b4_a570a177","line":85,"in_reply_to":"2237f574_0ff95849","updated":"2020-12-16 20:07:38.000000000","message":"Mentioning that each replica in `volume_replicas` must include the normal flat connection properties.","commit_id":"f890cfbdc68d55e53931d1a4e09071ede289f2ac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c1949f1d583914d681864f2bd6a1d7e0a53b61b7","unresolved":true,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"replicated volume connection properties::"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    volume_replicas: [{"},{"line_number":93,"context_line":"        uuid: \u002796e25fb4-9f91-4c88-ab59-275fd354777e\u0027,"},{"line_number":94,"context_line":"        nqn: \u0027nqn.2014-08.org.nvmexpress:uuid:...\u0027"},{"line_number":95,"context_line":"        portals: [{"},{"line_number":96,"context_line":"            address: \u002710.0.0.101\u0027,"},{"line_number":97,"context_line":"            port: \u00274420\u0027,"},{"line_number":98,"context_line":"            transport: \u0027tcp\u0027"},{"line_number":99,"context_line":"        }]"},{"line_number":100,"context_line":"    }]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"REST API impact"},{"line_number":103,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"39e7596b_7eb36e5a","line":100,"range":{"start_line":92,"start_character":0,"end_line":100,"end_character":6},"updated":"2020-12-16 17:58:40.000000000","message":"nit: It would be best to have the full connection properties dictionary, not only the volume_replicas key-value.","commit_id":"f890cfbdc68d55e53931d1a4e09071ede289f2ac"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"3b88e84ade62ff5f5e80327e62ec6823e4f6bab6","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"replicated volume connection properties::"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    volume_replicas: [{"},{"line_number":93,"context_line":"        uuid: \u002796e25fb4-9f91-4c88-ab59-275fd354777e\u0027,"},{"line_number":94,"context_line":"        nqn: \u0027nqn.2014-08.org.nvmexpress:uuid:...\u0027"},{"line_number":95,"context_line":"        portals: [{"},{"line_number":96,"context_line":"            address: \u002710.0.0.101\u0027,"},{"line_number":97,"context_line":"            port: \u00274420\u0027,"},{"line_number":98,"context_line":"            transport: \u0027tcp\u0027"},{"line_number":99,"context_line":"        }]"},{"line_number":100,"context_line":"    }]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"REST API impact"},{"line_number":103,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"e4465f8a_0b07beaa","line":100,"range":{"start_line":92,"start_character":0,"end_line":100,"end_character":6},"in_reply_to":"39e7596b_7eb36e5a","updated":"2020-12-16 20:07:38.000000000","message":"made two versions for replicated and non-replicaed connection properties","commit_id":"f890cfbdc68d55e53931d1a4e09071ede289f2ac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c1949f1d583914d681864f2bd6a1d7e0a53b61b7","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Performance Impact"},{"line_number":132,"context_line":"------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Replicated volume attachments will be slower (need to build MDRAID array)"},{"line_number":135,"context_line":"It\u0027s a fair tradeoff, slower attachment for more resiliency."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"2373b995_78a0c91d","line":134,"range":{"start_line":134,"start_character":72,"end_line":134,"end_character":73},"updated":"2020-12-16 17:58:40.000000000","message":"nit: missing \".\" at the end of the sentence.","commit_id":"f890cfbdc68d55e53931d1a4e09071ede289f2ac"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"3b88e84ade62ff5f5e80327e62ec6823e4f6bab6","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Performance Impact"},{"line_number":132,"context_line":"------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Replicated volume attachments will be slower (need to build MDRAID array)"},{"line_number":135,"context_line":"It\u0027s a fair tradeoff, slower attachment for more resiliency."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ae2607ab_39ea5bf1","line":134,"range":{"start_line":134,"start_character":72,"end_line":134,"end_character":73},"in_reply_to":"2373b995_78a0c91d","updated":"2020-12-16 20:07:38.000000000","message":"Done","commit_id":"f890cfbdc68d55e53931d1a4e09071ede289f2ac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c1949f1d583914d681864f2bd6a1d7e0a53b61b7","unresolved":true,"context_lines":[{"line_number":149,"context_line":"replicated and provide necessary connection information for it when using this"},{"line_number":150,"context_line":"feature of the connector."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Implementation"},{"line_number":154,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5cac703b_2a1eea0b","line":152,"updated":"2020-12-16 17:58:40.000000000","message":"nit: I liked how you explicitly called out how this wouldn\u0027t affect non-replicated volumes in earlier patches.","commit_id":"f890cfbdc68d55e53931d1a4e09071ede289f2ac"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"3b88e84ade62ff5f5e80327e62ec6823e4f6bab6","unresolved":false,"context_lines":[{"line_number":149,"context_line":"replicated and provide necessary connection information for it when using this"},{"line_number":150,"context_line":"feature of the connector."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Implementation"},{"line_number":154,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"2605d088_83d47a00","line":152,"in_reply_to":"5cac703b_2a1eea0b","updated":"2020-12-16 20:07:38.000000000","message":"Done","commit_id":"f890cfbdc68d55e53931d1a4e09071ede289f2ac"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cd7872f49757b2ed88c858c030bdf1c88b20d0f1","unresolved":true,"context_lines":[{"line_number":69,"context_line":"the benefits of handling replication on the consumer host can outweigh the"},{"line_number":70,"context_line":"performance costs."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Adding support for this also incrases the type of backends we fully support,"},{"line_number":73,"context_line":"as not all vendors will chose supporting replication on the backend side."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"And we can support both without any kind of impact on each one."}],"source_content_type":"text/x-rst","patch_set":9,"id":"a8130759_f800ba6d","line":72,"range":{"start_line":72,"start_character":29,"end_line":72,"end_character":37},"updated":"2020-12-17 03:01:28.000000000","message":"nit: increases","commit_id":"3853de51138c2f645e50b1004d8e2a586ced5466"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"4d859d33ddb82d5d56a60731c43c146464e3be0a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"the benefits of handling replication on the consumer host can outweigh the"},{"line_number":70,"context_line":"performance costs."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Adding support for this also incrases the type of backends we fully support,"},{"line_number":73,"context_line":"as not all vendors will chose supporting replication on the backend side."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"And we can support both without any kind of impact on each one."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5234cf66_e1ed6e4a","line":72,"range":{"start_line":72,"start_character":29,"end_line":72,"end_character":37},"in_reply_to":"a8130759_f800ba6d","updated":"2020-12-19 04:46:47.000000000","message":"Done","commit_id":"3853de51138c2f645e50b1004d8e2a586ced5466"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cd7872f49757b2ed88c858c030bdf1c88b20d0f1","unresolved":true,"context_lines":[{"line_number":110,"context_line":"            port: \u00274420\u0027,"},{"line_number":111,"context_line":"            transport: \u0027tcp\u0027"},{"line_number":112,"context_line":"        }]"},{"line_number":113,"context_line":"    }]"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"REST API impact"},{"line_number":116,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"05be5e5a_63ea3b08","line":113,"updated":"2020-12-17 03:01:28.000000000","message":"nit: the keys in the above dicts are actually strings and should be enclosed in quotes.\n\nWhat I thought Gorka was asking for on PS8 was to show the volume_replicas within the connection properties dict, not separately, but I may have misunderstood.","commit_id":"3853de51138c2f645e50b1004d8e2a586ced5466"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a50d0569dde5efa352d321fd50287f82837581bf","unresolved":true,"context_lines":[{"line_number":110,"context_line":"            port: \u00274420\u0027,"},{"line_number":111,"context_line":"            transport: \u0027tcp\u0027"},{"line_number":112,"context_line":"        }]"},{"line_number":113,"context_line":"    }]"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"REST API impact"},{"line_number":116,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"d0e88198_836be611","line":113,"in_reply_to":"05be5e5a_63ea3b08","updated":"2020-12-18 16:17:18.000000000","message":"Yes, that is correct, I was looking for something like this:\n\n    {\u0027uuid\u0027: \u002796e25fb4-9f91-4c88-ab59-275fd354777e\u0027,\n     \u0027nqn\u0027: \u0027nqn.2014-08.org.nvmexpress:uuid:...\u0027\n     \u0027portals\u0027: [{\n         \u0027address\u0027: \u002710.0.0.101\u0027,\n         \u0027port\u0027: \u00274420\u0027,\n         \u0027transport\u0027: \u0027tcp\u0027\n     }],\n\n     \u0027volume_replicas\u0027: [\n         {\u0027uuid\u0027: \u002796e25fb4-9f91-4c88-ab59-275fd354777e\u0027,\n          \u0027nqn\u0027: \u0027nqn.2014-08.org.nvmexpress:uuid:...\u0027\n          \u0027portals\u0027: [{\n              \u0027address\u0027: \u002710.0.0.101\u0027,\n              \u0027port\u0027: \u00274420\u0027,\n              \u0027transport\u0027: \u0027tcp\u0027\n          }]},\n\n         {\u0027uuid\u0027: \u002712345fb4-9f91-4c88-ab59-275fd3544321\u0027,\n          \u0027nqn\u0027: \u0027nqn.2014-08.org.nvmexpress:uuid:...\u0027\n          \u0027portals\u0027: [{\n              \u0027address\u0027: \u002710.0.0.110\u0027,\n              \u0027port\u0027: \u00274420\u0027,\n              \u0027transport\u0027: \u0027tcp\u0027\n          }]},\n     ]}\n\nWhere we can see how the flat data is repeated, and we can see an additional replica.","commit_id":"3853de51138c2f645e50b1004d8e2a586ced5466"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"4d859d33ddb82d5d56a60731c43c146464e3be0a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            port: \u00274420\u0027,"},{"line_number":111,"context_line":"            transport: \u0027tcp\u0027"},{"line_number":112,"context_line":"        }]"},{"line_number":113,"context_line":"    }]"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"REST API impact"},{"line_number":116,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"d2180ee2_05d7bbf6","line":113,"in_reply_to":"21b56967_71e1d9a7","updated":"2020-12-19 04:46:47.000000000","message":"This example should not happen because it is passing both single device connection properties (outside the volume_replicas) and also specifying replicas inside volume_replicas.\n\nthere are only two valid cases here:\n1. single device connection info passed outside volume_replicas\n2. single/multiple device (replicas) passed inside volume_replicas\n\npassing a single device inside volume_replicas is simply permitted for convenience.\n\nfor the above reasons, this is why i elected to show this in 2 different examples.\n\ni will keep this as two examples, and explicitly show that \"flat\" data can be outside volume_replicas by explicitly adding it there (with None value)","commit_id":"3853de51138c2f645e50b1004d8e2a586ced5466"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"48961fe83d7f17fff7fcf0b0d1627ddba87a5768","unresolved":true,"context_lines":[{"line_number":110,"context_line":"            port: \u00274420\u0027,"},{"line_number":111,"context_line":"            transport: \u0027tcp\u0027"},{"line_number":112,"context_line":"        }]"},{"line_number":113,"context_line":"    }]"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"REST API impact"},{"line_number":116,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"21b56967_71e1d9a7","line":113,"in_reply_to":"d0e88198_836be611","updated":"2020-12-18 16:59:33.000000000","message":"Thanks, Gorka.  This is the key point:\n\n\u003e Where we can see how the flat data is repeated, and we can see an additional replica.\n\nThe example is important because it\u0027s not 100% clear from the text that you were planning to have the \"flat\" data on the outside of the volume_replicas list, whereas it\u0027s obvious in the example.  But that raises the question, does this example reflect what you are thinking, or were you thinking something else?","commit_id":"3853de51138c2f645e50b1004d8e2a586ced5466"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a50d0569dde5efa352d321fd50287f82837581bf","unresolved":true,"context_lines":[{"line_number":156,"context_line":"Performance Impact"},{"line_number":157,"context_line":"------------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Replicated volume attachments will be slower (need to build MDRAID array.)"},{"line_number":160,"context_line":"It\u0027s a fair tradeoff, slower attachment for more resiliency."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5862b1b7_28b1c0aa","line":159,"range":{"start_line":159,"start_character":72,"end_line":159,"end_character":74},"updated":"2020-12-18 16:17:18.000000000","message":"nit: the period goes after the closing parentheses:  ).","commit_id":"3853de51138c2f645e50b1004d8e2a586ced5466"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"4d859d33ddb82d5d56a60731c43c146464e3be0a","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Performance Impact"},{"line_number":157,"context_line":"------------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Replicated volume attachments will be slower (need to build MDRAID array.)"},{"line_number":160,"context_line":"It\u0027s a fair tradeoff, slower attachment for more resiliency."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9639a740_a0907c75","line":159,"range":{"start_line":159,"start_character":72,"end_line":159,"end_character":74},"in_reply_to":"5862b1b7_28b1c0aa","updated":"2020-12-19 04:46:47.000000000","message":"Done","commit_id":"3853de51138c2f645e50b1004d8e2a586ced5466"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"bc18c0e6323b795163252c35066b47fe91b1a3c2","unresolved":true,"context_lines":[{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Expand the NVMe connector to be able to take in connection information for"},{"line_number":55,"context_line":"replicated volumes."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"When `connect_volume` is called with replicated volume information, NVMe"},{"line_number":58,"context_line":"connect to all replica targets and create a RAID1 over the devices."}],"source_content_type":"text/x-rst","patch_set":10,"id":"3767fed9_964e8d1c","line":55,"updated":"2020-12-21 15:04:35.000000000","message":"It sounds like you are making changes to os-brick\u0027s connector here, but don\u0027t really mention it.  Can you be more specific about what is changing and where?  cinder volume driver change, vs os-brick connector change?","commit_id":"1045c388e6cbfb3bba813b060cf4e803c4cad6c8"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"daff3ce3c337a2a8340217f9240b99eccd099ef1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Expand the NVMe connector to be able to take in connection information for"},{"line_number":55,"context_line":"replicated volumes."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"When `connect_volume` is called with replicated volume information, NVMe"},{"line_number":58,"context_line":"connect to all replica targets and create a RAID1 over the devices."}],"source_content_type":"text/x-rst","patch_set":10,"id":"78881f3d_6e9b7b6b","line":55,"in_reply_to":"3767fed9_964e8d1c","updated":"2020-12-22 04:33:01.000000000","message":"Done","commit_id":"1045c388e6cbfb3bba813b060cf4e803c4cad6c8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"bc18c0e6323b795163252c35066b47fe91b1a3c2","unresolved":true,"context_lines":[{"line_number":211,"context_line":"Dependencies"},{"line_number":212,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"None"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9be021a9_ce05bfcc","line":214,"updated":"2020-12-21 15:04:35.000000000","message":"don\u0027t you need to ensure mdadm is on the host? And if it\u0027s not, fail gracefully.","commit_id":"1045c388e6cbfb3bba813b060cf4e803c4cad6c8"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"daff3ce3c337a2a8340217f9240b99eccd099ef1","unresolved":false,"context_lines":[{"line_number":211,"context_line":"Dependencies"},{"line_number":212,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"None"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":10,"id":"134703ba_321dac80","line":214,"in_reply_to":"9be021a9_ce05bfcc","updated":"2020-12-22 04:33:01.000000000","message":"This is mentioned in deployer impact but will mention here too.","commit_id":"1045c388e6cbfb3bba813b060cf4e803c4cad6c8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c4306b1143be7dbe50a87498a3bf729b302fb474","unresolved":true,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"When consuming block storage, resilience of the block volumes is required."},{"line_number":22,"context_line":"This can be achieved on the storage backend, though with NVMe and iSCSI there"},{"line_number":23,"context_line":"is still a single point of failure on the target. And even with multipathing,"},{"line_number":24,"context_line":"the HA of paths to a target does not handle replication of the volumes being"},{"line_number":25,"context_line":"used."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"way to handle volume replication. We propose achieving this by using RAID1"}],"source_content_type":"text/x-rst","patch_set":11,"id":"413f7c83_3590f9af","line":25,"range":{"start_line":22,"start_character":0,"end_line":25,"end_character":5},"updated":"2020-12-22 15:06:10.000000000","message":"It\u0027s really hard to understand the meaning with the current way it\u0027s written. This needs to be rephrased to something like:\n\n\"This can be achieved on the storage backend with NVMe and iSCSI although there still remains a single point of failure. Even with multipathing, the HA of paths to a target does not handle volume replication.\"","commit_id":"941b763a1797f826a4864ff11de1285918ae310b"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"f16259cbc1e51ba5e97948735d42efd7b351c73d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"When consuming block storage, resilience of the block volumes is required."},{"line_number":22,"context_line":"This can be achieved on the storage backend, though with NVMe and iSCSI there"},{"line_number":23,"context_line":"is still a single point of failure on the target. And even with multipathing,"},{"line_number":24,"context_line":"the HA of paths to a target does not handle replication of the volumes being"},{"line_number":25,"context_line":"used."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"A storage solution exposing high performance NVMeoF storage would need a"},{"line_number":28,"context_line":"way to handle volume replication. We propose achieving this by using RAID1"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3d042973_a0c9e538","line":25,"range":{"start_line":22,"start_character":0,"end_line":25,"end_character":5},"in_reply_to":"413f7c83_3590f9af","updated":"2020-12-23 04:33:49.000000000","message":"Done","commit_id":"941b763a1797f826a4864ff11de1285918ae310b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c4306b1143be7dbe50a87498a3bf729b302fb474","unresolved":true,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Expand the NVMeoF connector to be able to take in connection information for"},{"line_number":55,"context_line":"replicated volumes. The NVMeoF connector being changed is in the os-brick"},{"line_number":56,"context_line":"repository: `os_brick/initiator/connectors/nvmeof.py`"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"When `connect_volume` is called with replicated volume information, NVMe"},{"line_number":59,"context_line":"connect to all replica targets and create a RAID1 over the devices."}],"source_content_type":"text/x-rst","patch_set":11,"id":"4dc3abd4_48ba0e66","line":56,"range":{"start_line":56,"start_character":12,"end_line":56,"end_character":53},"updated":"2020-12-22 15:06:10.000000000","message":"Not sure we want to mention this path in the spec.","commit_id":"941b763a1797f826a4864ff11de1285918ae310b"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"f16259cbc1e51ba5e97948735d42efd7b351c73d","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Expand the NVMeoF connector to be able to take in connection information for"},{"line_number":55,"context_line":"replicated volumes. The NVMeoF connector being changed is in the os-brick"},{"line_number":56,"context_line":"repository: `os_brick/initiator/connectors/nvmeof.py`"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"When `connect_volume` is called with replicated volume information, NVMe"},{"line_number":59,"context_line":"connect to all replica targets and create a RAID1 over the devices."}],"source_content_type":"text/x-rst","patch_set":11,"id":"0ddab3fa_a4b744a4","line":56,"range":{"start_line":56,"start_character":12,"end_line":56,"end_character":53},"in_reply_to":"4dc3abd4_48ba0e66","updated":"2020-12-23 04:33:49.000000000","message":"To be explicit as per one of the previous comments. Though it may be enough to say that it is in os-brick, so will remove the path here.","commit_id":"941b763a1797f826a4864ff11de1285918ae310b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c4306b1143be7dbe50a87498a3bf729b302fb474","unresolved":true,"context_lines":[{"line_number":234,"context_line":"will still fully test this functionality, it\u0027s just the specific assertions"},{"line_number":235,"context_line":"(nvme devices and RAID info) that would be different."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Finally, we will start with unit tests, and have functional tests in os-brick"},{"line_number":238,"context_line":"as a stretch goal."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"Documentation Impact"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"cc33b2a5_e3b5cd2f","line":238,"range":{"start_line":237,"start_character":0,"end_line":238,"end_character":18},"updated":"2020-12-22 15:06:10.000000000","message":"Not sure but i feel this should be added with the feature and tempest test can be part of future work.","commit_id":"941b763a1797f826a4864ff11de1285918ae310b"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"f16259cbc1e51ba5e97948735d42efd7b351c73d","unresolved":true,"context_lines":[{"line_number":234,"context_line":"will still fully test this functionality, it\u0027s just the specific assertions"},{"line_number":235,"context_line":"(nvme devices and RAID info) that would be different."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Finally, we will start with unit tests, and have functional tests in os-brick"},{"line_number":238,"context_line":"as a stretch goal."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"Documentation Impact"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"b7d8b73f_f154497f","line":238,"range":{"start_line":237,"start_character":0,"end_line":238,"end_character":18},"in_reply_to":"cc33b2a5_e3b5cd2f","updated":"2020-12-23 04:33:49.000000000","message":"ok. so is this current phrasing fine? what should be changed specifically?","commit_id":"941b763a1797f826a4864ff11de1285918ae310b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c4306b1143be7dbe50a87498a3bf729b302fb474","unresolved":true,"context_lines":[{"line_number":240,"context_line":"Documentation Impact"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Document that NVMe connector will now support replicated volumes."},{"line_number":244,"context_line":"And hence, the connection information requirement from the volume driver."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":11,"id":"5e480598_7c88faf5","line":244,"range":{"start_line":243,"start_character":64,"end_line":244,"end_character":73},"updated":"2020-12-22 15:06:10.000000000","message":"and connection information of replicas is required from the volume driver to support it.","commit_id":"941b763a1797f826a4864ff11de1285918ae310b"},{"author":{"_account_id":16721,"name":"Zohar Mamedov","email":"zohar.cloud@gmail.com","username":"zohar"},"change_message_id":"f16259cbc1e51ba5e97948735d42efd7b351c73d","unresolved":false,"context_lines":[{"line_number":240,"context_line":"Documentation Impact"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Document that NVMe connector will now support replicated volumes."},{"line_number":244,"context_line":"And hence, the connection information requirement from the volume driver."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":11,"id":"113d4a7c_a7a5b6ef","line":244,"range":{"start_line":243,"start_character":64,"end_line":244,"end_character":73},"in_reply_to":"5e480598_7c88faf5","updated":"2020-12-23 04:33:49.000000000","message":"Done","commit_id":"941b763a1797f826a4864ff11de1285918ae310b"}]}
