Exemplo n.º 1
0
    def get_content_sources_import_batch(self, channel_label, backend):
        batch = []
        type_id = backend.lookupContentSourceType('yum')

        sources = self.get_content_sources_regular(channel_label)

        for source in sources:
            content_source = ContentSource()
            content_source['label'] = source['pulp_repo_label_v2']
            content_source['source_url'] = source['relative_url']
            content_source['org_id'] = None
            content_source['type_id'] = type_id
            repository = self.repository_tree.find_repository(
                source['relative_url'])
            content_source['ssl_ca_cert_id'] = repository.get_ca_cert()
            content_source['ssl_client_cert_id'] = repository.get_client_cert()
            content_source['ssl_client_key_id'] = repository.get_client_key()
            batch.append(content_source)

        kickstart_sources = self.get_content_sources_kickstart(channel_label)

        for ks_source in kickstart_sources:
            content_source = ContentSource()
            content_source['label'] = ks_source['ks_tree_label']
            content_source['source_url'] = ks_source['relative_url']
            content_source['org_id'] = None
            content_source['type_id'] = type_id
            repository = self.repository_tree.find_repository(
                ks_source['relative_url'])
            content_source['ssl_ca_cert_id'] = repository.get_ca_cert()
            content_source['ssl_client_cert_id'] = repository.get_client_cert()
            content_source['ssl_client_key_id'] = repository.get_client_key()
            batch.append(content_source)

        return batch
Exemplo n.º 2
0
    def get_content_sources_import_batch(self, channel_label, backend):
        batch = []
        type_id = backend.lookupContentSourceType('yum')

        sources = self.get_content_sources_regular(channel_label)

        for source in sources:
            content_source = ContentSource()
            content_source['label'] = source['pulp_repo_label_v2']
            content_source['source_url'] = source['relative_url']
            content_source['org_id'] = None
            content_source['type_id'] = type_id
            repository = self.repository_tree.find_repository(
                source['relative_url'])
            content_source['ssl_ca_cert_id'] = repository.get_ca_cert()
            content_source['ssl_client_cert_id'] = repository.get_client_cert()
            content_source['ssl_client_key_id'] = repository.get_client_key()
            batch.append(content_source)

        kickstart_sources = self.get_content_sources_kickstart(channel_label)
        if kickstart_sources:
            # One tree comes from one repo, one repo for each tree is in the mapping,
            # in future there may be multiple repos for one tree and we will need to select
            # correct repo
            ks_source = kickstart_sources[0]
            content_source = ContentSource()
            tree_label = self.kickstart_metadata[channel_label][0][
                'ks_tree_label']
            content_source['label'] = tree_label
            content_source['source_url'] = ks_source['relative_url']
            content_source['org_id'] = None
            content_source['type_id'] = type_id
            repository = self.repository_tree.find_repository(
                ks_source['relative_url'])
            content_source['ssl_ca_cert_id'] = repository.get_ca_cert()
            content_source['ssl_client_cert_id'] = repository.get_client_cert()
            content_source['ssl_client_key_id'] = repository.get_client_key()
            batch.append(content_source)

        return batch
Exemplo n.º 3
0
    def _update_repositories(self):
        """Setup SSL credential to access repositories
           We do this in 2 steps:
           1. Fetching provided repositories from manifest - URL contains variables to substitute
           2. Assigning one certificate/key set to each repository"""

        # First delete all repositories from previously used manifests
        self._remove_repositories()

        backend = SQLBackend()
        type_id = backend.lookupContentSourceType('yum')

        # Lookup CA cert
        ca_cert = satCerts.lookup_cert(constants.CA_CERT_NAME, None)
        ca_cert_id = int(ca_cert['id'])

        content_sources_batch = {}
        for entitlement in self.manifest.get_all_entitlements():
            # Lookup SSL certificates and keys
            creds = entitlement.get_credentials()
            client_cert = satCerts.lookup_cert(
                constants.CLIENT_CERT_PREFIX + creds.get_id(), None)
            client_key = satCerts.lookup_cert(
                constants.CLIENT_KEY_PREFIX + creds.get_id(), None)
            client_cert_id = int(client_cert['id'])
            client_key_id = int(client_key['id'])
            content_source_ssl = ContentSourceSsl()
            content_source_ssl['ssl_ca_cert_id'] = ca_cert_id
            content_source_ssl['ssl_client_cert_id'] = client_cert_id
            content_source_ssl['ssl_client_key_id'] = client_key_id
            # Loop provided products
            for product in entitlement.get_products():
                repositories = product.get_repositories()
                for repository in repositories:
                    if repository not in content_sources_batch:
                        content_source = ContentSource()
                        content_source[
                            'label'] = constants.MANIFEST_REPOSITORY_DB_PREFIX + repository
                        content_source['source_url'] = repositories[repository]
                        content_source['org_id'] = None
                        content_source['type_id'] = type_id
                        content_source['ssl-sets'] = [content_source_ssl]
                        content_sources_batch[repository] = content_source
                    # There may be more SSL certs to one repository, append it
                    elif content_source_ssl not in content_sources_batch[
                            repository]['ssl-sets']:
                        content_sources_batch[repository]['ssl-sets'].append(
                            content_source_ssl)

        importer = ContentSourcesImport(list(content_sources_batch.values()),
                                        backend)
        importer.run()
Exemplo n.º 4
0
    def _get_content_sources(self, channel, backend):
        batch = []
        sources = []
        type_id = backend.lookupContentSourceType('yum')

        if channel in self.content_source_mapping:
            sources.extend(self.content_source_mapping[channel])
        for source in sources:
            if not source['pulp_content_category'] == "source":
                content_source = ContentSource()
                content_source['label'] = source['pulp_repo_label_v2']
                content_source[
                    'source_url'] = CFG.CDN_ROOT + source['relative_url']
                content_source['org_id'] = None
                content_source['type_id'] = type_id
                batch.append(content_source)

        if channel in self.kickstart_metadata:
            for tree in self.kickstart_metadata[channel]:
                tree_label = tree['ks_tree_label']
                if tree_label in self.kickstart_source_mapping:
                    sources = self.kickstart_source_mapping[tree_label]
                    # One tree comes from one repo, one repo for each tree is in the mapping,
                    # in future there may be multiple repos for one tree and we will need to select
                    # correct repo
                    source = sources[0]
                    content_source = ContentSource()
                    content_source['label'] = tree_label
                    content_source[
                        'source_url'] = CFG.CDN_ROOT + source['relative_url']
                    content_source['org_id'] = None
                    content_source['type_id'] = type_id
                    batch.append(content_source)
                else:
                    log(1,
                        "WARN: Kickstart tree not available: %s" % tree_label)

        return batch
Exemplo n.º 5
0
 def _create_content_source_obj(self, label, source_url, backend):
     type_id = backend.lookupContentSourceType('yum')
     content_source = ContentSource()
     content_source['label'] = label
     content_source['source_url'] = source_url
     content_source['org_id'] = None
     content_source['type_id'] = type_id
     content_source['ssl-sets'] = []
     repository = self.repository_tree.find_repository(source_url)
     for ssl_set in repository.get_ssl_sets():
         content_source_ssl = ContentSourceSsl()
         content_source_ssl['ssl_ca_cert_id'] = ssl_set.get_ca_cert()
         content_source_ssl['ssl_client_cert_id'] = ssl_set.get_client_cert()
         content_source_ssl['ssl_client_key_id'] = ssl_set.get_client_key()
         content_source['ssl-sets'].append(content_source_ssl)
     return content_source