)]}'
{"etc/nova/rootwrap.d/compute.filters":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"01e5530283e72be165688d8ec28d9354a72de8ef","unresolved":false,"context_lines":[{"line_number":255,"context_line":"# nova/virt/libvirt/volume/quobyte.py"},{"line_number":256,"context_line":"mount.quobyte: CommandFilter, mount.quobyte, root"},{"line_number":257,"context_line":"umount.quobyte: CommandFilter, umount.quobyte, root"},{"line_number":258,"context_line":"systemd-run: CommandFilter, systemd-run, root"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"# nova/virt/libvirt/utils.py:"},{"line_number":261,"context_line":"ploop: RegExpFilter, ploop, root, ploop, init, -s, .*, -f, .*, -t, .*, .*"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"dfeb2761_6938b4d2","line":258,"updated":"2017-03-31 16:31:53.000000000","message":"These shouldn\u0027t be required.","commit_id":"a3dc80afcfffe7b8ef2091975e1f4faebb0a836e"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"537959f1d9caa3bace32108fb563c1bcf4833aa4","unresolved":false,"context_lines":[{"line_number":255,"context_line":"# nova/virt/libvirt/volume/quobyte.py"},{"line_number":256,"context_line":"mount.quobyte: CommandFilter, mount.quobyte, root"},{"line_number":257,"context_line":"umount.quobyte: CommandFilter, umount.quobyte, root"},{"line_number":258,"context_line":"systemd-run: CommandFilter, systemd-run, root"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"# nova/virt/libvirt/utils.py:"},{"line_number":261,"context_line":"ploop: RegExpFilter, ploop, root, ploop, init, -s, .*, -f, .*, -t, .*, .*"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"dfeb2761_a5444f1c","line":258,"in_reply_to":"dfeb2761_6938b4d2","updated":"2017-04-04 09:53:22.000000000","message":"Done","commit_id":"a3dc80afcfffe7b8ef2091975e1f4faebb0a836e"}],"nova/virt/libvirt/volume/quobyte.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"f1d5f98a6dd9868f3dc35af57a189c995eb13b04","unresolved":false,"context_lines":[{"line_number":56,"context_line":"              volume,"},{"line_number":57,"context_line":"              mnt_base)"},{"line_number":58,"context_line":"    # Run mount command but do not fail on already mounted exit code"},{"line_number":59,"context_line":"    utils.execute(*command, check_exit_code\u003d[0, 4], run_as_root\u003dTrue)"},{"line_number":60,"context_line":"    LOG.info(_LI(\u0027Mounted volume: %s\u0027), volume)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_f4d6d94f","line":59,"range":{"start_line":59,"start_character":28,"end_line":59,"end_character":43},"updated":"2017-03-24 17:05:39.000000000","message":"Unfortunately, because you\u0027ve executed this via systemd you\u0027ve lost the exit code, so this is never going to catch a failure of the mount command.","commit_id":"6518da04d9068ec68e964415e23e4ced89d6d420"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"158410bbb403915ba993c14ef5d40a631ab684fa","unresolved":false,"context_lines":[{"line_number":56,"context_line":"              volume,"},{"line_number":57,"context_line":"              mnt_base)"},{"line_number":58,"context_line":"    # Run mount command but do not fail on already mounted exit code"},{"line_number":59,"context_line":"    utils.execute(*command, check_exit_code\u003d[0, 4], run_as_root\u003dTrue)"},{"line_number":60,"context_line":"    LOG.info(_LI(\u0027Mounted volume: %s\u0027), volume)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_d22034af","line":59,"range":{"start_line":59,"start_character":28,"end_line":59,"end_character":43},"in_reply_to":"ffe62b97_f4d6d94f","updated":"2017-03-27 20:06:37.000000000","message":"hmm, --wait option seems to be needed but that is available only on newer systemd versions (233 has it, 229 not).\n\nI\u0027ll probably have to resort to manual wait \u0026 check to solve this. Means a loop that runs validate_volume in iterations to check if the mount comes up. I did not find a way in systemd-run to get reliable process startup/exit value feedback without --wait.","commit_id":"6518da04d9068ec68e964415e23e4ced89d6d420"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"f1d5f98a6dd9868f3dc35af57a189c995eb13b04","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        if not mounted:"},{"line_number":133,"context_line":"            mount_volume(quobyte_volume,"},{"line_number":134,"context_line":"                         mount_path,"},{"line_number":135,"context_line":"                         CONF.libvirt.quobyte_client_cfg)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        validate_volume(mount_path)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_f4d7f922","line":135,"updated":"2017-03-24 17:05:39.000000000","message":"The manpage of systemd-run documents a --no-block option, suggesting that the default operation is blocking. However, this is misleading as the default service type is simple, meaning it\u0027s going to return immediately anyway. This means that you\u0027ve got a race here between mount_volume, which is happening asynchronously, and validate_volume below.","commit_id":"6518da04d9068ec68e964415e23e4ced89d6d420"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"158410bbb403915ba993c14ef5d40a631ab684fa","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        if not mounted:"},{"line_number":133,"context_line":"            mount_volume(quobyte_volume,"},{"line_number":134,"context_line":"                         mount_path,"},{"line_number":135,"context_line":"                         CONF.libvirt.quobyte_client_cfg)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        validate_volume(mount_path)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_f500c203","line":135,"in_reply_to":"ffe62b97_f4d7f922","updated":"2017-03-27 20:06:37.000000000","message":"Yes, I verified this issue. I\u0027ll use the same validation loop approach as mentioned in the comment above.","commit_id":"6518da04d9068ec68e964415e23e4ced89d6d420"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ced1f947556c22d7a716b32aa306b4a5cf869c09","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    if os.path.exists(\" /run/systemd/system\"):"},{"line_number":50,"context_line":"        # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":51,"context_line":"        # prevent Nova service stop/restarts from killing the mount."},{"line_number":52,"context_line":"        command \u003d [\u0027systemd-run\u0027, \u0027mount.quobyte\u0027, \u0027-f\u0027, volume, mnt_base]"},{"line_number":53,"context_line":"    if configfile:"},{"line_number":54,"context_line":"        command.extend([\u0027-c\u0027, configfile])"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_b5058448","line":52,"updated":"2017-03-28 09:22:53.000000000","message":"Hmm, sucks that --service-type\u003dforking didn\u0027t work. It would be a whole lot simpler if it could be solved here.","commit_id":"217702abc5d754795151c4434d72c1226793dd5f"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ced1f947556c22d7a716b32aa306b4a5cf869c09","unresolved":false,"context_lines":[{"line_number":58,"context_line":"              mnt_base)"},{"line_number":59,"context_line":"    # Run mount command but do not fail on already mounted exit code"},{"line_number":60,"context_line":"    utils.execute(*command, run_as_root\u003dTrue)"},{"line_number":61,"context_line":"    if validate_and_wait(mnt_base):"},{"line_number":62,"context_line":"        LOG.info(_LI(\u0027Mounted volume: %s\u0027), volume)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_957cc01f","line":61,"updated":"2017-03-28 09:22:53.000000000","message":"You want to do more than omit a log message when this fails. It used to raise an exception on failure. We should keep that behaviour.","commit_id":"217702abc5d754795151c4434d72c1226793dd5f"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ced1f947556c22d7a716b32aa306b4a5cf869c09","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                          mnt_base)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"def validate_and_wait(mnt_base, max_checks\u003d30):"},{"line_number":79,"context_line":"    \"\"\"Loops iterations of validate_volume with up to 30 0.1s interrupts\"\"\""},{"line_number":80,"context_line":"    if max_checks \u003e 30:"},{"line_number":81,"context_line":"        max_checks \u003d 30"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_a7b6773d","line":78,"range":{"start_line":78,"start_character":32,"end_line":78,"end_character":45},"updated":"2017-03-28 09:22:53.000000000","message":"nit: this isn\u0027t a great name as it doesn\u0027t say what it\u0027s waiting for. wait_for_validate, or wait_for_mount might be better.\n\nnot a nit: max_checks is never going to be tweaked per-caller: just hardcode it.","commit_id":"217702abc5d754795151c4434d72c1226793dd5f"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ced1f947556c22d7a716b32aa306b4a5cf869c09","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    if max_checks \u003e 30:"},{"line_number":81,"context_line":"        max_checks \u003d 30"},{"line_number":82,"context_line":"    for x in range(0, max_checks):"},{"line_number":83,"context_line":"        if validate_volume(mnt_base):"},{"line_number":84,"context_line":"            return True"},{"line_number":85,"context_line":"        else:"},{"line_number":86,"context_line":"            sleep(0.1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_7557fc27","line":83,"updated":"2017-03-28 09:22:53.000000000","message":"Because of the bug in validate_volume below this will just raise an exception first time round if the volume isn\u0027t mounted immediately. IOW it doesn\u0027t wait, and it\u0027s still a race.\n\nMay I suggest that you leave out the changes to validate_volume below and allow it to raise its exception. Then you can do:\n\n  for ...\n    try:\n      validate_volume(mnt_base)\n      return\n    except nova_exception.InternalError: # Ugh, see below\n      sleep(0.1)\n\n  raise SomeNewFailedToMountException\n\nThis would have the added advantage that mount_volume above would raise an exception on failure, which would restore the previous behaviour.","commit_id":"217702abc5d754795151c4434d72c1226793dd5f"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ced1f947556c22d7a716b32aa306b4a5cf869c09","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        msg \u003d (_(\"The mount %(mount_path)s is not a valid\""},{"line_number":98,"context_line":"                 \" Quobyte volume. Error: %(exc)s\")"},{"line_number":99,"context_line":"               % {\u0027mount_path\u0027: mnt_base, \u0027exc\u0027: exc})"},{"line_number":100,"context_line":"        raise nova_exception.InternalError(msg)"},{"line_number":101,"context_line":"        return False"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    if not os.access(mnt_base, os.W_OK | os.X_OK):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_e7147f46","line":100,"updated":"2017-03-28 09:22:53.000000000","message":"Don\u0027t fix it in this patch (not related), but this is most definitely not an InternalError!","commit_id":"217702abc5d754795151c4434d72c1226793dd5f"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ced1f947556c22d7a716b32aa306b4a5cf869c09","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                 \" Quobyte volume. Error: %(exc)s\")"},{"line_number":99,"context_line":"               % {\u0027mount_path\u0027: mnt_base, \u0027exc\u0027: exc})"},{"line_number":100,"context_line":"        raise nova_exception.InternalError(msg)"},{"line_number":101,"context_line":"        return False"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    if not os.access(mnt_base, os.W_OK | os.X_OK):"},{"line_number":104,"context_line":"        msg \u003d (_LE(\"Volume is not writable. Please broaden the file\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_150c30eb","line":101,"updated":"2017-03-28 09:22:53.000000000","message":"This is redundant, as the previous line raises an exception.","commit_id":"217702abc5d754795151c4434d72c1226793dd5f"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"01e5530283e72be165688d8ec28d9354a72de8ef","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    fileutils.ensure_tree(mnt_base)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    command \u003d [\u0027mount.quobyte\u0027, volume, mnt_base]"},{"line_number":48,"context_line":"    if os.path.exists(\" /run/systemd/system\"):"},{"line_number":49,"context_line":"        # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":50,"context_line":"        # prevent Nova service stop/restarts from killing the mount."},{"line_number":51,"context_line":"        command \u003d [\u0027systemd-run\u0027, \u0027--scope\u0027, \u0027mount.quobyte\u0027, volume, mnt_base]"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfeb2761_09e92819","line":48,"updated":"2017-03-31 16:31:53.000000000","message":"This directory is present on both RHEL 7 and Fedora 25. This heuristic is probably ok, although checking the output of systemctl is-system-running for the value \u0027offline\u0027 is probably more robust. Can you confirm this directory is present on Ubuntu?","commit_id":"a3dc80afcfffe7b8ef2091975e1f4faebb0a836e"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"537959f1d9caa3bace32108fb563c1bcf4833aa4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    fileutils.ensure_tree(mnt_base)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    command \u003d [\u0027mount.quobyte\u0027, volume, mnt_base]"},{"line_number":48,"context_line":"    if os.path.exists(\" /run/systemd/system\"):"},{"line_number":49,"context_line":"        # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":50,"context_line":"        # prevent Nova service stop/restarts from killing the mount."},{"line_number":51,"context_line":"        command \u003d [\u0027systemd-run\u0027, \u0027--scope\u0027, \u0027mount.quobyte\u0027, volume, mnt_base]"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfeb2761_9ce1cb2d","line":48,"in_reply_to":"dfeb2761_09e92819","updated":"2017-04-04 09:53:22.000000000","message":"Yes, i tested this on xenial. I looked a while into how to detect systemd. This approach was recommended by Daniel P.B.","commit_id":"a3dc80afcfffe7b8ef2091975e1f4faebb0a836e"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"01e5530283e72be165688d8ec28d9354a72de8ef","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    if os.path.exists(\" /run/systemd/system\"):"},{"line_number":49,"context_line":"        # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":50,"context_line":"        # prevent Nova service stop/restarts from killing the mount."},{"line_number":51,"context_line":"        command \u003d [\u0027systemd-run\u0027, \u0027--scope\u0027, \u0027mount.quobyte\u0027, volume, mnt_base]"},{"line_number":52,"context_line":"    if configfile:"},{"line_number":53,"context_line":"        command.extend([\u0027-c\u0027, configfile])"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dfeb2761_e6f4f35d","line":51,"updated":"2017-03-31 16:31:53.000000000","message":"I\u0027ve tested this on Fedora 25 (systemd-231-14) and RHEL 7 (systemd-219-30) and this both blocks as expected, and returns an exit code, so all good.\n\nAs discussed on IRC, given the bug you\u0027re trying to solve I think you should test that stopping the nova-compute systemd unit doesn\u0027t also stop the scope unit. I don\u0027t think it will, but if you\u0027ve already got a test rig you should check. A functional test for this would be fantastic, but given how logistically awkward it would be to actually have it run it\u0027s probably not worth it.","commit_id":"a3dc80afcfffe7b8ef2091975e1f4faebb0a836e"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"537959f1d9caa3bace32108fb563c1bcf4833aa4","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    if os.path.exists(\" /run/systemd/system\"):"},{"line_number":49,"context_line":"        # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":50,"context_line":"        # prevent Nova service stop/restarts from killing the mount."},{"line_number":51,"context_line":"        command \u003d [\u0027systemd-run\u0027, \u0027--scope\u0027, \u0027mount.quobyte\u0027, volume, mnt_base]"},{"line_number":52,"context_line":"    if configfile:"},{"line_number":53,"context_line":"        command.extend([\u0027-c\u0027, configfile])"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dfeb2761_02bf7161","line":51,"in_reply_to":"dfeb2761_e6f4f35d","updated":"2017-04-04 09:53:22.000000000","message":"I tested this in different variants with nested systemd-run setups, behaviour was as intended.\nI\u0027ll keep the functional testing in mind, althought it won\u0027t be implemented right now.","commit_id":"a3dc80afcfffe7b8ef2091975e1f4faebb0a836e"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"01e5530283e72be165688d8ec28d9354a72de8ef","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    LOG.debug(\u0027Mounting volume %s at mount point %s ...\u0027,"},{"line_number":56,"context_line":"              volume,"},{"line_number":57,"context_line":"              mnt_base)"},{"line_number":58,"context_line":"    utils.execute(*command, run_as_root\u003dTrue)"},{"line_number":59,"context_line":"    LOG.info(_LI(\u0027Mounted volume: %s\u0027), volume)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dfeb2761_a90d9c38","line":58,"updated":"2017-03-31 16:31:53.000000000","message":"I\u0027ve only just noticed that you\u0027ve added this as a rootwrap where it previously presumably didn\u0027t need it. In that case you still don\u0027t need rootwrap here, as you should be able to use systemd-run --user ... above.","commit_id":"a3dc80afcfffe7b8ef2091975e1f4faebb0a836e"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"537959f1d9caa3bace32108fb563c1bcf4833aa4","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    LOG.debug(\u0027Mounting volume %s at mount point %s ...\u0027,"},{"line_number":56,"context_line":"              volume,"},{"line_number":57,"context_line":"              mnt_base)"},{"line_number":58,"context_line":"    utils.execute(*command, run_as_root\u003dTrue)"},{"line_number":59,"context_line":"    LOG.info(_LI(\u0027Mounted volume: %s\u0027), volume)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dfeb2761_c5f3d309","line":58,"in_reply_to":"dfeb2761_a90d9c38","updated":"2017-04-04 09:53:22.000000000","message":"Done","commit_id":"a3dc80afcfffe7b8ef2091975e1f4faebb0a836e"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"9d7d459332a15047db2b76bdfcb40c3886c67a2b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    LOG.debug(\u0027Mounting volume %s at mount point %s ...\u0027,"},{"line_number":57,"context_line":"              volume,"},{"line_number":58,"context_line":"              mnt_base)"},{"line_number":59,"context_line":"    utils.execute(*command)"},{"line_number":60,"context_line":"    LOG.info(_LI(\u0027Mounted volume: %s\u0027), volume)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dfeb2761_d10b94d3","line":59,"updated":"2017-04-04 11:53:11.000000000","message":"With --scope and --user, the behaviour of the command executed under systemd is hopefully the same as it was before wrt exit code. Did you mean to leave out check_exit_code?","commit_id":"e201e72918ce1ac57a12ec1ad9f354ca89a64880"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"928ae9a0faabea4d1bb36bfa4ee02ba405ec3a74","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    LOG.debug(\u0027Mounting volume %s at mount point %s ...\u0027,"},{"line_number":57,"context_line":"              volume,"},{"line_number":58,"context_line":"              mnt_base)"},{"line_number":59,"context_line":"    utils.execute(*command)"},{"line_number":60,"context_line":"    LOG.info(_LI(\u0027Mounted volume: %s\u0027), volume)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dfeb2761_bc5d6116","line":59,"in_reply_to":"dfeb2761_d10b94d3","updated":"2017-04-05 08:36:02.000000000","message":"Yes, 0 is default anyways and in the latest discussions i found out that error code \u00274\u0027 may be thrown not only on already mounted but also in error cases where I want the driver to raise an exception. As connect_volume also checks for the correct mount/protocol prior to calling mount_volume this should be fine.\n\nHaving said that i realize this should probably go into a separate bug. I\u0027ll add that and update the message.","commit_id":"e201e72918ce1ac57a12ec1ad9f354ca89a64880"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"3c210c8737b902d63cdb8ff0ed4f0d96b4b71763","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    LOG.debug(\u0027Mounting volume %s at mount point %s ...\u0027,"},{"line_number":52,"context_line":"              volume,"},{"line_number":53,"context_line":"              mnt_base)"},{"line_number":54,"context_line":"    # Run mount command but do not fail on already mounted exit code"},{"line_number":55,"context_line":"    utils.execute(*command, check_exit_code\u003d[0, 4])"},{"line_number":56,"context_line":"    LOG.info(_LI(\u0027Mounted volume: %s\u0027), volume)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5ff73747_d79f71b2","side":"PARENT","line":54,"updated":"2017-04-24 11:00:28.000000000","message":"nit: unrelated change","commit_id":"1f81311d501b156404d7463fec5b830ef404be8b"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"20f2ae2871a629a8e8048ca1534964010751388b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    LOG.debug(\u0027Mounting volume %s at mount point %s ...\u0027,"},{"line_number":52,"context_line":"              volume,"},{"line_number":53,"context_line":"              mnt_base)"},{"line_number":54,"context_line":"    # Run mount command but do not fail on already mounted exit code"},{"line_number":55,"context_line":"    utils.execute(*command, check_exit_code\u003d[0, 4])"},{"line_number":56,"context_line":"    LOG.info(_LI(\u0027Mounted volume: %s\u0027), volume)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_7b2eb792","side":"PARENT","line":54,"in_reply_to":"5ff73747_d79f71b2","updated":"2017-05-23 10:19:11.000000000","message":"I\u0027ll do that if another updated is required.","commit_id":"1f81311d501b156404d7463fec5b830ef404be8b"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"3c210c8737b902d63cdb8ff0ed4f0d96b4b71763","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        if not mounted:"},{"line_number":129,"context_line":"            mount_volume(quobyte_volume,"},{"line_number":130,"context_line":"                                 mount_path,"},{"line_number":131,"context_line":"                                 CONF.libvirt.quobyte_client_cfg)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        validate_volume(mount_path)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5ff73747_97a9e9e0","side":"PARENT","line":131,"updated":"2017-04-24 11:00:28.000000000","message":"nit: unrelated change","commit_id":"1f81311d501b156404d7463fec5b830ef404be8b"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"20f2ae2871a629a8e8048ca1534964010751388b","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        if not mounted:"},{"line_number":129,"context_line":"            mount_volume(quobyte_volume,"},{"line_number":130,"context_line":"                                 mount_path,"},{"line_number":131,"context_line":"                                 CONF.libvirt.quobyte_client_cfg)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        validate_volume(mount_path)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_5b1f735a","side":"PARENT","line":131,"in_reply_to":"5ff73747_97a9e9e0","updated":"2017-05-23 10:19:11.000000000","message":"s.a.","commit_id":"1f81311d501b156404d7463fec5b830ef404be8b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ca57096b1dc52b1618c79e4276690dfed5506d4","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    command \u003d [\u0027mount.quobyte\u0027, volume, mnt_base]"},{"line_number":46,"context_line":"    if os.path.exists(\" /run/systemd/system\"):"},{"line_number":47,"context_line":"        # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":48,"context_line":"        # prevent Nova service stop/restarts from killing the mount."},{"line_number":49,"context_line":"        command \u003d [\u0027systemd-run\u0027, \u0027--scope\u0027, \u0027--user\u0027, \u0027mount.quobyte\u0027, volume,"},{"line_number":50,"context_line":"                   mnt_base]"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_5a6cd5cc","line":47,"range":{"start_line":47,"start_character":10,"end_line":47,"end_character":14},"updated":"2017-06-28 06:32:05.000000000","message":"NOTE\n\nI thought pep8 used to check for this.","commit_id":"036b53f5cd2b9a21f2f83f5e469b98bd8c360853"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ca57096b1dc52b1618c79e4276690dfed5506d4","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    if os.path.exists(\" /run/systemd/system\"):"},{"line_number":47,"context_line":"        # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":48,"context_line":"        # prevent Nova service stop/restarts from killing the mount."},{"line_number":49,"context_line":"        command \u003d [\u0027systemd-run\u0027, \u0027--scope\u0027, \u0027--user\u0027, \u0027mount.quobyte\u0027, volume,"},{"line_number":50,"context_line":"                   mnt_base]"},{"line_number":51,"context_line":"    if configfile:"},{"line_number":52,"context_line":"        command.extend([\u0027-c\u0027, configfile])"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_3aac79eb","line":49,"range":{"start_line":49,"start_character":20,"end_line":49,"end_character":31},"updated":"2017-06-28 06:32:05.000000000","message":"How are you getting away without having systemd-run in compute.filters for rootwrap?\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/etc/nova/rootwrap.d/compute.filters\n\nIs it because it doesn\u0027t need to run as root?","commit_id":"036b53f5cd2b9a21f2f83f5e469b98bd8c360853"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"f2fd02d93e936e39104e26dcaa645d065c5a1350","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    if os.path.exists(\" /run/systemd/system\"):"},{"line_number":47,"context_line":"        # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":48,"context_line":"        # prevent Nova service stop/restarts from killing the mount."},{"line_number":49,"context_line":"        command \u003d [\u0027systemd-run\u0027, \u0027--scope\u0027, \u0027--user\u0027, \u0027mount.quobyte\u0027, volume,"},{"line_number":50,"context_line":"                   mnt_base]"},{"line_number":51,"context_line":"    if configfile:"},{"line_number":52,"context_line":"        command.extend([\u0027-c\u0027, configfile])"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_4a3f3cd6","line":49,"range":{"start_line":49,"start_character":20,"end_line":49,"end_character":31},"in_reply_to":"5f201791_3aac79eb","updated":"2017-06-29 12:12:40.000000000","message":"it\u0027s running as --user, so it will just be the same user as nova compute.","commit_id":"036b53f5cd2b9a21f2f83f5e469b98bd8c360853"}]}
