[!] Fix ipv4 founding

This commit is contained in:
2024-07-18 12:03:06 +03:00
parent 7b7638af29
commit 1254c08db2

View File

@@ -240,8 +240,6 @@ class VMKer:
print("Unknown command.")
logger.info("Exited from configuration mode.")
def _parse_yml(self):
pass
def _search_vm(self, _template_name, _new_name, datacenter):
logger.debug("Checking VMs.")
@@ -256,6 +254,22 @@ class VMKer:
container_view.Destroy()
return vm, new
@staticmethod
def _get_vm_ip(vm):
ipv4 = []
ipv6 = []
for nic in vm.guest.net:
if nic.ipConfig:
for ip in nic.ipConfig.ipAddress:
if ":" not in ip.ipAddress: # Skip IPv6 addresses
ipv4.append(ip.ipAddress)
else:
ipv6.append(ip.ipAddress)
return ipv4, ipv6
def _parse_yml(self):
pass
def _create(self):
if len(sys.argv) > 3:
self._load_config()
@@ -269,12 +283,13 @@ class VMKer:
datacenter = datacenter[0]
logger.debug("datacenter found")
template_name = f"{sys.argv[2]}-template"
new_name = sys.argv[3]
template, _new = self._search_vm(f"{sys.argv[2]}-template", new_name, datacenter)
template, _new = self._search_vm(template_name, new_name, datacenter)
if _new:
return logger.error(f"Error: {new_name!r} already exist.")
if not template:
return logger.error(f"Template not found: {sys.argv[2]}-template")
return logger.error(f"Template not found: {template_name}")
logger.debug("template found")
if self.config['resource_pool']:
@@ -295,7 +310,7 @@ class VMKer:
datastore = datastore[0]
logger.debug("datastore found")
logger.info(f"Cloning: {sys.argv[2]!r} > {new_name}")
logger.info(f"Cloning: {template_name!r} > {new_name!r}")
destfolder = datacenter.vmFolder
relocate_spec = vim.vm.RelocateSpec()
relocate_spec.datastore = datastore
@@ -311,23 +326,23 @@ class VMKer:
logger.success("Cloned")
vm = task.info.result
ipv4 = []
ipv6 = []
for nic in vm.guest.net:
if nic.ipConfig:
for ip in nic.ipConfig.ipAddress:
if ":" not in ip.ipAddress: # Skip IPv6 addresses
ipv4.append(ip.ipAddress)
else:
ipv6.append(ip.ipAddress)
logger.info(f"IPv4: {ipv4}")
logger.info(f"IPv6: {ipv6}")
if len(ipv4) == 0:
return logger.error("No IPv4 address found.")
logger.info("Waiting to PowerOn..")
t = 0
while True:
ipv4, ipv6 = self._get_vm_ip(vm)
if len(ipv4) > 0:
break
time.sleep(0.3)
t += 1
if t > 50:
return logger.error("No IPv4 address found.")
logger.info(f"IPv4: {', '.join(ipv4)}")
logger.info(f"IPv6: {', '.join(ipv6)}")
# TODO: length
_pwd1 = ''.join(random.choice(chars) for _ in range(12))
_pwd2 = ''.join(random.choice(chars) for _ in range(12))
# TODO: Default user
ssh = ConnectHandler(
@@ -337,10 +352,7 @@ class VMKer:
password="toor",
)
ssh.send_command(f'echo -e "{_pwd1}\n{_pwd1}" | passwd root')
ssh.send_command(f'echo -e "{_pwd2}\n{_pwd2}" | passwd user')
logger.info(f"Password for root: {_pwd1}")
logger.info(f"Password for user: {_pwd2}")
# TODO: yml
logger.info("Executing %.yml")