|
|
|
|
|
|
|
|
|
|
xen-api
[Xen-API] [PATCH 1 of 2] CP-1591: Propagate Network.MTU field to xenstor
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1267008538 0
# Node ID 219104a041786d7274b15800de5c3efccf0c4f42
# Parent 005747c941859b3a18bf085b5674b40ecf5cbbc6
CP-1591: Propagate Network.MTU field to xenstore for use in VIF hotplug script.
Allow VIF.other-config:mtu to override the network-wide setting.
Update quicktest to understand that Network.MTU is the default MTU for
a VIF with VIF.other-config:mtu as an override.
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
diff -r 005747c94185 -r 219104a04178 ocaml/xapi/quicktest.ml
--- a/ocaml/xapi/quicktest.ml Wed Feb 24 10:48:58 2010 +0000
+++ b/ocaml/xapi/quicktest.ml Wed Feb 24 10:48:58 2010 +0000
@@ -339,6 +339,7 @@
let bridge = Client.Network.get_bridge !rpc session_id network in
let device = Printf.sprintf "vif%Ld.%s" (Client.VM.get_domid !rpc
session_id vm) (Client.VIF.get_device !rpc session_id vif) in
let devices = Netdev.network.Netdev.intf_list bridge in
+ let other_config = Client.VIF.get_other_config !rpc session_id vif in
if not(List.mem device devices)
then failed test (Printf.sprintf "Failed to find device %s on bridge %s
(found [ %s ])" device bridge (String.concat ", " devices))
else debug test (Printf.sprintf "Device %s is on bridge %s" device
bridge);
@@ -347,7 +348,6 @@
let sysfs_promisc = Printf.sprintf "/sys/class/net/%s/brport/promisc"
device in
if Sys.file_exists sysfs_promisc
then begin
- let other_config = Client.VIF.get_other_config !rpc session_id vif in
let promisc = List.mem_assoc "promiscuous" other_config && (let x =
List.assoc "promiscuous" other_config in x = "true" || x = "on") in
let promisc' = read_sys sysfs_promisc = "1" in
if promisc <> promisc'
@@ -357,12 +357,13 @@
debug test (Printf.sprintf "%s not found. assuming unsupported"
sysfs_promisc);
(* Check the MTU *)
- let mtu = Client.VIF.get_MTU !rpc session_id vif in
- let mtu' = if mtu = 0L then 1500L else mtu in
+ let mtu = Client.Network.get_MTU !rpc session_id network in
+ let mtu' = if List.mem_assoc "mtu" other_config
+ then Int64.of_string(List.assoc "mtu" other_config) else mtu in
let mtu'' = Int64.of_string (read_sys (Printf.sprintf
"/sys/class/net/%s/mtu" device)) in
if mtu' <> mtu''
- then failed test (Printf.sprintf "VIF.MTU is %Ld but /sys says %Ld" mtu
mtu'')
- else debug test (Printf.sprintf "VIF.MTU is %Ld and /sys says %Ld" mtu
mtu'');
+ then failed test (Printf.sprintf "VIF.MTU is %Ld but /sys says %Ld"
mtu' mtu'')
+ else debug test (Printf.sprintf "VIF.MTU is %Ld and /sys says %Ld" mtu'
mtu'');
) vifs
let rec wait_for_task_complete session_id task =
@@ -600,7 +601,7 @@
| _ -> failwith "Expecting 1 new disk!"
let make_vif ~session_id ~vM ~network ~device =
- Client.VIF.create ~rpc:!rpc ~session_id ~vM ~network ~mTU:1400L ~mAC:""
~device ~other_config:["promiscuous", "on"] ~qos_algorithm_type:""
~qos_algorithm_params:[]
+ Client.VIF.create ~rpc:!rpc ~session_id ~vM ~network ~mTU:0L ~mAC:"" ~device
~other_config:["promiscuous", "on"; "mtu", "1400"] ~qos_algorithm_type:""
~qos_algorithm_params:[]
let with_debian s f =
try
diff -r 005747c94185 -r 219104a04178 ocaml/xapi/vm_config.ml
--- a/ocaml/xapi/vm_config.ml Wed Feb 24 10:48:58 2010 +0000
+++ b/ocaml/xapi/vm_config.ml Wed Feb 24 10:48:58 2010 +0000
@@ -43,8 +43,9 @@
warn "vif QoS failed: %s (vm=%s,vif=%s)" reason vm_r.API.vM_uuid
vif_r.API.vIF_uuid in
let mac = vif_r.API.vIF_MAC in
- let mtu = Int64.to_int vif_r.API.vIF_MTU in
-
+ let vif_mtu = if (List.mem_assoc "mtu" vif_r.API.vIF_other_config) then
+ Some (int_of_string (List.assoc "mtu" vif_r.API.vIF_other_config)) else
None in
+
let qos_type = vif_r.API.vIF_qos_algorithm_type in
let qos_params = vif_r.API.vIF_qos_algorithm_params in
let rate = match qos_type with
@@ -71,6 +72,9 @@
try
let network_ref = vif_r.API.vIF_network in
let bridge = Db.Network.get_bridge ~__context ~self:network_ref in
+ let mtu = match vif_mtu with
+ | Some mtu -> mtu
+ | None -> Int64.to_int (Db.Network.get_MTU ~__context ~self:network_ref)
in
Some {
domid = domid;
vif_ref = vif;
diff -r 005747c94185 -r 219104a04178 ocaml/xapi/xapi_network.ml
--- a/ocaml/xapi/xapi_network.ml Wed Feb 24 10:48:58 2010 +0000
+++ b/ocaml/xapi/xapi_network.ml Wed Feb 24 10:48:58 2010 +0000
@@ -25,6 +25,7 @@
*)
let create_internal_bridge ~bridge =
+ debug "Creating internal bridge %s" bridge;
let current = Netdev.network.Netdev.list () in
if not(List.mem bridge current) then Netdev.network.Netdev.add bridge;
if not(Netdev.Link.is_up bridge) then Netdev.Link.up bridge
_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
|
|
|
|
|