Exemplo n.º 1
0
    def test_add_multiple_docker_repos_to_composite_content_view(self):
        """@Test: Add multiple Docker-type repositories to a composite
        content view.

        @Assert: One repository is created with a Docker image and the
        product is added to a random number of content views which are then
        added to a composite content view.

        @Feature: Docker

        """
        cv_versions = []
        product = make_product({'organization-id': self.org_id})
        for _ in range(randint(2, 5)):
            content_view = make_content_view({
                'composite': False,
                'organization-id': self.org_id,
            })
            repo = _make_docker_repo(product['id'])
            result = ContentView.add_repository({
                'id': content_view['id'],
                'repository-id': repo['id'],
            })
            self.assertEqual(result.return_code, 0)
            result = ContentView.publish({'id': content_view['id']})
            self.assertEqual(result.return_code, 0)
            content_view = ContentView.info({'id': content_view['id']}).stdout
            self.assertEqual(len(content_view['versions']), 1)
            cv_versions.append(content_view['versions'][0])
        comp_content_view = make_content_view({
            'composite': True,
            'organization-id': self.org_id,
        })
        cv_versions_ids = ','.join(
            cv_version['id'] for cv_version in cv_versions)
        result = ContentView.update({
            'component-ids': cv_versions_ids,
            'id': comp_content_view['id'],
        })
        self.assertEqual(result.return_code, 0)
        comp_content_view = ContentView.info({
            'id': comp_content_view['id'],
        }).stdout
        for cv_version in cv_versions:
            self.assertIn(
                cv_version['id'],
                [
                    component['id']
                    for component
                    in comp_content_view['components']
                ],
            )
Exemplo n.º 2
0
    def test_positive_update_cv(self):
        """Update Content View in an Activation key

        @Feature: Activation key - Positive Update

        @Assert: Activation key is updated
        """
        cv = make_content_view({u"organization-id": self.org["id"]})
        ak_cv = self._make_activation_key({u"content-view-id": cv["id"]})
        new_cv = make_content_view({u"organization-id": self.org["id"]})
        ActivationKey.update(
            {u"content-view": new_cv["name"], u"name": ak_cv["name"], u"organization-id": self.org["id"]}
        )
        updated_ak = ActivationKey.info({"id": ak_cv["id"]})
        self.assertEqual(updated_ak["content-view"], new_cv["name"])
Exemplo n.º 3
0
    def setUpClass(cls):
        """Create Org, Lifecycle Environment, Content View, Activation key

        """
        super(KatelloAgentTestCase, cls).setUpClass()
        # Create new org, environment, CV and activation key
        KatelloAgentTestCase.org = make_org()
        KatelloAgentTestCase.env = make_lifecycle_environment({
            u'organization-id': KatelloAgentTestCase.org['id'],
        })
        KatelloAgentTestCase.content_view = make_content_view({
            u'organization-id': KatelloAgentTestCase.org['id'],
        })
        KatelloAgentTestCase.activation_key = make_activation_key({
            u'lifecycle-environment-id': KatelloAgentTestCase.env['id'],
            u'organization-id': KatelloAgentTestCase.org['id'],
        })
        # Add subscription to Satellite Tools repo to activation key
        setup_org_for_a_rh_repo({
            u'product': PRDS['rhel'],
            u'repository-set': REPOSET['rhst7'],
            u'repository': REPOS['rhst7']['name'],
            u'organization-id': KatelloAgentTestCase.org['id'],
            u'content-view-id': KatelloAgentTestCase.content_view['id'],
            u'lifecycle-environment-id': KatelloAgentTestCase.env['id'],
            u'activationkey-id': KatelloAgentTestCase.activation_key['id'],
        })
        # Create custom repo, add subscription to activation key
        setup_org_for_a_custom_repo({
            u'url': FAKE_0_YUM_REPO,
            u'organization-id': KatelloAgentTestCase.org['id'],
            u'content-view-id': KatelloAgentTestCase.content_view['id'],
            u'lifecycle-environment-id': KatelloAgentTestCase.env['id'],
            u'activationkey-id': KatelloAgentTestCase.activation_key['id'],
        })
Exemplo n.º 4
0
 def setUpClass(cls):
     """Tests for Content Host via Hammer CLI"""
     super(ContentHostTestCase, cls).setUpClass()
     ContentHostTestCase.NEW_ORG = make_org(cached=True)
     ContentHostTestCase.NEW_LIFECYCLE = make_lifecycle_environment(
         {u'organization-id': ContentHostTestCase.NEW_ORG['id']},
         cached=True
     )
     ContentHostTestCase.LIBRARY = LifecycleEnvironment.info({
         u'organization-id': ContentHostTestCase.NEW_ORG['id'],
         u'name': u'Library',
     })
     ContentHostTestCase.DEFAULT_CV = ContentView.info({
         u'organization-id': ContentHostTestCase.NEW_ORG['id'],
         u'name': u'Default Organization View',
     })
     ContentHostTestCase.NEW_CV = make_content_view({
         u'organization-id': ContentHostTestCase.NEW_ORG['id'],
     })
     cv_id = ContentHostTestCase.NEW_CV['id']
     ContentView.publish({u'id': cv_id})
     version_id = ContentView.version_list({
         u'content-view-id': cv_id,
     })[0]['id']
     ContentView.version_promote({
         u'id': version_id,
         u'to-lifecycle-environment-id': ContentHostTestCase.NEW_LIFECYCLE[
             'id'
         ],
         u'organization-id': ContentHostTestCase.NEW_ORG['id']
     })
     ContentHostTestCase.PROMOTED_CV = ContentHostTestCase.NEW_CV
Exemplo n.º 5
0
    def test_positive_create_with_cv(self):
        """Create Activation key for all variations of Content Views

        :id: ec7b1af5-c3f4-40c3-b1df-c69c02a3b9a7

        :expectedresults: Activation key is created and has proper content view
            assigned

        :CaseLevel: Integration
        """
        for name in valid_data_list():
            with self.subTest(name):
                new_cv = make_content_view({
                    u'name': name,
                    u'organization-id': self.org['id'],
                })
                new_ak_cv = self._make_activation_key({
                    u'content-view':
                    new_cv['name'],
                    u'environment':
                    self.get_default_env()['name'],
                    u'organization-id':
                    self.org['id'],
                })
                self.assertEqual(new_ak_cv['content-view'], name)
Exemplo n.º 6
0
 def setUpClass(cls):
     """Create necessary objects which can be re-used in tests."""
     super(DockerActivationKeyTestCase, cls).setUpClass()
     cls.org = make_org()
     cls.lce = make_lifecycle_environment({
         'organization-id': cls.org['id'],
     })
     cls.product = make_product({
         'organization-id': cls.org['id'],
     })
     cls.repo = _make_docker_repo(cls.product['id'])
     cls.content_view = make_content_view({
         'composite': False,
         'organization-id': cls.org['id'],
     })
     ContentView.add_repository({
         'id': cls.content_view['id'],
         'repository-id': cls.repo['id'],
     })
     cls.content_view = ContentView.info({
         'id': cls.content_view['id']
     })
     ContentView.publish({'id': cls.content_view['id']})
     cls.content_view = ContentView.info({
         'id': cls.content_view['id']})
     cls.cvv = ContentView.version_info({
         'id': cls.content_view['versions'][0]['id'],
     })
     ContentView.version_promote({
         'id': cls.content_view['versions'][0]['id'],
         'lifecycle-environment-id': cls.lce['id'],
     })
     cls.cvv = ContentView.version_info({
         'id': cls.content_view['versions'][0]['id'],
     })
