Exemplo n.º 1
0
 def link(self,endorsers_selected,subscriptions_selected):
     pairs, extra_selectors ,extra_paths = pairsNnot(endorsers_selected,subscriptions_selected)
     Session = self.SessionFactory()
     for pair in pairs:
         endorser = pair[0]
         subscription = pair[1]
         subauth_list = Session.query(model.Endorser,model.Subscription,model.SubscriptionAuth).\
             filter(model.Endorser.identifier == endorser).\
             filter(model.Subscription.identifier == subscription).\
             filter(model.SubscriptionAuth.endorser == model.Endorser.id).\
             filter(model.SubscriptionAuth.subscription == model.Subscription.id)
         if subauth_list.count() == 0:
             endorser_list = Session.query(model.Endorser).\
                 filter(model.Endorser.identifier == endorser)
             if endorser_list.count() == 0:
                 self.log.warning("endorser not available.")
                 continue
             sub_list = Session.query(model.Subscription).\
                 filter(model.Subscription.identifier == subscription)
             if sub_list.count() == 0:
                 self.log.warning("subscription not available.")
                 continue
             db_endorser = endorser_list.one()
             db_sub = sub_list.one()
             newsubauth = model.SubscriptionAuth(db_sub.id,db_endorser.id,True)
             Session.add(newsubauth)
             Session.commit()
         else:
             self.log.warning("endorser and subscription already linked.")
Exemplo n.º 2
0
    def images_info(self,images_selected,outputfiles):
        pairs, extra_selectors ,extra_paths = pairsNnot(images_selected,outputfiles)

        for item in extra_selectors:
            pairs.append([item,None])

        NoErrorHappened = True
        Session = self.SessionFactory()

        for pair in pairs:
            selector_filter = pair[0]
            output_file_name = pair[1]
            output_fileptr = sys.stdout
            if output_file_name != None:
                output_fileptr = open(output_file_name,'w+')
                output_fileptr.flush()

            queryImageDef = self.selector_curent(Session, selector_filter)
            if queryImageDef.count() == 0:
                self.log.warning("Selections '%s' does not match any known images." % (selector_filter))
                continue
            #view = self.factory_view(output_fileptr,Session,self.anchor)
            self._outputter.fpOutput = output_fileptr
            self._outputter.saSession = Session
            self._outputter.x509anchor = self.anchor
            for imagedef in queryImageDef:
                good = self._outputter.display_imagedef(imagedef)
                if good != True:
                    NoErrorHappened = False
            if output_file_name != None:
                output_fileptr.close()
        return NoErrorHappened
Exemplo n.º 3
0
 def subscriptions_image_refuse(self, subscriptions, images):
     pairs, extra_subscriptions, extra_images = pairsNnot(
         subscriptions, images)
     if len(extra_subscriptions) > 0:
         self.log.error('Not enough images selected')
         return False
     if len(extra_images) > 0:
         self.log.error('Not enough subscriptions selected')
         return False
     Session = self.SessionFactory()
     errors = 0
     for sub_uuid, image_uuid in pairs:
         image_known = Session.query(model.Subscription,model.ImageDefinition).\
             filter(model.ImageDefinition.identifier == image_uuid).\
             filter(model.ImageDefinition.subscription == model.Subscription.id).\
             filter(model.Subscription.identifier == sub_uuid)
         if image_known.count() == 0:
             self.log.error(
                 "Subscription '%s' already refuses image '%s'." %
                 (sub_uuid, image_uuid))
             errors = errors + 1
             continue
         subscription, imageDef = image_known.one()
         imageInstance_known = Session.query(model.ImageInstance).\
             filter(model.ImageInstance.fkIdentifier == imageDef.id)
         for instance in imageInstance_known:
             Session.delete(instance)
         subscription.imagelist_latest = None
         Session.delete(imageDef)
         Session.add(subscription)
         Session.commit()
     if errors != 0:
         return False
     return True
