2
0
mirror of https://github.com/xcat2/confluent.git synced 2024-11-22 09:32:21 +00:00
confluent/confluent_osdeploy/esxi7/profiles/hypervisor/scripts/makeksnet
Jarrod Johnson 9f7e53701e Avoid latching onto USB nic in a vswitch as 'the nic'
In esxi, some builds may have USB nic brought up in a vswitch.

Detect and avoid that scenario.
2023-02-27 10:43:40 -05:00

66 lines
2.1 KiB
Python

#!/usr/bin/python
import re
import subprocess
import json
uplinkmatch = re.compile('^\s*Uplinks:\s*(.*)')
nodename = None
for inf in open('/etc/confluent/confluent.info', 'r').read().split('\n'):
if inf.startswith('NODENAME: '):
nodename = inf.replace('NODENAME: ', '')
break
deploycfg = open('/etc/confluent/confluent.deploycfg', 'r').read().split('\n')
cfg = {}
nslist = False
nameservers = []
for line in deploycfg:
kv = line.split(': ')
if not kv[0]:
continue
if len(kv) == 2:
cfg[kv[0]] = kv[1]
if kv[0] == 'nameservers:':
nslist = True
continue
if nslist and kv[0].startswith('- '):
nameservers.append(kv[0].split(' ', 1)[1])
else:
nslist=False
cfg['nameservers'] = ','.join(nameservers)
vswinfo = subprocess.check_output(['localcli', 'network', 'vswitch', 'standard', 'list']).decode('utf8')
vmnic = None
for info in vswinfo.split('\n'):
upinfo = uplinkmatch.match(info)
if upinfo:
vmnic = upinfo.group(1)
if vmnic and 'vusb0' not in vmnic:
break
try:
with open('/tmp/confluentident/cnflnt.jsn') as identin:
identcfg = json.load(identin)
ncfg = identcfg['net_cfgs'][0]
cfg['ipv4_method'] = ncfg['ipv4_method']
cfg['ipv4_address'] = ncfg['ipv4_address'].split('/')[0]
cfg['ipv4_netmask'] = ncfg['ipv4_netmask']
cfg['ipv4_gateway'] = ncfg['ipv4_gateway']
except Exception:
pass
netline = 'network --hostname={0} --bootproto={1}'.format(nodename, cfg['ipv4_method'])
if vmnic:
netline += ' --device={0}'.format(vmnic)
if cfg['ipv4_method'] == 'static':
netline += ' --ip={0} --netmask={1}'.format(cfg['ipv4_address'], cfg['ipv4_netmask'])
if cfg.get('ipv4_gateway', 'null') not in (None, '', 'null'):
netline += ' --gateway={0}'.format(cfg['ipv4_gateway'])
if cfg['nameservers']:
netline += ' --nameserver={0}'.format(cfg['nameservers'])
vlanid = None
try:
with open('/tmp/confluent.vlanid', 'r') as vlanin:
vlanid = vlanin.read()
except Exception:
pass
if vlanid:
netline += ' --vlanid={0}'.format(vlanid)
print(netline)