ocaml/xapi/cli_frontend.ml   |    6 +-
 ocaml/xapi/cli_operations.ml |    2 +-
 ocaml/xapi/cli_printer.ml    |   87 ++++++++++++++--------------
 ocaml/xapi/xapi_cli.ml       |  129 +++++++++++++++++++-----------------------
 ocaml/xe-cli/newcli.ml       |   20 +------
 5 files changed, 106 insertions(+), 138 deletions(-)


# HG changeset patch
# User Mike McClurg <[email protected]>
# Date 1286985041 -3600
# Node ID 8ca7127d9f3909ed9459ed49e0cc6dbff3171afd
# Parent  d29070e598d7c64cdddbebf7362aff6188a559ec
CA-26252: Removed all traces of compat-mode. FIXED.

Signed-off-by: Mike McClurg <[email protected]>

diff --git a/ocaml/xapi/cli_frontend.ml b/ocaml/xapi/cli_frontend.ml
--- a/ocaml/xapi/cli_frontend.ml
+++ b/ocaml/xapi/cli_frontend.ml
@@ -2592,10 +2592,8 @@
       printer (Cli_printer.PList (make_list vm_cmds))
     end
   
-let cmd_help printer minimal is_compat cmd =
-  if is_compat 
-  then geneva_help printer minimal cmd
-  else rio_help printer minimal cmd
+let cmd_help printer minimal cmd =
+	rio_help printer minimal cmd
 
 
 
diff --git a/ocaml/xapi/cli_operations.ml b/ocaml/xapi/cli_operations.ml
--- a/ocaml/xapi/cli_operations.ml
+++ b/ocaml/xapi/cli_operations.ml
@@ -462,7 +462,7 @@
 	end
 
 
-let stdparams = ["server";"password";"port";"username"; "minimal"; "force"; "multiple"; "compat"; "all"; "message-priority"]
+let stdparams = ["server";"password";"port";"username"; "minimal"; "force"; "multiple"; "all"; "message-priority"]
 
 (* This goes through the list of parameters, extracting any of the form map-name-key=value   *)
 (* where map-name is the name of a map in the class. These will be used to set the key-value *)
diff --git a/ocaml/xapi/cli_printer.ml b/ocaml/xapi/cli_printer.ml
--- a/ocaml/xapi/cli_printer.ml
+++ b/ocaml/xapi/cli_printer.ml
@@ -36,14 +36,14 @@
   let n = len - String.length s in
   s^(String.make (if n>0 then n else 0) ' ')
 
-let rec multi_line_record is_compat r =
-  let maxlen = 4 + List.fold_left max 0 (List.map (fun (a,b) -> String.length a) r) in
-  let indent fs = List.map (fun (f,v)->(pad_string f maxlen,v)) fs in
-  let r =
-    match r with
-	((k,v)::fs) -> ((if is_compat then k else (pad_rhs k maxlen)),v)::(indent fs)
-      | _ -> r in
-  (String.concat "\n" (List.map (fun (f,v)->f^": "^v) r))^"\n"
+let rec multi_line_record r =
+	let maxlen = 4 + List.fold_left max 0 (List.map (fun (a,b) -> String.length a) r) in
+	let indent fs = List.map (fun (f,v)->(pad_string f maxlen,v)) fs in
+	let r =
+		match r with
+				((k,v)::fs) -> ((pad_rhs k maxlen),v)::(indent fs)
+			| _ -> r in
+	(String.concat "\n" (List.map (fun (f,v)->f^": "^v) r))^"\n"
 
 (* Used to escape commas in --minimal mode *)
 let escape_commas x = 
@@ -53,42 +53,41 @@
 		] in
     Stringext.String.escaped ~rules x
 
-let make_printer is_compat sock minimal =
-  let buffer = ref [] in
+let make_printer sock minimal =
+	let buffer = ref [] in
 
