Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add onedata templates #18457

Merged
merged 10 commits into from
Sep 4, 2024
Merged

Conversation

bwalkowi
Copy link
Contributor

@bwalkowi bwalkowi commented Jun 28, 2024

This PR introduces BYOS templates for Onedata as a file source and object store.

NOTE: we have unified naming conventions of variables which includes breaking changes (snake_case replaced camelCase). Probably, it will require config adjustments during Galaxy upgrade. Let us know if this is a problem.

How to test the changes?

(Select all options that apply)

  • I've included appropriate automated tests.
  • This is a refactoring of components with existing test coverage.
  • Instructions for manual testing are as follows:
    1. Add the fs.onedatarestfs package to the currently used requirements (can be found in conditional-requirements.txt).

    2. Create either file_source_templates.yml or object_store_templates.yml including appropriate production_onedata.yml file in the config dir, copying the part concerning Onedata from object_store_conf.xml.sample.

    3. Create vault.

    4. Start the galaxy server, log in.

    5. Create Onedata file source/object store by filling required fields.

      You will need an account in a Onedata system instance. The best way to test is to use the "demo mode", which allows easily setting up a dockerized Onedata environment: https://onedata.org/#/home/documentation/topic/stable/demo-mode

    6. Upload some data and run some jobs. Open the Onedata UI and navigate to your space to see the stored Galaxy datasets.

License

  • I agree to license these and all my past contributions to the core galaxy codebase under the MIT license.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can not call this production yet and give it some time... We will deploy it on EU for a few month and then we rename the file next year?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense, I will follow your recommendations here. We just mimicked the naming from other templates.

What should be the name then - just remove the "production" prefix or something else?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess so yes, lets remove the prefix.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

@mvdbeek
Copy link
Member

mvdbeek commented Sep 4, 2024

The client schema needs to be rebuilt and a rebase is likely necessary. This should look something like:

diff --git a/client/src/api/fileSources.ts b/client/src/api/fileSources.ts
index 68935db457..c08cc81294 100644
--- a/client/src/api/fileSources.ts
+++ b/client/src/api/fileSources.ts
@@ -4,3 +4,4 @@ export type FileSourceTemplateSummary = components["schemas"]["FileSourceTemplat
 export type FileSourceTemplateSummaries = FileSourceTemplateSummary[];
 
 export type UserFileSourceModel = components["schemas"]["UserFileSourceModel"];
+export type FileSourceTypes = UserFileSourceModel["type"]
diff --git a/client/src/api/schema/schema.ts b/client/src/api/schema/schema.ts
index 05a06bc61d..b8a076a8e0 100644
--- a/client/src/api/schema/schema.ts
+++ b/client/src/api/schema/schema.ts
@@ -8785,7 +8785,7 @@ export interface components {
              * Type
              * @enum {string}
              */
-            type: "ftp" | "posix" | "s3fs" | "azure";
+            type: "ftp" | "posix" | "s3fs" | "azure" | "onedata";
             /** Variables */
             variables?:
                 | (
@@ -13748,7 +13748,7 @@ export interface components {
              * Type
              * @enum {string}
              */
-            type: "aws_s3" | "azure_blob" | "boto3" | "disk" | "generic_s3";
+            type: "aws_s3" | "azure_blob" | "boto3" | "disk" | "generic_s3" | "onedata";
             /** Variables */
             variables?:
                 | (
@@ -16503,7 +16503,7 @@ export interface components {
              * Type
              * @enum {string}
              */
-            type: "aws_s3" | "azure_blob" | "boto3" | "disk" | "generic_s3";
+            type: "aws_s3" | "azure_blob" | "boto3" | "disk" | "generic_s3" | "onedata";
             /**
              * Uuid
              * Format: uuid4
@@ -16578,7 +16578,7 @@ export interface components {
              * Type
              * @enum {string}
              */
-            type: "ftp" | "posix" | "s3fs" | "azure";
+            type: "ftp" | "posix" | "s3fs" | "azure" | "onedata";
             /** Uri Root */
             uri_root: string;
             /**
diff --git a/client/src/components/FileSources/FileSourceTypeSpan.vue b/client/src/components/FileSources/FileSourceTypeSpan.vue
index 95129c85a0..26cfc03ba1 100644
--- a/client/src/components/FileSources/FileSourceTypeSpan.vue
+++ b/client/src/components/FileSources/FileSourceTypeSpan.vue
@@ -1,13 +1,19 @@
 <script setup lang="ts">
 import { computed } from "vue";
 
+import type {FileSourceTypes} from "@/api/fileSources"
+
 const MESSAGES = {
     posix: "This is a simple path based storage location that assumes the all the relevant paths are already mounted on the Galaxy server and target worker nodes.",
     s3fs: "This is an remote file source plugin based on the Amazon Simple Storage Service (S3) interface. The AWS interface has become an industry standard and many storage vendors support it and use it to expose 'object' based storage.",
+    azure: "This is an remote file source plugin based on the Azure service.",
+    onedata: "This is an remote file source plugin based on the Onedata service.",
+    ftp: "This is an remote file source plugin based on the FTP protocol.",
+
 };
 
 interface Props {
-    type: "posix" | "s3fs";
+    type: FileSourceTypes;
 }
 
 const props = defineProps<Props>();
diff --git a/client/src/components/ObjectStore/ObjectStoreTypeSpan.vue b/client/src/components/ObjectStore/ObjectStoreTypeSpan.vue
index 20ff0f7ffc..84b946515a 100644
--- a/client/src/components/ObjectStore/ObjectStoreTypeSpan.vue
+++ b/client/src/components/ObjectStore/ObjectStoreTypeSpan.vue
@@ -11,6 +11,7 @@ const MESSAGES = {
     boto3: "This is a storage location based on the Amazon Simple Storage Service (S3) interface, but likely not stored by Amazon. The AWS interface has become an industry standard and many storage vendors support it and use it to expose object based storage.",
     generic_s3:
         "This is a storage location based on the Amazon Simple Storage Service (S3) interface, but likely not stored by Amazon. The AWS interface has become an industry standard and many storage vendors support it and use it to expose object based storage.",
+    onedata: "This is a storage location based on the Onedata system.",
 };
 
 interface Props {

Could you allow maintainer edit @bwalkowi so I can push those changes or use my branch from https://github.com/bwalkowi/galaxy/compare/add-onedata-templates...mvdbeek:galaxy:add-onedata-templates?expand=1?

@bwalkowi
Copy link
Contributor Author

bwalkowi commented Sep 4, 2024

sure, no problem, I have just allowed maintainer edit @mvdbeek

@mvdbeek mvdbeek force-pushed the add-onedata-templates branch from dda5b83 to 6ab1f7c Compare September 4, 2024 10:41
@mvdbeek mvdbeek merged commit 55a9c22 into galaxyproject:dev Sep 4, 2024
55 of 56 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants