1 file changed, 14 insertions(+)
ocaml/xapi/xapi_pool.ml |   14 ++++++++++++++


# HG changeset patch
# User Marcus Granado <[email protected]>
# Date 1259863960 0
# Node ID f9617197a99bc47e7bf4f12df6a6fe15dc990aa5
# Parent  8335acd2219af19c6345d349690679dac2f5953a
CA-30393: block extauth-enable if there are duplicate hostnames in the pool

Signed-off-by: Marcus Granado <[email protected]>

diff -r 8335acd2219a -r f9617197a99b ocaml/xapi/xapi_pool.ml
--- a/ocaml/xapi/xapi_pool.ml   Thu Dec 03 15:33:34 2009 +0000
+++ b/ocaml/xapi/xapi_pool.ml   Thu Dec 03 18:12:40 2009 +0000
@@ -1066,6 +1066,20 @@
                end
        with Not_found -> () (* that's expected, no host had external_auth 
enabled*)
        ;
+       (* 1b. assert that there are no duplicate hostnames in the pool *)
+       if (List.length hosts)
+               <>
+               (List.length
+                        (Listext.List.setify 
+                                       (List.map (fun h->Db.Host.get_hostname 
~__context ~self:h) hosts))
+               )
+       then begin
+               let errmsg = "At least two hosts in the pool have the same 
hostname" in
+               debug "%s" errmsg;
+               raise 
(Api_errors.Server_error(Api_errors.pool_auth_enable_failed,
+                       [(Ref.string_of (List.hd hosts));errmsg]))
+       end
+       else
        (* 2. tries to enable the external authentication in each host of the 
pool *)
        let host_error_msg = ref ("","","") in
        let rollback_list = 
# HG changeset patch
# User Marcus Granado <[email protected]>
# Date 1259863960 0
# Node ID f9617197a99bc47e7bf4f12df6a6fe15dc990aa5
# Parent  8335acd2219af19c6345d349690679dac2f5953a
CA-30393: block extauth-enable if there are duplicate hostnames in the pool

Signed-off-by: Marcus Granado <[email protected]>

diff -r 8335acd2219a -r f9617197a99b ocaml/xapi/xapi_pool.ml
--- a/ocaml/xapi/xapi_pool.ml	Thu Dec 03 15:33:34 2009 +0000
+++ b/ocaml/xapi/xapi_pool.ml	Thu Dec 03 18:12:40 2009 +0000
@@ -1066,6 +1066,20 @@
 		end
 	with Not_found -> () (* that's expected, no host had external_auth enabled*)
 	;
+	(* 1b. assert that there are no duplicate hostnames in the pool *)
+	if (List.length hosts)
+		<>
+		(List.length
+			 (Listext.List.setify 
+					(List.map (fun h->Db.Host.get_hostname ~__context ~self:h) hosts))
+		)
+	then begin
+		let errmsg = "At least two hosts in the pool have the same hostname" in
+		debug "%s" errmsg;
+		raise (Api_errors.Server_error(Api_errors.pool_auth_enable_failed,
+			[(Ref.string_of (List.hd hosts));errmsg]))
+	end
+	else
 	(* 2. tries to enable the external authentication in each host of the pool *)
 	let host_error_msg = ref ("","","") in
 	let rollback_list = 
_______________________________________________
xen-api mailing list
[email protected]
http://lists.xensource.com/mailman/listinfo/xen-api

Reply via email to