Exemplo n.º 4
0
 def subscriptions_image_refuse(self,subscriptions,images):
     pairs, extra_subscriptions ,extra_images = pairsNnot(subscriptions,images)
     if len(extra_subscriptions) > 0:
         self.log.error('Not enough images selected')
         return False
     if len(extra_images) > 0:
         self.log.error('Not enough subscriptions selected')
         return False
     Session = self.SessionFactory()
     errors = 0
     for sub_uuid, image_uuid in pairs:
         image_known = Session.query(model.Subscription,model.ImageDefinition).\
             filter(model.ImageDefinition.identifier == image_uuid).\
             filter(model.ImageDefinition.subscription == model.Subscription.id).\
             filter(model.Subscription.identifier == sub_uuid)
         if image_known.count() == 0:
             self.log.error("Subscription '%s' already refuses image '%s'." % (sub_uuid,image_uuid))
             errors = errors + 1
             continue
         subscription ,imageDef = image_known.one()
         imageInstance_known = Session.query(model.ImageInstance).\
             filter(model.ImageInstance.fkIdentifier == imageDef.id)
         for instance in imageInstance_known:
             Session.delete(instance)
         subscription.imagelist_latest = None
         Session.delete(imageDef)
         Session.add(subscription)
         Session.commit()
     if errors != 0:
         return False
     return True
Exemplo n.º 5
0
    def subscriptions_image_list(self,subscriptions_selected,outputfiles):
        pairs, extra_selectors ,extra_paths = pairsNnot(subscriptions_selected,outputfiles)

        for item in extra_selectors:
            pairs.append([item,None])

        errorhappened = False
        Session = self.SessionFactory()
        for pair in pairs:
            selector_filter = pair[0]
            output_file_name = pair[1]
            output_fileptr = sys.stdout
            if output_file_name != None:
                output_fileptr = open(output_file_name,'w+')
                output_fileptr.flush()
            query_subscription = self.selector_curent(Session,selector_filter)
            if query_subscription.count() == 0:
                self.log.warning("Selections '%s' does not match any known subscriptions." % (selector_filter))
                continue
            self._outputter.fpOutput = output_fileptr
            self._outputter.saSession = Session
            self._outputter.x509anchor = self.anchor
            
            for item in query_subscription:
                self._outputter.display_subscription(item)
                query_image_def = Session.query(model.ImageDefinition).\
                    filter(model.ImageDefinition.subscription==item.id)
                for imagedef in query_image_def:
                    self._outputter.display_image_def(imagedef)
            if output_file_name != None:
                output_fileptr.close()
Exemplo n.º 6
0
    def subscriptions_image_list(self, subscriptions_selected, outputfiles):
        pairs, extra_selectors, extra_paths = pairsNnot(
            subscriptions_selected, outputfiles)

        for item in extra_selectors:
            pairs.append([item, None])

        errorhappened = False
        Session = self.SessionFactory()
        for pair in pairs:
            selector_filter = pair[0]
            output_file_name = pair[1]
            output_fileptr = sys.stdout
            if output_file_name != None:
                output_fileptr = open(output_file_name, 'w+')
                output_fileptr.flush()
            query_subscription = self.selector_curent(Session, selector_filter)
            if query_subscription.count() == 0:
                self.log.warning(
                    "Selections '%s' does not match any known subscriptions." %
                    (selector_filter))
                continue
            self._outputter.fpOutput = output_fileptr
            self._outputter.saSession = Session
            self._outputter.x509anchor = self.anchor

            for item in query_subscription:
                self._outputter.display_subscription(item)
                query_image_def = Session.query(model.ImageDefinition).\
                    filter(model.ImageDefinition.subscription==item.id)
                for imagedef in query_image_def:
                    self._outputter.display_image_def(imagedef)
            if output_file_name != None:
                output_fileptr.close()