Exemplo n.º 7
0
    def test_add_docker_repo_to_composite_content_view(self):
        """@Test: Add one Docker-type repository to a composite content view

        @Assert: A repository is created with a Docker repository and the
        product is added to a content view which is then added to a composite
        content view.

        @Feature: Docker

        """
        self._create_and_associate_repo_with_cv()
        ContentView.publish({'id': self.content_view['id']})
        self.content_view = ContentView.info({
            'id': self.content_view['id']})
        self.assertEqual(len(self.content_view['versions']), 1)
        comp_content_view = make_content_view({
            'composite': True,
            'organization-id': self.org_id,
        })
        ContentView.update({
            'id': comp_content_view['id'],
            'component-ids': self.content_view['versions'][0]['id'],
        })
        comp_content_view = ContentView.info({
            'id': comp_content_view['id'],
        })
        self.assertIn(
            self.content_view['versions'][0]['id'],
            [component['id'] for component in comp_content_view['components']],
        )
Exemplo n.º 8
0
    def _create_and_associate_repo_with_cv(self):
        """Create a Docker-based repository and content view and associate
        them.

        """
        self.repo = _make_docker_repo(
            make_product({'organization-id': self.org_id})['id'])
        self.content_view = make_content_view({
            'composite': False,
            'organization-id': self.org_id,
        })
        ContentView.add_repository({
            'id': self.content_view['id'],
            'repository-id': self.repo['id'],
        })
        self.content_view = ContentView.info({
            'id': self.content_view['id']
        })
        self.assertIn(
            self.repo['id'],
            [
                repo_['id']
                for repo_
                in self.content_view['docker-repositories']
            ],
        )
    def test_positive_update_aks_to_chost(self):
        """Check if multiple Activation keys can be attached to a
        Content host

        @Feature: Activation key - Content host

        @Assert: Multiple Activation keys are attached to a Content host
        """
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        new_aks = [
            make_activation_key({
                u'lifecycle-environment-id': env['id'],
                u'content-view': new_cv['name'],
                u'organization-id': self.org['id'],
            })
            for _ in range(2)
        ]
        with VirtualMachine(distro='rhel65') as vm:
            vm.install_katello_ca()
            for i in range(2):
                result = vm.register_contenthost(
                    new_aks[i]['name'], self.org['label'])
                self.assertEqual(result.return_code, 0)
Exemplo n.º 10
0
    def test_positive_create_9(self):
        """@test: Create Activation key with environment name

        @feature: Activation key - Positive Create

        @steps:
        1. Create Activation key by entering its name, a content view and a
        environment name.

        @assert: Activation key is created

        @bz: 1109648

        """
        content_view = make_content_view({u"organization-id": self.org["id"]})

        try:
            self._make_activation_key(
                {
                    u"content-view": content_view["name"],
                    u"environment": self.library["name"],
                    u"organization-id": self.org["id"],
                }
            )
        except CLIFactoryError as err:
            self.fail(err)
Exemplo n.º 11
0
    def test_positive_update_lce(self):
        """Update Environment in an Activation key

        @Feature: Activation key - Positive Update

        @Assert: Activation key is updated
        """
        ak_env = self._make_activation_key({
            u'lifecycle-environment-id': self.get_default_env()['id'],
        })
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        ActivationKey.update({
            u'id': ak_env['id'],
            u'lifecycle-environment-id': env['id'],
            u'content-view': new_cv['name'],
            u'organization-id': self.org['id'],
        })
        updated_ak = ActivationKey.info({'id': ak_env['id']})
        self.assertEqual(updated_ak['lifecycle-environment'], env['name'])
Exemplo n.º 12
0
    def test_positive_update_lce(self):
        """@Test: Update Environment in an Activation key

        @Feature: Activation key - Positive Update

        @Assert: Activation key is updated
        """
        ak_env = self._make_activation_key({
            u'lifecycle-environment-id': self.get_default_env()['id'],
        })
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        ActivationKey.update({
            u'id': ak_env['id'],
            u'lifecycle-environment-id': env['id'],
            u'content-view': new_cv['name'],
            u'organization-id': self.org['id'],
        })
        updated_ak = ActivationKey.info({'id': ak_env['id']})
        self.assertEqual(updated_ak['lifecycle-environment'], env['name'])
Exemplo n.º 13
0
    def test_positive_sync_publish_promote_cv(self):
        """Synchronize repository with DRPMs, add repository to content view,
        publish and promote content view to lifecycle environment

        @id: a01cb12b-d388-4902-8532-714f4e28ec56

        @Assert: drpms can be listed in content view in proper lifecycle
        environment
        """
        lce = make_lifecycle_environment({"organization-id": self.org["id"]})
        repo = make_repository({"product-id": self.product["id"], "url": FAKE_YUM_DRPM_REPO})
        Repository.synchronize({"id": repo["id"]})
        cv = make_content_view({"organization-id": self.org["id"]})
        ContentView.add_repository({"id": cv["id"], "repository-id": repo["id"]})
        ContentView.publish({"id": cv["id"]})
        content_view = ContentView.info({"id": cv["id"]})
        cvv = content_view["versions"][0]
        ContentView.version_promote({"id": cvv["id"], "to-lifecycle-environment-id": lce["id"]})
        result = ssh.command(
            "ls /var/lib/pulp/published/yum/https/repos/{}/{}/{}/custom/{}/{}"
            "/drpms/ | grep .drpm".format(
                self.org["label"], lce["label"], cv["label"], self.product["label"], repo["label"]
            )
        )
        self.assertEqual(result.return_code, 0)
        self.assertGreaterEqual(len(result.stdout), 1)
Exemplo n.º 14
0
 def setUpClass(cls):
     """Create Directory for all CV Sync Tests in /tmp"""
     super(ContentViewSync, cls).setUpClass()
     cls.exporting_org = make_org()
     cls.exporting_prod = gen_string('alpha')
     product = make_product({
         'organization-id': cls.exporting_org['id'],
         'name': cls.exporting_prod
     })
     cls.exporting_repo = gen_string('alpha')
     repo = make_repository({
         'name': cls.exporting_repo,
         'download-policy': 'immediate',
         'product-id': product['id']
     })
     Repository.synchronize({'id': repo['id']})
     cls.exporting_cv = gen_string('alpha')
     content_view = make_content_view({
         'name': cls.exporting_cv,
         'organization-id': cls.exporting_org['id']
     })
     ContentView.add_repository({
         'id': content_view['id'],
         'organization-id': cls.exporting_org['id'],
         'repository-id': repo['id']
     })
     ContentView.publish({u'id': content_view['id']})
     content_view = ContentView.info({u'id': content_view['id']})
     cls.exporting_cvv_id = content_view['versions'][0]['id']
