from teuthology.exceptions import VersionNotFoundError
from teuthology.job_status import get_status, set_status
from teuthology.orchestra import cluster, remote, run
-from .redhat import setup_cdn_repo, setup_base_repo, setup_additional_repo # noqa
+from .redhat import setup_cdn_repo, setup_base_repo, setup_additional_repo, setup_stage_cdn # noqa
log = logging.getLogger(__name__)
import logging
import requests
from tempfile import NamedTemporaryFile
+from teuthology.config import config as teuthconfig
from teuthology.parallel import parallel
from teuthology.orchestra import run
from teuthology.task.install.redhat import set_deb_repo
log = logging.getLogger(__name__)
+@contextlib.contextmanager
+def setup_stage_cdn(ctx, config):
+ """
+ Configure internal stage cdn
+ """
+ with parallel() as p:
+ for remote in ctx.cluster.remotes.iterkeys():
+ if remote.os.name == 'rhel':
+ log.info("subscribing stage cdn on : %s", remote.shortname)
+ p.spawn(_subscribe_stage_cdn, remote, teuthconfig)
+
+ try:
+ yield
+ finally:
+ with parallel() as p:
+ for remote in ctx.cluster.remotes.iterkeys():
+ p.spawn(_unsubscribe_stage_cdn, remote)
+
+
+def _subscribe_stage_cdn(remote, teuthconfig):
+ cdn_config = teuthconfig.get('cdn-config', dict())
+ server_url = cdn_config.get('server-url', 'subscription.rhsm.stage.redhat.com:443/subscription')
+ base_url = cdn_config.get('base-url', 'https://cdn.stage.redhat.com')
+ username = cdn_config.get('username', 'qa@redhat.com')
+ password = cdn_config.get('password')
+ remote.run(
+ args=[
+ 'sudo', 'subscription-manager', '--force', 'register',
+ run.Raw('--serverurl=' + server_url),
+ run.Raw('--baseurl=' + base_url),
+ run.Raw('--username=' + username),
+ run.Raw('--password=' + password),
+ '--auto-attach'
+ ],
+ timeout=720)
+
+
+def _unsubscribe_stage_cdn(remote):
+ remote.run(args=['sudo', 'subcription-manger', 'unregister'])
+
+
@contextlib.contextmanager
def setup_cdn_repo(ctx, config):
"""