Exemplo n.º 7
0
    def images_info(self,images_selected,outputfiles):
        pairs, extra_selectors ,extra_paths = pairsNnot(images_selected,outputfiles)

        for item in extra_selectors:
            pairs.append([item,None])

        NoErrorHappened = True
        Session = self.SessionFactory()
        
        for pair in pairs:
            selector_filter = pair[0]
            output_file_name = pair[1]
            output_fileptr = sys.stdout
            if output_file_name != None:
                output_fileptr = open(output_file_name,'w+')
                output_fileptr.flush()

            queryImageDef = self.selector_curent(Session, selector_filter)
            if queryImageDef.count() == 0:
                self.log.warning("Selections '%s' does not match any known images." % (selector_filter))
                continue
            #view = self.factory_view(output_fileptr,Session,self.anchor)
            self._outputter.fpOutput = output_fileptr
            self._outputter.saSession = Session
            self._outputter.x509anchor = self.anchor
            for imagedef in queryImageDef:
                good = self._outputter.display_imagedef(imagedef)
                if good != True:
                    NoErrorHappened = False
            if output_file_name != None:
                output_fileptr.close()
        return NoErrorHappened
Exemplo n.º 8
0
 def link(self, endorsers_selected, subscriptions_selected):
     pairs, extra_selectors, extra_paths = pairsNnot(
         endorsers_selected, subscriptions_selected)
     Session = self.SessionFactory()
     for pair in pairs:
         endorser = pair[0]
         subscription = pair[1]
         subauth_list = Session.query(model.Endorser,model.Subscription,model.SubscriptionAuth).\
             filter(model.Endorser.identifier == endorser).\
             filter(model.Subscription.identifier == subscription).\
             filter(model.SubscriptionAuth.endorser == model.Endorser.id).\
             filter(model.SubscriptionAuth.subscription == model.Subscription.id)
         if subauth_list.count() == 0:
             endorser_list = Session.query(model.Endorser).\
                 filter(model.Endorser.identifier == endorser)
             if endorser_list.count() == 0:
                 self.log.warning("endorser not available.")
                 continue
             sub_list = Session.query(model.Subscription).\
                 filter(model.Subscription.identifier == subscription)
             if sub_list.count() == 0:
                 self.log.warning("subscription not available.")
                 continue
             db_endorser = endorser_list.one()
             db_sub = sub_list.one()
             newsubauth = model.SubscriptionAuth(db_sub.id, db_endorser.id,
                                                 True)
             Session.add(newsubauth)
             Session.commit()
         else:
             self.log.warning("endorser and subscription already linked.")
Exemplo n.º 9
0
    def endorser_create(self, endorser, subjects, issuers):
        # Check input parameters.
        pairs, extra_subs, extra_issuers = pairsNnot(subjects, issuers)
        if len(extra_subs) > 0:
            if len(issuers) > 1:
                self.log.warning(
                    "Unsure how to add subjects credentials without issuer credentials."
                )
                return False
            else:
                if len(issuers) > 0:
                    thisissuer = issuers[0]
                    for this_sub in extra_subs:
                        pairs.append([this_sub, thisissuer])
                else:
                    self.log.warning(
                        "Cant add subjects credentials without issuer credentials."
                    )
                    return False
        if len(extra_issuers) > 0:
            self.log.warning("Cant add issuer credentials, without a subject.")
            return False
        if len(pairs) == 0:
            return True
        # Now we process requests
        error = False
        deleteOnError = False
        Session = self.SessionFactory()
        endorserQuery = Session.query(model.Endorser).\
                filter(model.Endorser.identifier==endorser)
        endorserObj = None
        if endorserQuery.count() == 0:
            endorserObj = model.Endorser({'dc:identifier': str(endorser)})
            Session.add(endorserObj)
            Session.commit()
            deleteOnError = True
            endorserQuery = Session.query(model.Endorser).\
                filter(model.Endorser.identifier==endorser)

        endorserObj = endorserQuery.one()
        endorserObjId = int(endorserObj.id)
        for pair in pairs:
            dn = pair[0]
            issuer = pair[1]
            cred = model.EndorserPrincible(endorserObjId, {
                u'hv:dn': dn,
                u'hv:ca': issuer
            })
            Session.add(cred)
            try:
                Session.commit()
            except IntegrityError, E:
                self.log.error(
                    "Database integrity error while adding '%s' credentials to  '%s'."
                    % (dn, endorser))
                self.log.debug(E.params)
                Session.rollback()
                error = True
                break
