# HG changeset patch # User Rob Hoes # Date 1278597044 -3600 # Node ID c7e5d6589c970128f50b00a983382d6b728942c2 # Parent ac96f047a434dd212f15587dff046cd547d3e366 Improve import of networks/VIFs on pool join Metadata export+import is used to recreate VIFs on the pool, when a host joins. VIFs are linked to networks on the receiving pool by matching the name_label of the network on the two pools. If the name_label does not exist, this has to be because an existing physical network on the receiving pool is used; in this case, we match on bridge name. This is a sensible fall-back option for imports in general. Signed-off-by: Rob Hoes diff -r ac96f047a434 -r c7e5d6589c97 ocaml/xapi/import.ml --- a/ocaml/xapi/import.ml Thu Jul 08 14:47:51 2010 +0100 +++ b/ocaml/xapi/import.ml Thu Jul 08 14:50:44 2010 +0100 @@ -383,17 +383,25 @@ let net = match possibilities, config.vm_metadata_only with | [], true -> - (* In vm_metadata_only_mode the network must exist *) - let msg = - Printf.sprintf "Unable to find Network with name_label = '%s'" - net_record.API.network_name_label - in - error "%s" msg; - raise (Failure msg) + begin try + (* Lookup by bridge name as fallback *) + let nets = Client.Network.get_all_records rpc session_id in + let net, _ = + List.find (fun (_, netr) -> netr.API.network_bridge = net_record.API.network_bridge) nets in + net + with _ -> + (* In vm_metadata_only_mode the network must exist *) + let msg = + Printf.sprintf "Unable to find Network with name_label = '%s' nor bridge = '%s'" + net_record.API.network_name_label net_record.API.network_bridge + in + error "%s" msg; + raise (Failure msg) + end | [], false -> (* In normal mode we attempt to create any networks which are missing *) let net = - log_reraise ("failed to create Network with name-label " ^ net_record.API.network_name_label) + log_reraise ("failed to create Network with name_label " ^ net_record.API.network_name_label) (fun value -> Client.Network.create_from_record rpc session_id value) net_record in (* Only add task flag to networks which get created in this import *)