def test_post_scenario_yum_plugins_count(self, default_org): """Upgrade katello agent on pre-upgrade content host registered with Satellite. :id: postupgrade-45241ada-c2c4-409e-a6e2-92c2cf0ac16c :steps: 1. Create Product, custom tools repo and sync them. 2. Add in content-view and publish it. 3. Attach custom subscription to content host. 4. Install katello-host-tools, so enabled_repos_upload yum plugin is enabled. 4. Update katello-agent and Restart goferd. 5. Check yum plugins count. :expectedresults: 1. Loaded yum plugins should not load more than two times. """ entity_data = get_entity_data(self.__class__.__name__) client = entity_data.get('rhel_client') client_container_id = list(client.values())[0] client_container_name = list(client.keys())[0] cv = entities.ContentView(id=entity_data.get('cv_id')).read() product = entities.Product(organization=default_org).create() tools_repo = self._create_custom_tools_repos(product) product.sync() cv.repository.pop() cv.repository.append(tools_repo) cv = cv.update(['repository']) call_entity_method_with_timeout(cv.publish, timeout=3400) attach_custom_product_subscription(prod_name=product.name, host_name=client_container_name) install_or_update_package(client_hostname=client_container_id, update=True, package='katello-host-tools') install_or_update_package(client_hostname=client_container_id, update=True, package='katello-agent') run_goferd(client_hostname=client_container_id) self._check_yum_plugins_count(client_container_id)
def test_post_scenario_postclient_package_installation(self): """Post-upgrade scenario that creates and installs the package on post-upgrade client remotely and then verifies if the package installed :id: postupgrade-1a881c07-595f-425f-aca9-df2337824a8e :steps: 1. Create a content host with existing client ak 2. Create and sync repo from which the package will be installed on content host 3. Add repo to CV and then in Activation key 4. Install package on a pre-upgrade client :expectedresults: 1. The content host is created 2. The new repo and its product has been added to ak using which the content host is created 3. The package is installed on post-upgrade client """ org = entities.Organization(name=self.org_name).create() prior_env = entities.LifecycleEnvironment(organization=org).search( query={'search': 'name=Library'})[0] environment = entities.LifecycleEnvironment( organization=org, prior=prior_env.id, label=self.le_name, name=self.le_name).create() ak = create_activation_key_for_client_registration( ak_name=self.ak_name, client_os='rhel7', org=org, environment=environment, sat_state='post', ) rhel7_client = dockerize(ak_name=ak.name, distro='rhel7', org_label=org.label) client_container_id = list(rhel7_client.values())[0] client_name = list(rhel7_client.keys())[0].lower() product, yum_repo = create_yum_test_repo(product_name=self.prod_name, repo_url=FAKE_REPO_ZOO3, org=org) update_product_subscription_in_ak(product=product, yum_repo=yum_repo, ak=ak, org=org) attach_custom_product_subscription(prod_name=product.name, host_name=client_name) # Refresh subscriptions on client execute( docker_execute_command, client_container_id, 'subscription-manager refresh', host=self.docker_vm, ) # Run goferd on client as its docker container kwargs = {'async': True, 'host': self.docker_vm} execute(docker_execute_command, client_container_id, 'goferd -f', **kwargs) status = execute(docker_execute_command, client_container_id, 'ps -aux', host=self.docker_vm)[self.docker_vm] self.assertIn('goferd', status) # Holding on for 30 seconds wihle goferd starts time.sleep(30) client_id = entities.Host().search( query={'search': 'name={}'.format(client_name)})[0].id entities.Host().install_content( data={ 'organization_id': org.id, 'included': { 'ids': [client_id] }, 'content_type': 'package', 'content': [self.package_name], }) # Validate if that package is really installed installed_package = execute( docker_execute_command, client_container_id, 'rpm -q {}'.format(self.package_name), host=self.docker_vm, )[self.docker_vm] self.assertIn(self.package_name, installed_package)
def test_pre_scenario_preclient_package_installation(self): """Create product and repo from which the package will be installed post upgrade :id: preupgrade-eedab638-fdc9-41fa-bc81-75dd2790f7be :steps: 1. Create a content host with existing client ak 2. Create and sync repo from which the package will be installed on content host 3. Add repo to CV and then in Activation key :expectedresults: 1. The content host is created 2. The new repo and its product has been added to ak using which the content host is created """ prior_env = entities.LifecycleEnvironment( organization=self.org).search(query={'search': 'name=Library'})[0] environment = entities.LifecycleEnvironment( organization=self.org, prior=prior_env.id, label=self.le_lable, name=self.le_name).create() ak = create_activation_key_for_client_registration( ak_name=self.ak_name, client_os='rhel7', org=self.org, environment=environment, sat_state='pre', ) rhel7_client = dockerize(ak_name=ak.name, distro='rhel7', org_label=self.org.label) client_container_id = list(rhel7_client.values())[0] product, yum_repo = create_yum_test_repo(product_name=self.prod_name, repo_url=FAKE_REPO_ZOO3, org=self.org) update_product_subscription_in_ak(product=product, yum_repo=yum_repo, ak=ak, org=self.org) attach_custom_product_subscription( prod_name=product.name, host_name=str(list(rhel7_client.keys())[0]).lower()) # Refresh subscriptions on client execute( docker_execute_command, client_container_id, 'subscription-manager refresh', host=self.docker_vm, ) # Run goferd on client as its docker container kwargs = {'async': True, 'host': self.docker_vm} execute(docker_execute_command, client_container_id, 'goferd -f', **kwargs) status = execute(docker_execute_command, client_container_id, 'ps -aux', host=self.docker_vm)[self.docker_vm] self.assertIn('goferd', status) create_dict({self.__class__.__name__: rhel7_client})
def test_post_scenario_postclient_package_installation(self): """Post-upgrade scenario that creates and installs the package on post-upgrade client remotely and then verifies if the package installed :id: postupgrade-1a881c07-595f-425f-aca9-df2337824a8e :steps: 1. Create a content host with existing client ak 2. Create and sync repo from which the package will be installed on content host 3. Add repo to CV and then in Activation key 4. Install package on a pre-upgrade client :expectedresults: 1. The content host is created 2. The new repo and its product has been added to ak using which the content host is created 3. The package is installed on post-upgrade client """ org = entities.Organization(name=self.org_name).create() prior_env = entities.LifecycleEnvironment(organization=org).search( query={'search': 'name=Library'} )[0] environment = entities.LifecycleEnvironment( organization=org, prior=prior_env.id, label=self.le_name, name=self.le_name ).create() ak = create_activation_key_for_client_registration( ak_name=self.ak_name, client_os='rhel7', org=org, environment=environment, sat_state='post' ) rhel7_client = dockerize( ak_name=ak.name, distro='rhel7', org_label=org.label) client_container_id = list(rhel7_client.values())[0] client_name = list(rhel7_client.keys())[0].lower() product, yum_repo = create_yum_test_repo( product_name=self.prod_name, repo_url=FAKE_REPO_ZOO3, org=org) update_product_subscription_in_ak( product=product, yum_repo=yum_repo, ak=ak, org=org) attach_custom_product_subscription( prod_name=product.name, host_name=client_name) # Refresh subscriptions on client execute( docker_execute_command, client_container_id, 'subscription-manager refresh', host=self.docker_vm ) # Run goferd on client as its docker container kwargs = {'async': True, 'host': self.docker_vm} execute( docker_execute_command, client_container_id, 'goferd -f', **kwargs ) status = execute(docker_execute_command, client_container_id, 'ps -aux', host=self.docker_vm)[self.docker_vm] self.assertIn('goferd', status) # Holding on for 30 seconds wihle goferd starts time.sleep(30) client_id = entities.Host().search( query={'search': 'name={}'.format(client_name)} )[0].id entities.Host().install_content(data={ 'organization_id': org.id, 'included': {'ids': [client_id]}, 'content_type': 'package', 'content': [self.package_name], }) # Validate if that package is really installed installed_package = execute( docker_execute_command, client_container_id, 'rpm -q {}'.format(self.package_name), host=self.docker_vm )[self.docker_vm] self.assertIn(self.package_name, installed_package)
def test_pre_scenario_preclient_package_installation(self): """Create product and repo from which the package will be installed post upgrade :id: preupgrade-eedab638-fdc9-41fa-bc81-75dd2790f7be :steps: 1. Create a content host with existing client ak 2. Create and sync repo from which the package will be installed on content host 3. Add repo to CV and then in Activation key :expectedresults: 1. The content host is created 2. The new repo and its product has been added to ak using which the content host is created """ prior_env = entities.LifecycleEnvironment( organization=self.org ).search(query={'search': 'name=Library'})[0] environment = entities.LifecycleEnvironment( organization=self.org, prior=prior_env.id, label=self.le_lable, name=self.le_name ).create() ak = create_activation_key_for_client_registration( ak_name=self.ak_name, client_os='rhel7', org=self.org, environment=environment, sat_state='pre' ) rhel7_client = dockerize( ak_name=ak.name, distro='rhel7', org_label=self.org.label) client_container_id = list(rhel7_client.values())[0] product, yum_repo = create_yum_test_repo( product_name=self.prod_name, repo_url=FAKE_REPO_ZOO3, org=self.org) update_product_subscription_in_ak( product=product, yum_repo=yum_repo, ak=ak, org=self.org) attach_custom_product_subscription( prod_name=product.name, host_name=str(list(rhel7_client.keys())[0]).lower()) # Refresh subscriptions on client execute( docker_execute_command, client_container_id, 'subscription-manager refresh', host=self.docker_vm ) # Run goferd on client as its docker container kwargs = {'async': True, 'host': self.docker_vm} execute( docker_execute_command, client_container_id, 'goferd -f', **kwargs ) status = execute(docker_execute_command, client_container_id, 'ps -aux', host=self.docker_vm)[self.docker_vm] self.assertIn('goferd', status) create_dict( {self.__class__.__name__: rhel7_client} )