panic("unable to set nid for", self.net_type)
self.add_module('portals')
+ if node_needs_router():
+ self.add_module('kptlrouter')
if self.net_type == 'tcp':
self.add_module('ksocknal')
if self.net_type == 'elan':
self.mdsname = getName(mds)
self.devlist = get_all_refs(dom_node, 'osc')
self.stripe_cnt = len(self.devlist)
- self.add_module('osc')
- self.add_module('lov')
def prepare(self):
self.info(self.mdsuuid, self.stripe_cnt, self.stripe_sz, self.stripe_off, self.pattern,
self.mdc_uuid = get_first_ref(dom_node, 'mdc')
self.lov_uuid = get_first_ref(dom_node, 'osc')
self.add_module('osc')
+ # should add lov only if needed
+ self.add_module('lov')
self.add_module('llite')
def prepare(self):
osc = OSC(l)
osc.cleanup()
-class Router(Module):
- def __init__(self,dom_node):
- Module.__init__(self, 'ROUTER', dom_node)
- self.add_module('kptlrouter')
-
- def prepare(self):
- self.info()
-
# ============================================================
# XML processing and query
# the order of iniitailization is based on level.
def getServiceLevel(dom_node):
type = getServiceType(dom_node)
- if type in ('ptlrouter',):
- return 1
if type in ('network',):
return 10
elif type in ('device', 'ldlm'):
#
routes = []
local_node = []
+router_flag = 0
def init_node(dom_node):
- global local_node
+ global local_node, router_flag
netlist = dom_node.getElementsByTagName('network')
for dom_net in netlist:
type = get_attr(dom_net, 'type')
gw = get_text(dom_net, 'server')
local_node.append((type, gw))
+def node_needs_router():
+ return router_flag
def get_routes(type, gw, dom_net):
""" Return the routes as a list of tuples of the form:
def init_route_config(lustre):
""" Scan the lustre config looking for routers. Build list of
routes. """
- global routes
+ global routes, router_flag
routes = []
list = lustre.getElementsByTagName('node')
for node in list:
if get_attr(node, 'router'):
+ router_flag = 1
for (local_type, local_nid) in local_node:
gw = None
netlist = node.getElementsByTagName('network')
n = MDC(dom_node)
elif type == 'mountpoint':
n = Mountpoint(dom_node)
- elif type == 'ptlrouter':
- n = Router(dom_node)
else:
panic ("unknown service type:", type)
if not get_attr(dom_node, 'router'):
init_node(dom_node)
init_route_config(lustreNode)
+ else:
+ global router_flag
+ router_flag = 1
# Two step process: (1) load modules, (2) setup lustre
# if not cleaning, load modules first.
# adding ldlm here is a bit of a hack, but one is enough.
str = """<lustre>
<ldlm name="%s" uuid="%s"/>
- <ptlrouter name="PTLROUTER" uuid="PTLROUTER_UUID"/>
</lustre>""" % (ldlm_name, ldlm_uuid)
return dom.parseString(str)
node_add_profile(gen, node, 'ldlm', ldlm_uuid)
if options.has_key('router'):
node.setAttribute('router', '1')
- node_add_profile(gen, node, "ptlrouter", 'PTLROUTER_UUID')
lustre.appendChild(node)
return node