Changeset 816


Ignore:
Timestamp:
01/15/10 16:56:01 (12 years ago)
Author:
slederer
Message:

Aufräumen, Funktionen zum Filtern nach Ressourcen-Typ

Location:
vanHelsing/trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • vanHelsing/trunk/src/bcfg.py

    r815 r816  
    1313
    1414rxp_item = re.compile('^\\s*(\\w[\\w ]*\\w+)\\s*\\=(.*)') # xxx = xxx matchen
    15 rxp_item2 = re.compile('^\\s*(\\w[\\w ]*\\w+)\\s*\\=\\s*{(.*)}\\s*') # match key = { a = 1; b= 2}
     15rxp_item2 = re.compile('^\\s*(\\w[\\w ]*\\w+)\\s*\\=\\s*{(.*)}\\s*') # match type = { a = 1; b= 2}
    1616rxp_openbrace = re.compile('^\\s*(\\w[\\w ]*\\w+)\\s*\\=?\\s*\\{\\s*')    # match xxx {
    1717rxp_open = re.compile('^\\s*(\\w[\\w ]*\\w+)\\s*$')    # match xxx
     
    2929        self.filename = filename
    3030        self.resources = resource.Root(level=0)
    31         self.resources.name="<root>"
     31        self.resources.type="<root>"
    3232
    3333    def read(self):
     
    4242        f.close()
    4343
    44     def getResourceById(self,theid):
    45         return self.resources.getById(theid)
    46 
    47     def getResourceByName(self,name):
    48         return self.resources.getByName(name)
    49 
    5044    def getRoot(self):
    5145        return self.resources
     
    5852
    5953        newRes=resClass(level+1)
    60         newRes.name=resname
     54        newRes.type=resname
    6155        curRes.add_item(newRes);
    6256        return newRes
    6357
    6458    def parse(self,curRes,f,level):
    65         #print "START",curRes.name
     59        #print "START",curRes.type
    6660
    6761        while True:
     
    9589                #print "item:",name,value
    9690                newRes=resource.Resource(level+1)
    97                 newRes.name=name
     91                newRes.type=name
    9892                newRes.value="{"+value+"}"
    9993                curRes.add_item(newRes)
     
    121115                #print "item:",name,value
    122116                newRes=resource.Resource(level+1)
    123                 newRes.name=name
     117                newRes.type=name
    124118                newRes.value=value
    125119                curRes.add_item(newRes)
     
    162156    pass
    163157
    164 def createClient(clientname,clientaddr,catalog,password):
    165     newclient=resource.Client(1,"Client")
    166     newclient.add("Name",clientname)
    167     newclient.add("Address",clientaddr)
    168     #newclient.add("FDPort",fdport)
    169     newclient.add("Catalog",catalog)
    170     newclient.add("Password",'"'+password+'"')
    171     return newclient
    172 
    173158def genpasswd(len=32):
    174159    charset="01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!/%()=?@"
     
    178163    return password
    179164
     165
     166def createClientConfig(dirdcfg,clientName,clientPassword=genpasswd()):
     167    director=dirdcfg.getRoot().getByType("Director")[0]
     168    dirdName=director.getName()
     169    r=dirdcfg.getRoot().getByName(clientName)
     170    if len(r)==1:
     171        client=r[0]
     172    else:
     173        return
     174   
     175    filename=clientName+".conf"
     176    fdcfg=FiledConfig(filename)
     177    fdcfg.setDefaults(dirdName,clientPassword,clientName)
     178    fdcfg.write()
     179
    180180def createAllClientConfigs(dirdcfg):
    181     clients=dirdcfg.getResourceByName("Client")
    182     director=dirdcfg.getResourceByName("Director")[0]
     181    clients=dirdcfg.getRoot().getByType("Client",1)
     182    director=dirdcfg.getRoot().getByType("Director")[0]
    183183    dirdName=director.getName()
    184184
    185185    for c in clients:
     186        print c
    186187        clientName=c.getName()
    187188        if clientName!=None:
    188             r=c.getByName("Password")
     189            r=c.getByType("Password")
    189190            if len(r)>0:
    190191                clientPassword=r[0].value
     
    199200 
    200201if __name__ == "__main__":
    201 
    202202    if len(sys.argv) < 2:
    203203        filename="test.conf"
    204204    else:
    205205        filename=sys.argv[1]   
    206  
     206
    207207    dirdcfg = DirdConfig(filename)
    208208    dirdcfg.read()
    209209
     210    root=dirdcfg.getRoot()
     211
    210212    job=resource.Job(1,"Job")
    211     job.add("Name",'"test2"')
    212     job.add("Client",'"test2"')
    213     job.add("JobDefs",'"testdefs"')
    214     job.add("FileSet",'"Full Set"')
    215 
    216     root=dirdcfg.getRoot()
     213    job.setDefaults("test2-job","test2","testdefs","Full Set")
     214
    217215    root.add_item(job)
    218216
    219217    pwd=genpasswd()
    220     newclient=createClient("test-fd","testclient","MyCatalog",pwd)
     218    newclient=resource.Client(1,"Client")
     219    newclient.setDefaults("test-fd","testclient","MyCatalog",pwd)
    221220    root.add_item(newclient)
    222221
     
    227226    fdcfg.write()
    228227
     228
     229    createClientConfig(dirdcfg,"gaffel-fd")
     230    createClientConfig(dirdcfg,"test-fd")
     231
    229232    createAllClientConfigs(dirdcfg)
    230 
    231233    sys.exit(0)
  • vanHelsing/trunk/src/resource.py

    r815 r816  
    99
    1010class Resource(object):
    11     DIRECTIVE="Resource"
    1211    serial=0
    1312
     
    1716        self.comments = []
    1817        self._recurselevel = level
    19         self.name = name
     18        self.type = name
    2019        self.value = None
    2120        self.id=Resource.serial
     
    3029
    3130        if len(self.items)==0:
    32                 return indent+self.name+" = "+self.value+"\n";
     31                return indent+self.type+" = "+self.value+"\n";
    3332
    34         if self.name.lower() in equalsign_hack:
    35             s += indent+self.name + " = {\n";
     33        if self.type.lower() in equalsign_hack:
     34            s += indent+self.type + " = {\n";
    3635        else:
    37             s += indent+self.name + " {\n"
     36            s += indent+self.type + " {\n"
    3837        for d in self.items:
    3938            s += str(d)
     
    4948        self.items.append(item)
    5049
    51     def add(self,key,value):
     50    def add(self,type,value):
    5251        newRes=Resource()
    53         newRes.name=key
     52        newRes.type=type
    5453        newRes.value=value
    5554        newRes._recurselevel=self._recurselevel+1
     
    6665        return None
    6766
    68     def getByName(self,name):
     67    def getByType(self,name,depth=10000):
    6968        result=[]
    70         if self.name==name:
     69        if self.type==name:
    7170                result.append(self)
    72         for i in self.items:
    73                 r=i.getByName(name)
     71        if depth>0:
     72            for i in self.items:
     73                r=i.getByType(name,depth-1)
    7474                if len(r)!=0:
    7575                    for a in r:
     
    7979    def getName(self):
    8080        for i in self.items:
    81             if i.name=="Name":
     81            if i.type=="Name":
    8282                return i.value
    8383        return None
     84
     85    def getByName(self,name):
     86        result=[]
     87        if self.getName()==name:
     88            result.append(self)
     89        for i in self.items:
     90            r=i.getByName(name)
     91            if len(r)!=0:
     92                for a in r:
     93                    result.append(a)
     94        return result
    8495
    8596class Root(Resource):
     
    91102
    92103class Director(Resource):
    93     DIRECTIVE="Director"
    94104    pass
    95105
    96106class Job(Resource):
    97     DIRECTIVE="Job"
    98 
     107    def setDefaults(self,jobName,clientName,jobDefs,fileset):
     108        self.add("Name",'"'+jobName+'"')
     109        self.add("Client",clientName)
     110        self.add("JobDefs",'"'+jobDefs+'"')
     111        self.add("FileSet",'"'+fileset+'"')
     112       
    99113class JobDefs(Resource):
    100     DIRECTIVE="JobDefs"
     114    pass
    101115
    102116class Schedule(Resource):
    103     DIRECTIVE="Schedule"
     117    pass
    104118
    105119class FileSet(Resource):
    106     DIRECTIVE="FileSet"
     120    pass
    107121
    108122class Client(Resource):
    109     DIRECTIVE="Client"
     123    def setDefaults(self,clientname,clientaddr,catalog,password):
     124        self.add("Name",clientname)
     125        self.add("Address",clientaddr)
     126        self.add("Catalog",catalog)
     127        self.add("Password",'"'+password+'"')
    110128
    111129class Storage(Resource):
    112     DIRECTIVE="Storage"
     130    pass
    113131
    114132class Pool(Resource):
    115     DIRECTIVE="Pool"
     133    pass
    116134
    117135class Catalog(Resource):
    118    # ITEMS_DIRD = cdef.dird_cat_items
    119     DIRECTIVE="Catalog"
     136    pass
    120137
    121138class Messages(Resource):
    122     DIRECTIVE="Messages"
     139    pass
    123140
    124141class Console(Resource):
    125     DIRECTIVE="Console"
     142    pass
    126143
    127144class Counter(Resource):
    128     DIRECTIVE="Counter"
     145    pass
    129146
    130147class Device(Resource):
    131     DIRECTIVE="Device"
     148    pass
    132149
    133150class Autochanger(Resource):
    134     DIRECTIVE="Autochanger"
     151    pass
    135152
    136153class FileDaemon(Resource):
    137     DIRECTIVE="FileDaemon"
     154    pass
    138155
    139 __cls = locals().copy()
    140 
    141 directives = [v.DIRECTIVE for k,v in __cls.iteritems()
    142               if k != "Resource" and getattr(v, "DIRECTIVE", None)]
Note: See TracChangeset for help on using the changeset viewer.