[!] Fix ipv4 founding
This commit is contained in:
56
src/main.py
56
src/main.py
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user