Support pkg build for Managed Rel URLs, add tests 17/76617/6
authorDaniel Farrell <dfarrell@redhat.com>
Wed, 3 Oct 2018 19:06:38 +0000 (15:06 -0400)
committerDaniel Farrell <dfarrell@redhat.com>
Thu, 4 Oct 2018 21:04:43 +0000 (21:04 +0000)
The new Managed Release Common Distribution, the distro that contains
both Managed and Self-Managed projects that we now bless as our official
releases (starting with Fluorine), uses a new distro name prefix.

The packaging build logic had support for using the correct distro name
prefix based on Karaf 3 or 4 version. Extend that logic to optionally,
but with priority, return the distro name prefix based on a download
URL. Include checks to cover MR URLs, thereby adding MR URL support.

Also add unittest coverage that finds this failure.

Jira: INTPAK-203
Change-Id: Ie1180fb78098eac6758224e3f166f6e0d1f8b629
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
packages/build.py
packages/lib.py
packages/test_lib.py

index 1539eea8efbfcc88f298470354558ed7108fc355..c829353037b65980b1c00c6a8ce76b30a5647df1 100755 (executable)
@@ -50,7 +50,7 @@ if __name__ == "__main__":
 
     direct_parser._optionals.title = "Options"
 
-    # Direct builds require a archive URL
+    # Direct builds require an archive URL
     direct_parser.add_argument("--download_url", required=True,
                                help="URL to tar/zip build archive to package")
 
@@ -120,7 +120,7 @@ if __name__ == "__main__":
 
     # Karaf 3 distros use distribution-karaf-, Karaf 4 uses karaf-
     build.update({"distro_name_prefix": lib.get_distro_name_prefix(
-        build['version_major'])})
+        build['version_major'], build['download_url'])})
 
     # Update build definition with Java version required by ODL version
     build.update({"java_version": lib.get_java_version(
index dccda7cfa928193dfbf63a823d8446b0800058dd..cfbf0bd2346029be229955693331692f0dfd495d 100644 (file)
@@ -266,19 +266,34 @@ def get_changelog_date(pkg_type):
         raise ValueError("Unknown package type: {}".format(pkg_type))
 
 
-def get_distro_name_prefix(version_major):
-    """Return Karaf 3 or 4-style distro name prefix based on ODL major version
+def get_distro_name_prefix(version_major, download_url=""):
+    """Return distro name prefix based on ODL major version or distro URL.
 
-    :arg str major_version: OpenDaylight major version umber
-    :return str distro_name_style: Karaf 3 or 4-style distro name prefix
+    :arg str version_major: OpenDaylight major version number
+    :arg str download_url: URL to ODL distribution
+    :return str distro_prefix: MR, Karaf 3 or 4-style distro name prefix
 
     """
+    mrel_prefix = "opendaylight"
+    k3_prefix = "distribution-karaf"
+    k4_prefix = "karaf"
+    mrel_url_base = "https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/opendaylight/"
+    k3_url_base = "https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/distribution-karaf/"
+    k4_url_base = "https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/karaf/"
+
+    if mrel_url_base in download_url:
+        return mrel_prefix
+    elif k3_url_base in download_url:
+        return k3_prefix
+    elif k4_url_base in download_url:
+        return k4_prefix
+
     if int(version_major) < 7:
         # ODL versions before Nitrogen use Karaf 3, distribution-karaf- names
-        return "distribution-karaf"
+        return k3_prefix
     else:
         # ODL versions Nitrogen and after use Karaf 4, karaf- names
-        return "karaf"
+        return k4_prefix
 
 
 def cache_distro(build):
index 2bf5511eb1cab3d8106b17b66a01c81c4098afb4..3365456393c2064a899492fca386eec614d9eb43 100644 (file)
@@ -183,10 +183,14 @@ class TestGetSnapURL(unittest.TestCase):
 
 class TestGetDistroNamePrefix(unittest.TestCase):
 
-    """Test logic to get Karaf 3/4 distro name prefix per ODL major version."""
+    """Test logic to get Karaf 3/4 or Managed Release Common distro prefixes."""
 
-    k3_distro_prefix = "distribution-karaf"
+    mrel_distro_prefix = "opendaylight"
     k4_distro_prefix = "karaf"
+    k3_distro_prefix = "distribution-karaf"
+    mrel_distro_url = "https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/opendaylight/0.9.0/opendaylight-0.9.0.tar.gz"
+    k4_distro_url = "https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/karaf/0.8.3/karaf-0.8.3.tar.gz"
+    k3_distro_url = "https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/distribution-karaf/0.6.4-Carbon/distribution-karaf-0.6.4-Carbon.tar.gz"
 
     def test_oxygen(self):
         """Test Oxygen major version gives Karaf 4 prefix."""
@@ -208,6 +212,21 @@ class TestGetDistroNamePrefix(unittest.TestCase):
         distro_prefix = lib.get_distro_name_prefix(9)
         self.assertEqual(distro_prefix, self.k4_distro_prefix)
 
+    def test_managed_release_fluorine(self):
+        """Test Managed Release URL gives MR distro prefix."""
+        distro_prefix = lib.get_distro_name_prefix(9, self.mrel_distro_url)
+        self.assertEqual(distro_prefix, self.mrel_distro_prefix)
+
+    def test_k4_norm_release_oxygen(self):
+        """Test normal K4 URL gives distro prefix based on Karaf version."""
+        distro_prefix = lib.get_distro_name_prefix(9, self.k4_distro_url)
+        self.assertEqual(distro_prefix, self.k4_distro_prefix)
+
+    def test_k3_norm_release_carbon(self):
+        """Test normal K3 URL gives distro prefix based on Karaf version."""
+        distro_prefix = lib.get_distro_name_prefix(6, self.k3_distro_url)
+        self.assertEqual(distro_prefix, self.k3_distro_prefix)
+
 
 class TestGetSysdCommit(unittest.TestCase):