vault/ui/app/forms/sync/gcp-sm.ts
Jordan Reimer a6ab9bed1d
[UI] Ember Data Migration - Form Type Updates (#31011)
* updates type handling for forms

* fixes validation in aws and ssh config forms

* fixes issue with missing sync destination name
2025-06-19 10:03:09 -06:00

49 lines
1.5 KiB
TypeScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import Form from 'vault/forms/form';
import FormField from 'vault/utils/forms/field';
import FormFieldGroup from 'vault/utils/forms/field-group';
import { commonFields, getPayload } from './shared';
import type { SystemWriteSyncDestinationsGcpSmNameRequest } from '@hashicorp/vault-client-typescript';
type GcpSmFormData = SystemWriteSyncDestinationsGcpSmNameRequest & {
name: string;
};
export default class GcpSmForm extends Form<GcpSmFormData> {
formFieldGroups = [
new FormFieldGroup('default', [
commonFields.name,
new FormField('projectId', 'string', {
label: 'Project ID',
subText:
'The target project to manage secrets in. If set, overrides the project derived from the service account JSON credentials or application default credentials.',
}),
]),
new FormFieldGroup('Credentials', [
new FormField('credentials', 'string', {
label: 'JSON credentials',
subText:
'If empty, Vault will use the GOOGLE_APPLICATION_CREDENTIALS environment variable if configured.',
editType: 'file',
docLink: '/vault/docs/secrets/gcp#authentication',
}),
]),
new FormFieldGroup('Advanced configuration', [
commonFields.granularity,
commonFields.secretNameTemplate,
commonFields.customTags,
]),
];
toJSON() {
const formState = super.toJSON();
const data = getPayload<GcpSmFormData>('gcp-sm', this.data, this.isNew);
return { ...formState, data };
}
}