Fix the crash about getting repo name from redis
authorZhuoX Li <zhuox.li@intel.com>
Fri, 20 Jun 2014 07:46:02 +0000 (15:46 +0800)
committerLin Yang <lin.a.yang@intel.com>
Mon, 7 Jul 2014 09:02:46 +0000 (17:02 +0800)
When the repo name doesn't exist in redis,we can't get it from redis.
It should normally stop to create repos, not raise exception.

Fixes: #1993

Change-Id: Iac77e7c3321071c6db0360998f45f642504ad4f2

common/snapshot.py
job_create_snapshot.py

index f60efb9..dcb9531 100644 (file)
@@ -60,11 +60,7 @@ class Snapshot(object):
         """Get snapshot properties from backend db. Init snapshot attributes."""
         self.backenddb = backenddb
         self.base_path = base_path
-        try:
-            self.repo_name = repo_name or backenddb.get_obs_repo_map()[obs_project]
-        except (BackendDBError, EntityError), err:
-            raise SnapshotError("Can't get repo name for '%s' : %s" % \
-                                (obs_project, str(err)))
+        self.repo_name = repo_name or backenddb.get_obs_repo_map()[obs_project]
         try:
             self.repo = backenddb.get_repos()[self.repo_name]
         except BackendDBError, err:
@@ -145,3 +141,16 @@ class Snapshot(object):
     def get_prerelease(self, base_url, tstamp):
         """Factory for Prerelease object."""
         return Prerelease(self, base_url, tstamp)
+
+def snapshot_project_enabled(backenddb, obs_project):
+    """Check if project is enabled for OBS project.
+       This is done by querying repo name from Redis
+       return the True if repo name exists,otherwise
+       return False
+    """
+    try:
+        repo_name = backenddb.get_obs_repo_map()[obs_project]
+        return True
+    except (BackendDBError, EntityError), err:
+        print err
+        return False
index de3059d..169859b 100755 (executable)
@@ -13,7 +13,7 @@ from common.buildtrigger import trigger_info, trigger_next
 from common.buildservice import BuildService
 from common.repomaker import RepoMaker, RepoMakerError
 from common.backenddb import BackendDB
-from common.snapshot import Snapshot, SnapshotError
+from common.snapshot import Snapshot, SnapshotError, snapshot_project_enabled
 from common.utils import make_latest_link
 
 class LocalError(Exception):
@@ -79,7 +79,6 @@ def make_repo(project, backenddb, base_path, live_repo_base, buildconf=None):
     Raises:
         LocalError if can't create repos or can't find image configurations
     """
-
     try:
         snapshot = Snapshot(backenddb, base_path, obs_project=project)
     except SnapshotError, err:
@@ -162,6 +161,11 @@ def main():
     # Get buildconf from OBS, put the buildconf together with repo-md
     buildconf_str = build.get_project_config(project)
 
+    # whether project is not enabled
+    if not snapshot_project_enabled(backenddb, project):
+        print "Skipping, project isn't found in repo.yaml"
+        return 0
+
     repo_data = make_repo(project, backenddb, base_path, live_repo_base,
                           buildconf = buildconf_str)