| # Copyright 2017 Google Inc. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Stub host object for Libiota devices.""" |
| |
| import common |
| |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.common_lib.cros import dev_server |
| from autotest_lib.server import afe_utils |
| from autotest_lib.server.cros.dynamic_suite import constants as ds_constants |
| from autotest_lib.server.cros.dynamic_suite import tools |
| from autotest_lib.server.hosts import abstract_ssh |
| |
| |
| ARCHIVE_URL = ('https://pantheon.corp.google.com/storage/browser/' |
| 'abuildbot-build-archive/bbuildbot/libiota') |
| |
| |
| class IotaHost(abstract_ssh.AbstractSSHHost): |
| """Provides a stub for downloading the Libiota autotest package.""" |
| |
| VERSION_PREFIX = 'iota-version' |
| |
| def stage_server_side_package(self, image=None): |
| """Stage autotest server-side package on devserver. |
| |
| @param image: Full path of an OS image to install or a build name. |
| |
| @return: A url to the autotest server-side package. |
| |
| @raise: error.AutoservError if fail to locate the build to test with, or |
| fail to stage server-side package. |
| """ |
| if image: |
| image_name = tools.get_build_from_image(image) |
| if not image_name: |
| raise error.AutoservError( |
| 'Failed to parse build name from %s' % image) |
| ds = dev_server.ImageServer.resolve(image_name) |
| else: |
| job_repo_url = afe_utils.get_host_attribute( |
| self, ds_constants.JOB_REPO_URL) |
| if job_repo_url: |
| devserver_url, image_name = ( |
| tools.get_devserver_build_from_package_url(job_repo_url) |
| ) |
| ds = dev_server.ImageServer.resolve(image_name) |
| else: |
| labels = afe_utils.get_labels(self, self.VERSION_PREFIX) |
| if not labels: |
| raise error.AutoservError( |
| 'Failed to stage server-side package. The host has ' |
| 'no job_report_url attribute or version label.') |
| image_name = labels[0][len(self.VERSION_PREFIX + ':'):] |
| ds = dev_server.ImageServer.resolve(image_name) |
| |
| ds.stage_artifacts(image_name, ['autotest_server_package'], |
| archive_url=ARCHIVE_URL+image_name) |
| return '%s/static/%s/%s' % (ds.url(), image_name, |
| 'autotest_server_package.tar.bz2') |