# HG changeset patch
# User Rob Hoes <rob.hoes@xxxxxxxxxx>
# 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 <rob.hoes@xxxxxxxxxx>
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(-)
xen-api.hg-5.patch
Description: Text Data
_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
|