Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 46 additions & 30 deletions charts/kubedbcom-druid-editor/ui/edit-ui.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,7 @@ step:

- type: single-step-form
id: monitoring
loader: initMonitoring
elements:
- type: label-element
label: To update Exporter Resource section click on Create OpsRequest
Expand All @@ -641,7 +642,7 @@ step:
schema: temp/properties/opsRequestUrl
init:
type: func
value: getOpsRequestUrl|VerticalScaling
value: getOpsRequestUrl|scale-vertically
- type: switch
label: Enable Monitoring
fullwidth: true
Expand All @@ -654,8 +655,6 @@ step:
paths:
- temp/properties/enableMonitoring
- type: block-layout
label: Backup form
showLabels: false
if:
type: function
name: showMonitoringSection
Expand Down Expand Up @@ -710,12 +709,18 @@ step:
- type: input
label: Interval
schema: interval
validation:
type: required
- type: input
label: Path
schema: path
validation:
type: required
- type: input
label: Port
schema: port
validation:
type: required
- type: select
multiple: true
label: Match Namespaces
Expand Down Expand Up @@ -797,21 +802,30 @@ step:
label: Metadata
showLabels: false
elements:
#remove: should be array-object-form after fixes
- type: block-layout
label: New Environment Variable
showLabels: true
hideBlock: true
# schema: schema/properties/resources/properties/kubedbComDruid/properties/spec/properties/monitor/properties/prometheus/properties/exporter/properties/env
- type: array-object-form
init:
type: func
value: initEnvArray
label: Environment Variables
buttonClass: is-light is-outlined
watcher:
func: onEnvArrayChange
paths:
- temp/properties/env
schema: temp/properties/env
elements:
- type: input
label: Name
schema: schema/properties/resources/properties/kubedbComDruid/properties/spec/properties/monitor/properties/prometheus/properties/exporter/properties/env/properties/items/properties/name
schema: name
validation:
type: required
- type: radio
label: Value From
schema: temp/properties/valueFromType
init:
type: func
validation:
type: required
init:
type: func
value: setValueFrom
options:
- text: Input
Expand All @@ -824,58 +838,60 @@ step:
func: onValueFromChange
paths:
- temp/properties/valueFromType
- type: input
label: Value
schema: schema/properties/resources/properties/kubedbComDruid/properties/spec/properties/monitor/properties/prometheus/properties/exporter/properties/env/properties/items/properties/value
- type: input
label: Value
schema: value
validation:
type: required
if:
name: isEqualToValueFromType|input
name: isEqualToTemp|input
type: function
- type: select
if:
type: function
name: isEqualToValueFromType|configMap
name: isEqualToTemp|configMap
label: ConfigMap Name
schema: schema/properties/resources/properties/kubedbComDruid/properties/spec/properties/monitor/properties/prometheus/properties/exporter/properties/env/properties/items/properties/valueFrom/properties/configMapKeyRef/properties/name
schema: valueFrom/properties/configMapKeyRef/properties/name
loader:
name: resourceNames|core|v1|configmaps
watchPaths:
- schema/metadata/release/namespace
# allowUserDefinedOption: true
validation:
type: required
- type: select
label: ConfigMap Key
schema: schema/properties/resources/properties/kubedbComDruid/properties/spec/properties/monitor/properties/prometheus/properties/exporter/properties/env/properties/items/properties/valueFrom/properties/configMapKeyRef/properties/key
schema: valueFrom/properties/configMapKeyRef/properties/key
if:
type: function
name: isEqualToValueFromType|configMap
name: isEqualToTemp|configMap
loader:
name: getConfigMapKeys
watchPaths:
- schema/properties/resources/properties/kubedbComDruid/properties/spec/properties/monitor/properties/prometheus/properties/exporter/properties/env/properties/items/valueFrom/configMapKeyRef/name
- schema/resources/kubedbComDruid/spec/monitor/prometheus/exporter/env/dynamicIndex/valueFrom/configMapKeyRef/name
- schema/metadata/release/namespace
# allowUserDefinedOption: true
- type: select
label: Secret Name
schema: schema/properties/resources/properties/kubedbComDruid/properties/spec/properties/monitor/properties/prometheus/properties/exporter/properties/env/properties/items/properties/valueFrom/properties/secretKeyRef/properties/name
schema: valueFrom/properties/secretKeyRef/properties/name
if:
type: function
name: isEqualToValueFromType|secret
name: isEqualToTemp|secret
loader:
name: getSecrets
watchPaths:
- schema/metadata/release/namespace
# allowUserDefinedOption: true
validation:
type: required
- type: select
label: Secret Key
schema: schema/properties/resources/properties/kubedbComDruid/properties/spec/properties/monitor/properties/prometheus/properties/exporter/properties/env/properties/items/properties/valueFrom/properties/secretKeyRef/properties/key
schema: valueFrom/properties/secretKeyRef/properties/key
if:
type: function
name: isEqualToValueFromType|secret
name: isEqualToTemp|secret
loader:
name: getSecretKeys
watchPaths:
- schema/properties/resources/properties/kubedbComDruid/properties/spec/properties/monitor/properties/prometheus/properties/exporter/properties/env/properties/items/valueFrom/secretKeyRef/name
- schema/resources/kubedbComDruid/spec/monitor/prometheus/exporter/env/dynamicIndex/valueFrom/secretKeyRef/name
- schema/metadata/release/namespace
# allowUserDefinedOption: true