Exemplo n.º 15
0
 def setUpClass(cls):
     """Tests for Content Host via Hammer CLI"""
     super(ContentHostTestCase, cls).setUpClass()
     ContentHostTestCase.NEW_ORG = make_org(cached=True)
     ContentHostTestCase.NEW_LIFECYCLE = make_lifecycle_environment(
         {u"organization-id": ContentHostTestCase.NEW_ORG["id"]}, cached=True
     )
     ContentHostTestCase.LIBRARY = LifecycleEnvironment.info(
         {u"organization-id": ContentHostTestCase.NEW_ORG["id"], u"name": u"Library"}
     )
     ContentHostTestCase.DEFAULT_CV = ContentView.info(
         {u"organization-id": ContentHostTestCase.NEW_ORG["id"], u"name": u"Default Organization View"}
     )
     ContentHostTestCase.NEW_CV = make_content_view({u"organization-id": ContentHostTestCase.NEW_ORG["id"]})
     cv_id = ContentHostTestCase.NEW_CV["id"]
     ContentView.publish({u"id": cv_id})
     version_id = ContentView.version_list({u"content-view-id": cv_id})[0]["id"]
     ContentView.version_promote(
         {
             u"id": version_id,
             u"to-lifecycle-environment-id": ContentHostTestCase.NEW_LIFECYCLE["id"],
             u"organization-id": ContentHostTestCase.NEW_ORG["id"],
         }
     )
     ContentHostTestCase.PROMOTED_CV = ContentHostTestCase.NEW_CV
Exemplo n.º 16
0
    def test_positive_sync_publish_cv(self):
        """Synchronize repository with DRPMs, add repository to content view
        and publish content view

        @id: 014bfc80-4622-422e-a0ec-755b1d9f845e

        @Assert: drpms can be listed in content view
        """
        repo = make_repository({
            'product-id': self.product['id'],
            'url': FAKE_YUM_DRPM_REPO,
        })
        Repository.synchronize({'id': repo['id']})
        cv = make_content_view({'organization-id': self.org['id']})
        ContentView.add_repository({
            'id': cv['id'],
            'repository-id': repo['id'],
        })
        ContentView.publish({'id': cv['id']})
        result = ssh.command(
            'ls /var/lib/pulp/published/yum/https/repos/{}/content_views/{}'
            '/1.0/custom/{}/{}/drpms/ | grep .drpm'.format(
                self.org['label'],
                cv['label'],
                self.product['label'],
                repo['label'],
            ))
        self.assertEqual(result.return_code, 0)
        self.assertGreaterEqual(len(result.stdout), 1)
Exemplo n.º 17
0
    def test_positive_sync_publish_cv(self):
        """Synchronize repository with SRPMs, add repository to content view
        and publish content view

        @id: 78cd6345-9c6c-490a-a44d-2ad64b7e959b

        @Assert: srpms can be listed in content view
        """
        repo = make_repository({
            'product-id': self.product['id'],
            'url': FAKE_YUM_SRPM_REPO,
        })
        Repository.synchronize({'id': repo['id']})
        cv = make_content_view({'organization-id': self.org['id']})
        ContentView.add_repository({
            'id': cv['id'],
            'repository-id': repo['id'],
        })
        ContentView.publish({'id': cv['id']})
        result = ssh.command(
            'ls /var/lib/pulp/published/yum/https/repos/{}/content_views/{}'
            '/1.0/custom/{}/{}/ | grep .src.rpm'.format(
                self.org['label'],
                cv['label'],
                self.product['label'],
                repo['label'],
            ))
        self.assertEqual(result.return_code, 0)
        self.assertGreaterEqual(len(result.stdout), 1)
Exemplo n.º 18
0
    def setUp(self):
        """Tests for Host Collections via Hammer CLI"""
        super(HostCollectionTestCase, self).setUp()

        if HostCollectionTestCase.org is None:
            HostCollectionTestCase.org = make_org(cached=True)
        if HostCollectionTestCase.new_lifecycle is None:
            HostCollectionTestCase.new_lifecycle = make_lifecycle_environment(
                {u"organization-id": HostCollectionTestCase.org["id"]}, cached=True
            )
        if HostCollectionTestCase.library is None:
            HostCollectionTestCase.library = LifecycleEnvironment.info(
                {u"organization-id": HostCollectionTestCase.org["id"], u"name": ENVIRONMENT}
            )
        if HostCollectionTestCase.default_cv is None:
            HostCollectionTestCase.default_cv = ContentView.info(
                {u"organization-id": HostCollectionTestCase.org["id"], u"name": DEFAULT_CV}
            )
        if HostCollectionTestCase.new_cv is None:
            HostCollectionTestCase.new_cv = make_content_view({u"organization-id": HostCollectionTestCase.org["id"]})
            HostCollectionTestCase.promoted_cv = None
            cv_id = HostCollectionTestCase.new_cv["id"]
            ContentView.publish({u"id": cv_id})
            result = ContentView.version_list({u"content-view-id": cv_id})
            version_id = result[0]["id"]
            ContentView.version_promote(
                {
                    u"id": version_id,
                    u"organization-id": HostCollectionTestCase.org["id"],
                    u"to-lifecycle-environment-id": (HostCollectionTestCase.new_lifecycle["id"]),
                }
            )
            HostCollectionTestCase.promoted_cv = HostCollectionTestCase.new_cv
Exemplo n.º 19
0
 def setUpClass(cls):
     """Create Org, Lifecycle Environment, Content View, Activation key
     """
     super(RemoteExecutionTestCase, cls).setUpClass()
     cls.org = make_org()
     ssh.command(
         '''echo 'getenforce' > {0}'''.format(TEMPLATE_FILE)
     )
     cls.env = make_lifecycle_environment({
         u'organization-id': cls.org['id'],
     })
     cls.content_view = make_content_view({
         u'organization-id': cls.org['id'],
     })
     cls.activation_key = make_activation_key({
         u'lifecycle-environment-id': cls.env['id'],
         u'organization-id': cls.org['id'],
     })
     # Add subscription to Satellite Tools repo to activation key
     setup_org_for_a_rh_repo({
         u'product': PRDS['rhel'],
         u'repository-set': REPOSET['rhst7'],
         u'repository': REPOS['rhst7']['name'],
         u'organization-id': cls.org['id'],
         u'content-view-id': cls.content_view['id'],
         u'lifecycle-environment-id': cls.env['id'],
         u'activationkey-id': cls.activation_key['id'],
     })
Exemplo n.º 20
0
def ostree_repo_with_user(ostree_user_credentials):
    """Create an user, organization, product and ostree repo,
    sync ostree repo for particular user,
    create content view and publish it for particular user
    """
    org = make_org_with_credentials(credentials=ostree_user_credentials)
    product = make_product_with_credentials({'organization-id': org['id']},
                                            ostree_user_credentials)
    # Create new custom ostree repo
    ostree_repo = make_repository_with_credentials(
        {
            'product-id': product['id'],
            'content-type': 'ostree',
            'publish-via-http': 'false',
            'url': OSTREE_REPO,
        },
        ostree_user_credentials,
    )
    Repository.with_user(*ostree_user_credentials).synchronize(
        {'id': ostree_repo['id']})
    cv = make_content_view(
        {
            'organization-id': org['id'],
            'repository-ids': [ostree_repo['id']]
        },
        ostree_user_credentials,
    )
    ContentView.with_user(*ostree_user_credentials).publish({'id': cv['id']})
    cv = ContentView.with_user(*ostree_user_credentials).info({'id': cv['id']})
    return {
        'cv': cv,
        'org': org,
        'ostree_repo': ostree_repo,
        'product': product
    }
