[Secure-testing-commits] r16583 - lib/python

Florian Weimer fw at alioth.debian.org
Sun Apr 24 16:14:40 UTC 2011


Author: fw
Date: 2011-04-24 16:14:39 +0000 (Sun, 24 Apr 2011)
New Revision: 16583

Added:
   lib/python/secmaster.py
Log:
secmaster: new Python module


Added: lib/python/secmaster.py
===================================================================
--- lib/python/secmaster.py	                        (rev 0)
+++ lib/python/secmaster.py	2011-04-24 16:14:39 UTC (rev 16583)
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+# secmaster -- access to data on security-master.debian.org
+# Copyright (C) 2011 Florian Weimer <fw at deneb.enyo.de>
+# 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+# Name of the security-master host
+HOST = "chopin.debian.org"
+
+import json
+import subprocess
+
+import debian_support
+
+def listqueue():
+    """Returns a list of pairs (PACKAGE, SET-OF-DISTRIBUTIONS).
+    
+    PACKAGE is a debian_support.BinaryPackage object.
+    SET-OF-DISTRIBUTIONS contains normalized distribution names,
+    using the code names (sid etc.).
+    """
+    ssh = subprocess.Popen(
+        ("ssh", "chopin.debian.org", "secure-testing/bin/list-queue"),
+        stdin=file("/dev/null"),
+        stdout=subprocess.PIPE)
+    data = ssh.stdout.read()
+    ssh.wait()
+    if ssh.returncode != 0:
+        raise IOError("unexpected ssh return code: " + repr(ssh.returncode))
+    data = json.loads(data)
+    if data["version"] != 1:
+        raise IOError("unexpected version number: " + repr(data["version"]))
+
+    distributions = debian_support.getconfig()["distributions"]
+    distdict = {}
+    def normdist(dist):
+        if dist in distdict:
+            return distdict[dist]
+        if dist.endswith("-security"):
+            d = dist[:-9]
+        else:
+            d = dist
+        result = None
+        if d in distributions:
+            result = d
+        else:
+            for (codename, obj) in distributions.items():
+                if obj.get("release", None) == d:
+                    result = codename
+                    break
+        if result is None:
+            raise ValueError("unknown distribution: " + repr(dist))
+        distdict[dist] = result
+        return result
+        
+    return [(debian_support.BinaryPackage(row[0:5]),
+             set(normdist(dist) for dist in row[5]))
+            for row in data["binary"]]
+
+if __name__ == "__main__":
+    for pkg, archs in listqueue():
+        print " ".join(pkg.astuple()), "=>", ", ".join(archs)




More information about the Secure-testing-commits mailing list