Merge branch 'feature/reversedns/check-users-vm-against-opennebula' into 'master'
Feature/reversedns/check users vm against opennebula See merge request ungleich-public/dynamicweb!707
This commit is contained in:
		
				commit
				
					
						cb244e78a1
					
				
			
		
					 2 changed files with 27 additions and 12 deletions
				
			
		|  | @ -26,11 +26,11 @@ from django.views.generic import ( | ||||||
|     View, CreateView, FormView, ListView, DetailView, DeleteView, |     View, CreateView, FormView, ListView, DetailView, DeleteView, | ||||||
|     TemplateView, UpdateView |     TemplateView, UpdateView | ||||||
| ) | ) | ||||||
| from rest_framework.views import APIView |  | ||||||
| from rest_framework.response import Response |  | ||||||
| from rest_framework.renderers import JSONRenderer |  | ||||||
| from guardian.mixins import PermissionRequiredMixin | from guardian.mixins import PermissionRequiredMixin | ||||||
| from oca.pool import WrongIdError | from oca.pool import WrongIdError | ||||||
|  | from rest_framework.renderers import JSONRenderer | ||||||
|  | from rest_framework.response import Response | ||||||
|  | from rest_framework.views import APIView | ||||||
| from stored_messages.api import mark_read | from stored_messages.api import mark_read | ||||||
| from stored_messages.models import Message | from stored_messages.models import Message | ||||||
| from stored_messages.settings import stored_messages_settings | from stored_messages.settings import stored_messages_settings | ||||||
|  | @ -1778,13 +1778,22 @@ class CheckUserVM(APIView): | ||||||
|             response = check_otp(user, realm, token) |             response = check_otp(user, realm, token) | ||||||
|             if response != 200: |             if response != 200: | ||||||
|                 return Response('Invalid token', 403) |                 return Response('Invalid token', 403) | ||||||
|             uservms = VMDetail.objects.filter(user__email=email) |             manager = OpenNebulaManager() | ||||||
|             if len(uservms) > 0: |             # not the best way to lookup vms by ip | ||||||
|                 for i in range(len(uservms)): |             # TODO: make this optimal | ||||||
|                     if uservms[i].ipv4 == ip or uservms[i].ipv6 == ip: |             vms = manager.get_vms() | ||||||
|                         return Response('success', 200) |             users_vms = [vm for vm in vms if vm.uname == email] | ||||||
|                 return Response('No VM found matching the ip address provided', 404) |             if len(users_vms) == 0: | ||||||
|             else: |                 return Response('No VM found with the given email address', | ||||||
|                 return Response('No VM found with the given email address', 404) |                                 404) | ||||||
|  |             for vm in users_vms: | ||||||
|  |                 for nic in vm.template.nics: | ||||||
|  |                     if hasattr(nic, 'ip6_global'): | ||||||
|  |                         if nic.ip6_global == ip: | ||||||
|  |                             return Response('success', 200) | ||||||
|  |                     elif hasattr(nic, 'ip'): | ||||||
|  |                         if nic.ip == ip: | ||||||
|  |                             return Response('success', 200) | ||||||
|  |             return Response('No VM found matching the ip address provided', 404) | ||||||
|         except KeyError: |         except KeyError: | ||||||
|             return Response('Not enough data provided', 400) |             return Response('Not enough data provided', 400) | ||||||
|  |  | ||||||
|  | @ -212,7 +212,13 @@ class OpenNebulaManager(): | ||||||
|                 'Could not connect via client, using oneadmin instead') |                 'Could not connect via client, using oneadmin instead') | ||||||
|             try: |             try: | ||||||
|                 vm_pool = oca.VirtualMachinePool(self.oneadmin_client) |                 vm_pool = oca.VirtualMachinePool(self.oneadmin_client) | ||||||
|                 vm_pool.info(filter=-2) |                 if infoextended: | ||||||
|  |                     vm_pool.infoextended( | ||||||
|  |                         filter=-1,  # User's resources and any of his groups | ||||||
|  |                         vm_state=-1  # Look for VMs in any state, except DONE | ||||||
|  |                     ) | ||||||
|  |                 else: | ||||||
|  |                     vm_pool.info(filter=-2) | ||||||
|                 return vm_pool |                 return vm_pool | ||||||
|             except: |             except: | ||||||
|                 raise ConnectionRefusedError |                 raise ConnectionRefusedError | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue