[kteam-tools][PATCH 3/5] ktl/tracking_bug.py: fix snap tasks lookup

Kleber Sacilotto de Souza kleber.souza at canonical.com
Fri Nov 10 08:18:15 UTC 2017


The layout of the snap-related information has been changed on
kernel-series-info.yaml. So change ktl/tracking_bug.py for the new
layout.

Also prevent creating the snap-publish, snap-qa-testing and
snap-certification-testing tasks depending on the snap properties on
kernel-series-info.yaml.

Signed-off-by: Kleber Sacilotto de Souza <kleber.souza at canonical.com>
---
 ktl/tracking_bug.py | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/ktl/tracking_bug.py b/ktl/tracking_bug.py
index b32637c1..5820e6ca 100644
--- a/ktl/tracking_bug.py
+++ b/ktl/tracking_bug.py
@@ -17,6 +17,7 @@ class TrackingBug:
         self.wf = Workflow()
         self.ub = Ubuntu()
         self.__dependency_list = None
+        self.__dependency_snap_list = None
         self._targeted_series_name = None
         self._series_specified = None
         self._series_target = None
@@ -41,6 +42,20 @@ class TrackingBug:
         retval = dependent_package in self.__dependency_list
         return retval
 
+    # _get_dependent_snap_prop
+    def _get_dependent_snap_prop(self, series, main_package, prop):
+        '''
+        Return the value of the property of the dependent snap for the
+        specified series/package. Return None if not found.
+        '''
+        if self.__dependency_snap_list is None:
+            try:
+                record = self.ub.lookup(series)
+                self.__dependency_snap_list = record['dependent-snaps'][main_package]
+            except KeyError:
+                self.__dependency_snap_list = {}
+        return self.__dependency_snap_list.get(prop, None)
+
     # valid_series
     #
     def valid_series(s, lp_series, series_specified, targeted_series_name, package):
@@ -65,7 +80,7 @@ class TrackingBug:
             if lp_series.name == 'prepare-package-signed' and not s.has_dependent_package(targeted_series_name, package, 'signed'):
                 cdebug('    no prepare-package-signed', 'yellow')
                 break
-            if not s.has_dependent_package(targeted_series_name, package, 'snap'):
+            if s._get_dependent_snap_prop(targeted_series_name, package, 'snap') is None:
                 if lp_series.name == 'snap-release-to-edge':
                     cdebug('    no snap-release-to-edge', 'yellow')
                     break
@@ -87,6 +102,22 @@ class TrackingBug:
                 if lp_series.name == 'snap-certification-testing':
                     cdebug('    no snap-certification-testing', 'yellow')
                     break
+            else:
+                if lp_series.name == 'snap-certification-testing':
+                    hw_cert = s._get_dependent_snap_prop(targeted_series_name, package, 'hw-cert')
+                    if hw_cert is None or not hw_cert:
+                        cdebug('    no snap-certification-testing', 'yellow')
+                        break
+                if lp_series.name == 'snap-qa-testing':
+                    qa = s._get_dependent_snap_prop(targeted_series_name, package, 'qa')
+                    if qa is None or not qa:
+                        cdebug('    no snap-qa-testing', 'yellow')
+                        break
+                if lp_series.name == 'snap-publish':
+                    gated = s._get_dependent_snap_prop(targeted_series_name, package, 'gated')
+                    if gated is None or not gated:
+                        cdebug('    no snap-publish', 'yellow')
+                        break
             retval = True
             break
         return retval
@@ -310,6 +341,7 @@ class TrackingBug:
         cdebug('    series_specified: %s' % series_specified)
 
         self.__dependency_list = None
+        self.__dependency_snap_list = None
 
         self.package = package
         self.version = version
-- 
2.14.1





More information about the kernel-team mailing list