- type: single-step-form
id: binding
Expand Down
83 changes: 70 additions & 13 deletions charts/kubedbcom-druid-editor/ui/functions.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export const useFunc = (model) => {
setDiscriminatorValue('/enableMonitoring', true)
setDiscriminatorValue('/customizeExporter', true)
setDiscriminatorValue('/valueFromType', 'input')
setDiscriminatorValue('/env', [])

// Compute Autoscaler Discriminators
setDiscriminatorValue('/dbDetails', false)
Expand Down Expand Up @@ -179,11 +180,11 @@ export const useFunc = (model) => {
return getValue(model, path)
}

function isEqualToValueFromType(value) {
//watchDependency('discriminator#/valueFromType')
const valueFrom = getValue(discriminator, '/valueFromType')
return valueFrom === value
}
// function isEqualToValueFromType(value) {
// //watchDependency('discriminator#/valueFromType')
// const valueFrom = getValue(discriminator, '/valueFromType')
// return valueFrom === value
// }

async function getNamespacedResourceList(
axios,
Expand Down Expand Up @@ -1796,13 +1797,13 @@ export const useFunc = (model) => {
* Used to populate dropdown options for ConfigMap key selection
* @returns {Array} List of ConfigMap keys with text/value pairs
*/
async function getConfigMapKeys() {
async function getConfigMapKeys(index) {
const owner = storeGet('/route/params/user')
const cluster = storeGet('/route/params/cluster')
const namespace = getValue(model, '/metadata/release/namespace')
const configMapName = getValue(
model,
'/resources/kubedbComDruid/spec/monitor/prometheus/exporter/env/items/valueFrom/configMapKeyRef/name',
`/resources/kubedbComDruid/spec/monitor/prometheus/exporter/env/${index}/valueFrom/configMapKeyRef/name`,
)

// watchDependency('data#/namespace')
Expand Down Expand Up @@ -1865,13 +1866,13 @@ export const useFunc = (model) => {
}
}

async function getSecretKeys() {
async function getSecretKeys(index) {
const owner = storeGet('/route/params/user')
const cluster = storeGet('/route/params/cluster')
const namespace = getValue(model, '/metadata/release/namespace')
const secretName = getValue(
model,
'/resources/kubedbComDruid/spec/monitor/prometheus/exporter/env/items/valueFrom/secretKeyRef/name',
`/resources/kubedbComDruid/spec/monitor/prometheus/exporter/env/${index}/valueFrom/secretKeyRef/name`,
)

// watchDependency('data#/namespace')
Expand Down Expand Up @@ -1947,8 +1948,7 @@ export const useFunc = (model) => {
const routeRootPath = storeGet('/route/path')
const pathPrefix = `${domain}/db${routeRootPath}`
const pathSplit = pathPrefix.split('/').slice(0, -1).join('/')
const pathConstructedForKubedb =
pathSplit + `/create-opsrequest-${reqType.toLowerCase()}?namespace=${namespace}`
const pathConstructedForKubedb = pathSplit + `/${reqType.toLowerCase()}?namespace=${namespace}`

const isKube = !!storeGet('/route/params/actions')

Expand All @@ -1957,7 +1957,61 @@ export const useFunc = (model) => {
return `${domain}/console/${owner}/kubernetes/${cluster}/ops.kubedb.com/v1alpha1/druidopsrequests/create?name=${dbname}&namespace=${namespace}&group=${group}&version=${version}&resource=${resource}&kind=${kind}&page=operations&requestType=${reqType}`
}

// ************************* Export All Functions **********************************************
function onEnvArrayChange() {
const env = getValue(discriminator, '/env') || []
let ret = {}
// filter out temp values
const filteredEnv = env?.map((item) => {
const { temp, ...rest } = item
if (temp?.valueFromType === 'input') {
const { name, value } = rest
ret = { name, value }
} else if (temp?.valueFromType === 'configMap') {
const { name } = rest
const { configMapKeyRef } = rest?.valueFrom || {}
ret = { name, valueFrom: { configMapKeyRef } }
} else if (temp?.valueFromType === 'secret') {
const { name } = rest
const { secretKeyRef } = rest?.valueFrom || {}
ret = { name, valueFrom: { secretKeyRef } }
}
return ret
})

if (filteredEnv.length)
commit('wizard/model$update', {
path: '/resources/kubedbComDruid/spec/monitor/prometheus/exporter/env',
value: filteredEnv,
force: true,
})
}

function initEnvArray() {
const env = getValue(model, '/resources/kubedbComDruid/spec/monitor/prometheus/exporter/env')

return env || []
}

function isEqualToTemp(value, index) {
//watchDependency('discriminator#/valueFromType')
const valueFrom = getValue(discriminator, `/env/${index}/temp/valueFromType`)
return valueFrom === value
}

function initMonitoring() {
const env =
getValue(model, '/resources/kubedbComDruid/spec/monitor/prometheus/exporter/env') || []
setDiscriminatorValue('/env', env)
let tempEnv = []
env.forEach((item) => {
let radio = ''
if (item.value) radio = 'input'
else if (item.valueFrom && item.valueFrom.configMapKeyRef) radio = 'configMap'
else if (item.valueFrom && item.valueFrom.secretKeyRef) radio = 'secret'
tempEnv.push({ ...item, temp: { valueFromType: radio } })
})
setDiscriminatorValue('/env', tempEnv)
}

return {
// Common Helper Functions
Expand Down Expand Up @@ -2074,10 +2128,13 @@ export const useFunc = (model) => {
isSecretTypeValueFrom,
isInputTypeValueFrom,
onValueFromChange,
isEqualToValueFromType,
getConfigMapKeys,
getSecrets,
getSecretKeys,
onEnvArrayChange,
initEnvArray,
isEqualToTemp,
initMonitoring,

// Gateway Binding Functions
isBindingAlreadyOn,
Expand Down
Loading
Loading