diff --git a/packages/entities/entities-redis-configurations/docs/redis-configuration-form.md b/packages/entities/entities-redis-configurations/docs/redis-configuration-form.md index 29201491c4..44a09d13d9 100644 --- a/packages/entities/entities-redis-configurations/docs/redis-configuration-form.md +++ b/packages/entities/entities-redis-configurations/docs/redis-configuration-form.md @@ -93,6 +93,12 @@ A form component for Redis Configurations. - default: `undefined` - Whether the server_name field can accept vault references. + - `isCEFieldsReferenceable` + - type: `boolean` + - required: `false` + - default: `undefined` + - Whether the CE partial fields can accept vault references. + The base konnect or kongManger config. #### `partialId` diff --git a/packages/entities/entities-redis-configurations/sandbox/pages/RedisConfigurationFormPage.vue b/packages/entities/entities-redis-configurations/sandbox/pages/RedisConfigurationFormPage.vue index b31825c81a..ff95e11af3 100644 --- a/packages/entities/entities-redis-configurations/sandbox/pages/RedisConfigurationFormPage.vue +++ b/packages/entities/entities-redis-configurations/sandbox/pages/RedisConfigurationFormPage.vue @@ -49,6 +49,7 @@ const kongManagerConfig: KongManagerRedisConfigurationFormConfig = { isPortReferenceable: true, isHostReferenceable: true, isServerNameReferenceable: true, + isCEFieldsReferenceable: true, cancelRoute: { name: 'redis-configuration-list' }, } diff --git a/packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.cy.ts b/packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.cy.ts index 899e35df2d..ddf1d6f3c4 100644 --- a/packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.cy.ts +++ b/packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.cy.ts @@ -18,6 +18,7 @@ const baseConfigKM: KongManagerRedisConfigurationFormConfig = { isPortReferenceable: true, isHostReferenceable: true, isServerNameReferenceable: true, + isCEFieldsReferenceable: true, cancelRoute, } @@ -29,6 +30,7 @@ const baseConfigKonnect: KonnectRedisConfigurationFormConfig = { isPortReferenceable: true, isHostReferenceable: true, isServerNameReferenceable: true, + isCEFieldsReferenceable: false, cancelRoute, } @@ -175,9 +177,12 @@ describe('', { cy.getTestId('redis-connection-is-proxied-checkbox').should('not.exist') cy.getTestId('redis-host-input').should('be.visible') + cy.getTestId('secret-picker-provider-for-host').should(config.isCEFieldsReferenceable ? 'be.visible' : 'not.exist') cy.getTestId('redis-port-input').should('be.visible') + cy.getTestId('secret-picker-provider-for-port').should(config.isCEFieldsReferenceable ? 'be.visible' : 'not.exist') cy.getTestId('redis-timeout-input').should('be.visible') cy.getTestId('redis-auth-provider-select').should('be.visible') + cy.getTestId('secret-picker-provider-for-server_name').should(config.isCEFieldsReferenceable ? 'be.visible' : 'not.exist') // Host/Port EE fields cy.getTestId('redis-type-select').click() diff --git a/packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.vue b/packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.vue index b846ed1250..3141c70ba9 100644 --- a/packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.vue +++ b/packages/entities/entities-redis-configurations/src/components/RedisConfigurationForm.vue @@ -222,7 +222,7 @@ :readonly="form.readonly" /> ('json') +const isReferenceable = computed<{ host: boolean, port: boolean, serverName: boolean }>(() => { + const canReferenceFields = + redisType.value === RedisType.HOST_PORT_EE || + (redisType.value === RedisType.HOST_PORT_CE && !!props.config.isCEFieldsReferenceable) + + return { + host: canReferenceFields && !!props.config.isHostReferenceable, + port: canReferenceFields && !!props.config.isPortReferenceable, + serverName: canReferenceFields && !!props.config.isServerNameReferenceable, + } +}) + const typeOptions = computed(() => { return [ { diff --git a/packages/entities/entities-redis-configurations/src/composables/useRedisConfigurationForm.ts b/packages/entities/entities-redis-configurations/src/composables/useRedisConfigurationForm.ts index e3b57286ef..457c24dec5 100644 --- a/packages/entities/entities-redis-configurations/src/composables/useRedisConfigurationForm.ts +++ b/packages/entities/entities-redis-configurations/src/composables/useRedisConfigurationForm.ts @@ -126,7 +126,9 @@ export const useRedisConfigurationForm = (options: Options) => { config: { cloud_authentication: getCloudAuthConfig(), host: form.fields.config.host, - port: s.int(form.fields.config.port), + port: Number.isNaN(Number(form.fields.config.port)) + ? form.fields.config.port + : s.int(form.fields.config.port), timeout: s.int(form.fields.config.timeout), username: s.str(form.fields.config.username, null), database: s.int(form.fields.config.database), diff --git a/packages/entities/entities-redis-configurations/src/types/redis-configuration-form.ts b/packages/entities/entities-redis-configurations/src/types/redis-configuration-form.ts index a2723d0781..1c3ac2a553 100644 --- a/packages/entities/entities-redis-configurations/src/types/redis-configuration-form.ts +++ b/packages/entities/entities-redis-configurations/src/types/redis-configuration-form.ts @@ -19,6 +19,10 @@ export interface BaseRedisConfigurationFormConfig { * Whether the server_name field can accept vault references */ isServerNameReferenceable?: boolean + /** + * Whether the above three fields can accept vault references in Redis CE partials + */ + isCEFieldsReferenceable?: boolean } export interface KonnectRedisConfigurationFormConfig extends KonnectBaseFormConfig, BaseRedisConfigurationFormConfig { }