add diff tools using python
authorAnas Nashif <anas.nashif@intel.com>
Wed, 10 Apr 2013 11:21:12 +0000 (04:21 -0700)
committerAnas Nashif <anas.nashif@intel.com>
Wed, 10 Apr 2013 11:21:12 +0000 (04:21 -0700)
swup.py
tools/getpacs/diff-packages.py [new file with mode: 0644]

diff --git a/swup.py b/swup.py
index 4da1d10..2474007 100755 (executable)
--- a/swup.py
+++ b/swup.py
@@ -15,7 +15,7 @@ import rpm
 import subprocess as sub
 import distutils
 
-update_repo="http://10.0.0.140/~anashif/updates"
+update_repo="http://www.planux.com/updates"
 update_cache="/var/cache/updatemanager"
 
 
diff --git a/tools/getpacs/diff-packages.py b/tools/getpacs/diff-packages.py
new file mode 100644 (file)
index 0000000..4eaac48
--- /dev/null
@@ -0,0 +1,110 @@
+#!/usr/bin/python
+
+from sets import Set
+import csv
+import urllib2
+from optparse import OptionParser
+import os
+import re, base64
+
+username = ""
+password = ""
+
+def http_get(url):
+    print "Downloading %s" %url
+    request = urllib2.Request(url)
+    base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
+    request.add_header("Authorization", "Basic %s" % base64string)
+    html_page = urllib2.urlopen(request)
+    return html_page
+
+def download(url, out):
+    ret = http_get(url)
+    if not os.path.exists(out):
+        cache = open(out, "w")
+        cache.write(ret.read())
+        cache.close()
+
+def get_package_lists2(image_name, base_url, build_id):
+    cache_file = "cache/%s-%s.packages" %(image_name, build_id )
+    package_file = None
+    if not os.path.exists(cache_file):
+        image_packages = "%s/%s/images/%s/%s-%s.packages" %(base_url, build_id, image_name, image_name, build_id )
+        package_file = http_get(image_packages)
+        cache = open(cache_file, "w")
+        cache.write(package_file.read())
+        cache.close()
+    else:
+        package_file = open(cache_file, "rb")
+
+    packages = []
+
+    pkgreader = csv.reader(package_file, delimiter=' ', quotechar='|')
+    for row in pkgreader:
+        pkg = row[0].split(".")
+        name = "%s-%s.%s" %(pkg[0], row[1], pkg[1])
+        packages.append(name)
+
+    package_file.close()
+    return packages
+
+def get_package_lists(image_name, base_url, build_id):
+    cache_file = "cache/%s-%s.packages" %(image_name, build_id )
+    package_file = None
+    if not os.path.exists(cache_file):
+        image_packages = "%s/%s/images/%s/%s-%s.packages" %(base_url, build_id, image_name, image_name, build_id )
+        #print image_packages
+        package_file = http_get(image_packages)
+        cache = open(cache_file, "w")
+        cache.write(package_file.read())
+        cache.close()
+    else:
+        package_file = open(cache_file, "rb")
+
+    packages = {}
+
+    pkgreader = csv.reader(package_file, delimiter=' ', quotechar='|')
+    for row in pkgreader:
+        pkg = row[0].split(".")
+        if len(row)>2:
+            packages[pkg[0]] = {'scm': row[2], 'version': row[1], 'arch': pkg[1]}
+        else:
+            packages[pkg[0]] = {'scm': None, 'version': row[1], 'arch': pkg[1]}
+
+    package_file.close()
+    return packages
+
+parser = OptionParser()
+parser.add_option("-o", "--old",  dest="old", metavar="OLD", help="Old snapshot")
+parser.add_option("-n", "--new",  dest="new", metavar="NEW", help="New snapshot")
+parser.add_option("-t", "--type",  dest="type", metavar="TYPE", help="Release type")
+parser.add_option("-i", "--image",  dest="image", metavar="IMAGE", help="Image Name")
+
+(options, args) = parser.parse_args()
+
+DAILY="/pc/releases/daily/trunk"
+WEEKLY="/pc/releases/weekly/trunk"
+SNAPSHOTS="/snapshots/trunk/pc/"
+BASE="https://download.tz.otcshare.org/"
+
+if options.type == "daily":
+    release_url = "%s/%s" %(BASE, DAILY)
+if options.type == "weekly":
+    release_url = "%s/%s" %(BASE, WEEKLY)
+else:
+    release_url = "%s/%s" %(BASE, SNAPSHOTS)
+
+p1 = get_package_lists2(options.image, release_url, options.old)
+p2 = get_package_lists2(options.image, release_url, options.new)
+
+diff =  Set(p2).difference(Set(p1))
+for p in diff:
+    print "Fetching %s" %p
+    if "noarch" in p:
+        download("%s/%s/repos/pc/x86_64/packages/noarch/%s.rpm" %(release_url, options.new, p), "%s.rpm" %p)
+    else:
+        download("%s/%s/repos/pc/x86_64/packages/x86_64/%s.rpm" %(release_url, options.new, p), "%s.rpm" %p)
+
+
+
+