Improve terraform-cloud secret sync destination variables

This commit is contained in:
carlosmonastyrski
2025-04-10 07:38:11 -03:00
parent 68374a17f0
commit a84dddaf6f
10 changed files with 62 additions and 50 deletions
@@ -39,8 +39,10 @@ export const TerraformCloudSyncFields = () => {
<SecretSyncConnectionField
onChange={() => {
setValue("destinationConfig.org", "");
setValue("destinationConfig.destinationId", "");
setValue("destinationConfig.destinationName", "");
setValue("destinationConfig.variableSetId", "");
setValue("destinationConfig.workspaceId", "");
setValue("destinationConfig.variableSetName", "");
setValue("destinationConfig.workspaceName", "");
}}
/>
<Controller
@@ -60,8 +62,10 @@ export const TerraformCloudSyncFields = () => {
onChange(
(option as SingleValue<TTerraformCloudConnectionOrganization>)?.id ?? null
);
setValue("destinationConfig.destinationId", "");
setValue("destinationConfig.destinationName", "");
setValue("destinationConfig.variableSetId", "");
setValue("destinationConfig.workspaceId", "");
setValue("destinationConfig.variableSetName", "");
setValue("destinationConfig.workspaceName", "");
}}
options={organizations}
placeholder="Select an organization..."
@@ -155,8 +159,10 @@ export const TerraformCloudSyncFields = () => {
value={value}
onValueChange={(val) => {
onChange(val);
setValue("destinationConfig.destinationId", "");
setValue("destinationConfig.destinationName", "");
setValue("destinationConfig.variableSetId", "");
setValue("destinationConfig.workspaceId", "");
setValue("destinationConfig.variableSetName", "");
setValue("destinationConfig.workspaceName", "");
}}
className="w-full border border-mineshaft-500 capitalize"
position="popper"
@@ -174,7 +180,7 @@ export const TerraformCloudSyncFields = () => {
/>
{currentScope === TerraformCloudSyncScope.VariableSet && (
<Controller
name="destinationConfig.destinationId"
name="destinationConfig.variableSetId"
control={control}
render={({ field: { value, onChange }, fieldState: { error } }) => (
<FormControl isError={Boolean(error)} errorText={error?.message} label="Variable Set">
@@ -189,9 +195,9 @@ export const TerraformCloudSyncFields = () => {
onChange(selectedOption?.id ?? null);
if (selectedOption) {
setValue("destinationConfig.destinationName", selectedOption.name);
setValue("destinationConfig.variableSetName", selectedOption.name);
} else {
setValue("destinationConfig.destinationName", "");
setValue("destinationConfig.variableSetName", "");
}
}}
options={variableSets}
@@ -205,7 +211,7 @@ export const TerraformCloudSyncFields = () => {
)}
{currentScope === TerraformCloudSyncScope.Workspace && (
<Controller
name="destinationConfig.destinationId"
name="destinationConfig.workspaceId"
control={control}
render={({ field: { value, onChange }, fieldState: { error } }) => (
<FormControl isError={Boolean(error)} errorText={error?.message} label="Workspace">
@@ -219,9 +225,9 @@ export const TerraformCloudSyncFields = () => {
onChange(selectedOption?.id ?? null);
if (selectedOption) {
setValue("destinationConfig.destinationName", selectedOption.name);
setValue("destinationConfig.workspaceName", selectedOption.name);
} else {
setValue("destinationConfig.destinationName", "");
setValue("destinationConfig.workspaceName", "");
}
}}
options={workspaces}
@@ -8,7 +8,8 @@ import { SecretSync } from "@app/hooks/api/secretSyncs";
export const TerraformCloudSyncReviewFields = () => {
const { watch } = useFormContext<TSecretSyncForm & { destination: SecretSync.TerraformCloud }>();
const orgId = watch("destinationConfig.org");
const destinationName = watch("destinationConfig.destinationName");
const variableSetName = watch("destinationConfig.variableSetName");
const workspaceName = watch("destinationConfig.workspaceName");
const scope = watch("destinationConfig.scope");
const category = watch("destinationConfig.category");
@@ -16,10 +17,10 @@ export const TerraformCloudSyncReviewFields = () => {
<>
<GenericFieldLabel label="Organization">{orgId}</GenericFieldLabel>
{scope === TerraformCloudSyncScope.VariableSet && (
<GenericFieldLabel label="Variable Set">{destinationName}</GenericFieldLabel>
<GenericFieldLabel label="Variable Set">{variableSetName}</GenericFieldLabel>
)}
{scope === TerraformCloudSyncScope.Workspace && (
<GenericFieldLabel label="Workspace">{destinationName}</GenericFieldLabel>
<GenericFieldLabel label="Workspace">{workspaceName}</GenericFieldLabel>
)}
<GenericFieldLabel label="Category">{category}</GenericFieldLabel>
</>
@@ -14,15 +14,15 @@ export const TerraformCloudSyncDestinationSchema = BaseSecretSyncSchema().merge(
z.object({
scope: z.literal(TerraformCloudSyncScope.VariableSet),
org: z.string().trim().min(1, "Organization required"),
destinationId: z.string().trim().min(1, "Variable Set required"),
destinationName: z.string().trim().min(1, "Variable set name required"),
variableSetId: z.string().trim().min(1, "Variable Set required"),
variableSetName: z.string().trim().min(1, "Variable set name required"),
category: z.nativeEnum(TerraformCloudSyncCategory)
}),
z.object({
scope: z.literal(TerraformCloudSyncScope.Workspace),
org: z.string().trim().min(1, "Organization required"),
destinationId: z.string().trim().min(1, "Workspace required"),
destinationName: z.string().trim().min(1, "Workspace name required"),
workspaceId: z.string().trim().min(1, "Workspace required"),
workspaceName: z.string().trim().min(1, "Workspace name required"),
category: z.nativeEnum(TerraformCloudSyncCategory)
})
])