def __init__(self, clients=None): """ Constructor. examples: >>> pdp = PDP( None ) >>> pdp1 = PDP( {} ) >>> pdp2 = PDP( { 'Client1' : Client1Object } ) :Parameters: **clients** - [ None, `dict` ] dictionary with Clients to be used in the Commands. If None, the Commands will create their own clients. """ # decision parameters used to match policies and actions self.decisionParams = None # Helpers to discover policies and RSS metadata in CS self.pCaller = PolicyCaller(clients) # RSS State Machine, used to calculate most penalizing state while merging them self.rssMachine = RSSMachine('Unknown') self.log = gLogger.getSubLogger('PDP')
def test_policyInvocation(self): cc = Mock() policies_modules = {'Site':['DT_Policy', 'GGUSTickets_Policy'], 'Service': ['PilotsEfficiency_Simple_Policy', 'JobsEfficiency_Simple_Policy'], 'Resource':['SAMResults_Policy', 'DT_Policy'], 'StorageElement':['SEOccupancy_Policy', 'TransferQuality_Policy'] } for g in ValidRes: for status in ValidStatus: self.mock_p.evaluate.return_value = {'Status':status, 'Reason':'testReason', 'PolicyName': 'test_P'} pc = PolicyCaller(commandCallerIn = cc) for pol_mod in policies_modules[g]: res = pc.policyInvocation(self.VO, g, 'XX', status, self.mock_p, (g, 'XX'), None, pol_mod) self.assertEqual(res['Status'], status) res = pc.policyInvocation(self.VO, g, 'XX', status, self.mock_p, None, None, pol_mod) self.assertEqual(res['Status'], status) for extraArgs in ((g, 'XX'), [(g, 'XX'), (g, 'XX')]): res = pc.policyInvocation(self.VO, g, 'XX', status, self.mock_p, None, None, pol_mod, extraArgs) self.assertEqual(res['Status'], status)
def __init__(self, clients): ''' Constructor. Defines members that will be used later on. ''' self.pCaller = PolicyCaller(clients=clients) self.iGetter = InfoGetter() self.decissionParams = {} self.rssMachine = RSSMachine('Unknown')
def __init__(self, **clients): ''' Constructor. Defines members that will be used later on. ''' cc = CommandCaller() self.clients = clients self.pCaller = PolicyCaller(cc, **clients) self.iGetter = InfoGetter() self.__granularity = None self.__name = None self.__statusType = None self.__status = None self.__formerStatus = None self.__reason = None self.__siteType = None self.__serviceType = None self.__resourceType = None self.__useNewRes = None
def __init__(self, VOExtension, granularity=None, name=None, status=None, formerStatus=None, reason=None, siteType=None, serviceType=None, resourceType=None, useNewRes=False): """ PDP (Policy Decision Point) initialization :params: :attr:`VOExtension`: string - VO extension (e.g. 'LHCb') :attr:`granularity`: string - a ValidRes :attr:`name`: string - name (e.g. of a site) :attr:`status`: string - status :attr:`formerStatus`: string - former status :attr:`reason`: string - optional reason for last status change :attr:`siteType`: string - optional site type :attr:`serviceType`: string - optional service type :attr:`resourceType`: string - optional resource type """ self.VOExtension = VOExtension self.__granularity = assignOrRaise(granularity, ValidRes, InvalidRes, self, self.__init__) self.__name = name self.__status = assignOrRaise(status, ValidStatus, InvalidStatus, self, self.__init__) self.__formerStatus = assignOrRaise(formerStatus, ValidStatus, InvalidStatus, self, self.__init__) self.__reason = reason self.__siteType = assignOrRaise(siteType, ValidSiteType, InvalidSiteType, self, self.__init__) self.__serviceType = assignOrRaise(serviceType, ValidServiceType, InvalidServiceType, self, self.__init__) self.__resourceType = assignOrRaise(resourceType, ValidResourceType, InvalidResourceType, self, self.__init__) cc = CommandCaller() self.pc = PolicyCaller(cc) self.useNewRes = useNewRes self.args = None self.policy = None self.knownInfo = None self.ig = None