]> xenbits.xen.org Git - xenclient/toolstack.git/commitdiff
add an option to xenvm to be able to specify to use the socket monitor
authorVincent Hanquez <vincent.hanquez@eu.citrix.com>
Tue, 18 Aug 2009 17:24:20 +0000 (18:24 +0100)
committerVincent Hanquez <vincent.hanquez@eu.citrix.com>
Tue, 18 Aug 2009 17:24:20 +0000 (18:24 +0100)
xenvm/xenvm-cmd.ml

index 9d87b04b03c875c0ea7edf4b892c60bbb3e4c994..e097e10b8cb1e7b4bd94081d78ae3b54487eca61 100644 (file)
@@ -25,21 +25,24 @@ let valid_kvpairs args =
        List.rev (List.fold_left (fun acc x -> match kvpair x with Some x -> x :: acc | None -> acc) [] args)
 
 let _ =
-       if Array.length Sys.argv < 3 then (
-               eprintf "usage: %s <uuid> <cmd> [cmd args]\n" Sys.argv.(0);
-               exit 2
-       );
-       let uuid = Sys.argv.(1) in
+       let using_socket = ref false in
+       let usage_msg = sprintf "usage: %s [--use-socket] <uuid> <cmd> [cmd args]\n" Sys.argv.(0) in
+       let args = ref [] in
+       Arg.parse [
+               ("--use-socket", Arg.Set using_socket, "use socket instead of dbus");
+       ] (fun s -> args := s :: !args) usage_msg;
+       let args = List.rev !args in
 
-       let cmds = Array.to_list (Array.sub Sys.argv 2 (Array.length Sys.argv - 2)) in
-       let query =
-               match cmds with
-               | cmd :: args -> cmd, valid_kvpairs args
-               | []          -> eprintf "error: missing query\n"; exit 1
+       let using_socket = !using_socket in
+       let uuid, query =
+               match args with
+               | uuid :: cmd :: args -> uuid, (cmd, valid_kvpairs args)
+               | uuid :: []          -> eprintf "error: missing query\n%s" usage_msg; exit 1
+               | []                  -> eprintf "error: missing uuid\n%s" usage_msg; exit 1
                in
 
        try
-               match Xenvmlib.request ~timeout:60.0 uuid query with
+               match Xenvmlib.request ~using_socket ~timeout:60.0 uuid query with
                | Xenvmlib.Ok          -> ()
                | Xenvmlib.Timeout     -> eprintf "timeout\n"; exit 1
                | Xenvmlib.Error error -> eprintf "error: %s\n" error; exit 1