def FetchPath(binary_name, os_name, arch, os_version=None):
  """ Return a path to the appropriate executable for <binary_name>, downloading
      from cloud storage if needed, or None if it cannot be found.
  """
  if GetBinaryManager() is None:
    raise exceptions.InitializationError(
        'Called FetchPath with uninitialized binary manager.')
  return GetBinaryManager().FetchPath(
      binary_name, 'linux' if _IsChromeOSLocalMode(os_name) else os_name,
      arch, os_version)