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."""