Exemplo n.º 10
0
    def endorser_create(self,endorser,subjects,issuers):
        # Check input parameters.
        pairs, extra_subs ,extra_issuers = pairsNnot(subjects,issuers)
        if len(extra_subs) > 0:
            if len(issuers) > 1:
                self.log.warning("Unsure how to add subjects credentials without issuer credentials.")
                return False
            else:
                if len (issuers) > 0:
                    thisissuer = issuers[0]
                    for this_sub in extra_subs:
                        pairs.append([this_sub,thisissuer])
                else:
                    self.log.warning("Cant add subjects credentials without issuer credentials.")
                    return False
        if len (extra_issuers) > 0:
            self.log.warning("Cant add issuer credentials, without a subject.")
            return False
        if len(pairs) == 0:
            return True
        # Now we process requests
        error = False
        deleteOnError = False
        Session = self.SessionFactory()
        endorserQuery = Session.query(model.Endorser).\
                filter(model.Endorser.identifier==endorser)
        endorserObj = None
        if endorserQuery.count() == 0:
            endorserObj = model.Endorser({'dc:identifier' : str(endorser)})
            Session.add(endorserObj)
            Session.commit()
            deleteOnError = True
            endorserQuery = Session.query(model.Endorser).\
                filter(model.Endorser.identifier==endorser)

        endorserObj = endorserQuery.one()
        endorserObjId = int(endorserObj.id)
        for pair in pairs:
            dn = pair[0]
            issuer = pair[1]
            cred = model.EndorserPrincible(endorserObjId,{u'hv:dn' : dn, u'hv:ca' : issuer})
            Session.add(cred)
            try:
                Session.commit()
            except IntegrityError as expt:
                self.log.error("Database integrity error while adding '%s' credentials to  '%s'." % (dn,endorser))
                self.log.debug(expt.params)
                Session.rollback()
                error = True
                break
        if error and deleteOnError:
            endorserQuery = Session.query(model.Endorser).\
                filter(model.Endorser.identifier==endorser)
            if endorserQuery.count() > 0:
                EndorserToDel = endorserQuery.one()
                Session.delete(EndorserToDel)
                Session.commit()
                return False
        return True
Exemplo n.º 11
0
 def unlink(self,endorsers_selected,subscriptions_selected):
     Session = self.SessionFactory()
     pairs, extra_selectors ,extra_paths = pairsNnot(endorsers_selected,subscriptions_selected)
     for pair in pairs:
         endorser = pair[0]
         subscription = pair[1]
         subauth_list = Session.query(model.Endorser,model.Subscription,model.SubscriptionAuth).\
             filter(model.Endorser.identifier == endorser).\
             filter(model.Subscription.identifier == subscription).\
             filter(model.SubscriptionAuth.endorser == model.Endorser.id).\
             filter(model.SubscriptionAuth.subscription == model.Subscription.id)
         if subauth_list.count() == 0:
             self.log.warning("endorser and subscription are not linked.")
         else:
             for query_row in subauth_list:
                 db_endorser = query_row[0]
                 db_sub = query_row[1]
                 db_subAuthEnd = query_row[2]
                 Session.delete(db_subAuthEnd)
                 Session.commit()
