Skip to content

Commit

Permalink
WIP: file source templates
Browse files Browse the repository at this point in the history
  • Loading branch information
jmchilton committed Apr 24, 2024
1 parent 28e2e00 commit e259efa
Show file tree
Hide file tree
Showing 40 changed files with 2,206 additions and 306 deletions.
252 changes: 231 additions & 21 deletions client/src/api/schema/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,22 @@ export interface paths {
/** Download */
get: operations["download_api_drs_download__object_id__get"];
};
"/api/file_source_instances": {
/** Get a list of persisted file source instances defined by the requesting user. */
get: operations["file_sources__instances_index"];
/** Create a user-bound object store. */
post: operations["file_sources__create_instance"];
};
"/api/file_source_instances/{user_file_source_id}": {
/** Get a list of persisted file source instances defined by the requesting user. */
get: operations["file_sources__instances_get"];
/** Update or upgrade user file source instance. */
put: operations["file_sources__instances_update"];
};
"/api/file_source_templates": {
/** Get a list of file source templates available to build user defined file sources from */
get: operations["file_sources__templates_index"];
};
"/api/folders/{folder_id}/contents": {
/**
* Returns a list of a folder's contents (files and sub-folders) with additional metadata about the folder.
Expand Down Expand Up @@ -5230,6 +5246,36 @@ export interface components {
*/
update_time: string;
};
/** FileSourceTemplateSummaries */
FileSourceTemplateSummaries: components["schemas"]["FileSourceTemplateSummary"][];
/** FileSourceTemplateSummary */
FileSourceTemplateSummary: {
/** Description */
description: string | null;
/**
* Hidden
* @default false
*/
hidden?: boolean;
/** Id */
id: string;
/** Name */
name: string | null;
/** Secrets */
secrets?: components["schemas"]["TemplateSecret"][] | null;
/**
* Type
* @enum {string}
*/
type: "posix" | "s3fs";
/** Variables */
variables?: components["schemas"]["TemplateVariable"][] | null;
/**
* Version
* @default 0
*/
version?: number;
};
/** FilesSourcePlugin */
FilesSourcePlugin: {
/**
Expand Down Expand Up @@ -9909,13 +9955,6 @@ export interface components {
*/
up_to_date: boolean;
};
/** ObjectStoreTemplateSecret */
ObjectStoreTemplateSecret: {
/** Help */
help: string | null;
/** Name */
name: string;
};
/** ObjectStoreTemplateSummaries */
ObjectStoreTemplateSummaries: components["schemas"]["ObjectStoreTemplateSummary"][];
/** ObjectStoreTemplateSummary */
Expand All @@ -9934,32 +9973,20 @@ export interface components {
/** Name */
name: string | null;
/** Secrets */
secrets?: components["schemas"]["ObjectStoreTemplateSecret"][] | null;
secrets?: components["schemas"]["TemplateSecret"][] | null;
/**
* Type
* @enum {string}
*/
type: "s3" | "azure_blob" | "disk" | "generic_s3";
/** Variables */
variables?: components["schemas"]["ObjectStoreTemplateVariable"][] | null;
variables?: components["schemas"]["TemplateVariable"][] | null;
/**
* Version
* @default 0
*/
version?: number;
};
/** ObjectStoreTemplateVariable */
ObjectStoreTemplateVariable: {
/** Help */
help: string | null;
/** Name */
name: string;
/**
* Type
* @enum {string}
*/
type: "string" | "boolean" | "integer";
};
/** OutputReferenceByLabel */
OutputReferenceByLabel: {
/**
Expand Down Expand Up @@ -11836,6 +11863,25 @@ export interface components {
* @enum {string}
*/
TaskState: "PENDING" | "STARTED" | "RETRY" | "FAILURE" | "SUCCESS";
/** TemplateSecret */
TemplateSecret: {
/** Help */
help: string | null;
/** Name */
name: string;
};
/** TemplateVariable */
TemplateVariable: {
/** Help */
help: string | null;
/** Name */
name: string;
/**
* Type
* @enum {string}
*/
type: "string" | "boolean" | "integer";
};
/** ToolDataDetails */
ToolDataDetails: {
/**
Expand Down Expand Up @@ -12566,6 +12612,34 @@ export interface components {
*/
id: string;
};
/** UserFileSourceModel */
UserFileSourceModel: {
/** Description */
description: string | null;
/** Id */
id: string | number;
/** Name */
name: string;
/** Secrets */
secrets: string[];
/** Template Id */
template_id: string;
/** Template Version */
template_version: number;
/**
* Type
* @enum {string}
*/
type: "posix" | "s3fs";
/** Uri Root */
uri_root: string;
/** Uuid */
uuid: string;
/** Variables */
variables: {
[key: string]: (string | boolean | number) | undefined;
} | null;
};
/**
* UserModel
* @description User in a transaction context.
Expand Down Expand Up @@ -14755,6 +14829,142 @@ export interface operations {
};
};
};
file_sources__instances_index: {
/** Get a list of persisted file source instances defined by the requesting user. */
parameters?: {
/** @description The user ID that will be used to effectively make this API call. Only admins and designated users can make API calls on behalf of other users. */
header?: {
"run-as"?: string | null;
};
};
responses: {
/** @description Successful Response */
200: {
content: {
"application/json": components["schemas"]["UserFileSourceModel"][];
};
};
/** @description Validation Error */
422: {
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
file_sources__create_instance: {
/** Create a user-bound object store. */
parameters?: {
/** @description The user ID that will be used to effectively make this API call. Only admins and designated users can make API calls on behalf of other users. */
header?: {
"run-as"?: string | null;
};
};
requestBody: {
content: {
"application/json": components["schemas"]["CreateInstancePayload"];
};
};
responses: {
/** @description Successful Response */
200: {
content: {
"application/json": components["schemas"]["UserFileSourceModel"];
};
};
/** @description Validation Error */
422: {
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
file_sources__instances_get: {
/** Get a list of persisted file source instances defined by the requesting user. */
parameters: {
/** @description The user ID that will be used to effectively make this API call. Only admins and designated users can make API calls on behalf of other users. */
header?: {
"run-as"?: string | null;
};
/** @description The index for a persisted UserFileSourceStore object. */
path: {
user_file_source_id: string;
};
};
responses: {
/** @description Successful Response */
200: {
content: {
"application/json": components["schemas"]["UserFileSourceModel"];
};
};
/** @description Validation Error */
422: {
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
file_sources__instances_update: {
/** Update or upgrade user file source instance. */
parameters: {
/** @description The user ID that will be used to effectively make this API call. Only admins and designated users can make API calls on behalf of other users. */
header?: {
"run-as"?: string | null;
};
/** @description The index for a persisted UserFileSourceStore object. */
path: {
user_file_source_id: string;
};
};
requestBody: {
content: {
"application/json":
| components["schemas"]["UpdateInstanceSecretPayload"]
| components["schemas"]["UpgradeInstancePayload"]
| components["schemas"]["UpdateInstancePayload"];
};
};
responses: {
/** @description Successful Response */
200: {
content: {
"application/json": components["schemas"]["UserFileSourceModel"];
};
};
/** @description Validation Error */
422: {
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
file_sources__templates_index: {
/** Get a list of file source templates available to build user defined file sources from */
parameters?: {
/** @description The user ID that will be used to effectively make this API call. Only admins and designated users can make API calls on behalf of other users. */
header?: {
"run-as"?: string | null;
};
};
responses: {
/** @description A list of the configured file source templates. */
200: {
content: {
"application/json": components["schemas"]["FileSourceTemplateSummaries"];
};
};
/** @description Validation Error */
422: {
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
index_api_folders__folder_id__contents_get: {
/**
* Returns a list of a folder's contents (files and sub-folders) with additional metadata about the folder.
Expand Down
35 changes: 35 additions & 0 deletions client/src/components/ConfigTemplates/ManageIndexHeader.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<script setup lang="ts">
import "./icons";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { BButton, BCol, BRow } from "bootstrap-vue";
import { useRouter } from "vue-router/composables";
import _l from "@/utils/localization";
interface Props {
message: String | null | undefined;
createButtonId: string;
createRoute: string;
}
defineProps<Props>();
const router = useRouter();
</script>

<template>
<div>
<p>
{{ message || "" }}
</p>
<BRow class="mb-3">
<BCol>
<BButton :id="createButtonId" class="m-1 float-right" @click="router.push(createRoute)">
<FontAwesomeIcon icon="plus" />
{{ _l("Create") }}
</BButton>
</BCol>
</BRow>
</div>
</template>
25 changes: 25 additions & 0 deletions client/src/components/ConfigTemplates/fields.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import _l from "@/utils/localization";

export const NAME_FIELD = {
key: "name",
label: _l("Name"),
sortable: true,
};

export const DESCRIPTION_FIELD = {
key: "description",
label: _l("Description"),
sortable: true,
};

export const TYPE_FIELD = {
key: "type",
label: _l("Type"),
sortable: true,
};

export const TEMPLATE_FIELD = {
key: "template",
label: _l("From Template"),
sortable: true,
};
5 changes: 5 additions & 0 deletions client/src/components/ConfigTemplates/icons.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { library } from "@fortawesome/fontawesome-svg-core";
import { faCaretDown, faPlus } from "@fortawesome/free-solid-svg-icons";

library.add(faCaretDown);
library.add(faPlus);
Loading

0 comments on commit e259efa

Please sign in to comment.