Loading client/src/api/schema/schema.ts +8 −2 Original line number Diff line number Diff line Loading @@ -12848,7 +12848,10 @@ export interface components { * @enum {string} */ type: "aws_s3" | "azure_blob" | "boto3" | "disk" | "generic_s3"; /** Uuid */ /** * Uuid * Format: uuid4 */ uuid: string; /** Variables */ variables: { Loading Loading @@ -12922,7 +12925,10 @@ export interface components { type: "ftp" | "posix" | "s3fs" | "azure"; /** Uri Root */ uri_root: string; /** Uuid */ /** * Uuid * Format: uuid4 */ uuid: string; /** Variables */ variables: { Loading lib/galaxy/exceptions/__init__.py +5 −0 Original line number Diff line number Diff line Loading @@ -209,6 +209,11 @@ class UserCannotRunAsException(MessageException): err_code = error_codes_by_name["USER_CANNOT_RUN_AS"] class UserRequiredException(MessageException): status_code = 403 err_code = error_codes_by_name["USER_REQUIRED"] class AdminRequiredException(MessageException): status_code = 403 err_code = error_codes_by_name["ADMIN_REQUIRED"] Loading lib/galaxy/exceptions/error_codes.json +5 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,11 @@ "code": 403007, "message": "Action requires account activation." }, { "name": "USER_REQUIRED", "code": 403008, "message": "Action requires user authentication." }, { "name": "USER_OBJECT_NOT_FOUND", "code": 404001, Loading lib/galaxy/managers/file_source_instances.py +10 −9 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ from uuid import uuid4 from pydantic import ( BaseModel, UUID4, ValidationError, ) Loading Loading @@ -87,7 +88,7 @@ USER_FILE_SOURCES_SCHEME = "gxuserfiles" class UserFileSourceModel(BaseModel): uuid: str uuid: UUID4 uri_root: str name: str description: Optional[str] Loading Loading @@ -142,16 +143,16 @@ class FileSourceInstancesManager: stores = self._sa_session.query(UserFileSource).filter(UserFileSource.user_id == trans.user.id).all() return [self._to_model(trans, s) for s in stores] def show(self, trans: ProvidesUserContext, uuid: str) -> UserFileSourceModel: def show(self, trans: ProvidesUserContext, uuid: UUID4) -> UserFileSourceModel: user_file_source = self._get(trans, uuid) return self._to_model(trans, user_file_source) def purge_instance(self, trans: ProvidesUserContext, uuid: str) -> None: def purge_instance(self, trans: ProvidesUserContext, uuid: UUID4) -> None: persisted_file_source = self._get(trans, uuid) purge_template_instance(trans, persisted_file_source, self._app_config) def modify_instance( self, trans: ProvidesUserContext, id: str, payload: ModifyInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: ModifyInstancePayload ) -> UserFileSourceModel: if isinstance(payload, UpgradeInstancePayload): return self._upgrade_instance(trans, id, payload) Loading @@ -162,7 +163,7 @@ class FileSourceInstancesManager: return self._update_instance(trans, id, payload) def _upgrade_instance( self, trans: ProvidesUserContext, id: str, payload: UpgradeInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: UpgradeInstancePayload ) -> UserFileSourceModel: persisted_file_source = self._get(trans, id) template = self._get_template(persisted_file_source, payload.template_version) Loading @@ -181,7 +182,7 @@ class FileSourceInstancesManager: return self._to_model(trans, persisted_file_source) def _update_instance( self, trans: ProvidesUserContext, id: str, payload: UpdateInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: UpdateInstancePayload ) -> UserFileSourceModel: persisted_file_source = self._get(trans, id) template = self._get_template(persisted_file_source) Loading @@ -189,7 +190,7 @@ class FileSourceInstancesManager: return self._to_model(trans, persisted_file_source) def _update_instance_secret( self, trans: ProvidesUserContext, id: str, payload: UpdateInstanceSecretPayload self, trans: ProvidesUserContext, id: UUID4, payload: UpdateInstanceSecretPayload ) -> UserFileSourceModel: persisted_file_source = self._get(trans, id) template = self._get_template(persisted_file_source) Loading Loading @@ -300,10 +301,10 @@ class FileSourceInstancesManager: exception = e return file_source, connection_exception_to_status("file source", exception) def _index_filter(self, uuid: str): def _index_filter(self, uuid: UUID4): return UserFileSource.__table__.c.uuid == uuid def _get(self, trans: ProvidesUserContext, uuid: str) -> UserFileSource: def _get(self, trans: ProvidesUserContext, uuid: UUID4) -> UserFileSource: filter = self._index_filter(uuid) user_file_source = self._sa_session.query(UserFileSource).filter(filter).one_or_none() if user_file_source is None: Loading lib/galaxy/managers/object_store_instances.py +11 −9 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ from typing import ( ) from uuid import uuid4 from pydantic import UUID4 from galaxy.exceptions import ( ItemOwnershipException, RequestParameterInvalidException, Loading Loading @@ -73,7 +75,7 @@ log = logging.getLogger(__name__) class UserConcreteObjectStoreModel(ConcreteObjectStoreModel): uuid: str uuid: UUID4 type: ObjectStoreTemplateType template_id: str template_version: int Loading Loading @@ -106,7 +108,7 @@ class ObjectStoreInstancesManager: return self._catalog.summaries def modify_instance( self, trans: ProvidesUserContext, id: str, payload: ModifyInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: ModifyInstancePayload ) -> UserConcreteObjectStoreModel: if isinstance(payload, UpgradeInstancePayload): return self._upgrade_instance(trans, id, payload) Loading @@ -116,12 +118,12 @@ class ObjectStoreInstancesManager: assert isinstance(payload, UpdateInstancePayload) return self._update_instance(trans, id, payload) def purge_instance(self, trans: ProvidesUserContext, id: str) -> None: def purge_instance(self, trans: ProvidesUserContext, id: UUID4) -> None: persisted_object_store = self._get(trans, id) purge_template_instance(trans, persisted_object_store, self._app_config) def _upgrade_instance( self, trans: ProvidesUserContext, id: str, payload: UpgradeInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: UpgradeInstancePayload ) -> UserConcreteObjectStoreModel: persisted_object_store = self._get(trans, id) template = self._get_template(persisted_object_store, payload.template_version) Loading @@ -140,7 +142,7 @@ class ObjectStoreInstancesManager: return self._to_model(trans, persisted_object_store) def _update_instance( self, trans: ProvidesUserContext, id: str, payload: UpdateInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: UpdateInstancePayload ) -> UserConcreteObjectStoreModel: persisted_object_store = self._get(trans, id) template = self._get_template(persisted_object_store) Loading @@ -148,7 +150,7 @@ class ObjectStoreInstancesManager: return self._to_model(trans, persisted_object_store) def _update_instance_secret( self, trans: ProvidesUserContext, id: str, payload: UpdateInstanceSecretPayload self, trans: ProvidesUserContext, id: UUID4, payload: UpdateInstanceSecretPayload ) -> UserConcreteObjectStoreModel: persisted_object_store = self._get(trans, id) template = self._get_template(persisted_object_store) Loading Loading @@ -200,14 +202,14 @@ class ObjectStoreInstancesManager: stores = self._sa_session.query(UserObjectStore).filter(UserObjectStore.user_id == trans.user.id).all() return [self._to_model(trans, s) for s in stores] def show(self, trans: ProvidesUserContext, id: str) -> UserConcreteObjectStoreModel: def show(self, trans: ProvidesUserContext, id: UUID4) -> UserConcreteObjectStoreModel: user_object_store = self._get(trans, id) return self._to_model(trans, user_object_store) def _save(self, persisted_object_store: UserObjectStore) -> None: save_template_instance(self._sa_session, persisted_object_store) def _get(self, trans: ProvidesUserContext, id: str) -> UserObjectStore: def _get(self, trans: ProvidesUserContext, id: UUID4) -> UserObjectStore: filter = self._index_filter(id) user_object_store = self._sa_session.query(UserObjectStore).filter(filter).one_or_none() if user_object_store is None: Loading Loading @@ -274,7 +276,7 @@ class ObjectStoreInstancesManager: exception = e return object_store, connection_exception_to_status("storage location", exception) def _index_filter(self, uuid: str): def _index_filter(self, uuid: UUID4): return UserObjectStore.__table__.c.uuid == uuid def _get_template( Loading Loading
client/src/api/schema/schema.ts +8 −2 Original line number Diff line number Diff line Loading @@ -12848,7 +12848,10 @@ export interface components { * @enum {string} */ type: "aws_s3" | "azure_blob" | "boto3" | "disk" | "generic_s3"; /** Uuid */ /** * Uuid * Format: uuid4 */ uuid: string; /** Variables */ variables: { Loading Loading @@ -12922,7 +12925,10 @@ export interface components { type: "ftp" | "posix" | "s3fs" | "azure"; /** Uri Root */ uri_root: string; /** Uuid */ /** * Uuid * Format: uuid4 */ uuid: string; /** Variables */ variables: { Loading
lib/galaxy/exceptions/__init__.py +5 −0 Original line number Diff line number Diff line Loading @@ -209,6 +209,11 @@ class UserCannotRunAsException(MessageException): err_code = error_codes_by_name["USER_CANNOT_RUN_AS"] class UserRequiredException(MessageException): status_code = 403 err_code = error_codes_by_name["USER_REQUIRED"] class AdminRequiredException(MessageException): status_code = 403 err_code = error_codes_by_name["ADMIN_REQUIRED"] Loading
lib/galaxy/exceptions/error_codes.json +5 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,11 @@ "code": 403007, "message": "Action requires account activation." }, { "name": "USER_REQUIRED", "code": 403008, "message": "Action requires user authentication." }, { "name": "USER_OBJECT_NOT_FOUND", "code": 404001, Loading
lib/galaxy/managers/file_source_instances.py +10 −9 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ from uuid import uuid4 from pydantic import ( BaseModel, UUID4, ValidationError, ) Loading Loading @@ -87,7 +88,7 @@ USER_FILE_SOURCES_SCHEME = "gxuserfiles" class UserFileSourceModel(BaseModel): uuid: str uuid: UUID4 uri_root: str name: str description: Optional[str] Loading Loading @@ -142,16 +143,16 @@ class FileSourceInstancesManager: stores = self._sa_session.query(UserFileSource).filter(UserFileSource.user_id == trans.user.id).all() return [self._to_model(trans, s) for s in stores] def show(self, trans: ProvidesUserContext, uuid: str) -> UserFileSourceModel: def show(self, trans: ProvidesUserContext, uuid: UUID4) -> UserFileSourceModel: user_file_source = self._get(trans, uuid) return self._to_model(trans, user_file_source) def purge_instance(self, trans: ProvidesUserContext, uuid: str) -> None: def purge_instance(self, trans: ProvidesUserContext, uuid: UUID4) -> None: persisted_file_source = self._get(trans, uuid) purge_template_instance(trans, persisted_file_source, self._app_config) def modify_instance( self, trans: ProvidesUserContext, id: str, payload: ModifyInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: ModifyInstancePayload ) -> UserFileSourceModel: if isinstance(payload, UpgradeInstancePayload): return self._upgrade_instance(trans, id, payload) Loading @@ -162,7 +163,7 @@ class FileSourceInstancesManager: return self._update_instance(trans, id, payload) def _upgrade_instance( self, trans: ProvidesUserContext, id: str, payload: UpgradeInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: UpgradeInstancePayload ) -> UserFileSourceModel: persisted_file_source = self._get(trans, id) template = self._get_template(persisted_file_source, payload.template_version) Loading @@ -181,7 +182,7 @@ class FileSourceInstancesManager: return self._to_model(trans, persisted_file_source) def _update_instance( self, trans: ProvidesUserContext, id: str, payload: UpdateInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: UpdateInstancePayload ) -> UserFileSourceModel: persisted_file_source = self._get(trans, id) template = self._get_template(persisted_file_source) Loading @@ -189,7 +190,7 @@ class FileSourceInstancesManager: return self._to_model(trans, persisted_file_source) def _update_instance_secret( self, trans: ProvidesUserContext, id: str, payload: UpdateInstanceSecretPayload self, trans: ProvidesUserContext, id: UUID4, payload: UpdateInstanceSecretPayload ) -> UserFileSourceModel: persisted_file_source = self._get(trans, id) template = self._get_template(persisted_file_source) Loading Loading @@ -300,10 +301,10 @@ class FileSourceInstancesManager: exception = e return file_source, connection_exception_to_status("file source", exception) def _index_filter(self, uuid: str): def _index_filter(self, uuid: UUID4): return UserFileSource.__table__.c.uuid == uuid def _get(self, trans: ProvidesUserContext, uuid: str) -> UserFileSource: def _get(self, trans: ProvidesUserContext, uuid: UUID4) -> UserFileSource: filter = self._index_filter(uuid) user_file_source = self._sa_session.query(UserFileSource).filter(filter).one_or_none() if user_file_source is None: Loading
lib/galaxy/managers/object_store_instances.py +11 −9 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ from typing import ( ) from uuid import uuid4 from pydantic import UUID4 from galaxy.exceptions import ( ItemOwnershipException, RequestParameterInvalidException, Loading Loading @@ -73,7 +75,7 @@ log = logging.getLogger(__name__) class UserConcreteObjectStoreModel(ConcreteObjectStoreModel): uuid: str uuid: UUID4 type: ObjectStoreTemplateType template_id: str template_version: int Loading Loading @@ -106,7 +108,7 @@ class ObjectStoreInstancesManager: return self._catalog.summaries def modify_instance( self, trans: ProvidesUserContext, id: str, payload: ModifyInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: ModifyInstancePayload ) -> UserConcreteObjectStoreModel: if isinstance(payload, UpgradeInstancePayload): return self._upgrade_instance(trans, id, payload) Loading @@ -116,12 +118,12 @@ class ObjectStoreInstancesManager: assert isinstance(payload, UpdateInstancePayload) return self._update_instance(trans, id, payload) def purge_instance(self, trans: ProvidesUserContext, id: str) -> None: def purge_instance(self, trans: ProvidesUserContext, id: UUID4) -> None: persisted_object_store = self._get(trans, id) purge_template_instance(trans, persisted_object_store, self._app_config) def _upgrade_instance( self, trans: ProvidesUserContext, id: str, payload: UpgradeInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: UpgradeInstancePayload ) -> UserConcreteObjectStoreModel: persisted_object_store = self._get(trans, id) template = self._get_template(persisted_object_store, payload.template_version) Loading @@ -140,7 +142,7 @@ class ObjectStoreInstancesManager: return self._to_model(trans, persisted_object_store) def _update_instance( self, trans: ProvidesUserContext, id: str, payload: UpdateInstancePayload self, trans: ProvidesUserContext, id: UUID4, payload: UpdateInstancePayload ) -> UserConcreteObjectStoreModel: persisted_object_store = self._get(trans, id) template = self._get_template(persisted_object_store) Loading @@ -148,7 +150,7 @@ class ObjectStoreInstancesManager: return self._to_model(trans, persisted_object_store) def _update_instance_secret( self, trans: ProvidesUserContext, id: str, payload: UpdateInstanceSecretPayload self, trans: ProvidesUserContext, id: UUID4, payload: UpdateInstanceSecretPayload ) -> UserConcreteObjectStoreModel: persisted_object_store = self._get(trans, id) template = self._get_template(persisted_object_store) Loading Loading @@ -200,14 +202,14 @@ class ObjectStoreInstancesManager: stores = self._sa_session.query(UserObjectStore).filter(UserObjectStore.user_id == trans.user.id).all() return [self._to_model(trans, s) for s in stores] def show(self, trans: ProvidesUserContext, id: str) -> UserConcreteObjectStoreModel: def show(self, trans: ProvidesUserContext, id: UUID4) -> UserConcreteObjectStoreModel: user_object_store = self._get(trans, id) return self._to_model(trans, user_object_store) def _save(self, persisted_object_store: UserObjectStore) -> None: save_template_instance(self._sa_session, persisted_object_store) def _get(self, trans: ProvidesUserContext, id: str) -> UserObjectStore: def _get(self, trans: ProvidesUserContext, id: UUID4) -> UserObjectStore: filter = self._index_filter(id) user_object_store = self._sa_session.query(UserObjectStore).filter(filter).one_or_none() if user_object_store is None: Loading Loading @@ -274,7 +276,7 @@ class ObjectStoreInstancesManager: exception = e return object_store, connection_exception_to_status("storage location", exception) def _index_filter(self, uuid: str): def _index_filter(self, uuid: UUID4): return UserObjectStore.__table__.c.uuid == uuid def _get_template( Loading