コード例 #1
0
 def getAllInstances(name=None):
     if not name:
         name = RuleTableManager._defaultName
     backend = RuleTableManager._defaultPersistence
     with RuleTableManager._mutex:
         instances = RuleTable.loadAll(name, backend)
     return instances
コード例 #2
0
ファイル: RuleTableManager.py プロジェクト: ict-felix/stack
	def getAllInstances(name=None):
		if not name:
			name = RuleTableManager._defaultName
		backend = RuleTableManager._defaultPersistence
		with RuleTableManager._mutex:
			instances = RuleTable.loadAll(name, backend)
		return instances
コード例 #3
0
ファイル: RuleTableManager.py プロジェクト: HalasNet/felix
	def getInstance(name=None):
		if not name:
			name = RuleTableManager._defaultName
		mapps = dict()
                mapps.update(RuleTableManager.getConditionMappings())
                mapps.update(RuleTableManager.getActionMappings())
		sorted(mapps.iterkeys())
		
		with RuleTableManager._mutex:
			RuleTableManager._instance = RuleTable.loadOrGenerate(name, mapps, RuleTableManager._defaultParser, RuleTableManager._defaultPersistence, RuleTableManager._persistenceFlag, RuleTableManager._policyType, uuid.uuid4().hex)
				
		return RuleTableManager._instance
コード例 #4
0
    def initialize(scopeName, mappings, parser, persistence, **kwargs):
        '''
            Initialize a specific Policy Scope by instantiating a 
            Rule Table and adding it to the PolicyManager registre _scopes
        '''

        if not scopeName in PolicyManager._scopes:
            PolicyManager._mutex[scopeName] = Lock()
            #PolicyManager._mappings[scopeName] = mappings
            with PolicyManager._mutex[scopeName]:
                PolicyManager._scopes[scopeName] = RuleTable.loadOrGenerate(
                    scopeName, mappings, parser, persistence, True, **kwargs)
            return PolicyManager._scopes[scopeName]
コード例 #5
0
ファイル: rules.py プロジェクト: jpardobl/django-thermostat
def evaluate_non_themp():
    mappings = get_mappings()
    table = RuleTable(
        "Non thermostat rules",
        mappings,
        "RegexParser",
        #rawfile,
        "RAWFile",
        None)
    table.setPolicy(False)
    for rule in Rule.objects.filter(active=True, thermostat=False).order_by("pk"):
        table.addRule(rule.to_pypelib())
    if settings.DEBUG:
        table.dump(logger)
    try:
        table.evaluate({})
        logger.debug("Table NONTHERM evaluated True")
    except Exception as ex:
        logger.debug("Table NONTHERM evaluated False")
コード例 #6
0
    def getInstance(name=None):
        if not name:
            name = RuleTableManager._defaultName
        mapps = dict()
        mapps.update(RuleTableManager.getConditionMappings())
        mapps.update(RuleTableManager.getActionMappings())
        sorted(mapps.iterkeys())

        with RuleTableManager._mutex:
            RuleTableManager._instance = RuleTable.loadOrGenerate(
                name, mapps, RuleTableManager._defaultParser,
                RuleTableManager._defaultPersistence,
                RuleTableManager._persistenceFlag,
                RuleTableManager._policyType,
                uuid.uuid4().hex)

        return RuleTableManager._instance
コード例 #7
0
        strftime("%Y", localtime()),
        hour,
        minute,
        second), "%d %m %Y %H:%M:%S"))


mappings = get_mappings()


print mappings
print "la hora es: %s" % mktime(localtime())

table = RuleTable(
    "Calecfaccion Invierno laborables",
    mappings,
    "RegexParser",
    #rawfile,
    "RAWFile",
    None)

start_time = gen_comparing_time(19, 00, 00)
print "estar time: %s" % start_time
end_time = gen_comparing_time(22, 00, 00)

print "end time: %s " % end_time
print "current day of week: %s" % mappings["current_day_of_week"]()
print "current temp %s" % mappings["current_temperature"]()
table.setPolicy(False)
#table.addRule("if (current_day_of_week != Sat ) && ( current_day_of_week != Sun) then accept ")
table.addRule("if ((current_day_of_week != Sat ) && ( current_day_of_week != Sun)) && ((current_hour > %f) && (current_hour < %f)) && (current_temperature < confort_temperature) then accept" % (start_time, end_time))
table.addRule("if current_temperature < economic_temperature then accept")
コード例 #8
0
ファイル: RuleTableTest.py プロジェクト: pengge/pypelib
sys.path.append("../../src/")

from pypelib.RuleTable import RuleTable

