+import dbus
+import dbus.service
+import dbus.exceptions
+from gi.repository import GLib
+
+class DbusContainerManager(dbus.service.Object):
+ def __init__(self, looper, bus, object_path, args):
+ self.args = args
+ self.looper = looper
+ dbus.service.Object.__init__(self, bus, object_path)
+
+ @dbus.service.method("id.waydro.ContainerManager", in_signature='a{ss}', out_signature='')
+ def Start(self, session):
+ do_start(self.args, session)
+
+ @dbus.service.method("id.waydro.ContainerManager", in_signature='', out_signature='')
+ def Stop(self):
+ stop(self.args)
+
+ @dbus.service.method("id.waydro.ContainerManager", in_signature='', out_signature='')
+ def Freeze(self):
+ freeze(self.args)
+
+ @dbus.service.method("id.waydro.ContainerManager", in_signature='', out_signature='')
+ def Unfreeze(self):
+ unfreeze(self.args)
+
+ @dbus.service.method("id.waydro.ContainerManager", in_signature='', out_signature='a{ss}')
+ def GetSession(self):
+ try:
+ session = self.args.session
+ session["state"] = helpers.lxc.status(self.args)
+ return session
+ except AttributeError:
+ return {}
+
+def service(args, looper):
+ dbus_obj = DbusContainerManager(looper, dbus.SystemBus(), '/ContainerManager', args)
+ looper.run()
+
+def set_permissions(args, perm_list=None, mode="777"):
+ def chmod(path, mode):
+ if os.path.exists(path):
+ command = ["chmod", mode, "-R", path]
+ tools.helpers.run.user(args, command, check=False)