devserver: Deprecate --remote_payload and --urlbase
--remote_payload flag was used to run a devserver (e.g. locally) and get
update payloads from another running devserver (lab).
We have deprecated the --remote_payload use case from autotests per
crrev.com/c/1692004 and cherry-picked it all the way back to M74 (even
passed stable). Now we can deprecate it from devserver too.
BUG=chromium:980362
TEST=unittests
Change-Id: I040566d769c1a4baa73da770734a98282444ada9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/1700392
Tested-by: Amin Hassani <[email protected]>
Reviewed-by: David Haddock <[email protected]>
Commit-Queue: Amin Hassani <[email protected]>
diff --git a/autoupdate.py b/autoupdate.py
index 1f259bf..9187699 100644
--- a/autoupdate.py
+++ b/autoupdate.py
@@ -139,7 +139,6 @@
"""Class that contains functionality that handles Chrome OS update pings.
Members:
- urlbase: base URL, other than devserver, for update images.
forced_image: path to an image to use for all updates.
payload_path: path to pre-generated payload to serve.
src_image: if specified, creates a delta payload from this image.
@@ -149,7 +148,6 @@
copy_to_static_root: copies images generated from the cache to ~/static.
public_key: path to public key in PEM format.
critical_update: whether provisioned payload is critical.
- remote_payload: whether provisioned payload is remotely staged.
max_updates: maximum number of updates we'll try to provision.
host_log: record full history of host update events.
"""
@@ -165,14 +163,13 @@
METADATA_SIZE_ATTR = 'metadata_size'
METADATA_HASH_ATTR = 'metadata_hash'
- def __init__(self, xbuddy, urlbase=None, forced_image=None, payload_path=None,
+ def __init__(self, xbuddy, forced_image=None, payload_path=None,
proxy_port=None, src_image='', board=None,
copy_to_static_root=True, public_key=None,
- critical_update=False, remote_payload=False, max_updates=-1,
- host_log=False, *args, **kwargs):
+ critical_update=False, max_updates=-1, host_log=False,
+ *args, **kwargs):
super(Autoupdate, self).__init__(*args, **kwargs)
self.xbuddy = xbuddy
- self.urlbase = urlbase or None
self.forced_image = forced_image
self.payload_path = payload_path
self.src_image = src_image
@@ -181,7 +178,6 @@
self.copy_to_static_root = copy_to_static_root
self.public_key = public_key
self.critical_update = critical_update
- self.remote_payload = remote_payload
self.max_updates = max_updates
self.host_log = host_log
@@ -502,44 +498,6 @@
constants.UPDATE_FILE))
return pregenerated_update
- def _GetRemotePayloadAttrs(self, url):
- """Returns hashes, size and delta flag of a remote update payload.
-
- Obtain attributes of a payload file available on a remote devserver. This
- is based on the assumption that the payload URL uses the /static prefix. We
- need to make sure that both clients (requests) and remote devserver
- (provisioning) preserve this invariant.
-
- Args:
- url: URL of statically staged remote file (http://host:port/static/...)
-
- Returns:
- A UpdateMetadata object.
- """
- if self._PAYLOAD_URL_PREFIX not in url:
- raise AutoupdateError(
- 'Payload URL does not have the expected prefix (%s)' %
- self._PAYLOAD_URL_PREFIX)
-
- if self._OLD_PAYLOAD_URL_PREFIX in url:
- fileinfo_url = url.replace(self._OLD_PAYLOAD_URL_PREFIX,
- self._FILEINFO_URL_PREFIX)
- else:
- fileinfo_url = url.replace(self._PAYLOAD_URL_PREFIX,
- self._FILEINFO_URL_PREFIX)
-
- _Log('Retrieving file info for remote payload via %s', fileinfo_url)
- try:
- conn = urllib2.urlopen(fileinfo_url)
- metadata_obj = Autoupdate._ReadMetadataFromStream(conn)
- # These fields are required for remote calls.
- if not metadata_obj:
- raise AutoupdateError('Failed to obtain remote payload info')
-
- return metadata_obj
- except IOError as e:
- raise AutoupdateError('Failed to obtain remote payload info: %s', e)
-
@staticmethod
def _GetMetadataHash(payload_dir):
"""Gets the metadata hash, if it exists.
@@ -705,11 +663,7 @@
"""Returns the static url base that should prefix all payload responses."""
hostname = self.GetDevserverUrl()
- if self.urlbase:
- static_urlbase = self.urlbase
- else:
- static_urlbase = '%s/static' % hostname
-
+ static_urlbase = '%s/static' % hostname
# If we have a proxy port, adjust the URL we instruct the client to
# use to go through the proxy.
if self.proxy_port:
@@ -874,30 +828,12 @@
metadata_obj = None
try:
- # Are we provisioning a remote or local payload?
- if self.remote_payload:
-
- self._CheckOmahaRequest(app)
-
- # If no explicit label was provided, use the value of --payload.
- if not label:
- label = self.payload_path
-
- # TODO(sosa): Remove backwards-compatible hack.
- if not '.bin' in label:
- url = _NonePathJoin(static_urlbase, label, 'update.gz')
- else:
- url = _NonePathJoin(static_urlbase, label)
-
- # Get remote payload attributes.
- metadata_obj = self._GetRemotePayloadAttrs(url)
- else:
- path_to_payload = self.GetPathToPayload(
- label, request_attrs.client_version, request_attrs.board)
- url = _NonePathJoin(static_urlbase, path_to_payload,
- constants.UPDATE_FILE)
- local_payload_dir = _NonePathJoin(self.static_dir, path_to_payload)
- metadata_obj = self.GetLocalPayloadAttrs(local_payload_dir)
+ path_to_payload = self.GetPathToPayload(
+ label, request_attrs.client_version, request_attrs.board)
+ url = _NonePathJoin(static_urlbase, path_to_payload,
+ constants.UPDATE_FILE)
+ local_payload_dir = _NonePathJoin(self.static_dir, path_to_payload)
+ metadata_obj = self.GetLocalPayloadAttrs(local_payload_dir)
except AutoupdateError as e:
# Raised if we fail to generate an update payload.
_Log('Failed to process an update: %r', e)
diff --git a/autoupdate_unittest.py b/autoupdate_unittest.py
index 98efbb3..833a174 100755
--- a/autoupdate_unittest.py
+++ b/autoupdate_unittest.py
@@ -52,7 +52,6 @@
self.mox.StubOutWithMock(common_util, 'GetFileSha256')
self.mox.StubOutWithMock(common_util, 'IsInsideChroot')
self.mox.StubOutWithMock(autoupdate_lib, 'GetUpdateResponse')
- self.mox.StubOutWithMock(autoupdate.Autoupdate, '_GetRemotePayloadAttrs')
self.port = 8080
self.test_board = 'test-board'
self.build_root = tempfile.mkdtemp('autoupdate_build_root')
@@ -309,32 +308,5 @@
self.assertFalse(
au._CanUpdate('1098.0.2011_09_28_1635', '1096.0.2011_09_30_0000'))
- def testHandleUpdatePingRemotePayload(self):
- remote_urlbase = 'http://remotehost:6666'
- remote_payload_path = 'static/path/to/update.gz'
- remote_url = '/'.join([remote_urlbase, remote_payload_path, 'update.gz'])
- au_mock = self._DummyAutoupdateConstructor(urlbase=remote_urlbase,
- payload_path=remote_payload_path,
- remote_payload=True)
-
- incomplete_test_data = _TEST_REQUEST % self.test_dict
- complete_test_data = _FULL_TEST_REQUEST % self.test_dict
-
- au_mock._GetRemotePayloadAttrs(remote_url).AndReturn(
- autoupdate.UpdateMetadata(self.sha1, self.sha256, self.size, False,
- 0, ''))
- autoupdate_lib.GetUpdateResponse(
- self.sha1, self.sha256, self.size, remote_url, False, 0, None, None,
- u'3.0', '', False).AndReturn(self.payload)
-
- self.mox.ReplayAll()
- # This should fail because of missing fields.
- self.assertRaises(common_util.DevServerHTTPError,
- au_mock.HandleUpdatePing, incomplete_test_data)
- # This should have enough information.
- self.assertEqual(au_mock.HandleUpdatePing(complete_test_data), self.payload)
- self.mox.VerifyAll()
-
-
if __name__ == '__main__':
unittest.main()
diff --git a/devserver.py b/devserver.py
index 6d4d7fb..130ce10 100755
--- a/devserver.py
+++ b/devserver.py
@@ -1767,17 +1767,6 @@
'from a different port that will proxy the request back to '
'the devserver. The proxy must be managed outside the '
'devserver.')
- group.add_option('--remote_payload',
- action='store_true', default=False,
- help='Payload is being served from a remote machine. With '
- 'this setting enabled, this devserver instance serves as '
- 'just an Omaha server instance. In this mode, the '
- 'devserver enforces a few extra components of the Omaha '
- 'protocol, such as hardware class, being sent.')
- group.add_option('-u', '--urlbase',
- metavar='URL',
- help='base URL for update images, other than the '
- 'devserver. Use in conjunction with remote_payload.')
parser.add_option_group(group)
@@ -1933,7 +1922,6 @@
updater = autoupdate.Autoupdate(
_xbuddy,
static_dir=options.static_dir,
- urlbase=options.urlbase,
forced_image=options.image,
payload_path=options.payload,
proxy_port=options.proxy_port,
@@ -1942,7 +1930,6 @@
copy_to_static_root=not options.exit,
public_key=options.public_key,
critical_update=options.critical_update,
- remote_payload=options.remote_payload,
max_updates=options.max_updates,
host_log=options.host_log,
)