)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f809512f52919527ccfff8f91ef0039edd2543ef","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Instead of rechecking for systemd multiple times check only"},{"line_number":10,"context_line":"once and cache the result in the Quobyte driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Furthermore this fixes a range of minor nits like adding"},{"line_number":13,"context_line":"comments, generalizing the libvirt privsep umount and"},{"line_number":14,"context_line":"clarifying variable names in related tests."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partial-bug: #1756823"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_3b334cf8","line":14,"range":{"start_line":12,"start_character":0,"end_line":14,"end_character":43},"updated":"2019-03-27 22:14:51.000000000","message":"include reference to the change that prompted these updates (I53f3a062ce419d1142d7dd3103fab565bb105e05)","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d3233e511c30ab3755a95b1d55c54958e025262d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Instead of rechecking for systemd multiple times check only"},{"line_number":10,"context_line":"once and cache the result in the Quobyte driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Furthermore this fixes a range of minor nits like adding"},{"line_number":13,"context_line":"comments, generalizing the libvirt privsep umount and"},{"line_number":14,"context_line":"clarifying variable names in related tests."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partial-bug: #1756823"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_4896834e","line":14,"range":{"start_line":12,"start_character":0,"end_line":14,"end_character":43},"in_reply_to":"5fc1f717_3b334cf8","updated":"2019-03-28 11:24:34.000000000","message":"Done","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f809512f52919527ccfff8f91ef0039edd2543ef","unresolved":false,"context_lines":[{"line_number":13,"context_line":"comments, generalizing the libvirt privsep umount and"},{"line_number":14,"context_line":"clarifying variable names in related tests."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partial-bug: #1756823"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Iba30c49f108af9055de1b1a5c7b1a8406d66cf1a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_7b423440","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":7},"updated":"2019-03-27 22:14:51.000000000","message":"Related (since you already closed the bug with the previous patch)","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d3233e511c30ab3755a95b1d55c54958e025262d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"comments, generalizing the libvirt privsep umount and"},{"line_number":14,"context_line":"clarifying variable names in related tests."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partial-bug: #1756823"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Iba30c49f108af9055de1b1a5c7b1a8406d66cf1a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_8881cbfd","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":7},"in_reply_to":"5fc1f717_7b423440","updated":"2019-03-28 11:24:34.000000000","message":"Done","commit_id":"a84a40676dcb12608363210072049bf01d720073"}],"nova/privsep/libvirt.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f809512f52919527ccfff8f91ef0039edd2543ef","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"@nova.privsep.sys_admin_pctxt.entrypoint"},{"line_number":281,"context_line":"def umount(mnt_base):"},{"line_number":282,"context_line":"    \"\"\"Unmount QB volume\"\"\""},{"line_number":283,"context_line":"    unprivileged_umount(mnt_base)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_9b3da0bc","line":282,"range":{"start_line":282,"start_character":15,"end_line":282,"end_character":17},"updated":"2019-03-27 22:14:51.000000000","message":"x","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d3233e511c30ab3755a95b1d55c54958e025262d","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"@nova.privsep.sys_admin_pctxt.entrypoint"},{"line_number":281,"context_line":"def umount(mnt_base):"},{"line_number":282,"context_line":"    \"\"\"Unmount QB volume\"\"\""},{"line_number":283,"context_line":"    unprivileged_umount(mnt_base)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_687a5f24","line":282,"range":{"start_line":282,"start_character":15,"end_line":282,"end_character":17},"in_reply_to":"5fc1f717_9b3da0bc","updated":"2019-03-28 11:24:34.000000000","message":"Done","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f809512f52919527ccfff8f91ef0039edd2543ef","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":"# NOTE(kaisers): this method is deliberately not wrapped in a privsep entryp."},{"line_number":287,"context_line":"def unprivileged_umount(mnt_base):"},{"line_number":288,"context_line":"    \"\"\"Unmount QB volume\"\"\""},{"line_number":289,"context_line":"    umnt_cmd \u003d [\u0027umount\u0027, mnt_base]"},{"line_number":290,"context_line":"    return processutils.execute(*umnt_cmd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_3b482c5a","line":288,"range":{"start_line":288,"start_character":15,"end_line":288,"end_character":17},"updated":"2019-03-27 22:14:51.000000000","message":"x","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d3233e511c30ab3755a95b1d55c54958e025262d","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":"# NOTE(kaisers): this method is deliberately not wrapped in a privsep entryp."},{"line_number":287,"context_line":"def unprivileged_umount(mnt_base):"},{"line_number":288,"context_line":"    \"\"\"Unmount QB volume\"\"\""},{"line_number":289,"context_line":"    umnt_cmd \u003d [\u0027umount\u0027, mnt_base]"},{"line_number":290,"context_line":"    return processutils.execute(*umnt_cmd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_0875db31","line":288,"range":{"start_line":288,"start_character":15,"end_line":288,"end_character":17},"in_reply_to":"5fc1f717_3b482c5a","updated":"2019-03-28 11:24:34.000000000","message":"Done","commit_id":"a84a40676dcb12608363210072049bf01d720073"}],"nova/tests/fixtures.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"61440b592ab2aa1b0a9910ec47e7915f11eaa435","unresolved":false,"context_lines":[{"line_number":2047,"context_line":"    def setUp(self):"},{"line_number":2048,"context_line":"        super(PrivsepFixture, self).setUp()"},{"line_number":2049,"context_line":"        self.useFixture(fixtures.MockPatchObject("},{"line_number":2050,"context_line":"            privsep.sys_admin_pctxt, \u0027client_mode\u0027, False))"},{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"class NoopQuotaDriverFixture(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_1bde826c","line":2050,"updated":"2019-03-28 14:42:28.000000000","message":"Do I get co-author credit for this? :P","commit_id":"2b15904afdc4bc7b17c34bc774386dec4eb3aa32"}],"nova/tests/unit/virt/libvirt/volume/test_quobyte.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f809512f52919527ccfff8f91ef0039edd2543ef","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        mypart.mountpoint \u003d self.TEST_MNT_POINT"},{"line_number":63,"context_line":"        return [mypart]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def tearDown(self):"},{"line_number":66,"context_line":"        super(QuobyteTestCase, self).tearDown()"},{"line_number":67,"context_line":"        # re-initialize global quobyte sysd vars after each test"},{"line_number":68,"context_line":"        quobyte.found_sysd \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_5b5c1818","line":65,"updated":"2019-03-27 22:14:51.000000000","message":"this should really be the first method defined (or second if you had a setUp)","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d3233e511c30ab3755a95b1d55c54958e025262d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        mypart.mountpoint \u003d self.TEST_MNT_POINT"},{"line_number":63,"context_line":"        return [mypart]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def tearDown(self):"},{"line_number":66,"context_line":"        super(QuobyteTestCase, self).tearDown()"},{"line_number":67,"context_line":"        # re-initialize global quobyte sysd vars after each test"},{"line_number":68,"context_line":"        quobyte.found_sysd \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_733b3437","line":65,"in_reply_to":"5fc1f717_5b5c1818","updated":"2019-03-28 11:24:34.000000000","message":"Removed this method altogether.","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f809512f52919527ccfff8f91ef0039edd2543ef","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def tearDown(self):"},{"line_number":66,"context_line":"        super(QuobyteTestCase, self).tearDown()"},{"line_number":67,"context_line":"        # re-initialize global quobyte sysd vars after each test"},{"line_number":68,"context_line":"        quobyte.found_sysd \u003d False"},{"line_number":69,"context_line":"        quobyte.sysd_checked \u003d False"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @ddt.data(u\"starting\", u\"running\", u\"degraded\")"},{"line_number":72,"context_line":"    @mock.patch.object(psutil.Process, \"name\", return_value\u003d\"systemd\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_bb7bbc78","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":36},"updated":"2019-03-27 22:14:51.000000000","message":"...but I wonder if it would be better to mock.patch these in a setUp so each test gets its own copy.","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d3233e511c30ab3755a95b1d55c54958e025262d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def tearDown(self):"},{"line_number":66,"context_line":"        super(QuobyteTestCase, self).tearDown()"},{"line_number":67,"context_line":"        # re-initialize global quobyte sysd vars after each test"},{"line_number":68,"context_line":"        quobyte.found_sysd \u003d False"},{"line_number":69,"context_line":"        quobyte.sysd_checked \u003d False"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @ddt.data(u\"starting\", u\"running\", u\"degraded\")"},{"line_number":72,"context_line":"    @mock.patch.object(psutil.Process, \"name\", return_value\u003d\"systemd\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_b30e7c89","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":36},"in_reply_to":"5fc1f717_bb7bbc78","updated":"2019-03-28 11:24:34.000000000","message":"I think i found an even better option by applying the mock to the test class which results all tests receiving the mocked variables. I\u0027ll upload the update shortly.","commit_id":"a84a40676dcb12608363210072049bf01d720073"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"61440b592ab2aa1b0a9910ec47e7915f11eaa435","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"@ddt.ddt"},{"line_number":37,"context_line":"@mock.patch.object(quobyte, \u0027found_sysd\u0027, False)"},{"line_number":38,"context_line":"@mock.patch.object(quobyte, \u0027sysd_checked\u0027, False)"},{"line_number":39,"context_line":"class QuobyteTestCase(test.NoDBTestCase):"},{"line_number":40,"context_line":"    \"\"\"Tests the nova.virt.libvirt.volume.quobyte module utilities.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_9b85925c","line":37,"updated":"2019-03-28 14:42:28.000000000","message":"++","commit_id":"2b15904afdc4bc7b17c34bc774386dec4eb3aa32"}],"nova/virt/libvirt/volume/quobyte.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2bb47ed8088de21f8625ef8d657b994cc68a2955","unresolved":false,"context_lines":[{"line_number":40,"context_line":"DRIVER_IO \u003d \u0027native\u0027"},{"line_number":41,"context_line":"VALID_SYSD_STATES \u003d [\"starting\", \"running\", \"degraded\"]"},{"line_number":42,"context_line":"SYSTEMCTL_CHECK_PATH \u003d \"/run/systemd/system\""},{"line_number":43,"context_line":"sysd_checked \u003d False"},{"line_number":44,"context_line":"found_sysd \u003d False"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_ac15b29d","line":43,"updated":"2019-03-28 17:05:19.000000000","message":"nit: A line above this would be nice","commit_id":"2b15904afdc4bc7b17c34bc774386dec4eb3aa32"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2bb47ed8088de21f8625ef8d657b994cc68a2955","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def mount_volume(volume, mnt_base, configfile\u003dNone):"},{"line_number":70,"context_line":"    \"\"\"Wraps execute calls for mounting a Quobyte volume\"\"\""},{"line_number":71,"context_line":"    global found_sysd"},{"line_number":72,"context_line":"    fileutils.ensure_tree(mnt_base)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Note(kaisers): with systemd this requires a separate CGROUP to"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_c73259a7","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":21},"updated":"2019-03-28 17:05:19.000000000","message":"not needed (you only need to use the \u0027global\u0027 keyword if you want to set the variable)","commit_id":"2b15904afdc4bc7b17c34bc774386dec4eb3aa32"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2bb47ed8088de21f8625ef8d657b994cc68a2955","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def umount_volume(mnt_base):"},{"line_number":89,"context_line":"    \"\"\"Wraps execute calls for unmouting a Quobyte volume\"\"\""},{"line_number":90,"context_line":"    global found_sysd"},{"line_number":91,"context_line":"    try:"},{"line_number":92,"context_line":"        if found_sysd:"},{"line_number":93,"context_line":"            libvirt.umount(mnt_base)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_ac7a92ed","line":90,"range":{"start_line":90,"start_character":0,"end_line":90,"end_character":21},"updated":"2019-03-28 17:05:19.000000000","message":"not needed","commit_id":"2b15904afdc4bc7b17c34bc774386dec4eb3aa32"},{"author":{"_account_id":29525,"name":"Artem Vasilyev","email":"artem.v.vasilyev@gmail.com","username":"artem.v.vasilyev"},"change_message_id":"c699f10d2b0bc7721b674b0df20b105941fc2a38","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":75,"context_line":"    # prevent Nova service stop/restarts from killing the mount."},{"line_number":76,"context_line":"    if found_sysd:"},{"line_number":77,"context_line":"        LOG.debug(\u0027Mounting volume %s at mount point %s via systemd-run\u0027,"},{"line_number":78,"context_line":"                  volume, mnt_base)"},{"line_number":79,"context_line":"        libvirt.systemd_run_qb_mount(volume, mnt_base, cfg_file\u003dconfigfile)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_b3442049","line":76,"range":{"start_line":76,"start_character":7,"end_line":76,"end_character":17},"updated":"2019-03-29 13:47:00.000000000","message":"Maybe I didn\u0027t get the point, but from the first glance it\u0027s not obvious that is_systemd() will be called before checking \"found_sysd\", and also sysd_checked is not used. Maybe it would be better to check for sysd_checked inside is_systemd() and return cached result if it is True?","commit_id":"7931f85fe66d4e024d7dd5396dcf38378af85470"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"f4784d5663cf552f53dc41c6ee511e4dbe8615a0","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":75,"context_line":"    # prevent Nova service stop/restarts from killing the mount."},{"line_number":76,"context_line":"    if found_sysd:"},{"line_number":77,"context_line":"        LOG.debug(\u0027Mounting volume %s at mount point %s via systemd-run\u0027,"},{"line_number":78,"context_line":"                  volume, mnt_base)"},{"line_number":79,"context_line":"        libvirt.systemd_run_qb_mount(volume, mnt_base, cfg_file\u003dconfigfile)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_6e39c2d6","line":76,"range":{"start_line":76,"start_character":7,"end_line":76,"end_character":17},"in_reply_to":"5fc1f717_2e718878","updated":"2019-04-02 06:25:30.000000000","message":"Yep, i\u0027ll move that","commit_id":"7931f85fe66d4e024d7dd5396dcf38378af85470"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d5abe964b9e19f115aafef39384490d5ccdd38de","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":75,"context_line":"    # prevent Nova service stop/restarts from killing the mount."},{"line_number":76,"context_line":"    if found_sysd:"},{"line_number":77,"context_line":"        LOG.debug(\u0027Mounting volume %s at mount point %s via systemd-run\u0027,"},{"line_number":78,"context_line":"                  volume, mnt_base)"},{"line_number":79,"context_line":"        libvirt.systemd_run_qb_mount(volume, mnt_base, cfg_file\u003dconfigfile)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_2e718878","line":76,"range":{"start_line":76,"start_character":7,"end_line":76,"end_character":17},"in_reply_to":"5fc1f717_5867fe52","updated":"2019-04-01 14:26:55.000000000","message":"I agree with this. sysd_checked and/or found_sysd should be private to this module, and everything should go through is_systemd(). This confused me when doing a manual rebase on a privsep patch last week.","commit_id":"7931f85fe66d4e024d7dd5396dcf38378af85470"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"3766325a6d727e485794f78b2cf44b572101c8e4","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Note(kaisers): with systemd this requires a separate CGROUP to"},{"line_number":75,"context_line":"    # prevent Nova service stop/restarts from killing the mount."},{"line_number":76,"context_line":"    if found_sysd:"},{"line_number":77,"context_line":"        LOG.debug(\u0027Mounting volume %s at mount point %s via systemd-run\u0027,"},{"line_number":78,"context_line":"                  volume, mnt_base)"},{"line_number":79,"context_line":"        libvirt.systemd_run_qb_mount(volume, mnt_base, cfg_file\u003dconfigfile)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_5867fe52","line":76,"range":{"start_line":76,"start_character":7,"end_line":76,"end_character":17},"in_reply_to":"5fc1f717_b3442049","updated":"2019-04-01 13:52:37.000000000","message":"+1, but it looks like we\u0027re late to the party. found_sysd should be an implementation detail of is_systemd(), and everything should call is_systemd().","commit_id":"7931f85fe66d4e024d7dd5396dcf38378af85470"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"3766325a6d727e485794f78b2cf44b572101c8e4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"def umount_volume(mnt_base):"},{"line_number":89,"context_line":"    \"\"\"Wraps execute calls for unmouting a Quobyte volume\"\"\""},{"line_number":90,"context_line":"    try:"},{"line_number":91,"context_line":"        if found_sysd:"},{"line_number":92,"context_line":"            libvirt.umount(mnt_base)"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            libvirt.unprivileged_umount(mnt_base)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_58acde34","line":91,"updated":"2019-04-01 13:52:37.000000000","message":"Unlike mount, which is always called after connect(), which calls is_systemd(), disconnect doesn\u0027t call is_systemd() first. IOW it\u0027s possible to call the wrong one here after a restart of n-cpu.\n\nIf we follow Artem\u0027s suggestion above this not only isn\u0027t a problem, but nobody even has to think about it.","commit_id":"7931f85fe66d4e024d7dd5396dcf38378af85470"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"f4784d5663cf552f53dc41c6ee511e4dbe8615a0","unresolved":false,"context_lines":[{"line_number":88,"context_line":"def umount_volume(mnt_base):"},{"line_number":89,"context_line":"    \"\"\"Wraps execute calls for unmouting a Quobyte volume\"\"\""},{"line_number":90,"context_line":"    try:"},{"line_number":91,"context_line":"        if found_sysd:"},{"line_number":92,"context_line":"            libvirt.umount(mnt_base)"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            libvirt.unprivileged_umount(mnt_base)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_4e3086e9","line":91,"in_reply_to":"5fc1f717_58acde34","updated":"2019-04-02 06:25:30.000000000","message":"yup","commit_id":"7931f85fe66d4e024d7dd5396dcf38378af85470"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"3766325a6d727e485794f78b2cf44b572101c8e4","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    \"\"\"Class implements libvirt part of volume driver for Quobyte.\"\"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def __init__(self, host):"},{"line_number":135,"context_line":"        super(LibvirtQuobyteVolumeDriver, self).__init__(host)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def _get_mount_point_base(self):"},{"line_number":138,"context_line":"        return CONF.libvirt.quobyte_mount_point_base"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_58d5beb6","line":135,"updated":"2019-04-01 13:52:37.000000000","message":"nit: empty constructor not really required.","commit_id":"7931f85fe66d4e024d7dd5396dcf38378af85470"}]}
