WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-api

[Xen-API] [PATCH 1 of 2] vswitch: pass network uuid to vswitch when crea

To: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-API] [PATCH 1 of 2] vswitch: pass network uuid to vswitch when creating an internal network
From: David Scott <dave.scott@xxxxxxxxxxxxx>
Date: Thu, 8 Jul 2010 14:35:44 +0100
Delivery-date: Thu, 08 Jul 2010 06:53:58 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1278596143@ely>
List-help: <mailto:xen-api-request@lists.xensource.com?subject=help>
List-id: Discussion of API issues surrounding Xen <xen-api.lists.xensource.com>
List-post: <mailto:xen-api@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1278596143@ely>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.4.3
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1278596113 -3600
# Node ID 75e2b541f6709d5bb8472782cbefad324c7ec459
# Parent  d28575be8a5deec1b73ea7120a98e37be6373fa9
vswitch: pass network uuid to vswitch when creating an internal network

For external networks this is taken care of by interface-reconfigure
but in the internal network case there is currently no callout so
simply pass the network uuid when creating calling out to create the
bridge.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

diff -r d28575be8a5d -r 75e2b541f670 ocaml/netdev/netdev.ml
--- a/ocaml/netdev/netdev.ml    Thu Jul 08 14:33:34 2010 +0100
+++ b/ocaml/netdev/netdev.ml    Thu Jul 08 14:35:13 2010 +0100
@@ -18,7 +18,7 @@
 
 type network_ops = { 
   kind: kind;
-  add: string -> unit;
+  add: string -> ?uuid:string -> unit;
   del: string -> unit;
   list: unit -> string list;
 
@@ -99,7 +99,7 @@
 external _add : Unix.file_descr -> string -> unit = "stub_bridge_add"
 external _del : Unix.file_descr -> string -> unit = "stub_bridge_del"
 
-let add name =
+let add name ?uuid = 
        Internal.with_fd (fun fd -> _add fd name)
 
 let del name =
@@ -224,7 +224,11 @@
     | "" -> []
     | s -> Stringext.String.split '\n' s
 
-let add name = ignore(vsctl ["add-br" ; name])
+let add name ?uuid = 
+  let extra = match uuid with
+    | Some uuid' -> ["--"; "br-set-external-id"; name; "network-uuids"; uuid']
+    | None -> ["--"; "foo"] in
+  ignore(vsctl (["add-br" ; name] @ extra))
 let del name = ignore(vsctl ["del-br" ; name])
 let list () = vsctl [ "list-br" ]
 
diff -r d28575be8a5d -r 75e2b541f670 ocaml/netdev/netdev.mli
--- a/ocaml/netdev/netdev.mli   Thu Jul 08 14:33:34 2010 +0100
+++ b/ocaml/netdev/netdev.mli   Thu Jul 08 14:35:13 2010 +0100
@@ -21,7 +21,7 @@
 (** Possible operations on each network backend type. *)
 type network_ops = {
   kind : kind;                              (** The type of network backend. *)
-  add : string -> unit;                     (** Add a bridge. *)
+  add : string -> ?uuid:string -> unit;     (** Add a bridge. *)
   del : string -> unit;                     (** Remove a bridge. *)
   list : unit -> string list;               (** List all bridges. *)
   exists : string -> bool;                  (** Query the existance of a 
bridge. *)
diff -r d28575be8a5d -r 75e2b541f670 ocaml/xapi/xapi_network.ml
--- a/ocaml/xapi/xapi_network.ml        Thu Jul 08 14:33:34 2010 +0100
+++ b/ocaml/xapi/xapi_network.ml        Thu Jul 08 14:35:13 2010 +0100
@@ -24,10 +24,10 @@
 let get_allowed_messages ~__context ~self = []
 *)
 
-let create_internal_bridge ~bridge =
-  debug "Creating internal bridge %s" bridge;
+let create_internal_bridge ~bridge ~uuid =
+  debug "Creating internal bridge %s (uuid:%s)" bridge uuid;
   let current = Netdev.network.Netdev.list () in
-  if not(List.mem bridge current) then Netdev.network.Netdev.add bridge;
+  if not(List.mem bridge current) then Netdev.network.Netdev.add bridge 
?uuid:(Some uuid);
   if not(Netdev.Link.is_up bridge) then Netdev.Link.up bridge
 
 let attach_internal ?(management_interface=false) ~__context ~self () =
@@ -36,10 +36,11 @@
     Xapi_network_attach_helpers.assert_can_attach_network_on_host ~__context 
~self ~host ~overide_management_if_check:management_interface in
 
   let bridge = Db.Network.get_bridge ~__context ~self in
+  let uuid = Db.Network.get_uuid ~__context ~self in
 
   (* Ensure internal bridge exists and is up. external bridges will be
      brought up by call to interface-reconfigure. *)
-  if List.length(local_pifs) = 0 then create_internal_bridge ~bridge;
+  if List.length(local_pifs) = 0 then create_internal_bridge ~bridge ~uuid;
 
   (* Check if we're a guest-installer network: *)
   let other_config = Db.Network.get_other_config ~__context ~self in
 ocaml/netdev/netdev.ml     |  10 +++++++---
 ocaml/netdev/netdev.mli    |   2 +-
 ocaml/xapi/xapi_network.ml |   9 +++++----
 3 files changed, 13 insertions(+), 8 deletions(-)


Attachment: vswitch-add-network-uuid-to-internal-networks.patch
Description: Text Data

_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
<Prev in Thread] Current Thread [Next in Thread>