# HG changeset patch
# User Rob Hoes <[email protected]>
# Date 1278673890 -3600
# Node ID 9e70e8fd232cc15d766362078a53571328e8f28b
# Parent  6294016ba6c3817a2423206f4ba76bd607e7d386
VSwitch controller field may be blank on pool join

If the pool.vswitch_controller field is blank on a joining host, but not on the 
pool, the join is allowed. The openvswitch in the joining host will be 
controlled by the pool's controller.

Signed-off-by: Rob Hoes <[email protected]>

diff -r 6294016ba6c3 -r 9e70e8fd232c ocaml/idl/datamodel.ml
--- a/ocaml/idl/datamodel.ml
+++ b/ocaml/idl/datamodel.ml
@@ -5210,6 +5210,9 @@
 let pool_set_vswitch_controller = call
   ~in_oss_since:None
   ~in_product_since:rel_midnight_ride
+  ~lifecycle:[
+    Published, rel_midnight_ride, "Set the IP address of the vswitch 
controller.";
+    Extended, rel_cowley, "Allow to be set to the empty string (no controller 
is used)."]
   ~name:"set_vswitch_controller"
   ~params:[String, "address", "IP address of the vswitch controller."]
   ~doc:"Set the IP address of the vswitch controller."
diff -r 6294016ba6c3 -r 9e70e8fd232c ocaml/xapi/xapi_pool.ml
--- a/ocaml/xapi/xapi_pool.ml
+++ b/ocaml/xapi/xapi_pool.ml
@@ -226,7 +226,7 @@
                        let my_controller = Db.Pool.get_vswitch_controller 
~__context ~self:my_pool in
                        let pool = List.hd (Client.Pool.get_all rpc session_id) 
in
                        let controller = Client.Pool.get_vswitch_controller 
~rpc ~session_id ~self:pool in
-                       if my_controller <> controller then
+                       if my_controller <> controller && my_controller <> "" 
then
                                raise 
(Api_errors.Server_error(Api_errors.operation_not_allowed, ["vswitch controller 
address differs"]))
                | _ -> ()
        in
@@ -655,7 +655,7 @@
                (* delete me from the database - this will in turn cause PBDs 
and PIFs to be GCed *)
                Db.Host.destroy ~__context ~self:host;
 
-               debug "Reset CPU features";
+               debug "Pool.eject: resetting CPU features";
                (* Clear the CPU feature masks from the Xen command line *)
                ignore (Xen_cmdline.delete_cpuid_masks
                        ["cpuid_mask_ecx"; "cpuid_mask_edx"; 
"cpuid_mask_ext_ecx"; "cpuid_mask_ext_edx"]);
@@ -1396,7 +1396,8 @@
                let pool = Helpers.get_pool ~__context in
                let current_address = Db.Pool.get_vswitch_controller ~__context 
~self:pool in
                if current_address <> address then begin
-                       assert_is_valid_ip address;
+                       if address <> "" then
+                               assert_is_valid_ip address;
                        Db.Pool.set_vswitch_controller ~__context ~self:pool 
~value:address;
                        List.iter (fun host -> 
Helpers.update_vswitch_controller ~__context ~host) (Db.Host.get_all ~__context)
                end
 ocaml/idl/datamodel.ml  |  3 +++
 ocaml/xapi/xapi_pool.ml |  7 ++++---
 2 files changed, 7 insertions(+), 3 deletions(-)


# HG changeset patch
# User Rob Hoes <[email protected]>
# Date 1278673890 -3600
# Node ID 9e70e8fd232cc15d766362078a53571328e8f28b
# Parent  6294016ba6c3817a2423206f4ba76bd607e7d386
VSwitch controller field may be blank on pool join

If the pool.vswitch_controller field is blank on a joining host, but not on the pool, the join is allowed. The openvswitch in the joining host will be controlled by the pool's controller.

Signed-off-by: Rob Hoes <[email protected]>

diff -r 6294016ba6c3 -r 9e70e8fd232c ocaml/idl/datamodel.ml
--- a/ocaml/idl/datamodel.ml
+++ b/ocaml/idl/datamodel.ml
@@ -5210,6 +5210,9 @@
 let pool_set_vswitch_controller = call
   ~in_oss_since:None
   ~in_product_since:rel_midnight_ride
+  ~lifecycle:[
+    Published, rel_midnight_ride, "Set the IP address of the vswitch controller.";
+    Extended, rel_cowley, "Allow to be set to the empty string (no controller is used)."]
   ~name:"set_vswitch_controller"
   ~params:[String, "address", "IP address of the vswitch controller."]
   ~doc:"Set the IP address of the vswitch controller."
diff -r 6294016ba6c3 -r 9e70e8fd232c ocaml/xapi/xapi_pool.ml
--- a/ocaml/xapi/xapi_pool.ml
+++ b/ocaml/xapi/xapi_pool.ml
@@ -226,7 +226,7 @@
 			let my_controller = Db.Pool.get_vswitch_controller ~__context ~self:my_pool in
 			let pool = List.hd (Client.Pool.get_all rpc session_id) in
 			let controller = Client.Pool.get_vswitch_controller ~rpc ~session_id ~self:pool in
-			if my_controller <> controller then
+			if my_controller <> controller && my_controller <> "" then
 				raise (Api_errors.Server_error(Api_errors.operation_not_allowed, ["vswitch controller address differs"]))
 		| _ -> ()
 	in
@@ -655,7 +655,7 @@
 		(* delete me from the database - this will in turn cause PBDs and PIFs to be GCed *)
 		Db.Host.destroy ~__context ~self:host;
 
-		debug "Reset CPU features";
+		debug "Pool.eject: resetting CPU features";
 		(* Clear the CPU feature masks from the Xen command line *)
 		ignore (Xen_cmdline.delete_cpuid_masks
 			["cpuid_mask_ecx"; "cpuid_mask_edx"; "cpuid_mask_ext_ecx"; "cpuid_mask_ext_edx"]);
@@ -1396,7 +1396,8 @@
 		let pool = Helpers.get_pool ~__context in
 		let current_address = Db.Pool.get_vswitch_controller ~__context ~self:pool in
 		if current_address <> address then begin
-			assert_is_valid_ip address;
+			if address <> "" then
+				assert_is_valid_ip address;
 			Db.Pool.set_vswitch_controller ~__context ~self:pool ~value:address;
 			List.iter (fun host -> Helpers.update_vswitch_controller ~__context ~host) (Db.Host.get_all ~__context)
 		end
_______________________________________________
xen-api mailing list
[email protected]
http://lists.xensource.com/mailman/listinfo/xen-api

Reply via email to