+-------------------------------------------------------------------
+Wed Nov 21 11:55:28 CET 2012 - aschnell@suse.de
+
+- handle userdata in zypp plugin (fate #312521)
+
-------------------------------------------------------------------
Mon Nov 12 15:37:25 CET 2012 - aschnell@suse.de
from os import readlink, getppid
from os.path import basename
+from sys import stderr
from dbus import SystemBus, Interface
from zypp_plugin import Plugin
class MyPlugin(Plugin):
+ def parse_userdata(self, s):
+ ud = {}
+ for kv in s.split(","):
+ k, v = kv.split("=", 1)
+ k = k.strip()
+ if not k:
+ raise ValueError
+ ud[k] = v.strip()
+ return ud
+
def PLUGINBEGIN(self, headers, body):
exe = basename(readlink("/proc/%d/exe" % getppid()))
- self.num1 = snapper.CreatePreSnapshot("root", "zypp(%s)" % exe, "number", {})
+ userdata = {}
+
+ try:
+ userdata = self.parse_userdata(headers['userdata'])
+ except KeyError:
+ pass
+ except ValueError:
+ stderr.write("invalid userdata")
+
+ self.num1 = snapper.CreatePreSnapshot("root", "zypp(%s)" % exe, "number", userdata)
self.ack()