Terraform Cloud Secret Sync Integration

This commit is contained in:
carlosmonastyrski
2025-04-04 09:54:53 -03:00
parent f00a54ed54
commit 4d41513abf
17 changed files with 212 additions and 113 deletions
@@ -1,7 +1,10 @@
import { z } from "zod";
import { BaseSecretSyncSchema } from "@app/components/secret-syncs/forms/schemas/base-secret-sync-schema";
import { TerraformCloudSyncScope } from "@app/hooks/api/appConnections/terraform-cloud";
import {
TerraformCloudSyncCategory,
TerraformCloudSyncScope
} from "@app/hooks/api/appConnections/terraform-cloud";
import { SecretSync } from "@app/hooks/api/secretSyncs";
export const TerraformCloudSyncDestinationSchema = BaseSecretSyncSchema().merge(
@@ -9,14 +12,18 @@ export const TerraformCloudSyncDestinationSchema = BaseSecretSyncSchema().merge(
destination: z.literal(SecretSync.TerraformCloud),
destinationConfig: z.discriminatedUnion("scope", [
z.object({
scope: z.literal(TerraformCloudSyncScope.Project),
scope: z.literal(TerraformCloudSyncScope.VariableSet),
org: z.string().trim().min(1, "Organization required"),
project: z.string().trim().min(1, "Project required")
destinationId: z.string().trim().min(1, "Variable set id required"),
destinationName: 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"),
workspace: z.string().trim().min(1, "Workspace required")
destinationId: z.string().trim().min(1, "Workspace id required"),
destinationName: z.string().trim().min(1, "Workspace name required"),
category: z.nativeEnum(TerraformCloudSyncCategory)
})
])
})