source: vanHelsing/trunk/src/resource.py@ 815

Last change on this file since 815 was 815, checked in by slederer, on Jan 13, 2010 at 5:32:53 PM

Parsing von geschweiften Klammern verbessert

  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-python
File size: 3.1 KB
Line 
1'''
2Resource Objects
3Created on 30.06.2009
4
5@author: hmueller
6'''
7
8
9
10class Resource(object):
11 DIRECTIVE="Resource"
12 serial=0
13
14 def __init__(self, level=0,name=None):
15 Resource.serial=Resource.serial+1
16 self.items = []
17 self.comments = []
18 self._recurselevel = level
19 self.name = name
20 self.value = None
21 self.id=Resource.serial
22
23 def __str__(self):
24
25 equalsign_hack=[ 'diraddresses', 'ip', 'ipv4' ]
26
27 s = "\n".join(self.comments)
28 indent=" "*self._recurselevel
29 s += indent+"# id:"+str(self.id)+"\n"
30
31 if len(self.items)==0:
32 return indent+self.name+" = "+self.value+"\n";
33
34 if self.name.lower() in equalsign_hack:
35 s += indent+self.name + " = {\n";
36 else:
37 s += indent+self.name + " {\n"
38 for d in self.items:
39 s += str(d)
40 s += indent+"}\n"
41 return s
42
43 def add_comment(self, comment):
44 if not comment.lstrip().startswith("#"):
45 comment = "# " + comment
46 self.comments.append(comment)
47
48 def add_item(self, item):
49 self.items.append(item)
50
51 def add(self,key,value):
52 newRes=Resource()
53 newRes.name=key
54 newRes.value=value
55 newRes._recurselevel=self._recurselevel+1
56 self.items.append(newRes)
57
58 def getById(self,theid):
59 if self.id==theid:
60 return self
61
62 for r in self.items:
63 result=r.getById(theid)
64 if result:
65 return result
66 return None
67
68 def getByName(self,name):
69 result=[]
70 if self.name==name:
71 result.append(self)
72 for i in self.items:
73 r=i.getByName(name)
74 if len(r)!=0:
75 for a in r:
76 result.append(a)
77 return result
78
79 def getName(self):
80 for i in self.items:
81 if i.name=="Name":
82 return i.value
83 return None
84
85class Root(Resource):
86 def __str__(self):
87 s=""
88 for d in self.items:
89 s += str(d)
90 return s
91
92class Director(Resource):
93 DIRECTIVE="Director"
94 pass
95
96class Job(Resource):
97 DIRECTIVE="Job"
98
99class JobDefs(Resource):
100 DIRECTIVE="JobDefs"
101
102class Schedule(Resource):
103 DIRECTIVE="Schedule"
104
105class FileSet(Resource):
106 DIRECTIVE="FileSet"
107
108class Client(Resource):
109 DIRECTIVE="Client"
110
111class Storage(Resource):
112 DIRECTIVE="Storage"
113
114class Pool(Resource):
115 DIRECTIVE="Pool"
116
117class Catalog(Resource):
118 # ITEMS_DIRD = cdef.dird_cat_items
119 DIRECTIVE="Catalog"
120
121class Messages(Resource):
122 DIRECTIVE="Messages"
123
124class Console(Resource):
125 DIRECTIVE="Console"
126
127class Counter(Resource):
128 DIRECTIVE="Counter"
129
130class Device(Resource):
131 DIRECTIVE="Device"
132
133class Autochanger(Resource):
134 DIRECTIVE="Autochanger"
135
136class FileDaemon(Resource):
137 DIRECTIVE="FileDaemon"
138
139__cls = locals().copy()
140
141directives = [v.DIRECTIVE for k,v in __cls.iteritems()
142 if k != "Resource" and getattr(v, "DIRECTIVE", None)]
Note: See TracBrowser for help on using the repository browser.