Refactor code: get_primary_ip -> get_ipv6 and remove unwanted code

This commit is contained in:
PCoder 2018-07-01 11:07:29 +02:00
parent 8993a7bde1
commit c13af95017
2 changed files with 21 additions and 71 deletions

View File

@ -187,11 +187,11 @@ def create_vm_task(self, vm_template_id, user, specs, template,
email = BaseEmail(**email_data)
email.send()
# try to see if we have the IP and that if the ssh keys can
# be configured
new_host = manager.get_primary_ip(vm_id)
# try to see if we have the IPv6 of the new vm and that if the ssh
# keys can be configured
vm_ipv6 = manager.get_ipv6(vm_id)
logger.debug("New VM ID is {vm_id}".format(vm_id=vm_id))
if new_host is not None:
if vm_ipv6 is not None:
custom_user = CustomUser.objects.get(email=user.get('email'))
get_or_create_vm_detail(custom_user, manager, vm_id)
if custom_user is not None:
@ -202,13 +202,15 @@ def create_vm_task(self, vm_template_id, user, specs, template,
logger.debug(
"Calling configure on {host} for "
"{num_keys} keys".format(
host=new_host, num_keys=len(keys)))
host=vm_ipv6, num_keys=len(keys)
)
)
# Let's delay the task by 75 seconds to be sure
# that we run the cdist configure after the host
# is up
manager.manage_public_key(keys,
hosts=[new_host],
countdown=75)
manager.manage_public_key(
keys, hosts=[vm_ipv6], countdown=75
)
except Exception as e:
logger.error(str(e))
try:

View File

@ -219,46 +219,19 @@ class OpenNebulaManager():
except:
raise ConnectionRefusedError
def is_public_ipv4(self, ipv4):
def get_ipv6(self, vm_id):
"""
Checks whether the passed ipv4 is a public IP.
Returns the first IPv6 of the given vm.
:param ipv4:
:return: Returns true if it is a public IP else returns false
:return: An IPv6 address string, if it exists else returns None
"""
if ipaddress.ip_address(ipv4).is_private:
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
"""
ipv6_list = self.get_vm_ipv6_addresses(vm_id)
ipv6_list = self.get_all_ipv6_addresses(vm_id)
if len(ipv6_list) > 0:
return ipv6_list[0]
else:
return None
def get_vm_ipv6_addresses(self, vm_id):
def get_all_ipv6_addresses(self, vm_id):
"""
Returns a list of IPv6 addresses of the given vm
@ -272,33 +245,6 @@ class OpenNebulaManager():
ipv6_list.append(nic.ip6_global)
return ipv6_list
def get_primary_ipv4(self, vm_id):
"""
Returns the primary IPv4 of the given vm.
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_ipv4_addresses(self, vm_id):
"""
Returns a list of IPv4 addresses of the given vm
:param vm_id: The ID of the vm
:return:
"""
ipv4s = []
vm = self.get_vm(vm_id)
for nic in vm.template.nics:
if hasattr(nic, 'ip'):
ipv4s.append(nic.ip)
return ipv4s
def create_vm(self, template_id, specs, ssh_key=None, vm_name=None):
template = self.get_template(template_id)
@ -601,7 +547,7 @@ class OpenNebulaManager():
'value': 'sha-.....', # public key as string
'state': True # whether key is to be added or
} # removed
:param hosts: A list of hosts IP addresses
:param hosts: A list of hosts IPv6 addresses
:param countdown: Parameter to be passed to celery apply_async
Allows to delay a task by `countdown` number of seconds
:return:
@ -614,12 +560,14 @@ class OpenNebulaManager():
link_error=save_ssh_key_error_handler.s())
else:
logger.debug(
"Keys and/or hosts are empty, so not managing any keys")
"Keys and/or hosts are empty, so not managing any keys"
)
def get_all_hosts(self):
"""
A utility function to obtain all hosts of this owner
:return: A list of hosts IP addresses, empty if none exist
:return: A list of IPv6 addresses of all the hosts of this customer or
an empty list if none exist
"""
owner = CustomUser.objects.filter(
email=self.email).first()
@ -630,7 +578,7 @@ class OpenNebulaManager():
"the ssh keys.".format(self.email))
for order in all_orders:
try:
ip = self.get_primary_ip(order.vm_id)
ip = self.get_ipv6(order.vm_id)
hosts.append(ip)
except WrongIdError:
logger.debug(