diff --git a/frontend/src/lib/components/WorkspaceGroup.svelte b/frontend/src/lib/components/WorkspaceGroup.svelte index 0bd23d6071..bf2a49ad5c 100644 --- a/frontend/src/lib/components/WorkspaceGroup.svelte +++ b/frontend/src/lib/components/WorkspaceGroup.svelte @@ -16,6 +16,7 @@ import Section from './Section.svelte' import Label from './Label.svelte' import AutoComplete from 'simple-svelte-autocomplete' + import YAML from 'yaml' export let name: string export let config: @@ -817,6 +818,23 @@ + { + loadNConfig() + navigator.clipboard.writeText( + YAML.stringify({ + name, + ...nconfig + }) + ) + sendUserToast('Worker config copied to clipboard as YAML') + }} + > + copy config + + {#if config} | undefined = undefined @@ -104,8 +108,55 @@ await ConfigService.updateConfig({ name: 'worker__' + newConfigName, requestBody: {} }) loadWorkerGroups() } + + let importConfigDrawer: Drawer | undefined = undefined + let importConfigCode = '' + + async function importConfig() { + const config = YAML.parse(importConfigCode) + + if (!config || config.name == undefined) { + sendUserToast('Invalid worker config', true) + return + } + + if (workerGroups?.hasOwnProperty(config.name)) { + sendUserToast('A worker config with this name already exists', true) + return + } + + await ConfigService.updateConfig({ + name: 'worker__' + config.name, + requestBody: { ...config, name: undefined } + }) + + importConfigDrawer?.toggleDrawer?.() + + importConfigCode = '' + + sendUserToast('Worker config successfully imported') + + await loadWorkerGroups() + } + + importConfigDrawer?.toggleDrawer?.()} + > + + + Import + + + + - + { + importConfigDrawer?.toggleDrawer?.() + } + } + ] + : undefined} + > New worker group config Worker Group configs are propagated to every workers in the worker group