diff --git a/hosting/views.py b/hosting/views.py index 450875e5..f1a6dd9c 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -464,7 +464,7 @@ class SSHKeyDeleteView(LoginRequiredMixin, DeleteView): keys = UserHostingKey.objects.filter(user=self.request.user) keys_to_save = [k.public_key for k in keys if k != public_key] manager.save_key_in_opennebula_user('\n'.join(keys_to_save)) - vm_ids = manager.get_all_vmids() + vm_ids = manager.get_vms() if len(vm_ids) > 0 and len(keys_to_save) > 0: for vm_id in vm_ids: manager.save_key_in_vm_template(vm_id, '\n'.join(keys_to_save)) @@ -517,7 +517,7 @@ class SSHKeyChoiceView(LoginRequiredMixin, View): password=owner.password ) keys = get_all_public_keys(request.user) - vm_ids = manager.get_all_vmids() + vm_ids = manager.get_all_active_vmids() manager.save_key_in_opennebula_user('\n'.join(keys)) if len(vm_ids) > 0 and len(keys) > 0: for vm_id in vm_ids: @@ -574,7 +574,7 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView): keys = UserHostingKey.objects.filter(user=self.request.user) keys_to_save = [k.public_key for k in keys] manager.save_key_in_opennebula_user('\n'.join(keys_to_save)) - vm_ids = manager.get_all_vmids() + vm_ids = manager.get_all_active_vmids() if len(vm_ids) > 0 and len(keys) > 0: for vm_id in vm_ids: manager.save_key_in_vm_template(vm_id, '\n'.join(keys_to_save)) diff --git a/opennebula_api/models.py b/opennebula_api/models.py index 61d08d1a..819bd803 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -168,7 +168,7 @@ class OpenNebulaManager(): raise return user_pool - def _get_vm_pool(self, infoextended=True): + def _get_vm_pool(self, infoextended=True, vm_state=-1): """ # filter: # -4: Resources belonging to the user’s primary group @@ -201,8 +201,8 @@ class OpenNebulaManager(): vm_pool = oca.VirtualMachinePool(self.client) 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 + filter=-1, # User's resources and any of his groups + vm_state=vm_state ) else: vm_pool.info() @@ -210,13 +210,6 @@ class OpenNebulaManager(): except AttributeError: logger.error( 'Could not connect via client, using oneadmin instead') - try: - vm_pool = oca.VirtualMachinePool(self.oneadmin_client) - vm_pool.info(filter=-2) - return vm_pool - except: - raise ConnectionRefusedError - except ConnectionRefusedError: logger.error( 'Could not connect to host: {host} via protocol {protocol}'.format( @@ -228,9 +221,9 @@ class OpenNebulaManager(): except: raise ConnectionRefusedError - def get_vms(self): + def get_vms(self, vm_state=-1): try: - return self._get_vm_pool() + return self._get_vm_pool(vm_state=vm_state) except ConnectionRefusedError: raise ConnectionRefusedError @@ -637,17 +630,9 @@ class OpenNebulaManager(): "Keys and/or hosts are empty, so not managing any keys" ) - def get_all_vmids(self): - owner = CustomUser.objects.filter(email=self.email).first() - all_orders = HostingOrder.objects.filter(customer__user=owner) - vm_ids = [] - if len(all_orders) > 0: - logger.debug("The user {} has 1 or more VMs. We need to configure " - "the ssh keys.".format(self.email)) - vm_ids = [order.vm_id for order in all_orders] - else: - logger.debug("The user {} has no VMs. We don't need to configure " - "the ssh keys.".format(self.email)) + def get_all_active_vmids(self): + vm_pool = self.get_vms(vm_state=3) # get active vms of the user + vm_ids = [vm.id for vm in vm_pool] return vm_ids def get_all_hosts(self):