diff --git a/lib/cluster-providers/import-cluster-provider.ts b/lib/cluster-providers/import-cluster-provider.ts index 9023f32c3..4b98de80a 100644 --- a/lib/cluster-providers/import-cluster-provider.ts +++ b/lib/cluster-providers/import-cluster-provider.ts @@ -9,12 +9,19 @@ import { Construct } from "constructs"; import { getResource } from "../resource-providers/utils"; import { LookupOpenIdConnectProvider } from "../resource-providers"; import { logger } from "../utils"; +import { isToken, uniqueId } from "../utils/id-utils"; /** * Properties object for the ImportClusterProvider. */ export interface ImportClusterProviderProps extends Omit { + + /** + * Used for the CDK construct id for the imported cluster. Useful when passing tokens for cluster name. + */ + id?: string; + /** * This property is needed as it drives selection of certain add-on versions as well as kubectl layer. */ @@ -27,7 +34,11 @@ export interface ImportClusterProviderProps extends Omit { const app = new cdk.App(); @@ -341,3 +344,19 @@ test("Kubernetes Version gets set correctly in NodeGroup", () => { expect(stack.getClusterInfo().version.version).toBe("1.28"); }); + +test("Import cluster provider can use output values from other stacks as params", () => { + const importClusterProvider = new blueprints.ImportClusterProvider({ + clusterName: cdk.Fn.importValue('ClusterName'), + version: KubernetesVersion.V1_27, + clusterEndpoint: cdk.Fn.importValue('ClusterEndpoint'), + openIdConnectProvider: blueprints.getResource((context) => + new blueprints.LookupOpenIdConnectProvider( + 'classified', + ).provide(context), + ), + kubectlRoleArn: cdk.Fn.importValue('KubectlRoleArn'), + clusterSecurityGroupId: cdk.Fn.importValue('ClusterSecurityGroupId'), + }); + expect(isToken(importClusterProvider.id)).toBeFalsy(); +});