)]}'
{"etc/nova/rootwrap.d/compute.filters":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7cd63d0ac8b03a60359ad336186c3874db6246eb","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"# nova/virt/libvirt/volume/quobyte.py"},{"line_number":265,"context_line":"mount.quobyte: CommandFilter, mount.quobyte, root"},{"line_number":266,"context_line":"umount.quobyte: CommandFilter, umount.quobyte, root"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"# nova/virt/libvirt/volume/vzstorage.py"},{"line_number":269,"context_line":"pstorage-mount: CommandFilter, pstorage-mount, root"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"1a1ced50_e907fa7e","line":266,"updated":"2017-03-20 12:08:59.000000000","message":"rootwrap filters are etc, which is config. If you are adding new things here you need to add an upgrade release note that specifies that you need to update rootwrap config.","commit_id":"7257d9e9a9f1963e5b2b7f144f68841a8e22346a"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"bb524ba5088454afe4976f0a6ae9fb44100d8dc2","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"# nova/virt/libvirt/volume/quobyte.py"},{"line_number":265,"context_line":"mount.quobyte: CommandFilter, mount.quobyte, root"},{"line_number":266,"context_line":"umount.quobyte: CommandFilter, umount.quobyte, root"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"# nova/virt/libvirt/volume/vzstorage.py"},{"line_number":269,"context_line":"pstorage-mount: CommandFilter, pstorage-mount, root"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"1a1ced50_ff5888fc","line":266,"in_reply_to":"1a1ced50_e907fa7e","updated":"2017-03-20 12:39:02.000000000","message":"Will do, thanks for the hint.","commit_id":"7257d9e9a9f1963e5b2b7f144f68841a8e22346a"}],"nova/tests/unit/virt/libvirt/volume/test_quobyte.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7228d1ebcfcc1cfb8954b6270a175a30ce3381e5","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class QuobyteTestCase(test.NoDBTestCase):"},{"line_number":35,"context_line":"    \"\"\"Tests the nova.virt.libvirt.volume.quobyte module utilities.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    TEST_MNT_POINT \u003d \"/tmp/test_mpt\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def assertRaisesAndMessageMatches("},{"line_number":40,"context_line":"            self, excClass, msg, callableObj, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfeb2761_7405d645","line":37,"updated":"2017-04-04 12:29:10.000000000","message":"It\u0027s much better if this was made a sentinel http://www.voidspace.org.uk/python/mock/sentinel.html","commit_id":"7548b054b05e6caf387639c90fb9865bb1a7c99d"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"0f711158c7b277d807a70707c2ed125bc2fbf2db","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class QuobyteTestCase(test.NoDBTestCase):"},{"line_number":35,"context_line":"    \"\"\"Tests the nova.virt.libvirt.volume.quobyte module utilities.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    TEST_MNT_POINT \u003d \"/tmp/test_mpt\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def assertRaisesAndMessageMatches("},{"line_number":40,"context_line":"            self, excClass, msg, callableObj, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfeb2761_b61b42c8","line":37,"in_reply_to":"dfeb2761_7405d645","updated":"2017-04-05 07:45:40.000000000","message":"Good one, absolutely.\nDone.","commit_id":"7548b054b05e6caf387639c90fb9865bb1a7c99d"}],"nova/virt/libvirt/volume/quobyte.py":[{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"e5061a2e3f35c3e39e78e619ec57776085227b85","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_volume(mount_path):"},{"line_number":75,"context_line":"    \"\"\"Runs a number of tests on the expect Quobyte mount\"\"\""},{"line_number":76,"context_line":"    partitions \u003d psutil.disk_partitions(all\u003dTrue)"},{"line_number":77,"context_line":"    for p in partitions:"},{"line_number":78,"context_line":"        if mount_path \u003d\u003d p.mountpoint:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_80da1f16","line":75,"updated":"2017-02-16 13:16:18.000000000","message":"s/expect/expected , will update if this needs further changes.","commit_id":"1c7a44a2bea534d7af7d333a3a20b784568db776"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"a667566fd4a58226c36d84ef5cc61f59f11ae258","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_volume(mount_path):"},{"line_number":75,"context_line":"    \"\"\"Runs a number of tests on the expect Quobyte mount\"\"\""},{"line_number":76,"context_line":"    partitions \u003d psutil.disk_partitions(all\u003dTrue)"},{"line_number":77,"context_line":"    for p in partitions:"},{"line_number":78,"context_line":"        if mount_path \u003d\u003d p.mountpoint:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_684c0d77","line":75,"in_reply_to":"fa31d9ce_80da1f16","updated":"2017-02-17 09:32:52.000000000","message":"Done","commit_id":"1c7a44a2bea534d7af7d333a3a20b784568db776"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"10754583f37e30d37e1542487207328a5e619a09","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova.i18n import _"},{"line_number":28,"context_line":"from nova.i18n import _LE"},{"line_number":29,"context_line":"from nova.i18n import _LI"},{"line_number":30,"context_line":"from nova.i18n import _LW"},{"line_number":31,"context_line":"from nova import utils"},{"line_number":32,"context_line":"from nova.virt.libvirt import utils as libvirt_utils"},{"line_number":33,"context_line":"from nova.virt.libvirt.volume import fs"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_06ce5c83","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":25},"updated":"2017-03-16 16:34:28.000000000","message":"We won\u0027t need these soon enough, I hope","commit_id":"4d3455ddddd811d85f5e05ef47db0b3ed884a2b1"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d723b6123d6a977e8dcc3652126c5d797a1e3b8a","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova.i18n import _"},{"line_number":28,"context_line":"from nova.i18n import _LE"},{"line_number":29,"context_line":"from nova.i18n import _LI"},{"line_number":30,"context_line":"from nova.i18n import _LW"},{"line_number":31,"context_line":"from nova import utils"},{"line_number":32,"context_line":"from nova.virt.libvirt import utils as libvirt_utils"},{"line_number":33,"context_line":"from nova.virt.libvirt.volume import fs"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_f05f0d0c","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":25},"in_reply_to":"1a1ced50_06ce5c83","updated":"2017-03-17 15:01:10.000000000","message":"I\u0027m not absolutely sure this is not a call for action, right? :)","commit_id":"4d3455ddddd811d85f5e05ef47db0b3ed884a2b1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dc3c0a8b51aa26a3fa95eed3eea65fa39f904238","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from nova.i18n import _"},{"line_number":28,"context_line":"from nova.i18n import _LE"},{"line_number":29,"context_line":"from nova.i18n import _LI"},{"line_number":30,"context_line":"from nova.i18n import _LW"},{"line_number":31,"context_line":"from nova import utils"},{"line_number":32,"context_line":"from nova.virt.libvirt import utils as libvirt_utils"},{"line_number":33,"context_line":"from nova.virt.libvirt.volume import fs"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_51219afa","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":25},"in_reply_to":"1a1ced50_f05f0d0c","updated":"2017-03-20 10:00:39.000000000","message":"Correct :)","commit_id":"4d3455ddddd811d85f5e05ef47db0b3ed884a2b1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"10754583f37e30d37e1542487207328a5e619a09","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    \"\"\"Runs a number of tests on the expected Quobyte mount\"\"\""},{"line_number":76,"context_line":"    partitions \u003d psutil.disk_partitions(all\u003dTrue)"},{"line_number":77,"context_line":"    for p in partitions:"},{"line_number":78,"context_line":"        if mount_path \u003d\u003d p.mountpoint:"},{"line_number":79,"context_line":"            if p.device.startswith(\"quobyte@\"):"},{"line_number":80,"context_line":"                try:"},{"line_number":81,"context_line":"                    statresult \u003d os.stat(mount_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_66c1d02e","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":38},"updated":"2017-03-16 16:34:28.000000000","message":"nit: You could lessen the indentation here by fast exiting\n\n    if mount_path !\u003d p.mountpoint:\n        continue","commit_id":"4d3455ddddd811d85f5e05ef47db0b3ed884a2b1"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d723b6123d6a977e8dcc3652126c5d797a1e3b8a","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    \"\"\"Runs a number of tests on the expected Quobyte mount\"\"\""},{"line_number":76,"context_line":"    partitions \u003d psutil.disk_partitions(all\u003dTrue)"},{"line_number":77,"context_line":"    for p in partitions:"},{"line_number":78,"context_line":"        if mount_path \u003d\u003d p.mountpoint:"},{"line_number":79,"context_line":"            if p.device.startswith(\"quobyte@\"):"},{"line_number":80,"context_line":"                try:"},{"line_number":81,"context_line":"                    statresult \u003d os.stat(mount_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_b0cbd571","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":38},"in_reply_to":"1a1ced50_66c1d02e","updated":"2017-03-17 15:01:10.000000000","message":"Good idea, done","commit_id":"4d3455ddddd811d85f5e05ef47db0b3ed884a2b1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"10754583f37e30d37e1542487207328a5e619a09","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            if p.device.startswith(\"quobyte@\"):"},{"line_number":80,"context_line":"                try:"},{"line_number":81,"context_line":"                    statresult \u003d os.stat(mount_path)"},{"line_number":82,"context_line":"                    if statresult.st_size \u003d\u003d 0:"},{"line_number":83,"context_line":"                        # client looks healthy"},{"line_number":84,"context_line":"                        if not os.access(mount_path,"},{"line_number":85,"context_line":"                                         os.W_OK | os.X_OK):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_a6f2e86d","line":82,"range":{"start_line":82,"start_character":20,"end_line":82,"end_character":47},"updated":"2017-03-16 16:34:28.000000000","message":"Why would this be 0? Might be worth a comment unless it\u0027s obvious to someone working with storage more regularly than I","commit_id":"4d3455ddddd811d85f5e05ef47db0b3ed884a2b1"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d723b6123d6a977e8dcc3652126c5d797a1e3b8a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            if p.device.startswith(\"quobyte@\"):"},{"line_number":80,"context_line":"                try:"},{"line_number":81,"context_line":"                    statresult \u003d os.stat(mount_path)"},{"line_number":82,"context_line":"                    if statresult.st_size \u003d\u003d 0:"},{"line_number":83,"context_line":"                        # client looks healthy"},{"line_number":84,"context_line":"                        if not os.access(mount_path,"},{"line_number":85,"context_line":"                                         os.W_OK | os.X_OK):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_500f01e1","line":82,"range":{"start_line":82,"start_character":20,"end_line":82,"end_character":47},"in_reply_to":"1a1ced50_a6f2e86d","updated":"2017-03-17 15:01:10.000000000","message":"This is a trait specific to Quobyte, not a general storage systems thing.\nI\u0027ll add a comment on this.","commit_id":"4d3455ddddd811d85f5e05ef47db0b3ed884a2b1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"10754583f37e30d37e1542487207328a5e619a09","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        if not mounted:"},{"line_number":154,"context_line":"            mount_volume(quobyte_volume,"},{"line_number":155,"context_line":"                         mount_path,"},{"line_number":156,"context_line":"                         CONF.libvirt.quobyte_client_cfg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        validate_volume(mount_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_46fcd43e","line":155,"updated":"2017-03-16 16:34:28.000000000","message":"I\u0027ll allow it","commit_id":"4d3455ddddd811d85f5e05ef47db0b3ed884a2b1"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d723b6123d6a977e8dcc3652126c5d797a1e3b8a","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        if not mounted:"},{"line_number":154,"context_line":"            mount_volume(quobyte_volume,"},{"line_number":155,"context_line":"                         mount_path,"},{"line_number":156,"context_line":"                         CONF.libvirt.quobyte_client_cfg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        validate_volume(mount_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_907c1922","line":155,"in_reply_to":"1a1ced50_46fcd43e","updated":"2017-03-17 15:01:10.000000000","message":"thnx","commit_id":"4d3455ddddd811d85f5e05ef47db0b3ed884a2b1"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"848ff18333718cc2e88157fc884250c4f4de621a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \"\"\"Wraps execute calls for mounting a Quobyte volume\"\"\""},{"line_number":47,"context_line":"    fileutils.ensure_tree(mnt_base)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    command \u003d [\u0027mount.quobyte\u0027, \u0027--disable-xattrs\u0027, volume, mnt_base]"},{"line_number":50,"context_line":"    if configfile:"},{"line_number":51,"context_line":"        command.extend([\u0027-c\u0027, configfile])"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_c8017f08","line":49,"updated":"2017-03-28 14:55:33.000000000","message":"As a casual reader, this looks like a functional requirement to me. I would have no idea why it\u0027s there, and I\u0027d be scared to touch it. It\u0027s just a performance thing, though.\n\nVoodoo like this needs a big comment block. If I\u0027ve understood the LP bug correctly, this is a performance issue in the quobyte client? If so, the comment should include a link to somewhere that a maintainer can look to see if the issue has been resolved. Ideally this would be a quobyte bug tracker.","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"ace03a68f41a94c92e3afd9afb20186112f07638","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \"\"\"Wraps execute calls for mounting a Quobyte volume\"\"\""},{"line_number":47,"context_line":"    fileutils.ensure_tree(mnt_base)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    command \u003d [\u0027mount.quobyte\u0027, \u0027--disable-xattrs\u0027, volume, mnt_base]"},{"line_number":50,"context_line":"    if configfile:"},{"line_number":51,"context_line":"        command.extend([\u0027-c\u0027, configfile])"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_36b8a074","line":49,"in_reply_to":"ffe62b97_c8017f08","updated":"2017-04-03 12:07:21.000000000","message":"I\u0027ll update with a detailed comment.","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"848ff18333718cc2e88157fc884250c4f4de621a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                          mnt_base)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_volume(mount_path):"},{"line_number":75,"context_line":"    \"\"\"Runs a number of tests on the expected Quobyte mount\"\"\""},{"line_number":76,"context_line":"    partitions \u003d psutil.disk_partitions(all\u003dTrue)"},{"line_number":77,"context_line":"    for p in partitions:"}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_75f12b6b","line":74,"updated":"2017-03-28 14:55:33.000000000","message":"Thought: This is very complicated. Do we need all of this? This is only our check that our mount that we did a couple of milliseconds ago in this thread succeeded or not. It\u0027s not a monitor task for an ongoing job, and it doesn\u0027t do any recovery. What\u0027s wrong with:\n\n  os.path.ismount(mount_path)","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"ace03a68f41a94c92e3afd9afb20186112f07638","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                          mnt_base)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_volume(mount_path):"},{"line_number":75,"context_line":"    \"\"\"Runs a number of tests on the expected Quobyte mount\"\"\""},{"line_number":76,"context_line":"    partitions \u003d psutil.disk_partitions(all\u003dTrue)"},{"line_number":77,"context_line":"    for p in partitions:"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_1617dc53","line":74,"in_reply_to":"ffe62b97_75f12b6b","updated":"2017-04-03 12:07:21.000000000","message":"This should make sure this really is a Quobyte volume mount point. If it\u0027s a mountpoint mounted by somebody else there might be issues with env settings used by the driver/Nova (aio \u0026 cache mode, etc.). Thus i do a range of checks in order to be sure this is a Quobyte mount.\nI can state this more clearly in the method desc. in the next patch update.","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"848ff18333718cc2e88157fc884250c4f4de621a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                if statresult.st_size \u003d\u003d 0:"},{"line_number":85,"context_line":"                    # client looks healthy"},{"line_number":86,"context_line":"                    if not os.access(mount_path,"},{"line_number":87,"context_line":"                                     os.W_OK | os.X_OK):"},{"line_number":88,"context_line":"                        LOG.warning(_LW(\"Volume is not writable. \""},{"line_number":89,"context_line":"                                        \"Please broaden the file\""},{"line_number":90,"context_line":"                                        \" permissions.\""}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_386ddacb","line":87,"updated":"2017-03-28 14:55:33.000000000","message":"This check isn\u0027t correct. This is checking that Nova has write access to the mount path itself. This is the permission required to create new files in the directory. Nova doesn\u0027t require this, so ideally it would be configured such that this would always fail. Nova only needs write permissions on files in the directory which have been previously created by cinder.","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"ace03a68f41a94c92e3afd9afb20186112f07638","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                if statresult.st_size \u003d\u003d 0:"},{"line_number":85,"context_line":"                    # client looks healthy"},{"line_number":86,"context_line":"                    if not os.access(mount_path,"},{"line_number":87,"context_line":"                                     os.W_OK | os.X_OK):"},{"line_number":88,"context_line":"                        LOG.warning(_LW(\"Volume is not writable. \""},{"line_number":89,"context_line":"                                        \"Please broaden the file\""},{"line_number":90,"context_line":"                                        \" permissions.\""}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_013c34c6","line":87,"in_reply_to":"ffe62b97_386ddacb","updated":"2017-04-03 12:07:21.000000000","message":"I wasn\u0027t absolutely sure of this, I can remove this.","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"848ff18333718cc2e88157fc884250c4f4de621a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    msg \u003d (_(\"The mount %(mount_path)s is not a \""},{"line_number":96,"context_line":"                             \"valid Quobyte volume. Stale mount?\")"},{"line_number":97,"context_line":"                           % {\u0027mount_path\u0027: mount_path})"},{"line_number":98,"context_line":"                raise nova_exception.InvalidVolume(msg)"},{"line_number":99,"context_line":"            except Exception as exc:"},{"line_number":100,"context_line":"                msg \u003d (_(\"The mount %(mount_path)s is not a valid\""},{"line_number":101,"context_line":"                         \" Quobyte volume. Error: %(exc)s . \""}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_18ce96b3","line":98,"updated":"2017-03-28 14:55:33.000000000","message":"I wonder if checking for this here would ever be useful in practise. If you\u0027ve got a stale mount your running instances are already going to have hit this.","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"58d3851b1dd9423b7821f28d5ad101d8fa336c9d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    msg \u003d (_(\"The mount %(mount_path)s is not a \""},{"line_number":96,"context_line":"                             \"valid Quobyte volume. Stale mount?\")"},{"line_number":97,"context_line":"                           % {\u0027mount_path\u0027: mount_path})"},{"line_number":98,"context_line":"                raise nova_exception.InvalidVolume(msg)"},{"line_number":99,"context_line":"            except Exception as exc:"},{"line_number":100,"context_line":"                msg \u003d (_(\"The mount %(mount_path)s is not a valid\""},{"line_number":101,"context_line":"                         \" Quobyte volume. Error: %(exc)s . \""}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_a6f0f968","line":98,"in_reply_to":"dfeb2761_211178ad","updated":"2017-04-03 14:01:43.000000000","message":"That\u0027s my point: something already running would already be failing.","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"ace03a68f41a94c92e3afd9afb20186112f07638","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    msg \u003d (_(\"The mount %(mount_path)s is not a \""},{"line_number":96,"context_line":"                             \"valid Quobyte volume. Stale mount?\")"},{"line_number":97,"context_line":"                           % {\u0027mount_path\u0027: mount_path})"},{"line_number":98,"context_line":"                raise nova_exception.InvalidVolume(msg)"},{"line_number":99,"context_line":"            except Exception as exc:"},{"line_number":100,"context_line":"                msg \u003d (_(\"The mount %(mount_path)s is not a valid\""},{"line_number":101,"context_line":"                         \" Quobyte volume. Error: %(exc)s . \""}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_211178ad","line":98,"in_reply_to":"ffe62b97_18ce96b3","updated":"2017-04-03 12:07:21.000000000","message":"As multiple instances can have their images stored on a single mountpoint/Quobyte volume I\u0027d think scenarios might come up where this is not immediately being hit?","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"848ff18333718cc2e88157fc884250c4f4de621a","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                         \" Quobyte volume. Error: %(exc)s . \""},{"line_number":102,"context_line":"                         \" Possibly a Quobyte client crash?\")"},{"line_number":103,"context_line":"                       % {\u0027mount_path\u0027: mount_path, \u0027exc\u0027: exc})"},{"line_number":104,"context_line":"                raise nova_exception.InvalidVolume(msg)"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            msg \u003d (_(\"The mount %(mount_path)s is not a valid\""},{"line_number":107,"context_line":"                     \" Quobyte volume according to partition list.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_182a162b","line":104,"updated":"2017-03-28 14:55:33.000000000","message":"Again, not convinced this is likely to be useful in practise. If this is really a thing, perhaps some periodic task to check it\u0027s still running and kick it if it\u0027s not?","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"58d3851b1dd9423b7821f28d5ad101d8fa336c9d","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                         \" Quobyte volume. Error: %(exc)s . \""},{"line_number":102,"context_line":"                         \" Possibly a Quobyte client crash?\")"},{"line_number":103,"context_line":"                       % {\u0027mount_path\u0027: mount_path, \u0027exc\u0027: exc})"},{"line_number":104,"context_line":"                raise nova_exception.InvalidVolume(msg)"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            msg \u003d (_(\"The mount %(mount_path)s is not a valid\""},{"line_number":107,"context_line":"                     \" Quobyte volume according to partition list.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_c98c2e81","line":104,"in_reply_to":"dfeb2761_a1c0e82b","updated":"2017-04-03 14:01:43.000000000","message":"Why would it ever not be a Quobyte volume? This code is only ever called on a Quobyte mountpoint immediately after calling mount, so if this isn\u0027t a Quobyte mount it would either be operator interference or a programming error. Sanity checks are great, but this just feels too heavy for that.\n\nA permission check on the specific file being accessed might provide a better error message, but qemu is going to complain about it pretty specifically almost immediately anyway, so even that is of limited use.\n\nI just suspect this this would ironically end up being more a source of error than a shield from it.\n\nI won\u0027t give this patch a -1 just for this, though. I don\u0027t think it\u0027s bad, just a bit pointless and not worth the added complexity. If you\u0027re convinced the checks need to be here: it\u0027s your driver.","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"99d15f7fa25872a324ec2a0a91876eeada1b49ad","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                         \" Quobyte volume. Error: %(exc)s . \""},{"line_number":102,"context_line":"                         \" Possibly a Quobyte client crash?\")"},{"line_number":103,"context_line":"                       % {\u0027mount_path\u0027: mount_path, \u0027exc\u0027: exc})"},{"line_number":104,"context_line":"                raise nova_exception.InvalidVolume(msg)"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            msg \u003d (_(\"The mount %(mount_path)s is not a valid\""},{"line_number":107,"context_line":"                     \" Quobyte volume according to partition list.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_d1ef141c","line":104,"in_reply_to":"dfeb2761_c98c2e81","updated":"2017-04-04 12:12:53.000000000","message":"Appreciate the feedback. I reduced this a bit while keeping the basic checks in place, see next update.","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"ace03a68f41a94c92e3afd9afb20186112f07638","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                         \" Quobyte volume. Error: %(exc)s . \""},{"line_number":102,"context_line":"                         \" Possibly a Quobyte client crash?\")"},{"line_number":103,"context_line":"                       % {\u0027mount_path\u0027: mount_path, \u0027exc\u0027: exc})"},{"line_number":104,"context_line":"                raise nova_exception.InvalidVolume(msg)"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            msg \u003d (_(\"The mount %(mount_path)s is not a valid\""},{"line_number":107,"context_line":"                     \" Quobyte volume according to partition list.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_a1c0e82b","line":104,"in_reply_to":"ffe62b97_182a162b","updated":"2017-04-03 12:07:21.000000000","message":"As stated above, this is less about runtime monitoring and more about making sure this is a Quobyte volume mounted here.\nMaybe it is preferred not to catch the underlying exception but just let it raise?","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"848ff18333718cc2e88157fc884250c4f4de621a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    msg \u003d (_(\"No matching Quobyte mount entry for %(mount_path)s\""},{"line_number":111,"context_line":"             \" could be found for validation in partition list.\")"},{"line_number":112,"context_line":"           % {\u0027mount_path\u0027: mount_path})"},{"line_number":113,"context_line":"    raise nova_exception.InvalidVolume(msg)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class LibvirtQuobyteVolumeDriver(fs.LibvirtBaseFileSystemVolumeDriver):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_95702f0a","line":113,"updated":"2017-03-28 14:55:33.000000000","message":"Thanks for changing this error :)","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"99d15f7fa25872a324ec2a0a91876eeada1b49ad","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    msg \u003d (_(\"No matching Quobyte mount entry for %(mount_path)s\""},{"line_number":111,"context_line":"             \" could be found for validation in partition list.\")"},{"line_number":112,"context_line":"           % {\u0027mount_path\u0027: mount_path})"},{"line_number":113,"context_line":"    raise nova_exception.InvalidVolume(msg)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"class LibvirtQuobyteVolumeDriver(fs.LibvirtBaseFileSystemVolumeDriver):"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_71de086e","line":113,"in_reply_to":"ffe62b97_95702f0a","updated":"2017-04-04 12:12:53.000000000","message":"welcome :)","commit_id":"e2c81e2f164873b1be1a8ba6f59724f3039fb9d7"}]}
