Merge lp:~townsend/libertine/use-session-dbus into lp:libertine

Proposed by Christopher Townsend
Status: Merged
Approved by: Larry Price
Approved revision: 378
Merged at revision: 378
Proposed branch: lp:~townsend/libertine/use-session-dbus
Merge into: lp:libertine
Diff against target: 101 lines (+25/-26)
3 files modified
python/libertine/LxcContainer.py (+6/-7)
python/libertine/LxdContainer.py (+4/-5)
python/libertine/utils.py (+15/-14)
To merge this branch: bzr merge lp:~townsend/libertine/use-session-dbus
Reviewer Review Type Date Requested Status
Larry Price Approve
Libertine CI Bot continuous-integration Approve
Review via email: mp+315055@code.launchpad.net

Commit message

Discover if a session is running and if so, use it's dbus session to start the container manager.

To post a comment you must log in.
Revision history for this message
Libertine CI Bot (libertine-ci-bot) wrote :

PASSED: Continuous integration, rev:376
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/333/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/libertine/job/build/656
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=default/536
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=zesty,testname=default/536
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=xenial+overlay,testname=default/536
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=zesty,testname=default/536
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-0-fetch/666
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/647
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/647/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/647
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/647/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/647
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/647/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/647
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/647/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/333/rebuild

review: Approve (continuous-integration)
377. By Christopher Townsend

Some minor fixes based on review.

378. By Christopher Townsend

Merge lp:libertine.

Revision history for this message
Libertine CI Bot (libertine-ci-bot) wrote :

PASSED: Continuous integration, rev:378
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/334/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/libertine/job/build/658
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=default/538
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=zesty,testname=default/538
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=xenial+overlay,testname=default/538
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=zesty,testname=default/538
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-0-fetch/668
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/649
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/649/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/649
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/649/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/649
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/649/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/649
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/649/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/334/rebuild

review: Approve (continuous-integration)
Revision history for this message
Larry Price (larryprice) wrote :

lgtm - we'll see how it fares with the snap later

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'python/libertine/LxcContainer.py'
2--- python/libertine/LxcContainer.py 2017-01-17 15:41:51 +0000
3+++ python/libertine/LxcContainer.py 2017-01-18 21:08:10 +0000
4@@ -157,13 +157,12 @@
5 self.window_manager = None
6 self.host_info = HostInfo.HostInfo()
7
8- utils.set_session_dbus_env_var()
9-
10- try:
11- bus = dbus.SessionBus()
12- self.lxc_manager_interface = bus.get_object(get_lxc_manager_dbus_name(), get_lxc_manager_dbus_path())
13- except dbus.exceptions.DBusException:
14- pass
15+ if utils.set_session_dbus_env_var():
16+ try:
17+ bus = dbus.SessionBus()
18+ self.lxc_manager_interface = bus.get_object(get_lxc_manager_dbus_name(), get_lxc_manager_dbus_path())
19+ except dbus.exceptions.DBusException:
20+ pass
21
22 def timezone_needs_update(self):
23 with open(os.path.join(self.root_path, 'etc', 'timezone'), 'r') as fd:
24
25=== modified file 'python/libertine/LxdContainer.py'
26--- python/libertine/LxdContainer.py 2017-01-17 21:46:43 +0000
27+++ python/libertine/LxdContainer.py 2017-01-18 21:08:10 +0000
28@@ -295,6 +295,7 @@
29 self._host_info = HostInfo.HostInfo()
30 self._container = None
31 self._matchbox_pid = None
32+ self._manager = None
33
34 if not _setup_lxd():
35 raise Exception("Failed to setup lxd.")
36@@ -303,15 +304,13 @@
37 self._window_manager = None
38
39 try:
40- utils.set_session_dbus_env_var()
41+ if utils.set_session_dbus_env_var():
42+ bus = dbus.SessionBus()
43+ self._manager = bus.get_object(get_lxd_manager_dbus_name(), get_lxd_manager_dbus_path())
44 except PermissionError as e:
45 utils.get_logger().warning("Failed to set dbus session env var")
46- try:
47- bus = dbus.SessionBus()
48- self._manager = bus.get_object(get_lxd_manager_dbus_name(), get_lxd_manager_dbus_path())
49 except dbus.exceptions.DBusException:
50 utils.get_logger().warning("D-Bus Service not found.")
51- self._manager = None
52
53 def create_libertine_container(self, password=None, multiarch=False):
54 if self._try_get_container():
55
56=== modified file 'python/libertine/utils.py'
57--- python/libertine/utils.py 2017-01-17 18:34:57 +0000
58+++ python/libertine/utils.py 2017-01-18 21:08:10 +0000
59@@ -17,6 +17,7 @@
60
61 import logging
62 import os
63+import psutil
64 import shlex
65 import subprocess
66 import xdg.BaseDirectory as basedir
67@@ -189,20 +190,20 @@
68
69
70 def set_session_dbus_env_var():
71- if not 'DBUS_SESSION_BUS_ADDRESS' in os.environ:
72- dbus_session_path = os.path.join('/', 'run', 'user', str(os.getuid()), 'dbus-session')
73-
74- if os.path.exists(dbus_session_path):
75- with open(dbus_session_path, 'r') as fd:
76- dbus_session_str = fd.read()
77-
78- os.environ['DBUS_SESSION_BUS_ADDRESS'] = dbus_session_str.partition('DBUS_SESSION_BUS_ADDRESS=')[2].rstrip('\n')
79-
80- return True
81- else:
82- return False
83-
84- return True
85+ dbus_session_set = 'SESSION' in os.environ
86+
87+ if not dbus_session_set:
88+ for p in psutil.process_iter():
89+ if p.name() == 'unity8' or p.name() == 'compiz':
90+ p_environ = subprocess.check_output(["cat", "/proc/{}/environ".format(p.pid)])
91+ for line in p_environ.decode().split('\0'):
92+ if line.startswith('DBUS_SESSION_BUS_ADDRESS'):
93+ os.environ['DBUS_SESSION_BUS_ADDRESS'] = line.partition('DBUS_SESSION_BUS_ADDRESS=')[2].rstrip('\n')
94+ dbus_session_set = True
95+ break
96+ break
97+
98+ return dbus_session_set
99
100
101 def is_snap_environment():

Subscribers

People subscribed via source and target branches