Exemplo n.º 21
0
    def test_positive_update_activation_key_5(self, test_data):
        """@Test: Update Content View in an Activation key

        @Feature: Activation key - Positive Update

        @Steps:
        1. Create Activation key
        2. Update Content View for all variations in [1] and include both
        RH and custom products

        @Assert: Activation key is updated

        """
        try:
            activation_key = self._make_activation_key({u"organization-id": self.org["id"]})
            con_view = make_content_view({u"organization-id": self.org["id"], u"name": test_data["content-view"]})
        except CLIFactoryError as err:
            self.fail(err)

        result = ActivationKey.update(
            {u"name": activation_key["name"], u"content-view": con_view["name"], u"organization-id": self.org["id"]}
        )
        self.assertEqual(result.return_code, 0, "Failed to update activation key")
        self.assertEqual(len(result.stderr), 0, "There should not be an error here")

        result = ActivationKey.info({u"id": activation_key["id"]})
        self.assertEqual(result.return_code, 0, "Failed to get info for activation key")
        self.assertEqual(len(result.stderr), 0, "There should not be an error here")
        self.assertEqual(
            result.stdout["content-view"], test_data["content-view"], "Activation key content-view was not updated"
        )
Exemplo n.º 22
0
    def test_positive_update_aks_to_chost(self):
        """Check if multiple Activation keys can be attached to a
        Content host

        @Feature: Activation key - Content host

        @Assert: Multiple Activation keys are attached to a Content host
        """
        env = make_lifecycle_environment({u"organization-id": self.org["id"]})
        new_cv = make_content_view({u"organization-id": self.org["id"]})
        ContentView.publish({u"id": new_cv["id"]})
        cvv = ContentView.info({u"id": new_cv["id"]})["versions"][0]
        ContentView.version_promote({u"id": cvv["id"], u"to-lifecycle-environment-id": env["id"]})
        new_aks = [
            make_activation_key(
                {
                    u"lifecycle-environment-id": env["id"],
                    u"content-view": new_cv["name"],
                    u"organization-id": self.org["id"],
                }
            )
            for _ in range(2)
        ]
        with VirtualMachine(distro="rhel65") as vm:
            vm.install_katello_ca()
            for i in range(2):
                result = vm.register_contenthost(new_aks[i]["name"], self.org["label"])
                self.assertEqual(result.return_code, 0)
Exemplo n.º 23
0
    def setUpClass(cls):
        """Create Org, Lifecycle Environment, Content View, Activation key

        """
        super(KatelloAgentTestCase, cls).setUpClass()
        # Create new org, environment, CV and activation key
        KatelloAgentTestCase.org = make_org()
        KatelloAgentTestCase.env = make_lifecycle_environment({
            u'organization-id': KatelloAgentTestCase.org['id'],
        })
        KatelloAgentTestCase.content_view = make_content_view({
            u'organization-id': KatelloAgentTestCase.org['id'],
        })
        KatelloAgentTestCase.activation_key = make_activation_key({
            u'lifecycle-environment-id': KatelloAgentTestCase.env['id'],
            u'organization-id': KatelloAgentTestCase.org['id'],
        })
        # Add subscription to Satellite Tools repo to activation key
        setup_org_for_a_rh_repo({
            u'product': PRDS['rhel'],
            u'repository-set': REPOSET['rhst7'],
            u'repository': REPOS['rhst7']['name'],
            u'organization-id': KatelloAgentTestCase.org['id'],
            u'content-view-id': KatelloAgentTestCase.content_view['id'],
            u'lifecycle-environment-id': KatelloAgentTestCase.env['id'],
            u'activationkey-id': KatelloAgentTestCase.activation_key['id'],
        })
        # Create custom repo, add subscription to activation key
        setup_org_for_a_custom_repo({
            u'url': FAKE_0_YUM_REPO,
            u'organization-id': KatelloAgentTestCase.org['id'],
            u'content-view-id': KatelloAgentTestCase.content_view['id'],
            u'lifecycle-environment-id': KatelloAgentTestCase.env['id'],
            u'activationkey-id': KatelloAgentTestCase.activation_key['id'],
        })
Exemplo n.º 24
0
    def test_add_docker_repo_to_content_view(self):
        """@Test: Add one Docker-type repository to a non-composite content view

        @Assert: A repository is created with a Docker repository and the
        product is added to a non-composite content view

        @Feature: Docker

        """
        repo = _make_docker_repo(
            make_product({'organization-id': self.org_id})['id'])
        content_view = make_content_view({
            'composite': False,
            'organization-id': self.org_id,
        })
        result = ContentView.add_repository({
            'id': content_view['id'],
            'repository-id': repo['id'],
        })
        self.assertEqual(result.return_code, 0)
        content_view = ContentView.info({'id': content_view['id']}).stdout
        self.assertIn(
            repo['id'],
            [repo_['id'] for repo_ in content_view['docker-repositories']],
        )
Exemplo n.º 25
0
    def test_add_multiple_docker_repos_to_content_view(self):
        """@Test: Add multiple Docker-type repositories to a
        non-composite content view.

        @Assert: Repositories are created with Docker images and the
        product is added to a non-composite content view.

        @Feature: Docker

        """
        product = make_product({'organization-id': self.org_id})
        repos = [
            _make_docker_repo(product['id'])
            for _
            in range(randint(2, 5))
        ]
        content_view = make_content_view({
            'composite': False,
            'organization-id': self.org_id,
        })
        for repo in repos:
            result = ContentView.add_repository({
                'id': content_view['id'],
                'repository-id': repo['id'],
            })
            self.assertEqual(result.return_code, 0)
        content_view = ContentView.info({'id': content_view['id']}).stdout
        self.assertEqual(
            set([repo['id'] for repo in repos]),
            set([repo['id'] for repo in content_view['docker-repositories']]),
        )
Exemplo n.º 26
0
 def setup_content_view(self, org_id, lce_id=None):
     # type: (int, int) -> Tuple[Dict, Dict]
     """Setup organization content view by adding all the repositories, publishing and promoting
     to lce if needed.
     """
     if lce_id is None:
         lce = make_lifecycle_environment({'organization-id': org_id})
     else:
         lce = LifecycleEnvironment.info({
             'id': lce_id,
             'organization-id': org_id
         })
     content_view = make_content_view({'organization-id': org_id})
     # Add repositories to content view
     for repo in self:
         repo.add_to_content_view(org_id, content_view['id'])
     # Publish the content view
     ContentView.publish({'id': content_view['id']})
     if lce['name'] != ENVIRONMENT:
         # Get the latest content view version id
         content_view_version = ContentView.info({'id': content_view['id']
                                                  })['versions'][-1]
         # Promote content view version to lifecycle environment
         ContentView.version_promote({
             'id':
             content_view_version['id'],
             'organization-id':
             org_id,
             'to-lifecycle-environment-id':
             lce['id'],
         })
     content_view = ContentView.info({'id': content_view['id']})
     return content_view, lce
Exemplo n.º 27
0
    def test_positive_update_lce(self):
        """Update Environment in an Activation key

        :id: 55aaee60-b8c8-49f0-995a-6c526b9b653b

        :expectedresults: Activation key is updated

        :CaseLevel: Integration
        """
        ak_env = self._make_activation_key({
            u'lifecycle-environment-id': self.get_default_env()['id'],
        })
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        ActivationKey.update({
            u'id': ak_env['id'],
            u'lifecycle-environment-id': env['id'],
            u'content-view': new_cv['name'],
            u'organization-id': self.org['id'],
        })
        updated_ak = ActivationKey.info({'id': ak_env['id']})
        self.assertEqual(updated_ak['lifecycle-environment'], env['name'])
