Integrate repo and image packages' datas into same format
authorLingchao Xin <lingchaox.xin@intel.com>
Wed, 11 Dec 2013 02:11:17 +0000 (10:11 +0800)
committerLingchao Xin <lingchaox.xin@intel.com>
Wed, 11 Dec 2013 03:11:26 +0000 (11:11 +0800)
Change-Id: Ib08c4b1910474529d914b8d70fb057e3cdde3464

snapdiff/__init__.py
snapdiff/image.py
snapdiff/repo.py

index e94c528..eeb9767 100644 (file)
@@ -45,14 +45,14 @@ def diff_to_JSON(old_url, new_url, style='repo'):
         return
 
     added, removed, modified, rebuilded = [], [], [], []
-    package_names = set(old.keys() + new.keys())
+    package_names = set(old.__dict__.keys() + new.__dict__.keys())
 
     def _pair_old_new():
         for name in package_names:
-            if old.get(name) is None:
+            if old[name] is None:
                 for pkg in new[name]:
                     yield (None, pkg)
-            elif new.get(name) is None:
+            elif new[name] is None:
                 for pkg in old[name]:
                     yield (pkg, None)
             else:
index 9ef72e2..8b46cc4 100644 (file)
@@ -43,13 +43,13 @@ def ks_diff(old, new):
 def packages(url):
     content = _get_file(url, suffix='.packages')
 
-    packages_info = {}
+    packages_info = JsonDict()
 
     for line in content[1]:
         if line.strip():
             name_arch, version, vcs = line.strip().split()
             name = name_arch.split('.')[0]
-            packages_info[name] = []
+            setattr(packages_info, name, [])
             package_info = JsonDict()
             package_info.name = name
             package_info.version = JsonDict()
index cccb932..4734a3e 100644 (file)
@@ -1,4 +1,5 @@
 from .utils import xml2obj
+from .utils import JsonDict
 
 import gzip
 import mimetypes
@@ -60,11 +61,13 @@ class Repo(object):
 
     @property
     def packages(self):
-        packages_info = {}
+        packages_info = JsonDict()
 
-        for _package in self._primary.package:
-            packages_info[_package.name] = (packages_info.get(_package.name) \
-                    or []) + [_package]
+        for package in self._primary.package:
+            if packages_info[package.name] is None:
+                setattr(packages_info, package.name, [package])
+            else:
+                packages_info[package.name].append(package)
 
         return packages_info