Whamcloud - gitweb
- lots of fixes and cleanups in cobd and cmobd.
[fs/lustre-release.git] / lustre / utils / lmc
index 84f4a06..700dc40 100755 (executable)
@@ -509,6 +509,11 @@ class GenConfig:
         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
@@ -527,13 +532,13 @@ class GenConfig:
         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:
@@ -550,8 +555,11 @@ class GenConfig:
             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)
@@ -791,7 +799,7 @@ def lov_del_obd(gen, lustre, lov, osc_uuid, options):
             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
@@ -941,6 +949,8 @@ def add_route(gen, lustre, options):
 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)
@@ -1210,6 +1220,10 @@ def add_cobd(gen, lustre, options):
     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')
@@ -1364,11 +1378,27 @@ def add_lmv(gen, lustre, options):
 
     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)
                        
@@ -1663,8 +1693,8 @@ def main():
             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)