Use the public ipv4 if it exists; otherwise use the ipv6 to do a

cdist cdist ssh configure
This commit is contained in:
PCoder 2018-06-27 00:01:50 +02:00
parent a5c42b9c44
commit 6c2eabbe6a
2 changed files with 59 additions and 2 deletions

View file

@ -190,7 +190,7 @@ def create_vm_task(self, vm_template_id, user, specs, template,
# try to see if we have the IP and that if the ssh keys can # try to see if we have the IP and that if the ssh keys can
# be configured # be configured
new_host = manager.get_primary_ipv4(vm_id) new_host = manager.get_primary_ip(vm_id)
logger.debug("New VM ID is {vm_id}".format(vm_id=vm_id)) logger.debug("New VM ID is {vm_id}".format(vm_id=vm_id))
if new_host is not None: if new_host is not None:
custom_user = CustomUser.objects.get(email=user.get('email')) custom_user = CustomUser.objects.get(email=user.get('email'))

View file

@ -218,6 +218,59 @@ class OpenNebulaManager():
except: except:
raise ConnectionRefusedError raise ConnectionRefusedError
def is_public_ipv4(self, ipv4):
"""
Checks whether the passed ipv4 is a public IP.
:param ipv4:
:return: Returns true if it is a public IP else returns false
"""
if ipv4.startswith("10."):
return False
else:
return True
def get_primary_ip(self, vm_id):
"""
Returns primary ipv4 if it exists and is a public ip. Otherwise returns
the IPv6 of the machine
:param vm_id:
:return:
"""
ipv4 = self.get_primary_ipv4(vm_id)
if self.is_public_ipv4(ipv4):
return ipv4
else:
return self.get_primary_ipv6(vm_id)
def get_primary_ipv6(self, vm_id):
"""
Returns the primary IPv6 of the given vm.
For now, we return the first available IPv6 (to be changed later)
:return: An IP address string, if it exists else returns None
"""
all_ipv4s = self.get_vm_ipv4_addresses(vm_id)
if len(all_ipv4s) > 0:
return all_ipv4s[0]
else:
return None
def get_vm_ipv6_addresses(self, vm_id):
"""
Returns a list of IPv6 addresses of the given vm
:param vm_id: The ID of the vm
:return:
"""
ipv6s = []
vm = self.get_vm(vm_id)
for nic in vm.template.nics:
if hasattr(nic, 'ip6_global'):
ipv6s.append(nic.ip6_global)
return ipv6s
def get_primary_ipv4(self, vm_id): def get_primary_ipv4(self, vm_id):
""" """
Returns the primary IPv4 of the given vm. Returns the primary IPv4 of the given vm.
@ -579,6 +632,10 @@ class OpenNebulaManager():
vm = self.get_vm(order.vm_id) vm = self.get_vm(order.vm_id)
for nic in vm.template.nics: for nic in vm.template.nics:
if hasattr(nic, 'ip'): if hasattr(nic, 'ip'):
if str(nic.ip).startswith("10."):
if hasattr(nic, 'ip6_global'):
hosts.append(nic.ip6_global)
else:
hosts.append(nic.ip) hosts.append(nic.ip)
except WrongIdError: except WrongIdError:
logger.debug( logger.debug(