-  let multi_line_xapi_minimal pval =
-    match pval with
-      | (PTable rs) ->
-	  if (List.length rs > 0) && (List.length (List.hd rs) > 0) then
-	    let names = List.map (fun r -> snd (List.hd r)) rs in
-	    let escaped_names = List.map escape_commas names in
-	    buffer := (String.concat "," escaped_names) :: !buffer
-      | (PList ss) ->
-	  let escaped_ss = List.map escape_commas ss in
-	  buffer := (String.concat "," escaped_ss) :: !buffer
-      | _ -> 
-	  ()
-  in
-  
-  let multi_line_xapi pval =
-    match pval with
-      | (PTable rs) ->
-	  List.iter (fun l -> marshal sock (Command (Print (l ^ "\n")))) (List.map (multi_line_record is_compat) rs)
-      | (PList ss) ->
-	  List.iter (fun l -> marshal sock (Command (Print (l)))) ss
-      | (PMsg ss) -> 
-	  marshal sock (Command (Print ss))
-      | (PStderr ss) ->
-	  marshal sock (Command (PrintStderr ss))
-  in
-  
-  let minimal_flush () =
-    marshal sock (Command(Print (String.concat "," (!buffer))))
-  in
-  
-  let flush () = 
-    ()
-  in
+	let multi_line_xapi_minimal pval =
+		match pval with
+			| (PTable rs) ->
+				if (List.length rs > 0) && (List.length (List.hd rs) > 0) then
+					let names = List.map (fun r -> snd (List.hd r)) rs in
+					let escaped_names = List.map escape_commas names in
+					buffer := (String.concat "," escaped_names) :: !buffer
+			| (PList ss) ->
+				let escaped_ss = List.map escape_commas ss in
+				buffer := (String.concat "," escaped_ss) :: !buffer
+			| _ ->
+				()
+	in
 
-  if minimal then (multi_line_xapi_minimal, minimal_flush) else (multi_line_xapi, flush)
+	let multi_line_xapi pval =
+		match pval with
+			| (PTable rs) ->
+				List.iter (fun l -> marshal sock (Command (Print (l ^ "\n")))) (List.map multi_line_record rs)
+			| (PList ss) ->
+				List.iter (fun l -> marshal sock (Command (Print (l)))) ss
+			| (PMsg ss) ->
+				marshal sock (Command (Print ss))
+			| (PStderr ss) ->
+				marshal sock (Command (PrintStderr ss))
+	in
 
+	let minimal_flush () =
+		marshal sock (Command(Print (String.concat "," (!buffer))))
+	in
+
+	let flush () =
+		()
+	in
+
+	if minimal then (multi_line_xapi_minimal, minimal_flush) else (multi_line_xapi, flush)
diff --git a/ocaml/xapi/xapi_cli.ml b/ocaml/xapi/xapi_cli.ml
--- a/ocaml/xapi/xapi_cli.ml
+++ b/ocaml/xapi/xapi_cli.ml
@@ -38,43 +38,41 @@
   let towrite = string ^ "\r\n" in
   ignore(Unix.write s towrite 0 (String.length towrite))
 
-let forward args s session is_compat =
-  (* Reject forwarding cli commands if the request came in from a tcp socket *)
-  if not (Context.is_unix_socket s) then raise (Api_errors.Server_error (Api_errors.host_is_slave,[Pool_role.get_master_address ()]));
-  let host = Pool_role.get_master_address () in
-  let port = !Xapi_globs.https_port in
-  let st_proc = Xmlrpcclient.get_reusable_stunnel
-    ~write_to_log:Xmlrpcclient.write_to_log host port in
-  finally
-    (fun () ->
-       let ms = st_proc.Stunnel.fd in
-       (* Headers *)
-       let body = String.concat "\r\n" args in
-       let body = 
-	 if is_compat then "compat\r\n"^body else body in
-       let body = 
-	 match session with None -> body | Some s -> ("session_id="^(Ref.string_of s)^"\r\n")^body in
-       List.iter (write ms)
-	 ["POST /cli HTTP/1.1";"Content-Length: "^(string_of_int (String.length body)); ""];
-       ignore_int (Unix.write ms body 0 (String.length body));
-       let (_ : int * int) = unmarshal_protocol ms in  
-       marshal_protocol ms;
-       Unixext.proxy (Unix.dup s) (Unix.dup ms)
-    )
-    (fun () ->
-       if Xmlrpcclient.check_reusable st_proc.Stunnel.fd then begin
-	 Stunnel_cache.add st_proc
-       end else begin
-	 debug "Disconnecting CLI because it is not reusable";
-	 Stunnel.disconnect st_proc
-       end
-    )
+let forward args s session =
+	(* Reject forwarding cli commands if the request came in from a tcp socket *)
+	if not (Context.is_unix_socket s) then raise (Api_errors.Server_error (Api_errors.host_is_slave,[Pool_role.get_master_address ()]));
+	let host = Pool_role.get_master_address () in
+	let port = !Xapi_globs.https_port in
+	let st_proc = Xmlrpcclient.get_reusable_stunnel
+		~write_to_log:Xmlrpcclient.write_to_log host port in
+	finally
+		(fun () ->
+			let ms = st_proc.Stunnel.fd in
+			(* Headers *)
+			let body = String.concat "\r\n" args in
+			let body =
+				match session with None -> body | Some s -> ("session_id="^(Ref.string_of s)^"\r\n")^body in
+			List.iter (write ms)
+				["POST /cli HTTP/1.1";"Content-Length: "^(string_of_int (String.length body)); ""];
+			ignore_int (Unix.write ms body 0 (String.length body));
+			let (_ : int * int) = unmarshal_protocol ms in
+			marshal_protocol ms;
+			Unixext.proxy (Unix.dup s) (Unix.dup ms)
+		)
+		(fun () ->
+			if Xmlrpcclient.check_reusable st_proc.Stunnel.fd then begin
+				Stunnel_cache.add st_proc
+			end else begin
+				debug "Disconnecting CLI because it is not reusable";
+				Stunnel.disconnect st_proc
+			end
+		)
 
 
 (* Check that keys are all present in cmd *)
 let check_required_keys cmd keylist =
   let (_: (string * string) list) = get_params cmd in