Exemplo n.º 12
0
    def subscriptions_image_accept(self, subscriptions, images):
        pairs, extra_subscriptions, extra_images = pairsNnot(
            subscriptions, images)
        if len(extra_subscriptions) > 0:
            self.log.error('Not enough images selected')
            return False
        if len(extra_images) > 0:
            self.log.error('Not enough subscriptions selected')
            return False
        Session = self.SessionFactory()
        errors = 0
        for sub_uuid, image_uuid in pairs:

            image_known = Session.query(model.ImageDefinition.identifier,model.Subscription.identifier).\
                filter(model.ImageDefinition.identifier == image_uuid).\
                filter(model.ImageDefinition.subscription == model.Subscription.id)
            if image_known.count() > 0:
                iident, sident = image_known.one()
                self.log.error("Subscription '%s' has image '%s' already." %
                               (sident, iident))
                errors = errors + 1
                continue
            sub_known = Session.query(model.Subscription).\
                filter(model.Subscription.identifier == sub_uuid)
            if sub_known.count() == 0:
                self.log.error("Subscription '%s' is unknown." % (sub_uuid))
                errors = errors + 1
                return False
            subscription = sub_known.one()
            subscription.imagelist_latest = None
            key = subscription.id

            metadata = {'dc:identifier': image_uuid, 'cache': 0}
            newlist = model.ImageDefinition(key, metadata)
            Session.add(newlist)
            Session.add(subscription)
            Session.commit()
            #self.log.info("Subscription '%s' include image '%s'." % (sub_uuid,image_uuid))
        if errors != 0:
            return False
        return True
Exemplo n.º 13
0
 def unlink(self, endorsers_selected, subscriptions_selected):
     Session = self.SessionFactory()
     pairs, extra_selectors, extra_paths = pairsNnot(
         endorsers_selected, subscriptions_selected)
     for pair in pairs:
         endorser = pair[0]
         subscription = pair[1]
         subauth_list = Session.query(model.Endorser,model.Subscription,model.SubscriptionAuth).\
             filter(model.Endorser.identifier == endorser).\
             filter(model.Subscription.identifier == subscription).\
             filter(model.SubscriptionAuth.endorser == model.Endorser.id).\
             filter(model.SubscriptionAuth.subscription == model.Subscription.id)
         if subauth_list.count() == 0:
             self.log.warning("endorser and subscription are not linked.")
         else:
             for query_row in subauth_list:
                 db_endorser = query_row[0]
                 db_sub = query_row[1]
                 db_subAuthEnd = query_row[2]
                 Session.delete(db_subAuthEnd)
                 Session.commit()
Exemplo n.º 14
0
 def subscriptions_image_accept(self,subscriptions,images):
     pairs, extra_subscriptions ,extra_images = pairsNnot(subscriptions,images)
     if len(extra_subscriptions) > 0:
         self.log.error('Not enough images selected')
         return False
     if len(extra_images) > 0:
         self.log.error('Not enough subscriptions selected')
         return False
     Session = self.SessionFactory()
     errors = 0
     for sub_uuid, image_uuid in pairs:
         
         image_known = Session.query(model.ImageDefinition.identifier,model.Subscription.identifier).\
             filter(model.ImageDefinition.identifier == image_uuid).\
             filter(model.ImageDefinition.subscription == model.Subscription.id)
         if image_known.count() > 0:
             iident, sident = image_known.one()
             self.log.error("Subscription '%s' has image '%s' already." % (sident,iident))
             errors = errors + 1
             continue
         sub_known = Session.query(model.Subscription).\
             filter(model.Subscription.identifier == sub_uuid)
         if sub_known.count() == 0:
             self.log.error("Subscription '%s' is unknown." % (sub_uuid))
             errors = errors + 1
             return False
         subscription = sub_known.one()
         subscription.imagelist_latest = None
         key = subscription.id
         
         metadata = { 'dc:identifier' : image_uuid,
             'cache' : 0}
         newlist = model.ImageDefinition(key,metadata)
         Session.add(newlist)
         Session.add(subscription)
         Session.commit()
         #self.log.info("Subscription '%s' include image '%s'." % (sub_uuid,image_uuid))
     if errors != 0:
         return False
     return True