Skip to content

Commit 0d4a096

Browse files
committed
CP-308116: Write management_address_type to inventory
When networkd sort the interfaces, host-installer will not write management interface and managemnt address type. Then networkd need to write management interface to inventory according to firstboot management conf. Signed-off-by: Changlei Li <[email protected]>
1 parent babf619 commit 0d4a096

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

ocaml/networkd/lib/network_config.ml

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,12 @@ let parse_dns_config args =
9797
let domains = get_list_from ~sep:" " ~key:"DOMAIN" args in
9898
(nameservers, domains)
9999

100-
let write_manage_iface_to_inventory bridge_name =
100+
let write_manage_iface_to_inventory bridge_name management_address_type =
101101
info "Writing management interface to inventory: %s" bridge_name ;
102-
Inventory.update Inventory._management_interface bridge_name
102+
Inventory.update Inventory._management_interface bridge_name ;
103+
info "Writing management address type to inventory: %s"
104+
management_address_type ;
105+
Inventory.update Inventory._management_address_type management_address_type
103106

104107
let read_management_conf interface_order =
105108
try
@@ -142,6 +145,22 @@ let read_management_conf interface_order =
142145
(fun x -> if x.name = device then Some x.position else None)
143146
order
144147
in
148+
let (ipv4_conf, ipv4_gateway), (ipv6_conf, ipv6_gateway) =
149+
match (List.assoc_opt "MODE" args, List.assoc_opt "MODEV6" args) with
150+
| None, None ->
151+
error "%s: at least one of 'MODE', 'MODEV6' needs to be specified"
152+
__FUNCTION__ ;
153+
raise Read_error
154+
| v4, v6 ->
155+
(parse_ipv4_config args v4, parse_ipv6_config args v6)
156+
in
157+
let management_address_type =
158+
(* Default to IPv4 unless we have only got an IPv6 admin interface *)
159+
if ipv4_conf = None4 && ipv6_conf <> None6 then
160+
"IPv6"
161+
else
162+
"IPv4"
163+
in
145164
let bridge_name =
146165
let inventory_bridge =
147166
try Some (Inventory.lookup Inventory._management_interface)
@@ -160,23 +179,14 @@ let read_management_conf interface_order =
160179
in
161180
debug "No management bridge in inventory file... using %s" bridge ;
162181
if not device_already_renamed then
163-
write_manage_iface_to_inventory bridge ;
182+
write_manage_iface_to_inventory bridge management_address_type ;
164183
bridge
165184
| Some bridge ->
166185
debug "Management bridge in inventory file: %s" bridge ;
167186
bridge
168187
in
169188
let mac = Network_utils.Ip.get_mac device in
170189
let dns = parse_dns_config args in
171-
let (ipv4_conf, ipv4_gateway), (ipv6_conf, ipv6_gateway) =
172-
match (List.assoc_opt "MODE" args, List.assoc_opt "MODEV6" args) with
173-
| None, None ->
174-
error "%s: at least one of 'MODE', 'MODEV6' needs to be specified"
175-
__FUNCTION__ ;
176-
raise Read_error
177-
| v4, v6 ->
178-
(parse_ipv4_config args v4, parse_ipv6_config args v6)
179-
in
180190

181191
let phy_interface = {default_interface with persistent_i= true} in
182192
let bridge_interface =

0 commit comments

Comments
 (0)