Source code for sarracenia.flowcb.accept.postoverride

"""
Plugin postoverride.py:
    Override message header for products that are posted. This can be useful or necessary 
    when re-distributing beyond the original intended destinations.

Example:
    for example company A delivers to their own DMZ server. ACME is a client of them,
    and so subscribes to the ADMZ server, but the to_cluster=ADMZ, when ACME downloads, they
    need to override the destination to specify the distribution within ACME.
    * postOverride to_clusters ACME
    * postOverrideDel from_cluster

Usage: 
    flowcb sarracenia.flowcb.accept.postoverride.PostOverride
    postOverride x y
    postOverrideDel z

"""

import logging
import copy
from sarracenia.flowcb import FlowCB

logger = logging.getLogger(__name__)


[docs] class PostOverride(FlowCB):
[docs] def __init__(self, options): super().__init__(options,logger) self.o.add_option('postOverride', 'list') self.o.add_option('postOverrideDel', 'list') if self.o.postOverride != None: logger.info('postOverride settings: %s' % self.o.postOverride) if self.o.postOverrideDel != None: logger.info('postOverrideDel settings: %s' % self.o.postOverrideDel)
def after_accept(self, worklist): for message in worklist.incoming: if self.o.postOverride != None: for o in self.o.postOverride: (osetting, ovalue) = o.split() logger.debug('postOverride applying key:%s value:%s' % (osetting, ovalue)) message[osetting] = ovalue if self.o.postOverrideDel != None: for od in self.o.postOverrideDel: if od in message: logger.debug('postOverride deleting key:%s ' % od) del message[od]