Skip to content

Commit f7c733e

Browse files
feat(redis): referenceable fields in ce (#2741)
1 parent 66ee8e8 commit f7c733e

File tree

6 files changed

+34
-4
lines changed

6 files changed

+34
-4
lines changed

packages/entities/entities-redis-configurations/docs/redis-configuration-form.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ A form component for Redis Configurations.
9393
- default: `undefined`
9494
- Whether the server_name field can accept vault references.
9595

96+
- `isCEFieldsReferenceable`
97+
- type: `boolean`
98+
- required: `false`
99+
- default: `undefined`
100+
- Whether the CE partial fields can accept vault references.
101+
96102
The base konnect or kongManger config.
97103

98104
#### `partialId`

packages/entities/entities-redis-configurations/sandbox/pages/RedisConfigurationFormPage.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ const kongManagerConfig: KongManagerRedisConfigurationFormConfig = {
4949
isPortReferenceable: true,
5050
isHostReferenceable: true,
5151
isServerNameReferenceable: true,
52+
isCEFieldsReferenceable: true,
5253
cancelRoute: { name: 'redis-configuration-list' },
5354
}
5455

packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.cy.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const baseConfigKM: KongManagerRedisConfigurationFormConfig = {
1818
isPortReferenceable: true,
1919
isHostReferenceable: true,
2020
isServerNameReferenceable: true,
21+
isCEFieldsReferenceable: true,
2122
cancelRoute,
2223
}
2324

@@ -29,6 +30,7 @@ const baseConfigKonnect: KonnectRedisConfigurationFormConfig = {
2930
isPortReferenceable: true,
3031
isHostReferenceable: true,
3132
isServerNameReferenceable: true,
33+
isCEFieldsReferenceable: false,
3234
cancelRoute,
3335
}
3436

@@ -175,9 +177,12 @@ describe('<RedisConfigurationForm />', {
175177
cy.getTestId('redis-connection-is-proxied-checkbox').should('not.exist')
176178

177179
cy.getTestId('redis-host-input').should('be.visible')
180+
cy.getTestId('secret-picker-provider-for-host').should(config.isCEFieldsReferenceable ? 'be.visible' : 'not.exist')
178181
cy.getTestId('redis-port-input').should('be.visible')
182+
cy.getTestId('secret-picker-provider-for-port').should(config.isCEFieldsReferenceable ? 'be.visible' : 'not.exist')
179183
cy.getTestId('redis-timeout-input').should('be.visible')
180184
cy.getTestId('redis-auth-provider-select').should('be.visible')
185+
cy.getTestId('secret-picker-provider-for-server_name').should(config.isCEFieldsReferenceable ? 'be.visible' : 'not.exist')
181186

182187
// Host/Port EE fields
183188
cy.getTestId('redis-type-select').click()

packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.vue

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@
222222
:readonly="form.readonly"
223223
/>
224224
<VaultSecretPickerProvider
225-
v-if="redisType === RedisType.HOST_PORT_EE && config.isHostReferenceable"
225+
v-if="isReferenceable.host"
226226
class="secret-picker-provider"
227227
data-testid="secret-picker-provider-for-host"
228228
:disabled="form.readonly"
@@ -242,7 +242,7 @@
242242
:readonly="form.readonly"
243243
/>
244244
<VaultSecretPickerProvider
245-
v-if="redisType === RedisType.HOST_PORT_EE && config.isPortReferenceable"
245+
v-if="isReferenceable.port"
246246
class="secret-picker-provider"
247247
data-testid="secret-picker-provider-for-port"
248248
:disabled="form.readonly"
@@ -364,7 +364,7 @@
364364
:readonly="form.readonly"
365365
/>
366366
<VaultSecretPickerProvider
367-
v-if="redisType === RedisType.HOST_PORT_EE && config.isServerNameReferenceable"
367+
v-if="isReferenceable.serverName"
368368
class="secret-picker-provider"
369369
data-testid="secret-picker-provider-for-server_name"
370370
:disabled="form.readonly"
@@ -563,6 +563,18 @@ const router = useRouter()
563563
564564
const codeBlockType = ref<string>('json')
565565
566+
const isReferenceable = computed<{ host: boolean, port: boolean, serverName: boolean }>(() => {
567+
const canReferenceFields =
568+
redisType.value === RedisType.HOST_PORT_EE ||
569+
(redisType.value === RedisType.HOST_PORT_CE && !!props.config.isCEFieldsReferenceable)
570+
571+
return {
572+
host: canReferenceFields && !!props.config.isHostReferenceable,
573+
port: canReferenceFields && !!props.config.isPortReferenceable,
574+
serverName: canReferenceFields && !!props.config.isServerNameReferenceable,
575+
}
576+
})
577+
566578
const typeOptions = computed<SelectItem[]>(() => {
567579
return [
568580
{

packages/entities/entities-redis-configurations/src/composables/useRedisConfigurationForm.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ export const useRedisConfigurationForm = (options: Options) => {
126126
config: {
127127
cloud_authentication: getCloudAuthConfig(),
128128
host: form.fields.config.host,
129-
port: s.int(form.fields.config.port),
129+
port: Number.isNaN(Number(form.fields.config.port))
130+
? form.fields.config.port
131+
: s.int(form.fields.config.port),
130132
timeout: s.int(form.fields.config.timeout),
131133
username: s.str(form.fields.config.username, null),
132134
database: s.int(form.fields.config.database),

packages/entities/entities-redis-configurations/src/types/redis-configuration-form.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ export interface BaseRedisConfigurationFormConfig {
1919
* Whether the server_name field can accept vault references
2020
*/
2121
isServerNameReferenceable?: boolean
22+
/**
23+
* Whether the above three fields can accept vault references in Redis CE partials
24+
*/
25+
isCEFieldsReferenceable?: boolean
2226
}
2327

2428
export interface KonnectRedisConfigurationFormConfig extends KonnectBaseFormConfig, BaseRedisConfigurationFormConfig { }

0 commit comments

Comments
 (0)