findmissing: Rewrote script to find chromeos patches

Script uses created upstream, stable, and chrome tables to find the
patches that are missing in ChromeOS. Rewrote logic to handle new
database schema.

Removed code repitition and added kernel lookup method to make logic more
concise.

BUG=None
TEST=None

Change-Id: I299cafc3a74dce10a8dd7381f6c2f535cf5ebe92
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/2079206
Reviewed-by: Curtis Malainey <cujomalainey@chromium.org>
Reviewed-by: Guenter Roeck <groeck@chromium.org>
Tested-by: Hirthanan Subenderan <hirthanan@google.com>
Commit-Queue: Hirthanan Subenderan <hirthanan@google.com>
diff --git a/contrib/findmissing/common.py b/contrib/findmissing/common.py
index 43b95b1..e9c9eba 100755
--- a/contrib/findmissing/common.py
+++ b/contrib/findmissing/common.py
@@ -57,6 +57,21 @@
     linux_upstream = 3
 
 
+class KernelMetadata(object):
+    """Object to group kernel Metadata."""
+    local_kernel_path = None
+    kernel_table = None
+    kernel_fixes_table = None
+    get_kernel_branch = None
+
+    def __init__(self, _local_path, _kernel_table, _kernel_fixes_table,
+            _get_kernel_branch):
+        self.local_kernel_path = _local_path
+        self.kernel_table = _kernel_table
+        self.kernel_fixes_table = _kernel_fixes_table
+        self.get_kernel_branch = _get_kernel_branch
+
+
 def stable_branch(version):
     """Stable branch name"""
     return 'linux-%s.y' % version
@@ -128,3 +143,19 @@
         update_commits(branch, start, db)
 
     os.chdir(WORKDIR)
+
+def get_kernel_metadata(release):
+    """Returns KernelMetadata for a release (linux-stable, or linux-chrome"""
+    kernel_metadata = None
+    if release == Kernel.linux_stable:
+        kernel_metadata = KernelMetadata(STABLE_PATH, 'linux_stable',
+                'stable_fixes', stable_branch)
+    elif release == Kernel.linux_chrome:
+        kernel_metadata = KernelMetadata(CHROMEOS_PATH, 'linux_chrome',
+                'chrome_fixes', chromeos_branch)
+    elif release == Kernel.linux_upstream:
+        kernel_metadata = KernelMetadata(UPSTREAM_PATH, 'linux_upstream_commits',
+                'linux_upstream_fixes', None)
+    else:
+        raise ValueError('Conditionals should match Kernel Enum release types.')
+    return kernel_metadata