-  List.map (get_reqd_param cmd) keylist
+	List.map (get_reqd_param cmd) keylist
 
 let with_session ~local rpc u p session f =  
   let session, logout = 
@@ -94,11 +92,11 @@
     (fun () -> f session)
     (fun () -> do_logout ())
 
-let do_rpcs req s username password minimal is_compat cmd session args =
+let do_rpcs req s username password minimal cmd session args =
   let cmdname = get_cmdname cmd in
   let cspec =
     try
-      Hashtbl.find (if is_compat then cmdtable_geneva else cmdtable) cmdname
+      Hashtbl.find cmdtable cmdname
     with
 	Not_found -> raise (Unknown_command cmdname) in
   (* Forward if we're not the master, and if the cspec doesn't contain the key 'neverforward' *)
@@ -110,10 +108,10 @@
     let generic_rpc = Helpers.get_rpc () in
     let rpc = generic_rpc req s in
     if do_forward
-    then with_session ~local:false rpc username password session (fun sess -> forward args s (Some sess) is_compat)
+    then with_session ~local:false rpc username password session (fun sess -> forward args s (Some sess))
     else
       begin
-	let (printer,flush) = Cli_printer.make_printer is_compat s minimal in
+	let (printer,flush) = Cli_printer.make_printer s minimal in
 	let flush_and_marshall() = flush (); marshal s (Command(Exit 0)) in
 	begin
 	  match cspec.implementation with
@@ -138,13 +136,13 @@
 	warn "Uncaught exception: Unix_error '%s' '%s' '%s'" (Unix.error_message a) b c;
 	raise e
 
-let do_help is_compat cmd minimal s =
-  let (printer,flush)=Cli_printer.make_printer is_compat s minimal in
-  cmd_help printer minimal is_compat cmd;
+let do_help cmd minimal s =
+  let (printer,flush)=Cli_printer.make_printer s minimal in
+  cmd_help printer minimal cmd;
   flush ();
   marshal s (Command (Exit 0))
 
-let exec_command req is_compat cmd s session args =
+let exec_command req cmd s session args =
 	let params = get_params cmd in
 	let minimal =
 		if (List.mem_assoc "minimal" params)
@@ -163,8 +161,8 @@
 	else
 		debug "xe %s %s" cmd_name (String.concat " " (List.map (fun (k, v) -> k ^ "=" ^ v) params));
 	if cmd_name = "help"
-	then do_help is_compat cmd minimal s
-	else do_rpcs req s u p minimal is_compat cmd session args
+	then do_help cmd minimal s
+	else do_rpcs req s u p minimal cmd session args
 
 
 let get_line str i =
@@ -190,36 +188,25 @@
     marshal sock (Command (Print msg))) errs;
   marshal sock (Command (Exit 1))
 
-(* If compatability mode is requested, then 'compat' is the first line sent
- * by the thin cli. If we find this, set is_compat true and strip the line
- * from the arguments *)
 let do_handle (req:Http.request) str (s:Unix.file_descr) =
