Hi all,

There is the message which does not comply with real operation by the message 
of the crm command.

When an operator executes "migrate" command, crm should display "unmigrate" in 
a message.
In addition, the crm command does not have the option corresponding to the Q 
option of the crm_resource command.

(snip)
crm(live)resource# move 
usage: migrate <rsc> [<node>] [<lifetime>] [force]
crm(live)resource# move grpDummy srv01 P3S force
Migration will take effect until: 2011-06-15 13:47:39Z
WARNING: Creating rsc_location constraint 'cli-standby-grpDummy' with a score 
of -INFINITY for resource grpDummy on srv02.
        This will prevent grpDummy from running on srv02 until the constraint 
is removed using the 'crm_resource -U' command or manually with cibadmin
        This will be the case even if srv02 is the last node in the cluster
        This message can be disabled with -Q
(snip)

I contribute a patch to add message and Q option to.(quiet option)


(snip)
crm(live)resource# migrate
usage: migrate <rsc> [<node>] [<lifetime>] [force] [quiet]
crm(live)resource# migrate grpDummy srv02 P3S force quiet
crm(live)resource# unmigrate grpDummy
crm(live)resource# migrate grpDummy srv01 P3S force
WARNING: Creating rsc_location constraint 'cli-standby-grpDummy' with a score 
of -INFINITY for resource grpDummy on srv02.
        This will prevent grpDummy from running on srv02 until the constraint 
is removed using the 'crm resource unmigrate' command or manually with cibadmin
        This will be the case even if srv02 is the last node in the cluster
        This message can be disabled with quiet

crm(live)resource# move grpDummy srv02 P3S force 
WARNING: Creating rsc_location constraint 'cli-standby-grpDummy' with a score 
of -INFINITY for resource grpDummy on srv02.
        This will prevent grpDummy from running on srv02 until the constraint 
is removed using the 'crm resource unmove' command or manually with cibadmin
        This will be the case even if srv02 is the last node in the cluster
        This message can be disabled with quiet
(snip)

I am going to contribute the patch functionalizing Q option to other crm 
commands later.

I do not yet revise crm_cli.txt.
I intend to send it with the patch of other Q options.

Best Regards,
Hideo Yamauchi.
diff -r c3ac0f617f6a ui.py.in
--- a/ui.py.in  Wed Jun 15 23:35:31 2011 +0900
+++ b/ui.py.in  Wed Jun 15 23:39:41 2011 +0900
@@ -759,7 +759,7 @@
         self.cmd_table["demote"] = (self.demote,(1,1),0,(rsc_list,))
         self.cmd_table["manage"] = (self.manage,(1,1),0,(rsc_list,))
         self.cmd_table["unmanage"] = (self.unmanage,(1,1),0,(rsc_list,))
-        self.cmd_table["migrate"] = 
(self.migrate,(1,4),0,(rsc_list,nodes_list))
+        self.cmd_table["migrate"] = 
(self.migrate,(1,5),0,(rsc_list,nodes_list))
         self.cmd_table["unmigrate"] = (self.unmigrate,(1,1),0,(rsc_list,))
         self.cmd_table["param"] = (self.param,(3,4),1,(rsc_list,attr_cmds))
         self.cmd_table["meta"] = (self.meta,(3,4),1,(rsc_list,attr_cmds))
@@ -829,32 +829,43 @@
             return False
         return set_deep_meta_attr("is-managed","false",rsc)
     def migrate(self,cmd,*args):
-        """usage: migrate <rsc> [<node>] [<lifetime>] [force]"""
+        """usage: migrate <rsc> [<node>] [<lifetime>] [force] [quiet]"""
         rsc = args[0]
         if not is_name_sane(rsc):
             return False
         node = None
         lifetime = None
         force = False
+        quiet = None
         if len(args) == 2:
             if not args[1] in listnodes():
                 if args[1] == "force":
                     force = True
+                elif args[1] == "quiet":
+                    quiet = args[1]
                 else:
                     lifetime = args[1]
             else:
                 node = args[1]
-        elif len(args) == 3:
+        elif len(args) == 3 or len(args) == 4:
             if not args[1] in listnodes():
-                lifetime = args[1]
-                force = True
+                for i in range(1, len(args)):
+                    if args[i] == "force":
+                        force = True
+                    elif args[i] == "quiet":
+                        quiet = args[i]
+                    else:
+                        lifetime = args[i]
             else:
                 node = args[1]
-                if args[2] == "force":
-                    force = True
-                else:
-                    lifetime = args[2]
-        elif len(args) == 4:
+                for i in range(2, len(args)):
+                    if args[i] == "force":
+                       force = True
+                    elif args[i] == "quiet":
+                        quiet = args[i]
+                    else:
+                        lifetime = args[i]
+        elif len(args) == 5:
             if not is_name_sane(args[1]):
                 return False
             node = args[1]
@@ -863,6 +874,10 @@
                 syntax_err((cmd,force))
                 return False
             force = True
+            if not args[4] == "quiet":
+                syntax_err((cmd,quiet))
+                return False
+           quiet = args[4]
         opts = ''
         if node:
             opts = "--node='%s'" % node
@@ -870,7 +885,18 @@
             opts = "%s --lifetime='%s'" % (opts,lifetime)
         if force or user_prefs.get_force():
             opts = "%s --force" % opts
-        return ext_cmd(self.rsc_migrate % (rsc,opts)) == 0
+        if quiet:
+            opts = "%s -Q" % opts
+        so, se, rc = get_allout(add_sudo(self.rsc_migrate % (rsc,opts)))
+        re.search("crm_resource -U", se)
+        if re:
+            if cmd == "migrate":
+                se = re.sub("crm_resource -U", "crm resource unmigrate", se)   
+            else:
+                se = re.sub("crm_resource -U", "crm resource unmove", se)      
+            se = re.sub("with -Q", "with quiet", se)   
+            page_string(se)
+        return rc == 0
     def unmigrate(self,cmd,rsc):
         "usage: unmigrate <rsc>"
         if not is_name_sane(rsc):
diff -r c3ac0f617f6a utils.py
--- a/utils.py  Wed Jun 15 23:35:31 2011 +0900
+++ b/utils.py  Wed Jun 15 23:39:41 2011 +0900
@@ -176,6 +176,19 @@
         print ".EXT", cmd
     return subprocess.call(add_sudo(cmd), shell=True)
 
+def get_allout(cmd):
+    '''
+    Run a cmd, return stdout, stderr, returncode output.
+    '''
+    proc = subprocess.Popen(cmd, shell = True, \
+        stdout = subprocess.PIPE, stderr = subprocess.PIPE)
+    stdout_value, stderr_value = proc.communicate()
+    proc.wait()
+    rc = proc.returncode
+    stdout_value = stdout_value.strip()
+    stderr_value = stderr_value.strip()
+    return stdout_value, stderr_value, rc
+
 def get_stdout(cmd, stderr_on = True):
     '''
     Run a cmd, return stdin output.
_______________________________________________
Pacemaker mailing list: Pacemaker@oss.clusterlabs.org
http://oss.clusterlabs.org/mailman/listinfo/pacemaker

Project Home: http://www.clusterlabs.org
Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
Bugs: http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker

Reply via email to