From 522aae9209550ac0acc3168a40d154f10366c399 Mon Sep 17 00:00:00 2001 From: samiul Date: Fri, 26 Jun 2026 16:08:11 +0600 Subject: [PATCH] fix db roles forms to form-builder Signed-off-by: samiul --- .../ui/create-ui.yaml | 129 +++++------ .../ui/functions.js | 212 +++++++++--------- .../ui/create-ui.yaml | 129 +++++------ .../ui/functions.js | 212 +++++++++--------- .../ui/create-ui.yaml | 129 +++++------ .../ui/functions.js | 212 +++++++++--------- .../ui/create-ui.yaml | 151 +++++-------- .../ui/functions.js | 212 +++++++++--------- .../ui/create-ui.yaml | 129 +++++------ .../ui/functions.js | 212 +++++++++--------- 10 files changed, 850 insertions(+), 877 deletions(-) diff --git a/charts/enginekubevaultcom-elasticsearchrole-editor/ui/create-ui.yaml b/charts/enginekubevaultcom-elasticsearchrole-editor/ui/create-ui.yaml index ea00a86940..e2eb762364 100644 --- a/charts/enginekubevaultcom-elasticsearchrole-editor/ui/create-ui.yaml +++ b/charts/enginekubevaultcom-elasticsearchrole-editor/ui/create-ui.yaml @@ -1,73 +1,62 @@ -steps: -- form: - elements: - - fetch: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources - if: isConsole - label: - text: labels.selectDb - refresh: true - required: true - schema: - $ref: discriminator#/properties/database - sortable: true - type: select - - computed: setRoleName - label: - text: metadata.name - required: true - schema: - $ref: schema#/properties/metadata/properties/name +step: +- elements: + - if: + name: isConsole + type: function + label: Select Database + loader: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources + refresh: true + schema: temp/properties/database + sortable: true + type: select + validation: + type: required + - label: Name + schema: schema/properties/metadata/properties/name + type: input + validation: + type: required + watcher: + func: setRoleName + paths: + - schema/properties/spec/properties/secretEngineRef/properties/name + - disable: true + if: + name: isDbSelected + type: function + init: + type: func + value: getDbNamespace + label: Namespace + schema: schema/properties/metadata/properties/namespace + type: input + - if: + name: isDbSelected + type: function + label: Select SecretEngine + loader: getEngines|engine.kubevault.com|v1alpha1|secretengines + refresh: true + schema: schema/properties/spec/properties/secretEngineRef/properties/name + type: select + validation: + type: required + - label: Default TTL + schema: schema/properties/spec/properties/defaultTTL + type: input + - label: Max TTL + schema: schema/properties/spec/properties/maxTTL + type: input + - element: + label: Statement type: input - - computed: getDbNamespace - disabled: true - if: isDbSelected - label: - text: metadata.namespace - schema: - $ref: schema#/properties/metadata/properties/namespace + label: Creation Statement + schema: schema/properties/spec/properties/creationStatements + type: array-item-form + - element: + label: Statement type: input - - fetch: getEngines|engine.kubevault.com|v1alpha1|secretengines - if: isDbSelected - label: - text: labels.selectEngine - refresh: true - required: true - schema: - $ref: schema#/properties/spec/properties/secretEngineRef/properties/name - type: select - - label: - text: spec.defaultTTL - schema: - $ref: schema#/properties/spec/properties/defaultTTL - type: input - - label: - text: spec.maxTTL - schema: - $ref: schema#/properties/spec/properties/maxTTL - type: input - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/creationStatements/items - type: input - label: - text: spec.creation - schema: - $ref: schema#/properties/spec/properties/creationStatements - type: list-input-form - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/revocationStatements/items - type: input - label: - text: spec.revocation - schema: - $ref: schema#/properties/spec/properties/revocationStatements - type: list-input-form - type: single-step-form - id: basic - title: Create ElasicSearchRole + label: Revocation Statement + schema: schema/properties/spec/properties/revocationStatements + type: array-item-form + type: single-step-form type: multi-step-form diff --git a/charts/enginekubevaultcom-elasticsearchrole-editor/ui/functions.js b/charts/enginekubevaultcom-elasticsearchrole-editor/ui/functions.js index 842d7377a8..38a2dcbb4f 100644 --- a/charts/enginekubevaultcom-elasticsearchrole-editor/ui/functions.js +++ b/charts/enginekubevaultcom-elasticsearchrole-editor/ui/functions.js @@ -1,113 +1,123 @@ -function isConsole({ storeGet }) { - const owner = storeGet('/route/params/user') - const path = storeGet('/route/path') - const prefix = `/${owner}/kubernetes` - if (path.startsWith(prefix)) return true - return false -} +const { ref, computed, axios, watch, useOperator, store } = window.vueHelpers || {} -async function getDatabases({ axios, storeGet }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - if (isConsole({ storeGet })) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - { - params: { - convertToTable: true, - labelSelector: 'k8s.io/group=kubedb.com', - }, - }, - ) +export const useFunc = (model) => { + const { getValue, setDiscriminatorValue, commit, storeGet, discriminator } = useOperator( + model, + store.state, + ) - const resources = (resp && resp.data && resp.data.rows) || [] + function isConsole() { + const owner = storeGet('/route/params/user') + const path = storeGet('/route/path') + const prefix = `/${owner}/kubernetes` + if (path.startsWith(prefix)) return true + return false + } - resources.map((item) => { - const name = (item.cells && item.cells[0].data) || '' - const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' - const resource = (item.cells?.length > 1 && item.cells[2].data) || '' - item.text = name - item.value = { - name: name, - namespace: namespace, - resource: resource, - } - return true - }) - const filteredResources = resources.filter( - (item) => item.value.resource.toLowerCase() === 'elasticsearch', - ) - return filteredResources - } catch (e) { - console.log(e) - return [] - } - } else return [] -} + async function getDatabases(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + if (isConsole()) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + { + params: { + convertToTable: true, + labelSelector: 'k8s.io/group=kubedb.com', + }, + }, + ) -function isDbSelected({ getValue, storeGet, discriminator, watchDependency }) { - if (!isConsole({ storeGet })) return true - watchDependency('discriminator#/database') - const val = getValue(discriminator, '/database') || {} - return val && val.name ? true : false -} + const resources = (resp && resp.data && resp.data.rows) || [] -function setRoleName({ watchDependency, getValue, model }) { - watchDependency('model#/spec/secretEngineRef/name') - const engineName = getValue(model, '/spec/secretEngineRef/name') || '' - const timestamp = `${Math.floor(Date.now() / 1000)}` - return engineName ? `${engineName}-role-${timestamp}` : engineName -} + resources.map((item) => { + const name = (item.cells && item.cells[0].data) || '' + const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' + const resource = (item.cells?.length > 1 && item.cells[2].data) || '' + item.text = name + item.value = { + name: name, + namespace: namespace, + resource: resource, + } + return true + }) + const filteredResources = resources.filter( + (item) => item.value.resource.toLowerCase() === 'elasticsearch', + ) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } -function getDbNamespace({ getValue, storeGet, discriminator, watchDependency }) { - if (isConsole({ storeGet })) { - watchDependency('discriminator#/database') - const data = getValue(discriminator, '/database') || {} - return (data && data.namespace) || '' - } else { - const namespace = storeGet('/route/query/namespace') || '' - return namespace + function isDbSelected() { + if (!isConsole()) return true + // watchDependency('discriminator#/database') + const val = getValue(discriminator, '/database') || {} + return val && val.name ? true : false } -} -async function getEngines({ axios, storeGet, getValue, discriminator }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - const dbValue = getValue(discriminator, '/database') || {} - const dbName = storeGet('/route/params/name') || dbValue.name || '' - const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' - if (dbName) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - ) + function setRoleName() { + // watchDependency('model#/spec/secretEngineRef/name') + const engineName = getValue(model, '/spec/secretEngineRef/name') || '' + const timestamp = `${Math.floor(Date.now() / 1000)}` + + return engineName ? `${engineName}-role-${timestamp}` : engineName + } - const resources = (resp && resp.data && resp.data.items) || [] - const filteredResources = resources.filter( - (item) => - item.spec?.elasticsearch?.databaseRef?.name === dbName && - item.spec?.elasticsearch?.databaseRef?.namespace === dbNamespace, - ) - filteredResources.map((item) => { - const name = (item.metadata && item.metadata.name) || '' - item.text = name - item.value = name - return true - }) - return filteredResources - } catch (e) { - console.log(e) - return [] + function getDbNamespace() { + if (isConsole()) { + // watchDependency('discriminator#/database') + const data = getValue(discriminator, '/database') || {} + return (data && data.namespace) || '' + } else { + const namespace = storeGet('/route/query/namespace') || '' + return namespace } - } else return [] -} + } -return { - isConsole, - getDatabases, - isDbSelected, - setRoleName, - getDbNamespace, - getEngines, + async function getEngines(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + const dbValue = getValue(discriminator, '/database') || {} + const dbName = storeGet('/route/params/name') || dbValue.name || '' + const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' + if (dbName) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + ) + + const resources = (resp && resp.data && resp.data.items) || [] + const filteredResources = resources.filter( + (item) => + item.spec?.elasticsearch?.databaseRef?.name === dbName && + item.spec?.elasticsearch?.databaseRef?.namespace === dbNamespace, + ) + filteredResources.map((item) => { + const name = (item.metadata && item.metadata.name) || '' + item.text = name + item.value = name + return true + }) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } + + return { + isConsole, + getDatabases, + isDbSelected, + setRoleName, + getDbNamespace, + getEngines, + } } diff --git a/charts/enginekubevaultcom-mariadbrole-editor/ui/create-ui.yaml b/charts/enginekubevaultcom-mariadbrole-editor/ui/create-ui.yaml index 026d12a469..e2eb762364 100644 --- a/charts/enginekubevaultcom-mariadbrole-editor/ui/create-ui.yaml +++ b/charts/enginekubevaultcom-mariadbrole-editor/ui/create-ui.yaml @@ -1,73 +1,62 @@ -steps: -- form: - elements: - - fetch: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources - if: isConsole - label: - text: labels.selectDb - refresh: true - required: true - schema: - $ref: discriminator#/properties/database - sortable: true - type: select - - computed: setRoleName - label: - text: metadata.name - required: true - schema: - $ref: schema#/properties/metadata/properties/name +step: +- elements: + - if: + name: isConsole + type: function + label: Select Database + loader: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources + refresh: true + schema: temp/properties/database + sortable: true + type: select + validation: + type: required + - label: Name + schema: schema/properties/metadata/properties/name + type: input + validation: + type: required + watcher: + func: setRoleName + paths: + - schema/properties/spec/properties/secretEngineRef/properties/name + - disable: true + if: + name: isDbSelected + type: function + init: + type: func + value: getDbNamespace + label: Namespace + schema: schema/properties/metadata/properties/namespace + type: input + - if: + name: isDbSelected + type: function + label: Select SecretEngine + loader: getEngines|engine.kubevault.com|v1alpha1|secretengines + refresh: true + schema: schema/properties/spec/properties/secretEngineRef/properties/name + type: select + validation: + type: required + - label: Default TTL + schema: schema/properties/spec/properties/defaultTTL + type: input + - label: Max TTL + schema: schema/properties/spec/properties/maxTTL + type: input + - element: + label: Statement type: input - - computed: getDbNamespace - disabled: true - if: isDbSelected - label: - text: metadata.namespace - schema: - $ref: schema#/properties/metadata/properties/namespace + label: Creation Statement + schema: schema/properties/spec/properties/creationStatements + type: array-item-form + - element: + label: Statement type: input - - fetch: getEngines|engine.kubevault.com|v1alpha1|secretengines - if: isDbSelected - label: - text: labels.selectEngine - refresh: true - required: true - schema: - $ref: schema#/properties/spec/properties/secretEngineRef/properties/name - type: select - - label: - text: spec.defaultTTL - schema: - $ref: schema#/properties/spec/properties/defaultTTL - type: input - - label: - text: spec.maxTTL - schema: - $ref: schema#/properties/spec/properties/maxTTL - type: input - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/creationStatements/items - type: input - label: - text: spec.creation - schema: - $ref: schema#/properties/spec/properties/creationStatements - type: list-input-form - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/revocationStatements/items - type: input - label: - text: spec.revocation - schema: - $ref: schema#/properties/spec/properties/revocationStatements - type: list-input-form - type: single-step-form - id: basic - title: Create MariaDBRole + label: Revocation Statement + schema: schema/properties/spec/properties/revocationStatements + type: array-item-form + type: single-step-form type: multi-step-form diff --git a/charts/enginekubevaultcom-mariadbrole-editor/ui/functions.js b/charts/enginekubevaultcom-mariadbrole-editor/ui/functions.js index d04b8060d0..525d164783 100644 --- a/charts/enginekubevaultcom-mariadbrole-editor/ui/functions.js +++ b/charts/enginekubevaultcom-mariadbrole-editor/ui/functions.js @@ -1,113 +1,123 @@ -function isConsole({ storeGet }) { - const owner = storeGet('/route/params/user') - const path = storeGet('/route/path') - const prefix = `/${owner}/kubernetes` - if (path.startsWith(prefix)) return true - return false -} +const { ref, computed, axios, watch, useOperator, store } = window.vueHelpers || {} -async function getDatabases({ axios, storeGet }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - if (isConsole({ storeGet })) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - { - params: { - convertToTable: true, - labelSelector: 'k8s.io/group=kubedb.com', - }, - }, - ) +export const useFunc = (model) => { + const { getValue, setDiscriminatorValue, commit, storeGet, discriminator } = useOperator( + model, + store.state, + ) - const resources = (resp && resp.data && resp.data.rows) || [] + function isConsole() { + const owner = storeGet('/route/params/user') + const path = storeGet('/route/path') + const prefix = `/${owner}/kubernetes` + if (path.startsWith(prefix)) return true + return false + } - resources.map((item) => { - const name = (item.cells && item.cells[0].data) || '' - const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' - const resource = (item.cells?.length > 1 && item.cells[2].data) || '' - item.text = name - item.value = { - name: name, - namespace: namespace, - resource: resource, - } - return true - }) - const filteredResources = resources.filter( - (item) => item.value.resource.toLowerCase() === 'mariadb', - ) - return filteredResources - } catch (e) { - console.log(e) - return [] - } - } else return [] -} + async function getDatabases(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + if (isConsole()) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + { + params: { + convertToTable: true, + labelSelector: 'k8s.io/group=kubedb.com', + }, + }, + ) -function isDbSelected({ getValue, storeGet, discriminator, watchDependency }) { - if (!isConsole({ storeGet })) return true - watchDependency('discriminator#/database') - const val = getValue(discriminator, '/database') || {} - return val && val.name ? true : false -} + const resources = (resp && resp.data && resp.data.rows) || [] -function setRoleName({ watchDependency, getValue, model }) { - watchDependency('model#/spec/secretEngineRef/name') - const engineName = getValue(model, '/spec/secretEngineRef/name') || '' - const timestamp = `${Math.floor(Date.now() / 1000)}` - return engineName ? `${engineName}-role-${timestamp}` : engineName -} + resources.map((item) => { + const name = (item.cells && item.cells[0].data) || '' + const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' + const resource = (item.cells?.length > 1 && item.cells[2].data) || '' + item.text = name + item.value = { + name: name, + namespace: namespace, + resource: resource, + } + return true + }) + const filteredResources = resources.filter( + (item) => item.value.resource.toLowerCase() === 'mariadb', + ) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } -function getDbNamespace({ getValue, storeGet, discriminator, watchDependency }) { - if (isConsole({ storeGet })) { - watchDependency('discriminator#/database') - const data = getValue(discriminator, '/database') || {} - return (data && data.namespace) || '' - } else { - const namespace = storeGet('/route/query/namespace') || '' - return namespace + function isDbSelected() { + if (!isConsole()) return true + // watchDependency('discriminator#/database') + const val = getValue(discriminator, '/database') || {} + return val && val.name ? true : false } -} -async function getEngines({ axios, storeGet, getValue, discriminator }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - const dbValue = getValue(discriminator, '/database') || {} - const dbName = storeGet('/route/params/name') || dbValue.name || '' - const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' - if (dbName) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - ) + function setRoleName() { + // watchDependency('model#/spec/secretEngineRef/name') + const engineName = getValue(model, '/spec/secretEngineRef/name') || '' + const timestamp = `${Math.floor(Date.now() / 1000)}` + + return engineName ? `${engineName}-role-${timestamp}` : engineName + } - const resources = (resp && resp.data && resp.data.items) || [] - const filteredResources = resources.filter( - (item) => - item.spec?.mariadb?.databaseRef?.name === dbName && - item.spec?.mariadb?.databaseRef?.namespace === dbNamespace, - ) - filteredResources.map((item) => { - const name = (item.metadata && item.metadata.name) || '' - item.text = name - item.value = name - return true - }) - return filteredResources - } catch (e) { - console.log(e) - return [] + function getDbNamespace() { + if (isConsole()) { + // watchDependency('discriminator#/database') + const data = getValue(discriminator, '/database') || {} + return (data && data.namespace) || '' + } else { + const namespace = storeGet('/route/query/namespace') || '' + return namespace } - } else return [] -} + } -return { - isConsole, - getDatabases, - isDbSelected, - setRoleName, - getDbNamespace, - getEngines, + async function getEngines(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + const dbValue = getValue(discriminator, '/database') || {} + const dbName = storeGet('/route/params/name') || dbValue.name || '' + const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' + if (dbName) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + ) + + const resources = (resp && resp.data && resp.data.items) || [] + const filteredResources = resources.filter( + (item) => + item.spec?.mariadb?.databaseRef?.name === dbName && + item.spec?.mariadb?.databaseRef?.namespace === dbNamespace, + ) + filteredResources.map((item) => { + const name = (item.metadata && item.metadata.name) || '' + item.text = name + item.value = name + return true + }) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } + + return { + isConsole, + getDatabases, + isDbSelected, + setRoleName, + getDbNamespace, + getEngines, + } } diff --git a/charts/enginekubevaultcom-mysqlrole-editor/ui/create-ui.yaml b/charts/enginekubevaultcom-mysqlrole-editor/ui/create-ui.yaml index a68bfa4800..e2eb762364 100644 --- a/charts/enginekubevaultcom-mysqlrole-editor/ui/create-ui.yaml +++ b/charts/enginekubevaultcom-mysqlrole-editor/ui/create-ui.yaml @@ -1,73 +1,62 @@ -steps: -- form: - elements: - - fetch: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources - if: isConsole - label: - text: labels.selectDb - refresh: true - required: true - schema: - $ref: discriminator#/properties/database - sortable: true - type: select - - computed: setRoleName - label: - text: metadata.name - required: true - schema: - $ref: schema#/properties/metadata/properties/name +step: +- elements: + - if: + name: isConsole + type: function + label: Select Database + loader: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources + refresh: true + schema: temp/properties/database + sortable: true + type: select + validation: + type: required + - label: Name + schema: schema/properties/metadata/properties/name + type: input + validation: + type: required + watcher: + func: setRoleName + paths: + - schema/properties/spec/properties/secretEngineRef/properties/name + - disable: true + if: + name: isDbSelected + type: function + init: + type: func + value: getDbNamespace + label: Namespace + schema: schema/properties/metadata/properties/namespace + type: input + - if: + name: isDbSelected + type: function + label: Select SecretEngine + loader: getEngines|engine.kubevault.com|v1alpha1|secretengines + refresh: true + schema: schema/properties/spec/properties/secretEngineRef/properties/name + type: select + validation: + type: required + - label: Default TTL + schema: schema/properties/spec/properties/defaultTTL + type: input + - label: Max TTL + schema: schema/properties/spec/properties/maxTTL + type: input + - element: + label: Statement type: input - - computed: getDbNamespace - disabled: true - if: isDbSelected - label: - text: metadata.namespace - schema: - $ref: schema#/properties/metadata/properties/namespace + label: Creation Statement + schema: schema/properties/spec/properties/creationStatements + type: array-item-form + - element: + label: Statement type: input - - fetch: getEngines|engine.kubevault.com|v1alpha1|secretengines - if: isDbSelected - label: - text: labels.selectEngine - refresh: true - required: true - schema: - $ref: schema#/properties/spec/properties/secretEngineRef/properties/name - type: select - - label: - text: spec.defaultTTL - schema: - $ref: schema#/properties/spec/properties/defaultTTL - type: input - - label: - text: spec.maxTTL - schema: - $ref: schema#/properties/spec/properties/maxTTL - type: input - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/creationStatements/items - type: input - label: - text: spec.creation - schema: - $ref: schema#/properties/spec/properties/creationStatements - type: list-input-form - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/revocationStatements/items - type: input - label: - text: spec.revocation - schema: - $ref: schema#/properties/spec/properties/revocationStatements - type: list-input-form - type: single-step-form - id: basic - title: Create MySQLRole + label: Revocation Statement + schema: schema/properties/spec/properties/revocationStatements + type: array-item-form + type: single-step-form type: multi-step-form diff --git a/charts/enginekubevaultcom-mysqlrole-editor/ui/functions.js b/charts/enginekubevaultcom-mysqlrole-editor/ui/functions.js index aaf9f15c83..bba3dfb620 100644 --- a/charts/enginekubevaultcom-mysqlrole-editor/ui/functions.js +++ b/charts/enginekubevaultcom-mysqlrole-editor/ui/functions.js @@ -1,113 +1,123 @@ -function isConsole({ storeGet }) { - const owner = storeGet('/route/params/user') - const path = storeGet('/route/path') - const prefix = `/${owner}/kubernetes` - if (path.startsWith(prefix)) return true - return false -} +const { ref, computed, axios, watch, useOperator, store } = window.vueHelpers || {} -async function getDatabases({ axios, storeGet }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - if (isConsole({ storeGet })) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - { - params: { - convertToTable: true, - labelSelector: 'k8s.io/group=kubedb.com', - }, - }, - ) +export const useFunc = (model) => { + const { getValue, setDiscriminatorValue, commit, storeGet, discriminator } = useOperator( + model, + store.state, + ) - const resources = (resp && resp.data && resp.data.rows) || [] + function isConsole() { + const owner = storeGet('/route/params/user') + const path = storeGet('/route/path') + const prefix = `/${owner}/kubernetes` + if (path.startsWith(prefix)) return true + return false + } - resources.map((item) => { - const name = (item.cells && item.cells[0].data) || '' - const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' - const resource = (item.cells?.length > 1 && item.cells[2].data) || '' - item.text = name - item.value = { - name: name, - namespace: namespace, - resource: resource, - } - return true - }) - const filteredResources = resources.filter( - (item) => item.value.resource.toLowerCase() === 'mysql', - ) - return filteredResources - } catch (e) { - console.log(e) - return [] - } - } else return [] -} + async function getDatabases(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + if (isConsole()) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + { + params: { + convertToTable: true, + labelSelector: 'k8s.io/group=kubedb.com', + }, + }, + ) -function isDbSelected({ getValue, storeGet, discriminator, watchDependency }) { - if (!isConsole({ storeGet })) return true - watchDependency('discriminator#/database') - const val = getValue(discriminator, '/database') || {} - return val && val.name ? true : false -} + const resources = (resp && resp.data && resp.data.rows) || [] -function setRoleName({ watchDependency, getValue, model }) { - watchDependency('model#/spec/secretEngineRef/name') - const engineName = getValue(model, '/spec/secretEngineRef/name') || '' - const timestamp = `${Math.floor(Date.now() / 1000)}` - return engineName ? `${engineName}-role-${timestamp}` : engineName -} + resources.map((item) => { + const name = (item.cells && item.cells[0].data) || '' + const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' + const resource = (item.cells?.length > 1 && item.cells[2].data) || '' + item.text = name + item.value = { + name: name, + namespace: namespace, + resource: resource, + } + return true + }) + const filteredResources = resources.filter( + (item) => item.value.resource.toLowerCase() === 'mysql', + ) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } -function getDbNamespace({ getValue, storeGet, discriminator, watchDependency }) { - if (isConsole({ storeGet })) { - watchDependency('discriminator#/database') - const data = getValue(discriminator, '/database') || {} - return (data && data.namespace) || '' - } else { - const namespace = storeGet('/route/query/namespace') || '' - return namespace + function isDbSelected() { + if (!isConsole()) return true + // watchDependency('discriminator#/database') + const val = getValue(discriminator, '/database') || {} + return val && val.name ? true : false } -} -async function getEngines({ axios, storeGet, getValue, discriminator }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - const dbValue = getValue(discriminator, '/database') || {} - const dbName = storeGet('/route/params/name') || dbValue.name || '' - const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' - if (dbName) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - ) + function setRoleName() { + // watchDependency('model#/spec/secretEngineRef/name') + const engineName = getValue(model, '/spec/secretEngineRef/name') || '' + const timestamp = `${Math.floor(Date.now() / 1000)}` + + return engineName ? `${engineName}-role-${timestamp}` : engineName + } - const resources = (resp && resp.data && resp.data.items) || [] - const filteredResources = resources.filter( - (item) => - item.spec?.mysql?.databaseRef?.name === dbName && - item.spec?.mysql?.databaseRef?.namespace === dbNamespace, - ) - filteredResources.map((item) => { - const name = (item.metadata && item.metadata.name) || '' - item.text = name - item.value = name - return true - }) - return filteredResources - } catch (e) { - console.log(e) - return [] + function getDbNamespace() { + if (isConsole()) { + // watchDependency('discriminator#/database') + const data = getValue(discriminator, '/database') || {} + return (data && data.namespace) || '' + } else { + const namespace = storeGet('/route/query/namespace') || '' + return namespace } - } else return [] -} + } -return { - isConsole, - getDatabases, - isDbSelected, - setRoleName, - getDbNamespace, - getEngines, + async function getEngines(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + const dbValue = getValue(discriminator, '/database') || {} + const dbName = storeGet('/route/params/name') || dbValue.name || '' + const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' + if (dbName) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + ) + + const resources = (resp && resp.data && resp.data.items) || [] + const filteredResources = resources.filter( + (item) => + item.spec?.mysql?.databaseRef?.name === dbName && + item.spec?.mysql?.databaseRef?.namespace === dbNamespace, + ) + filteredResources.map((item) => { + const name = (item.metadata && item.metadata.name) || '' + item.text = name + item.value = name + return true + }) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } + + return { + isConsole, + getDatabases, + isDbSelected, + setRoleName, + getDbNamespace, + getEngines, + } } diff --git a/charts/enginekubevaultcom-postgresrole-editor/ui/create-ui.yaml b/charts/enginekubevaultcom-postgresrole-editor/ui/create-ui.yaml index 41f93a4740..e2eb762364 100644 --- a/charts/enginekubevaultcom-postgresrole-editor/ui/create-ui.yaml +++ b/charts/enginekubevaultcom-postgresrole-editor/ui/create-ui.yaml @@ -1,95 +1,62 @@ -steps: -- form: - elements: - - fetch: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources - if: isConsole - label: - text: labels.selectDb - refresh: true - required: true - schema: - $ref: discriminator#/properties/database - sortable: true - type: select - - computed: setRoleName - label: - text: metadata.name - required: true - schema: - $ref: schema#/properties/metadata/properties/name +step: +- elements: + - if: + name: isConsole + type: function + label: Select Database + loader: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources + refresh: true + schema: temp/properties/database + sortable: true + type: select + validation: + type: required + - label: Name + schema: schema/properties/metadata/properties/name + type: input + validation: + type: required + watcher: + func: setRoleName + paths: + - schema/properties/spec/properties/secretEngineRef/properties/name + - disable: true + if: + name: isDbSelected + type: function + init: + type: func + value: getDbNamespace + label: Namespace + schema: schema/properties/metadata/properties/namespace + type: input + - if: + name: isDbSelected + type: function + label: Select SecretEngine + loader: getEngines|engine.kubevault.com|v1alpha1|secretengines + refresh: true + schema: schema/properties/spec/properties/secretEngineRef/properties/name + type: select + validation: + type: required + - label: Default TTL + schema: schema/properties/spec/properties/defaultTTL + type: input + - label: Max TTL + schema: schema/properties/spec/properties/maxTTL + type: input + - element: + label: Statement type: input - - computed: getDbNamespace - disabled: true - if: isDbSelected - label: - text: metadata.namespace - schema: - $ref: schema#/properties/metadata/properties/namespace + label: Creation Statement + schema: schema/properties/spec/properties/creationStatements + type: array-item-form + - element: + label: Statement type: input - - fetch: getEngines|engine.kubevault.com|v1alpha1|secretengines - if: isDbSelected - label: - text: labels.selectEngine - refresh: true - required: true - schema: - $ref: schema#/properties/spec/properties/secretEngineRef/properties/name - type: select - - label: - text: spec.defaultTTL - schema: - $ref: schema#/properties/spec/properties/defaultTTL - type: input - - label: - text: spec.maxTTL - schema: - $ref: schema#/properties/spec/properties/maxTTL - type: input - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/creationStatements/items - type: input - label: - text: spec.creation - schema: - $ref: schema#/properties/spec/properties/creationStatements - type: list-input-form - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/revocationStatements/items - type: input - label: - text: spec.revocation - schema: - $ref: schema#/properties/spec/properties/revocationStatements - type: list-input-form - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/rollbackStatements/items - type: input - label: - text: spec.rollback - schema: - $ref: schema#/properties/spec/properties/rollbackStatements - type: list-input-form - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/renewStatements/items - type: input - label: - text: spec.renew - schema: - $ref: schema#/properties/spec/properties/renewStatements - type: list-input-form - type: single-step-form - id: basic - title: Create PostgresRole + label: Revocation Statement + schema: schema/properties/spec/properties/revocationStatements + type: array-item-form + type: single-step-form type: multi-step-form diff --git a/charts/enginekubevaultcom-postgresrole-editor/ui/functions.js b/charts/enginekubevaultcom-postgresrole-editor/ui/functions.js index 453fe64363..bdd5020b2a 100644 --- a/charts/enginekubevaultcom-postgresrole-editor/ui/functions.js +++ b/charts/enginekubevaultcom-postgresrole-editor/ui/functions.js @@ -1,113 +1,123 @@ -function isConsole({ storeGet }) { - const owner = storeGet('/route/params/user') - const path = storeGet('/route/path') - const prefix = `/${owner}/kubernetes` - if (path.startsWith(prefix)) return true - return false -} +const { ref, computed, axios, watch, useOperator, store } = window.vueHelpers || {} -async function getDatabases({ axios, storeGet }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - if (isConsole({ storeGet })) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - { - params: { - convertToTable: true, - labelSelector: 'k8s.io/group=kubedb.com', - }, - }, - ) +export const useFunc = (model) => { + const { getValue, setDiscriminatorValue, commit, storeGet, discriminator } = useOperator( + model, + store.state, + ) - const resources = (resp && resp.data && resp.data.rows) || [] + function isConsole() { + const owner = storeGet('/route/params/user') + const path = storeGet('/route/path') + const prefix = `/${owner}/kubernetes` + if (path.startsWith(prefix)) return true + return false + } - resources.map((item) => { - const name = (item.cells && item.cells[0].data) || '' - const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' - const resource = (item.cells?.length > 1 && item.cells[2].data) || '' - item.text = name - item.value = { - name: name, - namespace: namespace, - resource: resource, - } - return true - }) - const filteredResources = resources.filter( - (item) => item.value.resource.toLowerCase() === 'postgres', - ) - return filteredResources - } catch (e) { - console.log(e) - return [] - } - } else return [] -} + async function getDatabases(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + if (isConsole()) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + { + params: { + convertToTable: true, + labelSelector: 'k8s.io/group=kubedb.com', + }, + }, + ) -function isDbSelected({ getValue, storeGet, discriminator, watchDependency }) { - if (!isConsole({ storeGet })) return true - watchDependency('discriminator#/database') - const val = getValue(discriminator, '/database') || {} - return val && val.name ? true : false -} + const resources = (resp && resp.data && resp.data.rows) || [] -function setRoleName({ watchDependency, getValue, model }) { - watchDependency('model#/spec/secretEngineRef/name') - const engineName = getValue(model, '/spec/secretEngineRef/name') || '' - const timestamp = `${Math.floor(Date.now() / 1000)}` - return engineName ? `${engineName}-role-${timestamp}` : engineName -} + resources.map((item) => { + const name = (item.cells && item.cells[0].data) || '' + const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' + const resource = (item.cells?.length > 1 && item.cells[2].data) || '' + item.text = name + item.value = { + name: name, + namespace: namespace, + resource: resource, + } + return true + }) + const filteredResources = resources.filter( + (item) => item.value.resource.toLowerCase() === 'mongodb', + ) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } -function getDbNamespace({ getValue, storeGet, discriminator, watchDependency }) { - if (isConsole({ storeGet })) { - watchDependency('discriminator#/database') - const data = getValue(discriminator, '/database') || {} - return (data && data.namespace) || '' - } else { - const namespace = storeGet('/route/query/namespace') || '' - return namespace + function isDbSelected() { + if (!isConsole()) return true + // watchDependency('discriminator#/database') + const val = getValue(discriminator, '/database') || {} + return val && val.name ? true : false } -} -async function getEngines({ axios, storeGet, getValue, discriminator }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - const dbValue = getValue(discriminator, '/database') || {} - const dbName = storeGet('/route/params/name') || dbValue.name || '' - const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' - if (dbName) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - ) + function setRoleName() { + // watchDependency('model#/spec/secretEngineRef/name') + const engineName = getValue(model, '/spec/secretEngineRef/name') || '' + const timestamp = `${Math.floor(Date.now() / 1000)}` + + return engineName ? `${engineName}-role-${timestamp}` : engineName + } - const resources = (resp && resp.data && resp.data.items) || [] - const filteredResources = resources.filter( - (item) => - item.spec?.postgres?.databaseRef?.name === dbName && - item.spec?.postgres?.databaseRef?.namespace === dbNamespace, - ) - filteredResources.map((item) => { - const name = (item.metadata && item.metadata.name) || '' - item.text = name - item.value = name - return true - }) - return filteredResources - } catch (e) { - console.log(e) - return [] + function getDbNamespace() { + if (isConsole()) { + // watchDependency('discriminator#/database') + const data = getValue(discriminator, '/database') || {} + return (data && data.namespace) || '' + } else { + const namespace = storeGet('/route/query/namespace') || '' + return namespace } - } else return [] -} + } -return { - isConsole, - getDatabases, - isDbSelected, - setRoleName, - getDbNamespace, - getEngines, + async function getEngines(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + const dbValue = getValue(discriminator, '/database') || {} + const dbName = storeGet('/route/params/name') || dbValue.name || '' + const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' + if (dbName) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + ) + + const resources = (resp && resp.data && resp.data.items) || [] + const filteredResources = resources.filter( + (item) => + item.spec?.mongodb?.databaseRef?.name === dbName && + item.spec?.mongodb?.databaseRef?.namespace === dbNamespace, + ) + filteredResources.map((item) => { + const name = (item.metadata && item.metadata.name) || '' + item.text = name + item.value = name + return true + }) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } + + return { + isConsole, + getDatabases, + isDbSelected, + setRoleName, + getDbNamespace, + getEngines, + } } diff --git a/charts/enginekubevaultcom-redisrole-editor/ui/create-ui.yaml b/charts/enginekubevaultcom-redisrole-editor/ui/create-ui.yaml index c0c622c9c0..e2eb762364 100644 --- a/charts/enginekubevaultcom-redisrole-editor/ui/create-ui.yaml +++ b/charts/enginekubevaultcom-redisrole-editor/ui/create-ui.yaml @@ -1,73 +1,62 @@ -steps: -- form: - elements: - - fetch: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources - if: isConsole - label: - text: labels.selectDb - refresh: true - required: true - schema: - $ref: discriminator#/properties/database - sortable: true - type: select - - computed: setRoleName - label: - text: metadata.name - required: true - schema: - $ref: schema#/properties/metadata/properties/name +step: +- elements: + - if: + name: isConsole + type: function + label: Select Database + loader: getDatabases|core.k8s.appscode.com|v1alpha1|genericresources + refresh: true + schema: temp/properties/database + sortable: true + type: select + validation: + type: required + - label: Name + schema: schema/properties/metadata/properties/name + type: input + validation: + type: required + watcher: + func: setRoleName + paths: + - schema/properties/spec/properties/secretEngineRef/properties/name + - disable: true + if: + name: isDbSelected + type: function + init: + type: func + value: getDbNamespace + label: Namespace + schema: schema/properties/metadata/properties/namespace + type: input + - if: + name: isDbSelected + type: function + label: Select SecretEngine + loader: getEngines|engine.kubevault.com|v1alpha1|secretengines + refresh: true + schema: schema/properties/spec/properties/secretEngineRef/properties/name + type: select + validation: + type: required + - label: Default TTL + schema: schema/properties/spec/properties/defaultTTL + type: input + - label: Max TTL + schema: schema/properties/spec/properties/maxTTL + type: input + - element: + label: Statement type: input - - computed: getDbNamespace - disabled: true - if: isDbSelected - label: - text: metadata.namespace - schema: - $ref: schema#/properties/metadata/properties/namespace + label: Creation Statement + schema: schema/properties/spec/properties/creationStatements + type: array-item-form + - element: + label: Statement type: input - - fetch: getEngines|engine.kubevault.com|v1alpha1|secretengines - if: isDbSelected - label: - text: labels.selectEngine - refresh: true - required: true - schema: - $ref: schema#/properties/spec/properties/secretEngineRef/properties/name - type: select - - label: - text: spec.defaultTTL - schema: - $ref: schema#/properties/spec/properties/defaultTTL - type: input - - label: - text: spec.maxTTL - schema: - $ref: schema#/properties/spec/properties/maxTTL - type: input - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/creationStatements/items - type: input - label: - text: spec.creation - schema: - $ref: schema#/properties/spec/properties/creationStatements - type: list-input-form - - element: - label: - text: labels.statement - schema: - $ref: schema#/properties/spec/properties/revocationStatements/items - type: input - label: - text: spec.revocation - schema: - $ref: schema#/properties/spec/properties/revocationStatements - type: list-input-form - type: single-step-form - id: basic - title: Create RedisRole + label: Revocation Statement + schema: schema/properties/spec/properties/revocationStatements + type: array-item-form + type: single-step-form type: multi-step-form diff --git a/charts/enginekubevaultcom-redisrole-editor/ui/functions.js b/charts/enginekubevaultcom-redisrole-editor/ui/functions.js index a1010ff966..58bdc8b7d3 100644 --- a/charts/enginekubevaultcom-redisrole-editor/ui/functions.js +++ b/charts/enginekubevaultcom-redisrole-editor/ui/functions.js @@ -1,113 +1,123 @@ -function isConsole({ storeGet }) { - const owner = storeGet('/route/params/user') - const path = storeGet('/route/path') - const prefix = `/${owner}/kubernetes` - if (path.startsWith(prefix)) return true - return false -} +const { ref, computed, axios, watch, useOperator, store } = window.vueHelpers || {} -async function getDatabases({ axios, storeGet }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - if (isConsole({ storeGet })) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - { - params: { - convertToTable: true, - labelSelector: 'k8s.io/group=kubedb.com', - }, - }, - ) +export const useFunc = (model) => { + const { getValue, setDiscriminatorValue, commit, storeGet, discriminator } = useOperator( + model, + store.state, + ) - const resources = (resp && resp.data && resp.data.rows) || [] + function isConsole() { + const owner = storeGet('/route/params/user') + const path = storeGet('/route/path') + const prefix = `/${owner}/kubernetes` + if (path.startsWith(prefix)) return true + return false + } - resources.map((item) => { - const name = (item.cells && item.cells[0].data) || '' - const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' - const resource = (item.cells?.length > 1 && item.cells[2].data) || '' - item.text = name - item.value = { - name: name, - namespace: namespace, - resource: resource, - } - return true - }) - const filteredResources = resources.filter( - (item) => item.value.resource.toLowerCase() === 'redis', - ) - return filteredResources - } catch (e) { - console.log(e) - return [] - } - } else return [] -} + async function getDatabases(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + if (isConsole()) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + { + params: { + convertToTable: true, + labelSelector: 'k8s.io/group=kubedb.com', + }, + }, + ) -function isDbSelected({ getValue, storeGet, discriminator, watchDependency }) { - if (!isConsole({ storeGet })) return true - watchDependency('discriminator#/database') - const val = getValue(discriminator, '/database') || {} - return val && val.name ? true : false -} + const resources = (resp && resp.data && resp.data.rows) || [] -function setRoleName({ watchDependency, getValue, model }) { - watchDependency('model#/spec/secretEngineRef/name') - const engineName = getValue(model, '/spec/secretEngineRef/name') || '' - const timestamp = `${Math.floor(Date.now() / 1000)}` - return engineName ? `${engineName}-role-${timestamp}` : engineName -} + resources.map((item) => { + const name = (item.cells && item.cells[0].data) || '' + const namespace = (item.cells?.length > 0 && item.cells[1].data) || '' + const resource = (item.cells?.length > 1 && item.cells[2].data) || '' + item.text = name + item.value = { + name: name, + namespace: namespace, + resource: resource, + } + return true + }) + const filteredResources = resources.filter( + (item) => item.value.resource.toLowerCase() === 'redis', + ) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } -function getDbNamespace({ getValue, storeGet, discriminator, watchDependency }) { - if (isConsole({ storeGet })) { - watchDependency('discriminator#/database') - const data = getValue(discriminator, '/database') || {} - return (data && data.namespace) || '' - } else { - const namespace = storeGet('/route/query/namespace') || '' - return namespace + function isDbSelected() { + if (!isConsole()) return true + // watchDependency('discriminator#/database') + const val = getValue(discriminator, '/database') || {} + return val && val.name ? true : false } -} -async function getEngines({ axios, storeGet, getValue, discriminator }, group, version, resource) { - const owner = storeGet('/route/params/user') || '' - const cluster = storeGet('/route/params/cluster') || '' - const dbValue = getValue(discriminator, '/database') || {} - const dbName = storeGet('/route/params/name') || dbValue.name || '' - const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' - if (dbName) { - try { - const resp = await axios.get( - `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, - ) + function setRoleName() { + // watchDependency('model#/spec/secretEngineRef/name') + const engineName = getValue(model, '/spec/secretEngineRef/name') || '' + const timestamp = `${Math.floor(Date.now() / 1000)}` + + return engineName ? `${engineName}-role-${timestamp}` : engineName + } - const resources = (resp && resp.data && resp.data.items) || [] - const filteredResources = resources.filter( - (item) => - item.spec?.redis?.databaseRef?.name === dbName && - item.spec?.redis?.databaseRef?.namespace === dbNamespace, - ) - filteredResources.map((item) => { - const name = (item.metadata && item.metadata.name) || '' - item.text = name - item.value = name - return true - }) - return filteredResources - } catch (e) { - console.log(e) - return [] + function getDbNamespace() { + if (isConsole()) { + // watchDependency('discriminator#/database') + const data = getValue(discriminator, '/database') || {} + return (data && data.namespace) || '' + } else { + const namespace = storeGet('/route/query/namespace') || '' + return namespace } - } else return [] -} + } -return { - isConsole, - getDatabases, - isDbSelected, - setRoleName, - getDbNamespace, - getEngines, + async function getEngines(group, version, resource) { + const owner = storeGet('/route/params/user') || '' + const cluster = storeGet('/route/params/cluster') || '' + const dbValue = getValue(discriminator, '/database') || {} + const dbName = storeGet('/route/params/name') || dbValue.name || '' + const dbNamespace = storeGet('/route/query/namespace') || dbValue.namespace || '' + if (dbName) { + try { + const resp = await axios.get( + `/clusters/${owner}/${cluster}/proxy/${group}/${version}/${resource}`, + ) + + const resources = (resp && resp.data && resp.data.items) || [] + const filteredResources = resources.filter( + (item) => + item.spec?.redis?.databaseRef?.name === dbName && + item.spec?.redis?.databaseRef?.namespace === dbNamespace, + ) + filteredResources.map((item) => { + const name = (item.metadata && item.metadata.name) || '' + item.text = name + item.value = name + return true + }) + return filteredResources + } catch (e) { + console.log(e) + return [] + } + } else return [] + } + + return { + isConsole, + getDatabases, + isDbSelected, + setRoleName, + getDbNamespace, + getEngines, + } }