Stop using --repo from .ks file
authorEd Bartosh <eduard.bartosh@intel.com>
Wed, 11 Sep 2013 14:19:36 +0000 (17:19 +0300)
committerHasan Wan <hasan.wan@intel.com>
Fri, 13 Sep 2013 03:07:10 +0000 (20:07 -0700)
Using --repo parameter from .ks file as a repository name is incorrect
as it doesn't point to the real repository. For example in
Tizen:Mobile porject it produces this crash:
    common.backenddb.EntityError: [Error] key repo:mobile don't exist in redis
because of --repo=mobile specified in .ks file.

The solution used in this change is to replace @BUILD_ID@ with the
current snapshot.

Fixes: #1305

Change-Id: Ic3b5b3a12b44167c48f2f8ad858629bc787a9011
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
Reviewed-on: https://otctools.jf.intel.com/review/6389
Tested-by: OTC Tools Tester <ed.bartosh@linux.intel.com>
Reviewed-by: Hasan Wan <hasan.wan@intel.com>
job_pre_release_obs.py

index 9883221..cdad288 100755 (executable)
@@ -73,7 +73,8 @@ def get_prerelease_data(backenddb, base_url, base_path='/srv/download',
                                       'repos', repo['Target'],
                                       ARCH_MAP.get(arch, arch), 'packages')
 
-    return {'snapshot_path': os.path.join(base_path, snapshot_dir),
+    return {'snapshot': latest_snapshot,
+            'snapshot_path': os.path.join(base_path, snapshot_dir),
             'snapshot_url': os.path.join(base_url, snapshot_dir),
             'prerelease_dir': prerelease_dir,
             'prerelease_path': os.path.join(base_path, prerelease_dir),
@@ -82,19 +83,19 @@ def get_prerelease_data(backenddb, base_url, base_path='/srv/download',
             }
 
 
-def update_ks(imagedata, backenddb, info, base_url):
+def update_ks(imagedata, data):
     """
     update the repo url point to right URL and add prerelease repo
     url with highest priority
     Args:
          imagedata (ImageData): [(ks_file_name, ks_file_content),]
          backenddb (BackendDB): backend database instance
-         info: data from backend db
+         data: data from backend db
     """
 
     # Figure out repo line
     repo_lines = {}
-    for arch, url in info['pkg_urls'].iteritems():
+    for arch, url in data['pkg_urls'].iteritems():
         repo_lines[arch] = "repo --name=prerelease --baseurl=%s --save "\
                           "--ssl_verify=no --priority 1" % url
     images_ks = {}
@@ -108,11 +109,7 @@ def update_ks(imagedata, backenddb, info, base_url):
                 match = re.match("repo --name=([\w\-\.]*) --baseurl=.*",
                                  line)
                 if match:
-                    data = get_prerelease_data(backenddb,
-                                               base_url=base_url,
-                                               repo_name=match.group(1))
-                    line = re.sub(r'--baseurl=http.*@BUILD_ID@',
-                                  r'--baseurl=%s' % data['snapshot_url'], line)
+                    line = re.sub(r'@BUILD_ID@', data['snapshot'], line)
             new_ks_lines.append(line.strip())
 
         new_ks_lines.insert(new_ks_lines.index('%packages')-1,
@@ -194,7 +191,7 @@ def make_repo(project, repo, backenddb, base_url, base_path, live_repo_base):
                          data['snapshot_path'])
 
     # Update ks files
-    images_ks = update_ks(repomaker.imagedata, backenddb, data, base_url)
+    images_ks = update_ks(repomaker.imagedata, data)
     # Generate image info to builddata/ dir
     repomaker.gen_image_info(images_ks)