Moved tags to aws iam provider inputs

This commit is contained in:
carlosmonastyrski
2025-06-19 15:01:35 -03:00
parent b790dbb36f
commit 20f0eeed35
11 changed files with 45 additions and 68 deletions
@@ -34,7 +34,12 @@ const formSchema = z.object({
permissionBoundaryPolicyArn: z.string().trim().optional(),
policyDocument: z.string().trim().optional(),
userGroups: z.string().trim().optional(),
policyArns: z.string().trim().optional()
policyArns: z.string().trim().optional(),
tags: z
.array(
z.object({ key: z.string().trim().min(1).max(128), value: z.string().trim().min(1).max(256) })
)
.optional()
}),
z.object({
method: z.literal(DynamicSecretAwsIamAuth.AssumeRole),
@@ -44,7 +49,12 @@ const formSchema = z.object({
permissionBoundaryPolicyArn: z.string().trim().optional(),
policyDocument: z.string().trim().optional(),
userGroups: z.string().trim().optional(),
policyArns: z.string().trim().optional()
policyArns: z.string().trim().optional(),
tags: z
.array(
z.object({ key: z.string().trim().min(1).max(128), value: z.string().trim().min(1).max(256) })
)
.optional()
})
]),
defaultTTL: z.string().superRefine((val, ctx) => {
@@ -69,12 +79,7 @@ const formSchema = z.object({
}),
name: z.string().refine((val) => val.toLowerCase() === val, "Must be lowercase"),
environment: z.object({ name: z.string(), slug: z.string() }),
usernameTemplate: z.string().nullable().optional(),
tags: z
.array(
z.object({ key: z.string().trim().min(1).max(128), value: z.string().trim().min(1).max(256) })
)
.optional()
usernameTemplate: z.string().nullable().optional()
});
type TForm = z.infer<typeof formSchema>;
@@ -107,8 +112,7 @@ export const AwsIamInputForm = ({
usernameTemplate: "{{randomUsername}}",
provider: {
method: DynamicSecretAwsIamAuth.AssumeRole
},
tags: []
}
}
});
@@ -121,8 +125,7 @@ export const AwsIamInputForm = ({
provider,
defaultTTL,
environment,
usernameTemplate,
tags
usernameTemplate
}: TForm) => {
// wait till previous request is finished
if (createDynamicSecret.isPending) return;
@@ -138,8 +141,7 @@ export const AwsIamInputForm = ({
projectSlug,
environmentSlug: environment.slug,
usernameTemplate:
!usernameTemplate || isDefaultUsernameTemplate ? undefined : usernameTemplate,
tags
!usernameTemplate || isDefaultUsernameTemplate ? undefined : usernameTemplate
});
onCompleted();
} catch {
@@ -408,7 +410,7 @@ export const AwsIamInputForm = ({
</FormControl>
)}
/>
<MetadataForm control={control} name="tags" isValueRequired />
<MetadataForm control={control} name="provider.tags" title="Tags" isValueRequired />
{!isSingleEnvironmentMode && (
<Controller
control={control}
@@ -23,7 +23,10 @@ const formSchema = z.object({
permissionBoundaryPolicyArn: z.string().trim().optional(),
policyDocument: z.string().trim().optional(),
userGroups: z.string().trim().optional(),
policyArns: z.string().trim().optional()
policyArns: z.string().trim().optional(),
tags: z
.array(z.object({ key: z.string().trim().min(1), value: z.string().trim().min(1) }))
.optional(),
}),
z.object({
method: z.literal(DynamicSecretAwsIamAuth.AssumeRole),
@@ -33,7 +36,10 @@ const formSchema = z.object({
permissionBoundaryPolicyArn: z.string().trim().optional(),
policyDocument: z.string().trim().optional(),
userGroups: z.string().trim().optional(),
policyArns: z.string().trim().optional()
policyArns: z.string().trim().optional(),
tags: z
.array(z.object({ key: z.string().trim().min(1), value: z.string().trim().min(1) }))
.optional()
})
]),
defaultTTL: z.string().superRefine((val, ctx) => {
@@ -58,9 +64,6 @@ const formSchema = z.object({
})
.nullable(),
newName: slugSchema().optional(),
tags: z
.array(z.object({ key: z.string().trim().min(1), value: z.string().trim().min(1) }))
.optional(),
usernameTemplate: z.string().trim().nullable().optional()
});
type TForm = z.infer<typeof formSchema>;
@@ -95,7 +98,6 @@ export const EditDynamicSecretAwsIamForm = ({
inputs: {
...(dynamicSecret.inputs as TForm["inputs"])
},
tags: dynamicSecret.tags
}
});
const isAccessKeyMethod = watch("inputs.method") === DynamicSecretAwsIamAuth.AccessKey;
@@ -107,8 +109,7 @@ export const EditDynamicSecretAwsIamForm = ({
maxTTL,
defaultTTL,
newName,
usernameTemplate,
tags
usernameTemplate
}: TForm) => {
// wait till previous request is finished
if (updateDynamicSecret.isPending) return;
@@ -125,8 +126,7 @@ export const EditDynamicSecretAwsIamForm = ({
inputs,
newName: newName === dynamicSecret.name ? undefined : newName,
usernameTemplate:
!usernameTemplate || isDefaultUsernameTemplate ? null : usernameTemplate,
tags
!usernameTemplate || isDefaultUsernameTemplate ? null : usernameTemplate
}
});
onClose();
@@ -389,7 +389,7 @@ export const EditDynamicSecretAwsIamForm = ({
</FormControl>
)}
/>
<MetadataForm control={control} name="tags" isValueRequired />
<MetadataForm control={control} name="inputs.tags" title="Tags" isValueRequired />
</div>
</div>
<div className="mt-4 flex items-center space-x-4">
@@ -7,10 +7,12 @@ import { FormControl, FormLabel, IconButton, Input } from "@app/components/v2";
export const MetadataForm = ({
control,
name = "metadata",
title = "Metadata",
isValueRequired = false
}: {
control: Control<any>;
name?: string;
title?: string;
isValueRequired?: boolean;
}) => {
const metadataFormFields = useFieldArray({
@@ -19,7 +21,7 @@ export const MetadataForm = ({
});
return (
<FormControl label={name.charAt(0).toUpperCase() + name.slice(1)}>
<FormControl label={title}>
<div className="flex flex-col space-y-2">
{metadataFormFields.fields.map(({ id: metadataFieldId }, i) => (
<div key={metadataFieldId} className="flex items-end space-x-2">