blob: d79ed11c985792759b50425223070a69c1c150c7 [file] [log] [blame]
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Module containing import helper used by autoupdate utility."""
import imp
import os
import common
from autotest_lib.utils import build_externals, external_packages
def download_and_import(module_name, package_class):
"""Tries to import module, if it fails, downloads and imports it.
@param module_name: Name of the module e.g. devserver.
@param package_class: autotest external_packages class to use.
"""
try:
return imp.load_module(module_name, *imp.find_module(module_name))
except ImportError:
pass
tot = external_packages.find_top_of_autotest_tree()
install_dir = os.path.join(tot, build_externals.INSTALL_DIR)
build_externals.build_and_install_packages(
[package_class], install_dir)
return imp.load_module(module_name, *imp.find_module(module_name))