]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
subscribe rhel octo nodes using stage cdn from configuration
authorVasu Kulkarni <vasu@redhat.com>
Fri, 8 Jun 2018 23:08:48 +0000 (16:08 -0700)
committerVasu Kulkarni <vasu@redhat.com>
Mon, 17 Dec 2018 23:10:49 +0000 (15:10 -0800)
Signed-off-by: Vasu Kulkarni <vasu@redhat.com>
teuthology/run.py
teuthology/task/internal/__init__.py
teuthology/task/internal/redhat.py

index 3d329b3a46a35bd2f5b768ff0f11ea14deaa94ae..236cc0eb3aecfba8b6eacd58d243b0bdea43888f 100644 (file)
@@ -230,6 +230,11 @@ def get_initial_tasks(lock, config, machine_type):
             {'selinux': None},
             {'clock': None}
         ])
+
+    if 'redhat' in config:
+        init_tasks.extend([
+            {'internal.setup_stage_cdn': None}
+        ])
     # dont run cm-ansible by default unless requested in config
     # nodes are reimaged by FOG and the images provided
     # by FOG have already gone through cm-ansible run
index 7d775d4b665c13646784ac508f1bbf0204cc3f20..fd5e7f3f856be81a58d468e4afc91e81c917d247 100644 (file)
@@ -19,7 +19,7 @@ from teuthology.config import config as teuth_config
 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__)
 
index 7fedff00659d44c64ad7c8d8425975a4999b80a5..1dae10dd071bd40a1a710e4b996186fc115fc475 100644 (file)
@@ -5,6 +5,7 @@ import contextlib
 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
@@ -12,6 +13,47 @@ 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):
     """