-  let rec get_args n cur =
-    let (next,arg) = get_line str n in
-    let arg = zap_cr arg in
-    match next with 
-	Some i -> get_args i (arg::cur)
-      | None -> (arg::cur)
-  in
-  let args = List.rev (get_args 0 []) in
-  let (session,args) = 
-    try 
-      let line = List.hd args in
-      if String.startswith "session_id=" line
-      then (Some (Ref.of_string (String.sub line 11 (String.length line - 11))), List.tl args)
-      else (None,args)
-    with _ -> (None,args) in
-  let (is_compat,args) = 
-    try 
-      let is_compat = List.hd args = "compat" in
-      (is_compat, if is_compat then List.tl args else args) 
-    with _ -> (false,args) in
-  let cmd = 
-    if is_compat 
-    then parse_commandline ("xe"::args) 
-    else parse_commandline_2 ("xe"::args) in
-  ignore(exec_command req is_compat cmd s session args)
-    
+	let rec get_args n cur =
+		let (next,arg) = get_line str n in
+		let arg = zap_cr arg in
+		match next with
+				Some i -> get_args i (arg::cur)
+			| None -> (arg::cur)
+	in
+	let args = List.rev (get_args 0 []) in
+	let (session,args) =
+		try
+			let line = List.hd args in
+			if String.startswith "session_id=" line
+			then (Some (Ref.of_string (String.sub line 11 (String.length line - 11))), List.tl args)
+			else (None,args)
+		with _ -> (None,args) in
+	let cmd = parse_commandline_2 ("xe"::args) in
+	ignore(exec_command req cmd s session args)
+
 let exception_handler s e =
   debug "Xapi_cli.exception_handler: Got exception %s" (ExnHelper.string_of_exn e);
   log_backtrace ();
diff --git a/ocaml/xe-cli/newcli.ml b/ocaml/xe-cli/newcli.ml
--- a/ocaml/xe-cli/newcli.ml
+++ b/ocaml/xe-cli/newcli.ml
@@ -22,7 +22,6 @@
 let xapiserver = ref "127.0.0.1"
 let xapiuname = ref "root"
 let xapipword = ref "null"
-let xapicompatmode = ref false
 let xapipasswordfile = ref ""
 let xapicompathost = ref "127.0.0.1"
 let xapiport = ref None
@@ -50,18 +49,8 @@
 exception Usage
 
 let usage () =
-  if !xapicompatmode
-  then
-    begin
-      error "COMPATABILITY MODE\n";
-      error "Usage: %s <cmd> [-h server] [-p port] ([-u username] [-pw password] or [-pwf <password file>]) <other arguments>\n" Sys.argv.(0);
-      error "\nA full list of commands can be obtained by running \n\t%s help -h <server> -p <port>\n" Sys.argv.(0)
-    end
-  else
-    begin
-      error "Usage: %s <cmd> [-s server] [-p port] ([-u username] [-pw password] or [-pwf <password file>]) <other arguments>\n" Sys.argv.(0);
-      error "\nA full list of commands can be obtained by running \n\t%s help -s <server> -p <port>\n" Sys.argv.(0)
-    end
+    error "Usage: %s <cmd> [-s server] [-p port] ([-u username] [-pw password] or [-pwf <password file>]) <other arguments>\n" Sys.argv.(0);
+    error "\nA full list of commands can be obtained by running \n\t%s help -s <server> -p <port>\n" Sys.argv.(0)
 
 let is_localhost ip = ip = "127.0.0.1"
 
@@ -153,9 +142,6 @@
        | "password" -> xapipword := v
        | "passwordfile" -> xapipasswordfile := v
        | "nossl"   -> xeusessl := not(bool_of_string v)
-       | "compat" ->
-           xapicompatmode := (try (bool_of_string v) with _ -> false);
-           reserve_args := (k ^ "=" ^ v) :: !reserve_args
        | "debug" -> xedebug := (try bool_of_string v with _ -> false)
        | "debugonfail" -> xedebugonfail := (try bool_of_string v with _ -> false)
        | _ -> raise Not_found);
@@ -170,7 +156,6 @@
     | "-pw" :: pw :: xs -> Some("password", pw, xs)
     | "-pwf" :: pwf :: xs -> Some("passwordfile", pwf, xs)
     | "--nossl" :: xs -> Some("nossl", "true", xs)
-    | "--compat" :: xs -> Some("compat", "true", xs)
     | "--debug" :: xs -> Some("debug", "true", xs)
     | "--debug-on-fail" :: xs -> Some("debugonfail", "true", xs)
     | "-h" :: h :: xs -> Some("server", h, xs)
@@ -475,7 +460,6 @@
         let ic, oc = open_channels () in
         Printf.fprintf oc "POST /cli HTTP/1.0\r\n";
         let args = args @ [("username="^ !xapiuname);("password="^ !xapipword)] in
-        let args = if !xapicompatmode then "compat"::args else args in
         let args = String.concat "\n" args in
         Printf.fprintf oc "User-agent: xe-cli/Unix/%d.%d\r\n" major minor;
         Printf.fprintf oc "content-length: %d\r\n\r\n" (String.length args);
_______________________________________________
xen-api mailing list
[email protected]
http://lists.xensource.com/mailman/listinfo/xen-api

Reply via email to