From 8d1e4ec582a60aecc5ead02cd2dd8e0d732cc8a1 Mon Sep 17 00:00:00 2001
From: Luiz Carvalho <lucarval@redhat.com>
Date: Mar 26 2020 13:32:08 +0000
Subject: Remove unused code from lightblue.py


This appears to be left over from changing how parent images are
identified.

Signed-off-by: Luiz Carvalho <lucarval@redhat.com>

---

diff --git a/freshmaker/lightblue.py b/freshmaker/lightblue.py
index 71b8ed7..c74e280 100644
--- a/freshmaker/lightblue.py
+++ b/freshmaker/lightblue.py
@@ -186,11 +186,6 @@ class ContainerImage(dict):
         self['multi_arch_rpm_manifest'][image_arch] = image_rpm_manifest
 
     @property
-    def is_base_image(self):
-        return (self['parent'] is None and
-                len(self['parsed_data']['layers']) == 2)
-
-    @property
     def dockerfile(self):
         dockerfile = [file for file in self['parsed_data']['files']
                       if file['filename'] == 'Dockerfile']
@@ -1151,146 +1146,6 @@ class LightBlue(object):
             return None
         return images[0]
 
-    # TODO: this should be removed in the future. There's a field in lightblue and koji
-    # that allows us to get the parent directly, without checking the layers.
-    @region.cache_on_arguments()
-    def get_image_by_layer(self, top_layer, build_layers_count,
-                           srpm_name):
-        """
-        Find parent image by layer from either published repository or not
-
-        :param str top_layer: the hash string representing an built image,
-            which is usually the top layer in ``parsed_data.layers`` list.
-        :param int build_layers_count: the number of build layers an image has.
-        :param str srpm_name: name of the package. it is optional. if
-            specified, will find image that also contains this package.
-
-        :return: parent ContainerImage object. None is returned if no image is
-            found.
-        :rtype: ContainerImage
-        """
-        query = {
-            "objectType": "containerImage",
-            "query": {
-                "$and": [
-                    {
-                        "field": "parsed_data.layers#",
-                        "op": "$eq",
-                        "rvalue": build_layers_count
-                    },
-                    {
-                        "field": "parsed_data.layers.*",
-                        "op": "$eq",
-                        "rvalue": top_layer
-                    },
-                ],
-            },
-            "projection": self._get_default_projection(
-                srpm_names=[srpm_name] if srpm_name else None,
-                include_rpm_manifest=srpm_name is not None)
-        }
-
-        images = self.find_container_images(query)
-        if not images:
-            return None
-
-        # Filter out images which do not contain srpm_name locally, because
-        # filtering in lightblue takes long time and can even timeout
-        # server-side.
-        # We expect just at max 2 images here, published and unpublished, so
-        # it is not big deal doing so.
-        if srpm_name:
-            tmp = []
-            for image in images:
-                rpms = image.get_rpms()
-                for rpm in rpms or []:
-                    if "srpm_name" in rpm and rpm["srpm_name"] == srpm_name:
-                        tmp.append(image)
-                        break
-            images = tmp
-            if not images:
-                return None
-
-        for image in images:
-            # we should prefer published image
-            if 'repositories' in image:
-                for repository in image['repositories']:
-                    if repository['published']:
-                        return image
-
-        return images[0]
-
-    @region.cache_on_arguments()
-    def get_repository_from_name(self, repo_name):
-        """
-        Returns the ContainerRepository object based on the Repository name.
-        """
-        query = {
-            "objectType": "containerRepository",
-            "query": {
-                "$and": [
-                    {
-                        "field": "repository",
-                        "op": "=",
-                        "rvalue": repo_name
-                    },
-
-                ]
-            },
-            "projection": [
-                {"field": "*", "include": True, "recursive": True}
-            ]
-        }
-
-        repos = self.find_container_repositories(query)
-        if not repos:
-            return None
-
-        if len(repos) != 1:
-            raise ValueError("Multiple records found in Lightblue for repository %s." % repo_name)
-
-        return repos[0]
-
-    def find_latest_parent_image(self, parent_top_layer, parent_build_layers_count):
-        """
-        Finds the latest published parent image defined by the `parent_top_layer` and
-        `parent_build_layers_count`. For more info about these variables, refer to
-        `find_parent_images_with_package`.
-
-        This method tries to find out the latest published parent image. If it fails
-        to find out, it simply returns the unpublished image defined by the input args.
-        """
-        latest_parent = self.get_image_by_layer(
-            parent_top_layer, parent_build_layers_count, None)
-        if not latest_parent or "repositories" not in latest_parent:
-            return latest_parent
-
-        latest_parent_nvr = kobo.rpmlib.parse_nvr(latest_parent.nvr)
-
-        for repo in latest_parent["repositories"]:
-            repo_data = self.get_repository_from_name(repo["repository"])
-            if not repo_data:
-                continue
-
-            possible_latest_parents = self.find_images_with_included_srpms(
-                [], [], {repo["repository"]: repo_data}, include_rpm_manifest=False)
-            for possible_latest_parent in possible_latest_parents:
-                # Treat the `possible_latest_parent` as `latest_parent` in case its
-                # Name and Version are the same and Release is higher.
-                # compare_nvr return values:
-                #   - nvr1 newer than nvr2: 1
-                #   - same nvrs: 0
-                #   - nvr1 older: -1
-                parsed_nvr = kobo.rpmlib.parse_nvr(possible_latest_parent.nvr)
-                if (parsed_nvr["name"] == latest_parent_nvr["name"] and
-                        parsed_nvr["version"] == latest_parent_nvr["version"] and
-                        kobo.rpmlib.compare_nvr(
-                            latest_parent_nvr, parsed_nvr, ignore_epoch=True) == -1):
-                    latest_parent = possible_latest_parent
-                    latest_parent_nvr = kobo.rpmlib.parse_nvr(latest_parent.nvr)
-
-        return latest_parent
-
     def find_parent_brew_build_nvr_from_child(self, child_image):
         """
         Returns the parent brew build NVR of the input image. If the parent is not found it returns None.
diff --git a/tests/test_lightblue.py b/tests/test_lightblue.py
index 07fc0c3..b60acac 100644
--- a/tests/test_lightblue.py
+++ b/tests/test_lightblue.py
@@ -2047,31 +2047,6 @@ class TestQueryEntityFromLightBlue(helpers.FreshmakerTestCase):
                             {'field': 'rpm_manifest.*.rpms.*.srpm_name', 'include': True, 'recursive': True}],
              'objectType': 'containerImage'})
 
-    @patch('freshmaker.lightblue.LightBlue.find_container_repositories')
-    @patch('freshmaker.lightblue.LightBlue.find_container_images')
-    @patch('os.path.exists')
-    def test_find_latest_parent_image(self, exists, cont_images, cont_repos):
-        repos = [{
-            "repository": "product/repo1", "published": True,
-            'tags': [{"name": "latest"}]}]
-
-        parent = ContainerImage.create({
-            "brew": {"build": "parent-1-2"}, "repositories": repos})
-        latest_parent = ContainerImage.create({
-            "brew": {"build": "parent-1-3"}, "repositories": repos})
-        older_parent = ContainerImage.create({
-            "brew": {"build": "parent-1-1"}, "repositories": repos})
-        too_new_parent = ContainerImage.create({
-            "brew": {"build": "parent-50-2"}, "repositories": repos})
-        cont_images.return_value = [parent, latest_parent, older_parent, too_new_parent]
-        cont_repos.return_value = [self.fake_repositories_with_content_sets[0]]
-
-        lb = LightBlue(server_url=self.fake_server_url,
-                       cert=self.fake_cert_file,
-                       private_key=self.fake_private_key)
-        image = lb.find_latest_parent_image("foo", 1)
-        self.assertEqual(image.nvr, "parent-1-3")
-
     @patch('freshmaker.lightblue.LightBlue.find_container_images')
     @patch('os.path.exists')
     def test_images_with_modular_container_image(

