diff --git a/services/webapp/code/rosetta/core_app/api.py b/services/webapp/code/rosetta/core_app/api.py index 4953ac0e074c4212d465927e708ffbb4af0d7048..9a44798c530877862c7cda81fea552f89c8e41d7 100644 --- a/services/webapp/code/rosetta/core_app/api.py +++ b/services/webapp/code/rosetta/core_app/api.py @@ -441,7 +441,7 @@ class FileManagerAPI(PrivateGETAPI, PrivatePOSTAPI): if computing.auth_mode == 'user_keys': computing_user = user.profile.get_extra_conf('computing_user', storage.computing) if not computing_user: - raise Exception('Computing resource \'{}\' user is not configured'.format(storage.computing.name)) + raise ValueError('No \'computing_user\' parameter found for computing resource \'{}\' in user profile'.format(storage.computing.name)) base_path_expanded = base_path_expanded.replace('$SSH_USER', computing_user) else: base_path_expanded = base_path_expanded.replace('$SSH_USER', computing.conf.get('user')) diff --git a/services/webapp/code/rosetta/core_app/models.py b/services/webapp/code/rosetta/core_app/models.py index 291e663c9b24e4260aec518559da700fed8d4d7b..4ea37b76d9833477babca5cb4dc43ce39551721f 100644 --- a/services/webapp/code/rosetta/core_app/models.py +++ b/services/webapp/code/rosetta/core_app/models.py @@ -246,14 +246,20 @@ class Computing(models.Model): managers_mapping = {} managers_mapping['cluster'+'ssh+cli'+'user_keys'+'slurm'] = computing_managers.SlurmSSHClusterComputingManager managers_mapping['standalone'+'ssh+cli'+'user_keys'+'None'] = computing_managers.SSHStandaloneComputingManager + managers_mapping['standalone'+'ssh+cli'+'platform_keys'+'None'] = computing_managers.SSHStandaloneComputingManager managers_mapping['standalone'+'internal'+'internal'+'None'] = computing_managers.InternalStandaloneComputingManager # Instantiate the computing manager and return (if not already done) try: return self._manager except AttributeError: - self._manager = managers_mapping[self.type+self.access_mode+self.auth_mode+str(self.wms)](self) - return self._manager + try: + self._manager = managers_mapping[self.type+self.access_mode+self.auth_mode+str(self.wms)](self) + except KeyError: + raise ValueError('No computing resource manager for type="{}", access_mode="{}", auth_mode="{}", wms="{}"' + .format(self.type, self.access_mode, self.auth_mode, self.wms)) from None + else: + return self._manager diff --git a/services/webapp/code/rosetta/core_app/utils.py b/services/webapp/code/rosetta/core_app/utils.py index 35021f1af46c8d85a00d91500639064cc4e2d486..16e3502b1d1bc06b185940b06a909015a1dc6a21 100644 --- a/services/webapp/code/rosetta/core_app/utils.py +++ b/services/webapp/code/rosetta/core_app/utils.py @@ -715,13 +715,13 @@ def get_ssh_access_mode_credentials(computing, user): except AttributeError: computing_host = None if not computing_host: - raise Exception('No computing host?!') + raise ValueError('No computing host?!') # Get computing user and keys if computing.auth_mode == 'user_keys': computing_user = user.profile.get_extra_conf('computing_user', computing) if not computing_user: - raise Exception('Computing resource \'{}\' user is not configured'.format(computing.name)) + raise ValueError('No \'computing_user\' parameter found for computing resource \'{}\' in user profile'.format(computing.name)) # Get user key computing_keys = KeyPair.objects.get(user=user, default=True) elif computing.auth_mode == 'platform_keys': @@ -730,7 +730,7 @@ def get_ssh_access_mode_credentials(computing, user): else: raise NotImplementedError('Auth modes other than user_keys and platform_keys not supported.') if not computing_user: - raise Exception('No computing user?!') + raise ValueError('No \'user\' parameter found for computing resource \'{}\' in its configuration'.format(computing.name)) return (computing_user, computing_host, computing_keys)