Chromium Code Reviews| Index: tools/telemetry/telemetry/core/platform/__init__.py |
| diff --git a/tools/telemetry/telemetry/core/platform/__init__.py b/tools/telemetry/telemetry/core/platform/__init__.py |
| index 80bf4932fb8135a83aec4b1b8276526a0b363f9c..d18323a30133ae67745c8c9912915dbe187403ef 100644 |
| --- a/tools/telemetry/telemetry/core/platform/__init__.py |
| +++ b/tools/telemetry/telemetry/core/platform/__init__.py |
| @@ -6,9 +6,9 @@ import logging as real_logging |
| import os |
| import sys |
| -from telemetry.core.platform import cros_device |
| -from telemetry.core.platform import cros_interface |
| -from telemetry.core.platform import cros_platform_backend |
| +from telemetry.core import discover |
| +from telemetry.core import util |
| +from telemetry.core.platform import platform_backend as platform_backend_module |
| from telemetry.core.platform import profiling_controller |
| from telemetry.core.platform import tracing_controller |
| @@ -34,8 +34,8 @@ def _InitHostPlatformIfNeeded(): |
| if _host_platform: |
| return |
| if _IsRunningOnCrosDevice(): |
| - backend = cros_platform_backend.CrosPlatformBackend( |
| - cros_interface.CrOSInterface()) |
| + from telemetry.core.platform import cros_platform_backend |
| + backend = cros_platform_backend.CrosPlatformBackend() |
|
achuithb
2014/09/24 11:05:41
This takes a CrOSDevice.
|
| elif sys.platform.startswith('linux'): |
| from telemetry.core.platform import linux_platform_backend |
| backend = linux_platform_backend.LinuxPlatformBackend() |
| @@ -61,20 +61,22 @@ def GetPlatformForDevice(device, logging=real_logging): |
| Args: |
| device: a device.Device instance. |
| """ |
| - if device.guid not in _remote_platforms: |
| - try: |
| - if isinstance(device, cros_device.CrOSDevice): |
| - cri = cros_interface.CrOSInterface( |
| - device.host_name, device.ssh_identity) |
| - cri.TryLogin() |
| - _remote_platforms[device.guid] = ( |
| - Platform(cros_platform_backend.CrosPlatformBackend(cri))) |
| - else: |
| - raise ValueError('Unsupported device type') |
| - except: |
| - logging.error('Fail to create platform instance for %s.', device.name) |
| - raise |
| - return _remote_platforms[device.guid] |
| + if device.guid in _remote_platforms: |
| + return _remote_platforms[device.guid] |
| + try: |
| + platform_backend = None |
| + platform_dir = os.path.dirname(os.path.realpath(__file__)) |
| + for platform_backend_class in discover.DiscoverClasses( |
| + platform_dir, util.GetTelemetryDir(), |
| + platform_backend_module.PlatformBackend).itervalues(): |
| + if platform_backend_class.SupportsDevice(device): |
| + platform_backend = platform_backend_class(device) |
| + _remote_platforms[device.guid] = Platform(platform_backend) |
| + return _remote_platforms[device.guid] |
| + return None |
| + except Exception: |
| + logging.error('Fail to create platform instance for %s.', device.name) |
| + raise |
| class Platform(object): |