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