- Timestamp:
- 03/15/12 16:12:38 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sara_cmt/sara_cmt/cluster/templatetags/cmts_extras.py
r14130 r14131 159 159 160 160 from django.db.models import get_model 161 162 @register.tag(name='getbasenets') 163 def do_getbasenets(parser, token): 164 165 try: 166 tag, network_name, kw_as, varname = token.split_contents() 167 except ValueError: 168 raise template.TemplateSyntaxError, '%r tag requires exactly 4 arguments' % tag 169 170 return getBaseNets( varname, network_name ) 171 172 class getBaseNets(template.Node): 173 174 """ 175 Get list of basenets in a network (name) 176 177 Usage: {% getbasenets <network name> as <listname> %} 178 """ 179 180 def __init__(self, varname, network_name ): 181 182 self.varname = varname 183 self.network_name = network_name.strip("'").strip('"').__str__() 184 self.basenets = [ ] 185 186 def render(self, context): 187 188 if (self.network_name[0] == self.network_name[-1] and self.network_name[0] in ('"', "'")): 189 190 network_str = str( self.network_name.strip("'").strip('"') ) 191 else: 192 # RB: Not quoted: must be a variable: attempt to resolve to value 193 try: 194 networkvar = template.Variable( str(self.network_name) ) 195 network_str = networkvar.resolve(context) 196 except template.VariableDoesNotExist: 197 #raise template.TemplateSyntaxError, '%r tag argument 1: not a variable %r' %( tag, path_str ) 198 pass 199 200 from IPy import IP 201 202 network_units = get_model('cluster', 'Network').objects.filter( name=str(network_str) ) 203 204 for n in network_units: 205 206 for ipnum in IP( n.cidr ): 207 if not base_net( ipnum ) in self.basenets: 208 self.basenets.append( str( base_net( ipnum ) ) ) 209 210 context[ self.varname ] = self.basenets 211 self.basenets = [ ] 212 213 return '' 214 215 @register.tag(name='getracks') 216 def do_getracks(parser, token): 217 218 try: 219 tag, cluster, kw_as, name = token.split_contents() 220 except ValueError: 221 raise template.TemplateSyntaxError, '%r tag requires exactly 4 arguments' % tag 222 223 return getRacks( name, cluster ) 224 225 class getRacks(template.Node): 226 227 """ 228 Get list of racks in a cluster 229 230 Usage: {% getracks <cluster> as <listname> %} 231 """ 232 233 def __init__(self, name, cluster): 234 235 self.name = name 236 self.cluster = cluster.strip("'").strip('"').__str__() 237 self.racks = [ ] 238 239 def render(self, context): 240 241 cluster_units = get_model('cluster', 'HardwareUnit').objects.filter( cluster__name=str(self.cluster) ) 242 243 for u in cluster_units: 244 if u.rack not in self.racks: 245 self.racks.append( u.rack ) 246 247 context[ self.name ] = self.racks 248 return '' 161 249 162 250 @register.tag(name='use')
Note: See TracChangeset
for help on using the changeset viewer.