_mappings = {
    "vm.Name": "metaObj['Name']",
    "vm.RAM": "metaObj['RAM']",
    "vm.HDD": "metaObj['HDD']",
    "vm.OS": "metaObj['OS']",
    "vm.Version": "metaObj['Version']",
    "vm.MAC": "metaObj['MAC']",
    "vm.IP": "metaObj['IP']",
    "organization": "metaObj['organization']"
}

table = RuleTable("myTable", _mappings, "RegexParser", "RAWFile", False, False)

#Add dummy rules
table.addRule("if  vm.RAM <= 256  then accept term # Accept RAM < 256")
table.addRule(
    "if  (organization = A) && (vm.RAM <1024)  then accept term # Extended limit for organization A"
)

#Dump current table
table.dump()

metaObj1 = {"RAM": 1024, "organization": "B"}
metaObj2 = {"RAM": 1024, "organization": "A"}

print "\n"
コード例 #9
0
ファイル: RuleTableManager.py プロジェクト: ict-felix/stack
	def deleteInstance(tableID=None):
		if tableID:
			backend = RuleTableManager._defaultPersistence
			with RuleTableManager._mutex:
				RuleTable.delete(tableID, backend)
コード例 #10
0
def generateSimpleRuleTable():
    return RuleTable("myTable", None, "RegexParser", "RAWFile", False, False)
コード例 #11
0
 def deleteInstance(tableID=None):
     if tableID:
         backend = RuleTableManager._defaultPersistence
         with RuleTableManager._mutex:
             RuleTable.delete(tableID, backend)
コード例 #12
0
ファイル: RuleTableTest.py プロジェクト: fp7-ofelia/pypelib
from random import * 
sys.path.append("../../src/") 

from pypelib.RuleTable import RuleTable 


_mappings = {"vm.Name":"metaObj['Name']",
			"vm.RAM":"metaObj['RAM']",
			"vm.HDD":"metaObj['HDD']",
			"vm.OS":"metaObj['OS']",
			"vm.Version":"metaObj['Version']",
			"vm.MAC":"metaObj['MAC']",
			"vm.IP":"metaObj['IP']",
			"organization":"metaObj['organization']"}
	
table = RuleTable("myTable",_mappings,"RegexParser","RAWFile",False,False)

#Add dummy rules
table.addRule("if  vm.RAM <= 256  then accept term # Accept RAM < 256")
table.addRule("if  (organization = A) && (vm.RAM <1024)  then accept term # Extended limit for organization A")

#Dump current table
table.dump()

metaObj1 = {"RAM":1024,"organization":"B"}
metaObj2 = {"RAM":1024,"organization":"A"}

print "\n"

print "trying with org B"
try:
コード例 #13
0
ファイル: rules.py プロジェクト: jpardobl/django-thermostat
def evaluate():

    mappings = get_mappings()
    table = RuleTable(
        "Decide tunned temp",
        mappings,
        "RegexParser",
        #rawfile,
        "RAWFile",
        None)


    logger.debug("current time: %s " % mappings["current_time"]())
    logger.debug("current day of week: %s" % mappings["current_day_of_week"]())
    logger.debug("current temp %s" % mappings["current_internal_temperature"]())
    logger.debug("economic %s" % mappings["economic_temperature"]())
    logger.debug("confort %s" % mappings["confort_temperature"]())
    logger.debug("tuned %s" % mappings["tuned_temperature"]())
    logger.debug("flame %s" % mappings["flame_on"]())
    logger.debug("heat on %s" % mappings["heater_on"]())

    table.setPolicy(False)

    table.addRule("if heater_manual = 1 then ACCEPT")

    for rule in Rule.objects.filter(active=True, thermostat=True).order_by("pk"):
        table.addRule(rule.to_pypelib())

    if settings.DEBUG:
        table.dump(logger)

    metaObj = {}

    try:
        table.evaluate(metaObj)
        logger.debug("Table THERM1 evaluated True")
        mappings["tune_to_confort"]()
    except Exception:
        logger.debug("Table THERM1 evaluated False")
        mappings["tune_to_economic"]()

    table1 = RuleTable(
        "Decide flame status",
        mappings,
        "RegexParser",
        #rawfile,
        "RAWFile",
        None)
    table1.addRule("if heater_on = 0 then deny")
    table1.addRule("if current_internal_temperature < tuned_temperature then accept")
    if settings.DEBUG:
        table1.dump(logger)
        
    try:
        table1.evaluate(metaObj)
        logger.debug("Table THERM2 evaluated True")
        try:
            mappings["start_flame"]()
        except Exception as ex:
            logger.critical("ERROR: Cant start flame: %s" % ex)
    except Exception as e:
        logger.debug("Table THERM2 evaluated False")
        try:
            mappings["stop_flame"]()
        except Exception as ex:
            logger.critical("ERROR: Cant stop flame: %s" % ex)