def setUpClass(cls): """Import some parametrized puppet classes. This is required to make sure that we have smart class variable available. Read all available smart class parameters for imported puppet class to be able to work with unique entity for each specific test. Raise an exception and skip all tests in case not enough parameters returned. """ super(SmartClassParametersTestCase, cls).setUpClass() cls.host_name = settings.server.hostname ssh.command('puppet module install --force puppetlabs/ntp') cls.env = Environment.info({u'name': 'production'}) Proxy.importclasses({ u'environment': cls.env['name'], u'name': cls.host_name, }) cls.puppet = Puppet.info({u'name': 'ntp'}) sc_params_list = SmartClassParameter.list({ 'environment': cls.env['name'], 'search': 'puppetclass=ntp' }) if len(sc_params_list) < 45: raise RuntimeError('There are not enough smart class parameters to' ' work with in provided puppet class') cls.sc_params_ids_list = [ sc_param['id'] for sc_param in sc_params_list ]
def setUpClass(cls): """Import a parametrized puppet class. """ super(PuppetClassTestCase, cls).setUpClass() cls.host_name = settings.server.hostname ssh.command('puppet module install --force puppetlabs/ntp') cls.env = Environment.info({u'name': 'production'}) Proxy.importclasses({ u'environment': cls.env['name'], u'name': cls.host_name, }) cls.puppet = Puppet.info({u'name': 'ntp'})
def test_positive_import_puppet_classes(self): """Import puppet classes from proxy :id: 42e3a9c0-62e1-4049-9667-f3c0cdfe0b04 :expectedresults: Puppet classes are imported from proxy :CaseImportance: Critical """ port = get_available_capsule_port() with default_url_on_new_port(9090, port) as url: proxy = self._make_proxy({u'url': url}) Proxy.importclasses({u'id': proxy['id']})
def test_positive_import_puppet_classes(self): """Import puppet classes from proxy @id: 42e3a9c0-62e1-4049-9667-f3c0cdfe0b04 @Assert: Puppet classes are imported from proxy """ port = get_available_capsule_port() with default_url_on_new_port(9090, port): url = u'https://{0}:{1}'.format(settings.server.hostname, port) proxy = make_proxy({u'url': url}) Proxy.importclasses({u'id': proxy['id']}) # Add capsule id to cleanup list self.addCleanup(capsule_cleanup, proxy['id'])
def test_positive_import_puppet_classes(self): """Import puppet classes from proxy @id: 42e3a9c0-62e1-4049-9667-f3c0cdfe0b04 @Assert: Puppet classes are imported from proxy """ port = get_available_capsule_port() with default_url_on_new_port(9090, port): url = u'https://{0}:{1}'.format(settings.server.hostname, port) proxy = make_proxy({u'url': url}) Proxy.importclasses({u'id': proxy['id']}) # Add capsule id to cleanup list self.addCleanup(capsule_cleanup, proxy['id'])
def setUpClass(cls): """Import some parametrized puppet classes. This is required to make sure that we have data to be able to perform interactions with smart class variables. """ super(SmartVariablesTestCase, cls).setUpClass() cls.puppet_module = "puppetlabs/ntp" cls.host_name = settings.server.hostname ssh.command('puppet module install --force {0}'.format( cls.puppet_module)) cls.env = Environment.info({u'name': 'production'}) Proxy.importclasses({ u'environment': cls.env['name'], u'name': cls.host_name, }) cls.puppet = Puppet.info({u'name': 'ntp'})
def setUpClass(cls): """Import some parametrized puppet classes. This is required to make sure that we have smart class variable available. Read all available smart class parameters for imported puppet class to be able to work with unique entity for each specific test. Raise an exception and skip all tests in case not enough parameters returned. """ super(SmartClassParametersTestCase, cls).setUpClass() cls.host_name = settings.server.hostname ssh.command("puppet module install --force puppetlabs/ntp") cls.env = Environment.info({u"name": "production"}) Proxy.importclasses({u"environment": cls.env["name"], u"name": cls.host_name}) cls.puppet = Puppet.info({u"name": "ntp"}) sc_params_list = SmartClassParameter.list({"environment": cls.env["name"], "search": "puppetclass=ntp"}) if len(sc_params_list) < 45: raise RuntimeError("There are not enough smart class parameters to" " work with in provided puppet class") cls.sc_params_ids_list = [sc_param["id"] for sc_param in sc_params_list]
def configure_puppet_test(): sat6_hostname = settings.server.hostname repo_values = [ {'repo': REPOS['rhst6']['name'], 'reposet': REPOSET['rhst6']}, {'repo': REPOS['rhst7']['name'], 'reposet': REPOSET['rhst7']}, ] # step 1: Create new organization and environment. org = entities.Organization(name=gen_string('alpha')).create() loc = entities.Location(name=DEFAULT_LOC).search()[0].read() puppet_env = entities.Environment( name='production').search()[0].read() puppet_env.location.append(loc) puppet_env.organization.append(org) puppet_env = puppet_env.update(['location', 'organization']) Proxy.importclasses({ u'environment': puppet_env.name, u'name': sat6_hostname, }) env = entities.LifecycleEnvironment( organization=org, name=gen_string('alpha') ).create() # step 2: Clone and Upload manifest with manifests.clone() as manifest: upload_manifest(org.id, manifest.content) # step 3: Sync RedHat Sattools RHEL6 and RHEL7 repository repos = [ entities.Repository(id=enable_rhrepo_and_fetchid( basearch='x86_64', org_id=org.id, product=PRDS['rhel'], repo=value['repo'], reposet=value['reposet'], releasever=None, )) for value in repo_values ] for repo in repos: repo.sync() # step 4: Create content view content_view = entities.ContentView( organization=org, name=gen_string('alpha') ).create() # step 5: Associate repository to new content view content_view.repository = repos content_view = content_view.update(['repository']) # step 6: Publish content view and promote to lifecycle env. content_view.publish() content_view = content_view.read() promote(content_view.version[0], env.id) # step 7: Create activation key ak_name = gen_string('alpha') activation_key = entities.ActivationKey( name=ak_name, environment=env, organization=org, content_view=content_view, ).create() # step 7.1: Walk through the list of subscriptions. # Find the "Employee SKU" and attach it to the # recently-created activation key. for sub in entities.Subscription(organization=org).search(): if sub.read_json()['product_name'] == DEFAULT_SUBSCRIPTION_NAME: # 'quantity' must be 1, not subscription['quantity']. Greater # values produce this error: "RuntimeError: Error: Only pools # with multi-entitlement product subscriptions can be added to # the activation key with a quantity greater than one." activation_key.add_subscriptions(data={ 'quantity': 1, 'subscription_id': sub.id, }) break for content_label in [REPOS['rhst6']['id'], REPOS['rhst7']['id']]: # step 7.2: Enable product content activation_key.content_override(data={'content_override': { u'content_label': content_label, u'value': u'1', }}) return { 'org_name': org.name, 'cv_name': content_view.name, 'sat6_hostname': settings.server.hostname, 'ak_name': ak_name, 'env_name': env.name, }