Exemplo n.º 28
0
 def setUpClass(cls):
     """Create Org, Lifecycle Environment, Content View, Activation key
     """
     super(RemoteExecutionTestCase, cls).setUpClass()
     cls.org = make_org()
     ssh.command(
         '''echo 'getenforce' > {0}'''.format(TEMPLATE_FILE)
     )
     cls.env = make_lifecycle_environment({
         u'organization-id': cls.org['id'],
     })
     cls.content_view = make_content_view({
         u'organization-id': cls.org['id'],
     })
     cls.activation_key = make_activation_key({
         u'lifecycle-environment-id': cls.env['id'],
         u'organization-id': cls.org['id'],
     })
     # Add subscription to Satellite Tools repo to activation key
     setup_org_for_a_rh_repo({
         u'product': PRDS['rhel'],
         u'repository-set': REPOSET['rhst7'],
         u'repository': REPOS['rhst7']['name'],
         u'organization-id': cls.org['id'],
         u'content-view-id': cls.content_view['id'],
         u'lifecycle-environment-id': cls.env['id'],
         u'activationkey-id': cls.activation_key['id'],
     })
Exemplo n.º 29
0
 def setUpClass(cls):
     """Create an organization, product and ostree repo."""
     super(OstreeBranchTestCase, cls).setUpClass()
     password = '******'
     cls.user = make_user({'admin': 'true', 'password': password})
     cls.user['password'] = password
     credentials = cls.get_user_credentials()
     cls.org = make_org_with_credentials(credentials=credentials)
     cls.product = make_product_with_credentials(
         {u'organization-id': cls.org['id']}, credentials)
     # Create new custom ostree repo
     cls.ostree_repo = make_repository_with_credentials(
         {
             u'product-id': cls.product['id'],
             u'content-type': u'ostree',
             u'publish-via-http': u'false',
             u'url': FEDORA27_OSTREE_REPO,
         }, credentials)
     Repository.with_user(*credentials).synchronize(
         {'id': cls.ostree_repo['id']})
     cls.cv = make_content_view(
         {
             u'organization-id': cls.org['id'],
             u'repository-ids': [cls.ostree_repo['id']],
         }, credentials)
     ContentView.with_user(*credentials).publish({u'id': cls.cv['id']})
     cls.cv = ContentView.with_user(*credentials).info(
         {u'id': cls.cv['id']})
Exemplo n.º 30
0
    def set_importing_org(self, product, repo, cv):
        """Sets same CV, product and repository in importing organization as
        exporting organization

        :param str product: The product name same as exporting product
        :param str repo: The repo name same as exporting repo
        :param str cv: The cv name same as exporting cv
        """
        self.importing_org = make_org()
        importing_prod = make_product({
            'organization-id': self.importing_org['id'],
            'name': product
        })
        importing_repo = make_repository({
            'name': repo,
            'download-policy': 'immediate',
            'product-id': importing_prod['id']
        })
        self.importing_cv = make_content_view({
            'name': cv,
            'organization-id': self.importing_org['id']
        })
        ContentView.add_repository({
            'id': self.importing_cv['id'],
            'organization-id': self.importing_org['id'],
            'repository-id': importing_repo['id']
        })
Exemplo n.º 31
0
    def test_positive_update_aks_to_chost(self):
        """Check if multiple Activation keys can be attached to a
        Content host

        :id: 24fddd9c-03ae-41a7-8649-72296cbbafdf

        :expectedresults: Multiple Activation keys are attached to a Content
            host

        :CaseLevel: System
        """
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        new_aks = [
            make_activation_key({
                u'lifecycle-environment-id': env['id'],
                u'content-view': new_cv['name'],
                u'organization-id': self.org['id'],
            })
            for _ in range(2)
        ]
        with VirtualMachine(distro=DISTRO_RHEL6) as vm:
            vm.install_katello_ca()
            for i in range(2):
                vm.register_contenthost(
                    self.org['label'], new_aks[i]['name'])
                self.assertTrue(vm.subscribed)
Exemplo n.º 32
0
    def test_positive_update_lce(self):
        """Update Environment in an Activation key

        :id: 55aaee60-b8c8-49f0-995a-6c526b9b653b

        :expectedresults: Activation key is updated

        :CaseLevel: Integration
        """
        ak_env = self._make_activation_key({
            u'lifecycle-environment-id': self.get_default_env()['id'],
        })
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        ActivationKey.update({
            u'id': ak_env['id'],
            u'lifecycle-environment-id': env['id'],
            u'content-view': new_cv['name'],
            u'organization-id': self.org['id'],
        })
        updated_ak = ActivationKey.info({'id': ak_env['id']})
        self.assertEqual(updated_ak['lifecycle-environment'], env['name'])
Exemplo n.º 33
0
 def setup_content_view(self, org_id, lce_id=None):
     # type: (int, int) -> Tuple[Dict, Dict]
     """Setup organization content view by adding all the repositories, publishing and promoting
     to lce if needed.
     """
     if lce_id is None:
         lce = make_lifecycle_environment({'organization-id': org_id})
     else:
         lce = LifecycleEnvironment.info({
             'id': lce_id,
             'organization-id': org_id,
         })
     content_view = make_content_view({'organization-id': org_id})
     # Add repositories to content view
     for repo in self:
         repo.add_to_content_view(org_id, content_view['id'])
     # Publish the content view
     ContentView.publish({'id': content_view['id']})
     if lce['name'] != ENVIRONMENT:
         # Get the latest content view version id
         content_view_version = ContentView.info({
             'id': content_view['id']
         })['versions'][-1]
         # Promote content view version to lifecycle environment
         ContentView.version_promote({
             'id': content_view_version['id'],
             'organization-id': org_id,
             'to-lifecycle-environment-id': lce['id'],
         })
     content_view = ContentView.info({'id': content_view['id']})
     return content_view, lce
Exemplo n.º 34
0
    def test_positive_update_aks_to_chost(self):
        """@Test: Check if multiple Activation keys can be attached to a
        Content host

        @Feature: Activation key - Content host

        @Assert: Multiple Activation keys are attached to a Content host
        """
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        new_aks = [
            make_activation_key({
                u'lifecycle-environment-id': env['id'],
                u'content-view': new_cv['name'],
                u'organization-id': self.org['id'],
            })
            for _ in range(2)
        ]
        with VirtualMachine(distro='rhel65') as vm:
            vm.install_katello_ca()
            for i in range(2):
                result = vm.register_contenthost(
                    new_aks[i]['name'], self.org['label'])
                self.assertEqual(result.return_code, 0)
Exemplo n.º 35
0
    def test_positive_update_aks_to_chost(self):
        """Check if multiple Activation keys can be attached to a
        Content host

        :id: 24fddd9c-03ae-41a7-8649-72296cbbafdf

        :expectedresults: Multiple Activation keys are attached to a Content
            host

        :CaseLevel: System
        """
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        new_aks = [
            make_activation_key({
                u'lifecycle-environment-id': env['id'],
                u'content-view': new_cv['name'],
                u'organization-id': self.org['id'],
            })
            for _ in range(2)
        ]
        with VirtualMachine(distro=DISTRO_RHEL6) as vm:
            vm.install_katello_ca()
            for i in range(2):
                vm.register_contenthost(
                    self.org['label'], new_aks[i]['name'])
                self.assertTrue(vm.subscribed)
Exemplo n.º 36
0
    def test_add_synced_docker_repo_to_content_view(self):
        """@Test: Create and sync a Docker-type repository

        @Assert: A repository is created with a Docker repository
        and it is synchronized.

        @Feature: Docker

        """
        repo = _make_docker_repo(
            make_product({'organization-id': self.org_id})['id'])
        result = Repository.synchronize({'id': repo['id']})
        self.assertEqual(result.return_code, 0)
        repo = Repository.info({'id': repo['id']}).stdout
        self.assertGreaterEqual(
            int(repo['content-counts']['docker-images']), 1)
        content_view = make_content_view({
            'composite': False,
            'organization-id': self.org_id,
        })
        result = ContentView.add_repository({
            'id': content_view['id'],
            'repository-id': repo['id'],
        })
        self.assertEqual(result.return_code, 0)
        content_view = ContentView.info({'id': content_view['id']}).stdout
        self.assertIn(
            repo['id'],
            [repo_['id'] for repo_ in content_view['docker-repositories']],
        )
