nebraska: Distinguish between platform and DLC request

We need this difference to respond to an update/install with parameters
that should only be available for platform vs DLC APP tags in the
response. For example, requesting a rollback should only return response
for platform App request. Same as what Omaha/GE will do.

BUG=chromium:999047
TEST=nebraska_unittest.py

Change-Id: Ied173e71407fec49b163818c7ce1cb2401c6bd85
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/1951505
Tested-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Jae Hoon Kim <kimjae@chromium.org>
Commit-Queue: Amin Hassani <ahassani@chromium.org>
diff --git a/nebraska/nebraska.py b/nebraska/nebraska.py
index 579fbc1..4bc1a29 100755
--- a/nebraska/nebraska.py
+++ b/nebraska/nebraska.py
@@ -239,6 +239,7 @@
       self.event_type = None
       self.event_result = None
       self.previous_version = None
+      self.is_platform = None
 
       self.ParseApp(app)
 
@@ -278,6 +279,11 @@
       if None in (self.request_type, self.appid, self.version):
         raise InvalidRequestError('Invalid app request.')
 
+      # This is a weak indication of whether a request is for a platform update
+      # (platform App IDs don't have underscore, but DLCs have). But for now it
+      # robustly gets what we want.
+      self.is_platform = '_' not in self.appid
+
     def MatchAppData(self, app_data, partial_match_appid=False):
       """Returns true iff the app matches a given client request.
 
diff --git a/nebraska/nebraska_unittest.py b/nebraska/nebraska_unittest.py
index 278259a..54ec8ff 100755
--- a/nebraska/nebraska_unittest.py
+++ b/nebraska/nebraska_unittest.py
@@ -857,6 +857,20 @@
     self.assertEqual(app_requests[0].event_result, 1)
     self.assertEqual(app_requests[0].previous_version, '1')
 
+  def testDetectingPlatformAppRequest(self):
+    """Tests we correctly identify platform VS. DLC requests"""
+    request = GenerateAppRequest(appid='foo-platform')
+    self.assertTrue(request.is_platform)
+
+    request = GenerateAppRequest(appid='')
+    self.assertTrue(request.is_platform)
+
+    request = GenerateAppRequest(appid='foo-platform_dlc')
+    self.assertFalse(request.is_platform)
+
+    request = GenerateAppRequest(appid='_dlc')
+    self.assertFalse(request.is_platform)
+
 
 class ResponseTest(unittest.TestCase):
   """Tests for Response class."""