From 80c8a429ed9a8e3ad624b3f52fc8b4873803a417 Mon Sep 17 00:00:00 2001 From: Mark Gilbert <50398495+MarkProminic@users.noreply.github.com> Date: Mon, 27 Nov 2023 01:28:01 -0600 Subject: [PATCH] fix: on-deman vnics --- lib/vagrant-zones/driver.rb | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/vagrant-zones/driver.rb b/lib/vagrant-zones/driver.rb index e6be3cd..a3f5392 100644 --- a/lib/vagrant-zones/driver.rb +++ b/lib/vagrant-zones/driver.rb @@ -322,7 +322,7 @@ def network(uii, state) when 'public_network' zonenicdel(uii, opts) if state == 'delete' zonecfgnicconfig(uii, opts) if state == 'config' - zoneniccreate(uii, opts) if state == 'create' + zoneniccreate(uii, opts) if state == 'create' && not config.on_demand_vnics zonenicstpzloginsetup(uii, opts, config) if state == 'setup' && config.setup_method == 'zlogin' when 'private_network' zonenicdel(uii, opts) if state == 'delete' @@ -332,7 +332,7 @@ def network(uii, state) etherstubdelete(uii, opts) if state == 'delete' natnicconfig(uii, opts) if state == 'config' etherstub = etherstubcreate(uii, opts) if state == 'create' - zonenatniccreate(uii, opts, etherstub) if state == 'create' + zonenatniccreate(uii, opts, etherstub) if state == 'create' && not config.on_demand_vnics etherstubcreatehvnic(uii, opts, etherstub) if state == 'create' zonenatforward(uii, opts) if state == 'create' zonenatentries(uii, opts) if state == 'create' @@ -1056,15 +1056,29 @@ def zonecfgnicconfig(uii, opts) strt = "#{@pfexec} zonecfg -z #{@machine.name} " cie = config.cloud_init_enabled aa = config.allowed_address + if opts[:vlan].nil? + else + + end case config.brand when 'lx' shrtstr1 = %(set allowed-address=#{allowed_address}; add property (name=gateway,value="#{defrouter}"); ) shrtstr2 = %(add property (name=ips,value="#{allowed_address}"); add property (name=primary,value="true"); end;) execute(false, %(#{strt}set global-nic=auto; #{shrtstr1} #{shrtstr2}")) when 'bhyve' - execute(false, %(#{strt}"add net; set physical=#{vnic_name}; end;")) unless cie - execute(false, %(#{strt}"add net; set physical=#{vnic_name}; set allowed-address=#{allowed_address}; end;")) if cie && aa - execute(false, %(#{strt}"add net; set physical=#{vnic_name}; end;")) if cie && !aa + if config.on_demand_vnics && opts[:vlan].nil? + execute(false, %(#{strt}"add net; set physical=#{vnic_name}; set global-nic=#{opts[:bridge]}; end;")) unless cie + execute(false, %(#{strt}"add net; set physical=#{vnic_name}; set global-nic=#{opts[:bridge]}; set allowed-address=#{allowed_address}; end;")) if cie && aa + execute(false, %(#{strt}"add net; set physical=#{vnic_name}; set global-nic=#{opts[:bridge]}; end;")) if cie && !aa + elsif config.on_demand_vnics && not opts[:vlan].nil? + execute(false, %(#{strt}"add net; set physical=#{vnic_name}; set vlan-id=#{opts[:vlan]}; set global-nic=#{opts[:bridge]}; end;")) unless cie + execute(false, %(#{strt}"add net; set physical=#{vnic_name}; set vlan-id=#{opts[:vlan]}; set global-nic=#{opts[:bridge]}; set allowed-address=#{allowed_address}; end;")) if cie && aa + execute(false, %(#{strt}"add net; set physical=#{vnic_name}; set vlan-id=#{opts[:vlan]}; set global-nic=#{opts[:bridge]}; end;")) if cie && !aa + elsif not config.on_demand_vnics + execute(false, %(#{strt}"add net; set physical=#{vnic_name}; end;")) unless cie + execute(false, %(#{strt}"add net; set physical=#{vnic_name}; set allowed-address=#{allowed_address}; end;")) if cie && aa + execute(false, %(#{strt}"add net; set physical=#{vnic_name}; end;")) if cie && !aa + end end end