Exemplo n.º 37
0
    def test_positive_update_ak5(self):
        """@Test: Update Content View in an Activation key

        @Feature: Activation key - Positive Update

        @Steps:

        1. Create Activation key
        2. Update Content View for all variations in [1] and include both
           RH and custom products

        @Assert: Activation key is updated

        """
        activation_key = self._make_activation_key()
        for content_view_name in valid_data_list():
            with self.subTest(content_view_name):
                con_view = make_content_view({
                    u'name': content_view_name,
                    u'organization-id': self.org['id'],
                })
                ActivationKey.update({
                    u'content-view': con_view['name'],
                    u'name': activation_key['name'],
                    u'organization-id': self.org['id'],
                })
                activation_key = ActivationKey.info({
                    'id': activation_key['id'],
                })
                self.assertEqual(
                    activation_key['content-view'], content_view_name)
Exemplo n.º 38
0
    def test_positive_create_ak_3(self):
        """@Test: Create Activation key for all variations of Content Views

        @Feature: Activation key - Positive Create

        @Steps:

        1. Create Activation key for all valid Content views in [1]
        using valid Name, Description, Environment and Usage limit

        @Assert: Activation key is created

        """
        for name in valid_data_list():
            with self.subTest(name):
                # Using the same name for content view and Activation key
                con_view = make_content_view({
                    u'name': name,
                    u'organization-id': self.org['id'],
                })
                new_ackey = self._make_activation_key({
                    u'content-view': con_view['name'],
                    u'environment': self.library['name'],
                    u'name': name,
                    u'organization-id': self.org['id'],
                })
                # Name should match passed data
                self.assertEqual(new_ackey['name'], name)
                # ContentView should match passed data
                self.assertEqual(new_ackey['content-view'], name)
Exemplo n.º 39
0
    def test_add_docker_repo_to_composite_content_view(self):
        """@Test: Add one Docker-type repository to a composite content view

        @Assert: A repository is created with a Docker repository and the
        product is added to a content view which is then added to a composite
        content view.

        @Feature: Docker

        """
        repo = _make_docker_repo(
            make_product({'organization-id': self.org_id})['id'])
        content_view = make_content_view({
            'composite': False,
            'organization-id': self.org_id,
        })
        result = ContentView.add_repository({
            'id': content_view['id'],
            'repository-id': repo['id'],
        })
        self.assertEqual(result.return_code, 0)
        content_view = ContentView.info({'id': content_view['id']}).stdout
        self.assertIn(
            repo['id'],
            [repo_['id'] for repo_ in content_view['docker-repositories']],
        )
        result = ContentView.publish({'id': content_view['id']})
        self.assertEqual(result.return_code, 0)
        content_view = ContentView.info({'id': content_view['id']}).stdout
        self.assertEqual(len(content_view['versions']), 1)
        comp_content_view = make_content_view({
            'composite': True,
            'organization-id': self.org_id,
        })
        result = ContentView.update({
            'id': comp_content_view['id'],
            'component-ids': content_view['versions'][0]['id'],
        })
        self.assertEqual(result.return_code, 0)
        comp_content_view = ContentView.info({
            'id': comp_content_view['id'],
        }).stdout
        self.assertIn(
            content_view['versions'][0]['id'],
            [component['id'] for component in comp_content_view['components']],
        )
