lovconfig.appendChild(self.ref("lov", lov_uuid))
return lovconfig
+ def lmv_tgt(self, mdt_uuid):
+ tgt = self.doc.createElement('lmv_tgt')
+ tgt.setAttribute("uuidref", mdt_uuid)
+ return tgt
+
def lmv(self, name, uuid):
lmv = self.newService("lmv", name, uuid)
return lmv
mdd = self.newService("mdsdev", name, uuid)
self.addElement(mdd, "fstype", fstype)
if backfstype:
- self.addElement(mdd, "backfstype", backfstype)
+ self.addElement(mdd, "backfstype", backfstype)
dev = self.addElement(mdd, "devpath", devname)
if backdevname:
self.addElement(mdd, "backdevpath", backdevname)
self.addElement(mdd, "autoformat", format)
if dev_size:
- self.addElement(mdd, "devsize", "%s" % (dev_size))
+ self.addElement(mdd, "devsize", "%s" % (dev_size))
if journal_size:
self.addElement(mdd, "journalsize", "%s" % (journal_size))
if inode_size:
self.addElement(mdd, "no_root_squash", no_root_squash)
mdd.appendChild(self.ref("node", node_uuid))
mdd.appendChild(self.ref("target", mds_uuid))
- mdd.appendChild(self.dev(devname))
+ dev = self.dev(devname)
+ if dev != None:
+ mdd.appendChild(dev)
+
if lmv_uuid:
mdd.appendChild(self.ref("lmv", lmv_uuid))
self.addElement(mdd, "lmv", lmv_uuid)
tgt.setAttribute('generation', str(genera))
def lmv_add_obd(gen, lmv, mdc_uuid):
- lmv.appendChild(gen.ref("mds", mdc_uuid))
+ lmv.appendChild(gen.lmv_tgt(mdc_uuid))
def ref_exists(profile, uuid):
elist = profile.childNodes
def add_mds(gen, lustre, options):
node_name = get_option(options, 'node')
mds_name = get_option(options, 'mds')
+ if not mds_name:
+ mds_name = new_name('MDS_'+ node_name)
lmv_name = get_option(options, 'lmv')
mdd_name = new_name("MDD_" + mds_name +"_" + node_name)
mdd_uuid = new_uuid(mdd_name)
master_uuid = name2uuid(lustre, master_name, tag='lov', fatal=0)
cache_uuid = name2uuid(lustre, cache_name, tag='lov', fatal=0)
+ if not master_uuid or not cache_uuid:
+ master_uuid = name2uuid(lustre, master_name, tag='ost', fatal=0)
+ cache_uuid = name2uuid(lustre, cache_name, tag='ost', fatal=0)
+
if master_uuid:
node = lookup(lustre, master_uuid)
rets = node.getElementsByTagName('lov_tgt')
lmv = gen.lmv(name, uuid)
lustre.appendChild(lmv)
-
+
+def find_client(lustre, mds_uuid, client_uuid):
+ mds = lookup(lustre, mds_uuid)
+ clients = mds.getElementsByTagName('client_ref')
+
+ if clients:
+ for client in clients:
+ if client.getAttribute("uuidref") == client_uuid:
+ return 1
+ return 0
+
def new_filesystem(gen, lustre, mds_uuid, obd_uuid, mgmt_uuid):
fs_name = new_name("FS_fsname")
fs_uuid = new_uuid(fs_name)
+ mds = lookup(lustre, mds_uuid)
+ clients = mds.getElementsByTagName('client_ref')
+
+ if find_client(lustre, mds_uuid, obd_uuid) == 0:
+ mds.appendChild(gen.ref("client", obd_uuid))
+
fs = gen.filesystem(fs_name, fs_uuid, mds_uuid,
obd_uuid, mgmt_uuid)
try:
options, args = cl.parse(cmdlinesplit(cmd))
if options.merge or options.input or options.output:
- print "The batchfile should not contain --merge, --input or --output."
- sys.exit(1)
+ print "The batchfile should not contain --merge, --input or --output."
+ sys.exit(1)
do_command(gen, lustre, options, args)
except OptionError, e:
panic(cmd, e)