mirror of
https://github.com/xcat2/confluent.git
synced 2024-11-22 09:32:21 +00:00
9f7e53701e
In esxi, some builds may have USB nic brought up in a vswitch. Detect and avoid that scenario.
66 lines
2.1 KiB
Python
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)
|