Exemplo n.º 40
0
    def test_positive_update_cv(self):
        """Update Content View in an Activation key

        @Feature: Activation key - Positive Update

        @Assert: Activation key is updated
        """
        cv = make_content_view({u'organization-id': self.org['id']})
        ak_cv = self._make_activation_key({u'content-view-id': cv['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ActivationKey.update({
            u'content-view': new_cv['name'],
            u'name': ak_cv['name'],
            u'organization-id': self.org['id'],
        })
        updated_ak = ActivationKey.info({'id': ak_cv['id']})
        self.assertEqual(updated_ak['content-view'], new_cv['name'])
Exemplo n.º 41
0
    def test_positive_update_cv(self):
        """@Test: Update Content View in an Activation key

        @Feature: Activation key - Positive Update

        @Assert: Activation key is updated
        """
        cv = make_content_view({u'organization-id': self.org['id']})
        ak_cv = self._make_activation_key({u'content-view-id': cv['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ActivationKey.update({
            u'content-view': new_cv['name'],
            u'name': ak_cv['name'],
            u'organization-id': self.org['id'],
        })
        updated_ak = ActivationKey.info({'id': ak_cv['id']})
        self.assertEqual(updated_ak['content-view'], new_cv['name'])
Exemplo n.º 42
0
 def setUpClass(cls):
     """Init single organization, product and repository for all tests"""
     super(TestContentViewFilter, cls).setUpClass()
     cls.org = make_org()
     cls.product = make_product({u"organization-id": cls.org["id"]})
     cls.repo = make_repository({u"product-id": cls.product["id"]})
     Repository.synchronize({u"id": cls.repo["id"]})
     cls.content_view = make_content_view({u"organization-id": cls.org["id"]})
     ContentView.add_repository({u"id": cls.content_view["id"], u"repository-id": cls.repo["id"]})
Exemplo n.º 43
0
    def test_positive_update_cv(self):
        """Update Content View in an Activation key

        :id: aa94997d-fc9b-4532-aeeb-9f27b9834914

        :expectedresults: Activation key is updated

        :CaseLevel: Integration
        """
        cv = make_content_view({u'organization-id': self.org['id']})
        ak_cv = self._make_activation_key({u'content-view-id': cv['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ActivationKey.update({
            u'content-view': new_cv['name'],
            u'name': ak_cv['name'],
            u'organization-id': self.org['id'],
        })
        updated_ak = ActivationKey.info({'id': ak_cv['id']})
        self.assertEqual(updated_ak['content-view'], new_cv['name'])
Exemplo n.º 44
0
    def test_positive_update_cv(self):
        """Update Content View in an Activation key

        :id: aa94997d-fc9b-4532-aeeb-9f27b9834914

        :expectedresults: Activation key is updated

        :CaseLevel: Integration
        """
        cv = make_content_view({u'organization-id': self.org['id']})
        ak_cv = self._make_activation_key({u'content-view-id': cv['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ActivationKey.update({
            u'content-view': new_cv['name'],
            u'name': ak_cv['name'],
            u'organization-id': self.org['id'],
        })
        updated_ak = ActivationKey.info({'id': ak_cv['id']})
        self.assertEqual(updated_ak['content-view'], new_cv['name'])
Exemplo n.º 45
0
    def test_positive_delete_with_cv(self):
        """Create activation key with content view assigned to it and
        delete it using activation key id

        @Feature: Activation key - Positive Delete

        @Assert: Activation key is deleted
        """
        new_cv = make_content_view({u'organization-id': self.org['id']})
        new_ak = self._make_activation_key({u'content-view': new_cv['name']})
        ActivationKey.delete({'id': new_ak['id']})
        with self.assertRaises(CLIReturnCodeError):
            ActivationKey.info({'id': new_ak['id']})
Exemplo n.º 46
0
def local_content_view(local_org):
    """Create content view, repository, and product"""
    new_product = make_product({'organization-id': local_org['id']})
    new_repo = make_repository({'product-id': new_product['id']})
    Repository.synchronize({'id': new_repo['id']})
    content_view = make_content_view({'organization-id': local_org['id']})
    ContentView.add_repository({
        'id': content_view['id'],
        'organization-id': local_org['id'],
        'repository-id': new_repo['id'],
    })
    ContentView.publish({'id': content_view['id']})
    return content_view
 def setUpClass(cls):
     """Init single organization, product and repository for all tests"""
     super().setUpClass()
     cls.org = make_org()
     cls.product = make_product_wait({'organization-id': cls.org['id']})
     cls.content_view = make_content_view(
         {'organization-id': cls.org['id']})
     for _ in range(2):
         cls.repo = make_repository({'product-id': cls.product['id']})
         Repository.synchronize({'id': cls.repo['id']})
         ContentView.add_repository({
             'id': cls.content_view['id'],
             'repository-id': cls.repo['id']
         })
Exemplo n.º 48
0
 def setUpClass(cls):
     """Init single organization, product and repository for all tests"""
     super(ContentViewFilterTestCase, cls).setUpClass()
     cls.org = make_org()
     cls.product = make_product({u'organization-id': cls.org['id']})
     cls.repo = make_repository({u'product-id': cls.product['id']})
     Repository.synchronize({u'id': cls.repo['id']})
     cls.content_view = make_content_view({
         u'organization-id': cls.org['id'],
     })
     ContentView.add_repository({
         u'id': cls.content_view['id'],
         u'repository-id': cls.repo['id'],
     })
Exemplo n.º 49
0
    def test_positive_list_by_cv_id(self):
        """List Activation key for provided Content View ID

        @id: 4d9aad38-cd6e-41cb-99a0-9a593cf22655

        @Assert: Activation key is listed
        """
        cv = make_content_view({u'organization-id': self.org['id']})
        self._make_activation_key({u'content-view-id': cv['id']})
        result = ActivationKey.list({
            'content-view-id': cv['id'],
            'organization-id': self.org['id'],
        })
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0]['content-view'], cv['name'])
Exemplo n.º 50
0
    def test_positive_delete_with_cv(self):
        """Create activation key with content view assigned to it and
        delete it using activation key id

        :id: bba323fa-0362-4a9b-97af-560d446cbb6c

        :expectedresults: Activation key is deleted

        :CaseLevel: Integration
        """
        new_cv = make_content_view({u'organization-id': self.org['id']})
        new_ak = self._make_activation_key({u'content-view': new_cv['name']})
        ActivationKey.delete({'id': new_ak['id']})
        with self.assertRaises(CLIReturnCodeError):
            ActivationKey.info({'id': new_ak['id']})
Exemplo n.º 51
0
 def setUpClass(cls):
     """Create an organization, product and ostree repo."""
     super(OstreeBranchTestCase, cls).setUpClass()
     cls.org = make_org()
     cls.product = make_product({u'organization-id': cls.org['id']})
     # Create new custom ostree repo
     cls.ostree_repo = make_repository({
         u'product-id': cls.product['id'],
         u'content-type': u'ostree',
         u'publish-via-http': u'false',
         u'url': FEDORA23_OSTREE_REPO,
     })
     Repository.synchronize({'id': cls.ostree_repo['id']})
     cls.cv = make_content_view({u'organization-id': cls.org['id']})
     ContentView.publish({u'id': cls.cv['id']})
     cls.cv = ContentView.info({u'id': cls.cv['id']})
Exemplo n.º 52
0
    def setUp(self):  # noqa
        """Tests for Host Collections via Hammer CLI"""

        super(TestHostCollection, self).setUp()

        if TestHostCollection.org is None:
            TestHostCollection.org = make_org(cached=True)
        if TestHostCollection.new_lifecycle is None:
            TestHostCollection.new_lifecycle = make_lifecycle_environment(
                {u'organization-id': TestHostCollection.org['id']},
                cached=True)
        if TestHostCollection.library is None:
            library_result = LifecycleEnvironment.info({
                u'organization-id':
                TestHostCollection.org['id'],
                u'name':
                u'Library'
            })
            TestHostCollection.library = library_result.stdout
        if TestHostCollection.default_cv is None:
            cv_result = ContentView.info({
                u'organization-id':
                TestHostCollection.org['id'],
                u'name':
                u'Default Organization View'
            })
            TestHostCollection.default_cv = cv_result.stdout
        if TestHostCollection.new_cv is None:
            TestHostCollection.new_cv = make_content_view(
                {u'organization-id': TestHostCollection.org['id']})
            TestHostCollection.promoted_cv = None
            cv_id = TestHostCollection.new_cv['id']
            ContentView.publish({u'id': cv_id})
            result = ContentView.version_list({u'content-view-id': cv_id})
            version_id = result.stdout[0]['id']
            promotion = ContentView.version_promote({
                u'id':
                version_id,
                u'to-lifecycle-environment-id':
                (TestHostCollection.new_lifecycle['id']),
                u'organization-id':
                TestHostCollection.org['id']
            })
            if promotion.stderr == []:
                TestHostCollection.promoted_cv = TestHostCollection.new_cv
Exemplo n.º 53
0
    def setUp(self):  # noqa
        """Tests for Content Host via Hammer CLI"""

        super(TestContentHost, self).setUp()

        if TestContentHost.NEW_ORG is None:
            TestContentHost.NEW_ORG = make_org(cached=True)
        if TestContentHost.NEW_LIFECYCLE is None:
            TestContentHost.NEW_LIFECYCLE = make_lifecycle_environment(
                {u'organization-id': TestContentHost.NEW_ORG['id']},
                cached=True)
        if TestContentHost.LIBRARY is None:
            library_result = LifecycleEnvironment.info({
                u'organization-id':
                TestContentHost.NEW_ORG['id'],
                u'name':
                u'Library'
            })
            TestContentHost.LIBRARY = library_result.stdout
        if TestContentHost.DEFAULT_CV is None:
            cv_result = ContentView.info({
                u'organization-id':
                TestContentHost.NEW_ORG['id'],
                u'name':
                u'Default Organization View'
            })
            TestContentHost.DEFAULT_CV = cv_result.stdout
        if TestContentHost.NEW_CV is None:
            TestContentHost.NEW_CV = make_content_view(
                {u'organization-id': TestContentHost.NEW_ORG['id']})
            TestContentHost.PROMOTED_CV = None
            cv_id = TestContentHost.NEW_CV['id']
            ContentView.publish({u'id': cv_id})
            result = ContentView.version_list({u'content-view-id': cv_id})
            version_id = result.stdout[0]['id']
            promotion = ContentView.version_promote({
                u'id':
                version_id,
                u'to-lifecycle-environment-id':
                TestContentHost.NEW_LIFECYCLE['id'],
                u'organization-id':
                TestContentHost.NEW_ORG['id']
            })
            if promotion.stderr == []:
                TestContentHost.PROMOTED_CV = TestContentHost.NEW_CV
Exemplo n.º 54
0
    def test_positive_usage_limit(self):
        """Test that Usage limit actually limits usage

        :id: 00ded856-e939-4140-ac84-91b6a8643623

        :Steps:

            1. Create Activation key
            2. Update Usage Limit to a finite number
            3. Register Content hosts to match the Usage Limit
            4. Attempt to register an other Content host after reaching the
               Usage Limit

        :expectedresults: Content host Registration fails. Appropriate error
            shown

        :CaseLevel: System
        """
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        new_ak = make_activation_key({
            u'lifecycle-environment-id': env['id'],
            u'content-view': new_cv['name'],
            u'organization-id': self.org['id'],
            u'max-hosts': '1',
        })
        with VirtualMachine(distro=DISTRO_RHEL6) as vm1:
            with VirtualMachine(distro=DISTRO_RHEL6) as vm2:
                vm1.install_katello_ca()
                result = vm1.register_contenthost(
                    self.org['label'], new_ak['name'])
                self.assertTrue(vm1.subscribed)
                vm2.install_katello_ca()
                result = vm2.register_contenthost(
                    self.org['label'], new_ak['name'])
                self.assertFalse(vm2.subscribed)
                self.assertEqual(result.return_code, 70)
                self.assertGreater(len(result.stderr), 0)
Exemplo n.º 55
0
    def test_positive_create_with_cv(self):
        """Create Activation key for all variations of Content Views

        @Feature: Activation key - Positive Create

        @Assert: Activation key is created and has proper content view assigned
        """
        for name in valid_data_list():
            with self.subTest(name):
                new_cv = make_content_view({
                    u'name': name,
                    u'organization-id': self.org['id'],
                })
                new_ak_cv = self._make_activation_key({
                    u'content-view': new_cv['name'],
                    u'environment': self.get_default_env()['name'],
                    u'organization-id': self.org['id'],
                })
                self.assertEqual(new_ak_cv['content-view'], name)
Exemplo n.º 56
0
    def test_negative_create_with_unpublished_cv(self):
        """Check if content host can be created using unpublished cv

        @Feature: Content Hosts

        @Assert: Content host is not created using new unpublished cv

        """
        con_view = make_content_view({
            u'organization-id': ContentHostTestCase.NEW_ORG['id'],
        })
        env = ContentHostTestCase.NEW_LIFECYCLE['id']
        with self.assertRaises(CLIFactoryError):
            make_content_host({
                u'content-view-id': con_view['id'],
                u'lifecycle-environment-id': env,
                u'name': gen_string('alpha', 15),
                u'organization-id': ContentHostTestCase.NEW_ORG['id'],
            })
Exemplo n.º 57
0
    def test_negative_create_2(self):
        """@Test: Check if content host can be created with new content view

        @Feature: Content Hosts

        @Assert: Content host is not created using new unpublished cv

        """

        con_view = make_content_view(
            {u'organization-id': TestContentHost.NEW_ORG['id']})
        with self.assertRaises(Exception):
            env = TestContentHost.NEW_LIFECYCLE['id']
            make_content_host({
                u'name': gen_string('alpha', 15),
                u'organization-id': TestContentHost.NEW_ORG['id'],
                u'content-view-id': con_view['id'],
                u'lifecycle-environment-id': env
            })
Exemplo n.º 58
0
    def setUp(self):
        """Tests for Host Collections via Hammer CLI"""
        super(HostCollectionTestCase, self).setUp()

        if HostCollectionTestCase.org is None:
            HostCollectionTestCase.org = make_org(cached=True)
        if HostCollectionTestCase.new_lifecycle is None:
            HostCollectionTestCase.new_lifecycle = make_lifecycle_environment(
                {u'organization-id': HostCollectionTestCase.org['id']},
                cached=True)
        if HostCollectionTestCase.library is None:
            HostCollectionTestCase.library = LifecycleEnvironment.info({
                u'organization-id':
                HostCollectionTestCase.org['id'],
                u'name':
                ENVIRONMENT,
            })
        if HostCollectionTestCase.default_cv is None:
            HostCollectionTestCase.default_cv = ContentView.info({
                u'organization-id':
                HostCollectionTestCase.org['id'],
                u'name':
                DEFAULT_CV
            })
        if HostCollectionTestCase.new_cv is None:
            HostCollectionTestCase.new_cv = make_content_view(
                {u'organization-id': HostCollectionTestCase.org['id']})
            HostCollectionTestCase.promoted_cv = None
            cv_id = HostCollectionTestCase.new_cv['id']
            ContentView.publish({u'id': cv_id})
            result = ContentView.version_list({u'content-view-id': cv_id})
            version_id = result[0]['id']
            ContentView.version_promote({
                u'id':
                version_id,
                u'organization-id':
                HostCollectionTestCase.org['id'],
                u'to-lifecycle-environment-id':
                (HostCollectionTestCase.new_lifecycle['id']),
            })
            HostCollectionTestCase.promoted_cv = HostCollectionTestCase.new_cv
Exemplo n.º 59
0
    def test_cv_preupgrade_scenario(self):
        """This is pre-upgrade scenario test to verify if we can create a
         content-view with various repositories.

         :id: a4ebbfa1-106a-4962-9c7c-082833879ae8

         :steps:
           1. Create custom yum, puppet and file repositories.
           2. Create content-view.
           3. Add yum, file repositories and puppet module to content view.
           4. Publish content-view.

         :expectedresults: content-view created with various repositories.
         """
        self.setupScenario()
        file_repo = self.make_file_repository_upload_contents()
        content_view = make_content_view(
            {
                'name': self.cv_name,
                'organization-id': self.org['id'],
                'repository-ids': [self.yum_repo1['id'], file_repo['id']],
            }
        )
        content_view = ContentView.info({'id': content_view['id']})
        self.assertEqual(
            content_view['yum-repositories'][0]['name'],
            self.yum_repo1['name'],
            'Repo was not associated to CV',
        )
        ContentView.puppet_module_add(
            {
                'content-view-id': content_view['id'],
                'name': self.puppet_module['name'],
                'author': self.puppet_module['author'],
            }
        )
        content_view = ContentView.info({'id': content_view['id']})
        self.assertGreater(len(content_view['puppet-modules']), 0)
        ContentView.publish({'id': content_view['id']})
        cv = ContentView.info({'id': content_view['id']})
        self.assertEqual(len(cv['versions']), 1)
Exemplo n.º 60
0
    def test_positive_usage_limit(self):
        """Test that Usage limit actually limits usage

        @Feature: Activation key - Usage limit

        @Steps:

        1. Create Activation key
        2. Update Usage Limit to a finite number
        3. Register Content hosts to match the Usage Limit
        4. Attempt to register an other Content host after reaching the Usage
           Limit

        @Assert: Content host Registration fails. Appropriate error shown
        """
        env = make_lifecycle_environment({u'organization-id': self.org['id']})
        new_cv = make_content_view({u'organization-id': self.org['id']})
        ContentView.publish({u'id': new_cv['id']})
        cvv = ContentView.info({u'id': new_cv['id']})['versions'][0]
        ContentView.version_promote({
            u'id': cvv['id'],
            u'to-lifecycle-environment-id': env['id'],
        })
        new_ak = make_activation_key({
            u'lifecycle-environment-id': env['id'],
            u'content-view': new_cv['name'],
            u'organization-id': self.org['id'],
            u'max-content-hosts': '1',
        })
        with VirtualMachine(distro='rhel65') as vm1:
            with VirtualMachine(distro='rhel65') as vm2:
                vm1.install_katello_ca()
                result = vm1.register_contenthost(
                    new_ak['name'], self.org['label'])
                self.assertEqual(result.return_code, 0)
                vm2.install_katello_ca()
                result = vm2.register_contenthost(
                    new_ak['name'], self.org['label'])
                self.assertEqual(result.return_code, 255)
                self.assertGreater(len(result.stderr), 0)