Skip to content

Commit ae7dc42

Browse files
committed
Fix review comment
- function is_sorted_by_script to val device_renamed_already - reduce nested structure in update config - handle port name update - bring back read inventory to get bridge name Signed-off-by: Changlei Li <[email protected]>
1 parent e53e443 commit ae7dc42

File tree

3 files changed

+40
-48
lines changed

3 files changed

+40
-48
lines changed

ocaml/networkd/bin/network_server.ml

Lines changed: 16 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ let write_config () =
3636
with Network_config.Write_error -> ()
3737

3838
let sort_and_update () =
39-
if Network_utils.is_sorted_by_script () then
39+
if Network_utils.device_already_renamed then
4040
()
4141
else
4242
let last_config = !config in
@@ -45,48 +45,29 @@ let sort_and_update () =
4545
in
4646
match Network_device_order.sort last_interface_order with
4747
| Ok (new_order, changed_interfaces) ->
48+
let update_name name =
49+
List.assoc_opt name changed_interfaces |> Option.value ~default:name
50+
in
51+
let update_port (port, port_conf) =
52+
( update_name port
53+
, {
54+
port_conf with
55+
interfaces= List.map update_name port_conf.interfaces
56+
}
57+
)
58+
in
4859
let bridge_config =
4960
List.map
5061
(fun (bridge, bridge_conf) ->
5162
( bridge
52-
, {
53-
bridge_conf with
54-
ports=
55-
List.map
56-
(fun (port, port_conf) ->
57-
( port
58-
, {
59-
port_conf with
60-
interfaces=
61-
List.map
62-
(fun iface ->
63-
match
64-
List.assoc_opt iface changed_interfaces
65-
with
66-
| Some new_name ->
67-
new_name
68-
| None ->
69-
iface
70-
)
71-
port_conf.interfaces
72-
}
73-
)
74-
)
75-
bridge_conf.ports
76-
}
63+
, {bridge_conf with ports= List.map update_port bridge_conf.ports}
7764
)
7865
)
7966
last_config.bridge_config
8067
in
8168
let interface_config =
8269
List.map
83-
(fun (name, conf) ->
84-
match List.assoc_opt name changed_interfaces with
85-
| Some new_name ->
86-
(new_name, conf)
87-
| None ->
88-
(name, conf)
89-
)
70+
(fun (name, conf) -> (update_name name, conf))
9071
last_config.interface_config
9172
in
9273
config :=
@@ -101,7 +82,7 @@ let sort_and_update () =
10182
(Network_device_order.string_of_error err)
10283

10384
let sort_on_first_boot () =
104-
if Network_utils.is_sorted_by_script () then
85+
if Network_utils.device_already_renamed then
10586
None
10687
else
10788
match Network_device_order.sort [] with
@@ -371,7 +352,7 @@ module Interface = struct
371352
let get_interface_positions dbg () =
372353
Debug.with_thread_associated dbg
373354
(fun () ->
374-
if Network_utils.is_sorted_by_script () then
355+
if Network_utils.device_already_renamed then
375356
sort_based_on_ethx ()
376357
else
377358
Option.value ~default:[] !config.interface_order

ocaml/networkd/lib/network_config.ml

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -132,19 +132,28 @@ let read_management_conf interface_order =
132132
order
133133
in
134134
let bridge_name =
135-
let bridge =
136-
if vlan = None then
137-
bridge_naming_convention device pos_opt
138-
else
139-
(* At this point, we don't know what the VLAN bridge name will be,
140-
* so use a temporary name. Xapi will replace the bridge once the name
141-
* has been decided on. *)
142-
temp_vlan
135+
let inventory_bridge =
136+
try Some (Inventory.lookup Inventory._management_interface)
137+
with Inventory.Missing_inventory_key _ -> None
143138
in
144-
debug "Management bridge name %s" bridge ;
145-
if not @@ Network_utils.is_sorted_by_script () then
146-
write_manage_iface_to_inventory bridge ;
147-
bridge
139+
match inventory_bridge with
140+
| Some "" | None ->
141+
let bridge =
142+
if vlan = None then
143+
bridge_naming_convention device pos_opt
144+
else
145+
(* At this point, we don't know what the VLAN bridge name will be,
146+
* so use a temporary name. Xapi will replace the bridge once the name
147+
* has been decided on. *)
148+
temp_vlan
149+
in
150+
debug "No management bridge in inventory file... using %s" bridge ;
151+
if not Network_utils.device_already_renamed then
152+
write_manage_iface_to_inventory bridge ;
153+
bridge
154+
| Some bridge ->
155+
debug "Management bridge in inventory file: %s" bridge ;
156+
bridge
148157
in
149158
let mac = Network_utils.Ip.get_mac device in
150159
let dns = parse_dns_config args in

ocaml/networkd/lib/network_utils.ml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,9 @@ let fork_script ?on_error ?log script args =
147147
in
148148
check_n_run ?on_error ?log fork_script_internal script args
149149

150-
let is_sorted_by_script () =
150+
(* If the interface-rename script dir exists, the devices are already renamed
151+
to eth<N>, the <N> indicates device order *)
152+
let device_already_renamed =
151153
let dir = "/etc/sysconfig/network-scripts/interface-rename-data" in
152154
Sys.file_exists dir && Sys.is_directory dir
153155

0 commit comments

Comments
 (0)