From: Daniel Farrell Date: Wed, 3 Oct 2018 19:06:38 +0000 (-0400) Subject: Support pkg build for Managed Rel URLs, add tests X-Git-Tag: 14.2.0~43 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=fa510eb55f770978c030b6d09a3a498e99f1e20e;p=integration%2Fpackaging.git Support pkg build for Managed Rel URLs, add tests 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 --- diff --git a/packages/build.py b/packages/build.py index 1539eea..c829353 100755 --- a/packages/build.py +++ b/packages/build.py @@ -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( diff --git a/packages/lib.py b/packages/lib.py index dccda7c..cfbf0bd 100644 --- a/packages/lib.py +++ b/packages/lib.py @@ -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): diff --git a/packages/test_lib.py b/packages/test_lib.py index 2bf5511..3365456 100644 --- a/packages/test_lib.py +++ b/packages/test_lib.py @@ -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):