From 41928c701084ccdd013bccc67ecdff2335974584 Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Mon, 4 Oct 2021 20:29:55 +0300 Subject: [PATCH] feat: support all jsii programming languages (#35) Adds a required `--language` switch to cdk-import which allows specifying the target programming language to generate code in. This uses jsii-srcmak (similar to CDKtf and CDK8s) to generate files that can be included in projects. Resolves #34 BREAKING CHANGE: a `--language` switch is now required and can have one of these values: `typescript`, `java`, `csharp`, `python` or `golang`. --- .projen/deps.json | 6 +- .projenrc.js | 3 +- README.md | 628 +- package.json | 3 +- src/cfn-resource-generator.ts | 11 +- src/cli.ts | 57 +- src/index.ts | 8 +- src/languages.ts | 91 + src/util.ts | 10 - .../cfn-resource-generator.test.ts.snap | 7 +- test/__snapshots__/languages.test.ts.snap | 15839 ++++++++++++++++ test/fixtures/awsqs-eks-cluster/index.ts | 488 + test/languages.test.ts | 53 + test/util.test.ts | 7 - yarn.lock | 470 +- 15 files changed, 17116 insertions(+), 565 deletions(-) create mode 100644 src/languages.ts create mode 100644 test/__snapshots__/languages.test.ts.snap create mode 100644 test/fixtures/awsqs-eks-cluster/index.ts create mode 100644 test/languages.test.ts diff --git a/.projen/deps.json b/.projen/deps.json index 5195381b..58118506 100644 --- a/.projen/deps.json +++ b/.projen/deps.json @@ -85,7 +85,11 @@ "type": "runtime" }, { - "name": "camelcase", + "name": "case", + "type": "runtime" + }, + { + "name": "jsii-srcmak", "type": "runtime" }, { diff --git a/.projenrc.js b/.projenrc.js index cdb98ebb..8907dfb3 100644 --- a/.projenrc.js +++ b/.projenrc.js @@ -8,7 +8,8 @@ const project = new TypeScriptProject({ 'aws-sdk', 'minimist', 'proxy-agent', - 'camelcase', + 'case', + 'jsii-srcmak', ], devDeps: [ '@aws-cdk/core', diff --git a/README.md b/README.md index e45ff80e..51b62f76 100644 --- a/README.md +++ b/README.md @@ -1,545 +1,144 @@ # cdk-import -> Generates CDK L1 constructs for public CloudFormation Registry types and modules. - -NOTE: This is part of the implementation of [RFC](https://github.com/aws/aws-cdk-rfcs/pull/356) +> Generates CDK L1 constructs for public CloudFormation Registry types and +> modules. ## Installation ```shell -$ npm install -g cdk-import +npm install -g cdk-import ``` ## Usage ```shell -$ cdk-import --help -Usage: cdk-import RESOURCE-NAME[@VERSION] +Usage: + cdk-import -l LANGUAGE RESOURCE-NAME[@VERSION] Options: - -o, --outdir Output directory [string] [default: "."] - -h, --help Show this usage info [boolean] [default: false] + -l, --language Output programming language [string] + -o, --outdir Output directory [string] [default: "."] + --go-module Module name (required if language is "golang") [string] + --java-package Java package name (required if language is "java") [string] + -h, --help Show this usage info [boolean] +``` + +The `--language` option specifies the output programming language. Supported +languages: `typescript`, `java`, `python`, `csharp` and `golang`. + +Output will be generated relative to `--outdir` which defaults to the current +working directory. + +The following section describes language-specific behavior. + +### Java + +The `--java-package` option is required and should include the Java package name +to use for generated classes. Normally, this will be a sub-package of your +project's package. -Examples: - cdk-import AWSQS::EKS::Cluster Generates an L1 construct for the latest version of this resource under awsqs-eks-cluster.ts - cdk-import AWSQS::EKS::Cluster@1.2.0 Generates an L1 construct for a specific version +Java source files are generates in Maven-compatible structure under +`$outdir/src/main/java/PACKAGE/` where `PACKAGE` is based on `--java-package`. + +For example: + +```shell +cdk-import -l java --java-package com.foo.bar.resources AWSQS::EKS::Cluster ``` -This command will query the AWS CloudFormation Registry and will generate L1 constructs for the specified resource. If a version -is not specified, the latest version will be selected. Otherwise, the specific version will be used. +Will generate class source files under `src/main/java/com/foo/bar/resources`. +All the classes will be under the package `com.foo.bar.resources`. + +### Python + +A Python submodule is generated under `$outdir/MODULE_NAME/` where `MODULE_NAME` +is based on the name of the resource (`AWSQS::EKS::Cluster` => +`awsqs_eks_cluster`). For example: ```shell -$ cdk-import AWSQS::EKS::Cluster +cdk-import -l python AWSQS::EKS::Cluster ``` -
- awsqs-eks-cluster.ts - -```ts -import * as cdk from '@aws-cdk/core'; - -/** - * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. - * - * @schema CfnClusterProps - */ -export interface CfnClusterProps { - /** - * A unique name for your cluster. - * - * @schema CfnClusterProps#Name - */ - readonly name?: string; - - /** - * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. - * - * @schema CfnClusterProps#RoleArn - */ - readonly roleArn: string; - - /** - * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC - * - * @schema CfnClusterProps#LambdaRoleName - */ - readonly lambdaRoleName?: string; - - /** - * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. - * - * @schema CfnClusterProps#Version - */ - readonly version?: string; - - /** - * Network configuration for Amazon EKS cluster. - * - * - * - * @schema CfnClusterProps#KubernetesNetworkConfig - */ - readonly kubernetesNetworkConfig?: CfnClusterPropsKubernetesNetworkConfig; - - /** - * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. - * - * @schema CfnClusterProps#ResourcesVpcConfig - */ - readonly resourcesVpcConfig: CfnClusterPropsResourcesVpcConfig; - - /** - * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. - * - * @schema CfnClusterProps#EnabledClusterLoggingTypes - */ - readonly enabledClusterLoggingTypes?: string[]; - - /** - * Encryption configuration for the cluster. - * - * @schema CfnClusterProps#EncryptionConfig - */ - readonly encryptionConfig?: EncryptionConfigEntry[]; - - /** - * @schema CfnClusterProps#KubernetesApiAccess - */ - readonly kubernetesApiAccess?: CfnClusterPropsKubernetesApiAccess; - - /** - * @schema CfnClusterProps#Tags - */ - readonly tags?: CfnClusterPropsTags[]; - -} - -/** - * Converts an object of type 'CfnClusterProps' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_CfnClusterProps(obj: CfnClusterProps | undefined): Record | undefined { - if (obj === undefined) { return undefined; } - const result = { - 'Name': obj.name, - 'RoleArn': obj.roleArn, - 'LambdaRoleName': obj.lambdaRoleName, - 'Version': obj.version, - 'KubernetesNetworkConfig': toJson_CfnClusterPropsKubernetesNetworkConfig(obj.kubernetesNetworkConfig), - 'ResourcesVpcConfig': toJson_CfnClusterPropsResourcesVpcConfig(obj.resourcesVpcConfig), - 'EnabledClusterLoggingTypes': obj.enabledClusterLoggingTypes?.map(y => y), - 'EncryptionConfig': obj.encryptionConfig?.map(y => toJson_EncryptionConfigEntry(y)), - 'KubernetesApiAccess': toJson_CfnClusterPropsKubernetesApiAccess(obj.kubernetesApiAccess), - 'Tags': obj.tags?.map(y => toJson_CfnClusterPropsTags(y)), - }; - // filter undefined values - return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); -} -/* eslint-enable max-len, quote-props */ - -/** - * Network configuration for Amazon EKS cluster. - * - * - * - * @schema CfnClusterPropsKubernetesNetworkConfig - */ -export interface CfnClusterPropsKubernetesNetworkConfig { - /** - * Specify the range from which cluster services will receive IPv4 addresses. - * - * @schema CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr - */ - readonly serviceIpv4Cidr?: string; - -} - -/** - * Converts an object of type 'CfnClusterPropsKubernetesNetworkConfig' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_CfnClusterPropsKubernetesNetworkConfig(obj: CfnClusterPropsKubernetesNetworkConfig | undefined): Record | undefined { - if (obj === undefined) { return undefined; } - const result = { - 'ServiceIpv4Cidr': obj.serviceIpv4Cidr, - }; - // filter undefined values - return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); -} -/* eslint-enable max-len, quote-props */ - -/** - * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. - * - * @schema CfnClusterPropsResourcesVpcConfig - */ -export interface CfnClusterPropsResourcesVpcConfig { - /** - * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. - * - * @schema CfnClusterPropsResourcesVpcConfig#SecurityGroupIds - */ - readonly securityGroupIds?: string[]; - - /** - * Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. - * - * @schema CfnClusterPropsResourcesVpcConfig#SubnetIds - */ - readonly subnetIds: string[]; - - /** - * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. - * - * @schema CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess - */ - readonly endpointPublicAccess?: boolean; - - /** - * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. - * - * @schema CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess - */ - readonly endpointPrivateAccess?: boolean; - - /** - * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. - * - * @schema CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs - */ - readonly publicAccessCidrs?: string[]; - -} - -/** - * Converts an object of type 'CfnClusterPropsResourcesVpcConfig' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_CfnClusterPropsResourcesVpcConfig(obj: CfnClusterPropsResourcesVpcConfig | undefined): Record | undefined { - if (obj === undefined) { return undefined; } - const result = { - 'SecurityGroupIds': obj.securityGroupIds?.map(y => y), - 'SubnetIds': obj.subnetIds?.map(y => y), - 'EndpointPublicAccess': obj.endpointPublicAccess, - 'EndpointPrivateAccess': obj.endpointPrivateAccess, - 'PublicAccessCidrs': obj.publicAccessCidrs?.map(y => y), - }; - // filter undefined values - return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); -} -/* eslint-enable max-len, quote-props */ - -/** - * The encryption configuration for the cluster. - * - * @schema EncryptionConfigEntry - */ -export interface EncryptionConfigEntry { - /** - * Specifies the resources to be encrypted. The only supported value is \\"secrets\\". - * - * @schema EncryptionConfigEntry#Resources - */ - readonly resources?: string[]; - - /** - * @schema EncryptionConfigEntry#Provider - */ - readonly provider?: Provider; - -} - -/** - * Converts an object of type 'EncryptionConfigEntry' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_EncryptionConfigEntry(obj: EncryptionConfigEntry | undefined): Record | undefined { - if (obj === undefined) { return undefined; } - const result = { - 'Resources': obj.resources?.map(y => y), - 'Provider': toJson_Provider(obj.provider), - }; - // filter undefined values - return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); -} -/* eslint-enable max-len, quote-props */ - -/** - * @schema CfnClusterPropsKubernetesApiAccess - */ -export interface CfnClusterPropsKubernetesApiAccess { - /** - * @schema CfnClusterPropsKubernetesApiAccess#Roles - */ - readonly roles?: KubernetesApiAccessEntry[]; - - /** - * @schema CfnClusterPropsKubernetesApiAccess#Users - */ - readonly users?: KubernetesApiAccessEntry[]; - -} - -/** - * Converts an object of type 'CfnClusterPropsKubernetesApiAccess' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_CfnClusterPropsKubernetesApiAccess(obj: CfnClusterPropsKubernetesApiAccess | undefined): Record | undefined { - if (obj === undefined) { return undefined; } - const result = { - 'Roles': obj.roles?.map(y => toJson_KubernetesApiAccessEntry(y)), - 'Users': obj.users?.map(y => toJson_KubernetesApiAccessEntry(y)), - }; - // filter undefined values - return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); -} -/* eslint-enable max-len, quote-props */ - -/** - * @schema CfnClusterPropsTags - */ -export interface CfnClusterPropsTags { - /** - * @schema CfnClusterPropsTags#Value - */ - readonly value: string; - - /** - * @schema CfnClusterPropsTags#Key - */ - readonly key: string; - -} - -/** - * Converts an object of type 'CfnClusterPropsTags' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_CfnClusterPropsTags(obj: CfnClusterPropsTags | undefined): Record | undefined { - if (obj === undefined) { return undefined; } - const result = { - 'Value': obj.value, - 'Key': obj.key, - }; - // filter undefined values - return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); -} -/* eslint-enable max-len, quote-props */ - -/** - * AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used. - * - * @schema Provider - */ -export interface Provider { - /** - * Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. - * - * @schema Provider#KeyArn - */ - readonly keyArn?: string; - -} - -/** - * Converts an object of type 'Provider' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_Provider(obj: Provider | undefined): Record | undefined { - if (obj === undefined) { return undefined; } - const result = { - 'KeyArn': obj.keyArn, - }; - // filter undefined values - return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); -} -/* eslint-enable max-len, quote-props */ - -/** - * @schema KubernetesApiAccessEntry - */ -export interface KubernetesApiAccessEntry { - /** - * @schema KubernetesApiAccessEntry#Arn - */ - readonly arn?: string; - - /** - * @schema KubernetesApiAccessEntry#Username - */ - readonly username?: string; - - /** - * @schema KubernetesApiAccessEntry#Groups - */ - readonly groups?: string[]; - -} - -/** - * Converts an object of type 'KubernetesApiAccessEntry' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_KubernetesApiAccessEntry(obj: KubernetesApiAccessEntry | undefined): Record | undefined { - if (obj === undefined) { return undefined; } - const result = { - 'Arn': obj.arn, - 'Username': obj.username, - 'Groups': obj.groups?.map(y => y), - }; - // filter undefined values - return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); -} -/* eslint-enable max-len, quote-props */ - - -/** - * A CloudFormation \`AWSQS::EKS::Cluster\` - * - * @cloudformationResource AWSQS::EKS::Cluster - * @stability external - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ -export class CfnCluster extends cdk.CfnResource { - /** - * The CloudFormation resource type name for this resource class. - */ - public static readonly CFN_RESOURCE_TYPE_NAME = \\"AWSQS::EKS::Cluster\\"; - - /** - * \`AWSQS::EKS::Cluster.Name\` - * A unique name for your cluster. - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly name: string | undefined; - /** - * \`AWSQS::EKS::Cluster.RoleArn\` - * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly roleArn: string; - /** - * \`AWSQS::EKS::Cluster.LambdaRoleName\` - * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly lambdaRoleName: string | undefined; - /** - * \`AWSQS::EKS::Cluster.Version\` - * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly version: string | undefined; - /** - * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` - * Network configuration for Amazon EKS cluster. - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly kubernetesNetworkConfig: any | undefined; - /** - * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` - * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly resourcesVpcConfig: any; - /** - * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` - * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly enabledClusterLoggingTypes: string[] | undefined; - /** - * \`AWSQS::EKS::Cluster.EncryptionConfig\` - * Encryption configuration for the cluster. - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly encryptionConfig: EncryptionConfigEntry[] | undefined; - /** - * \`AWSQS::EKS::Cluster.KubernetesApiAccess\` - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly kubernetesApiAccess: any | undefined; - /** - * \`AWSQS::EKS::Cluster.Tags\` - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly tags: any[] | undefined; - /** - * Attribute \`AWSQS::EKS::Cluster.Arn\` - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly attrArn: string; - /** - * Attribute \`AWSQS::EKS::Cluster.Endpoint\` - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly attrEndpoint: string; - /** - * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\` - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly attrClusterSecurityGroupId: string; - /** - * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\` - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly attrCertificateAuthorityData: string; - /** - * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\` - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly attrEncryptionConfigKeyArn: string; - /** - * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\` - * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git - */ - public readonly attrOidcIssuerUrl: string; - - /** - * Create a new \`AWSQS::EKS::Cluster\`. - * - * @param scope - scope in which this resource is defined - * @param id - scoped id of the resource - * @param props - resource properties - */ - constructor(scope: cdk.Construct, id: string, props: CfnClusterProps) { - super(scope, id, { type: CfnCluster.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnClusterProps(props)! }); - - this.name = props.name; - this.roleArn = props.roleArn; - this.lambdaRoleName = props.lambdaRoleName; - this.version = props.version; - this.kubernetesNetworkConfig = props.kubernetesNetworkConfig; - this.resourcesVpcConfig = props.resourcesVpcConfig; - this.enabledClusterLoggingTypes = props.enabledClusterLoggingTypes; - this.encryptionConfig = props.encryptionConfig; - this.kubernetesApiAccess = props.kubernetesApiAccess; - this.tags = props.tags; - this.attrArn = cdk.Token.asString(this.getAtt('Arn')); - this.attrEndpoint = cdk.Token.asString(this.getAtt('Endpoint')); - this.attrClusterSecurityGroupId = cdk.Token.asString(this.getAtt('ClusterSecurityGroupId')); - this.attrCertificateAuthorityData = cdk.Token.asString(this.getAtt('CertificateAuthorityData')); - this.attrEncryptionConfigKeyArn = cdk.Token.asString(this.getAtt('EncryptionConfigKeyArn')); - this.attrOidcIssuerUrl = cdk.Token.asString(this.getAtt('OIDCIssuerURL')); - } -} +Will generate a subdirectory `awsqs_eks_cluster` with a Python module that can +be `import`ed. + +### CSharp + +A `.csproj` is generated under `$outdir/RESOURCE/` where `RESOURCE` is the +resource name (`AWSQS::EKS::Cluster`). + +For example: + +```shell +cdk-import -l csharp AWSQS::EKS::Cluster ``` -
- -Modules are also supported: +Will generate a directory `AWSQS::EKS::Cluster` with a `.csproj`. This can be +used in a .NET solution. + +### TypeScript + +A TypeScript file will be generated under `$outdir/MODULE` where `MODULE` is +derived from the resource name. + +For example: + +```shell +cdk-import -l typescript -o src AWSQS::EKS::Cluster +``` + +Will generate a file `src/awsqs-eks-cluster.ts` (note the usage of `-o` above). + +### Go + +If `-l golang` is used, the `--go-module` option is required and must reflect +the Go module name of the parent project module. + +A Go submodule will be generated under `$outdir/PACKAGE` where `PACKAGE` is +derived from the resource name (`AWSQS::EKS::Cluster` => `awsqs-eks-cluster`). + +For example: + +```shell +cdk-import -l golang --go-module "github.com/foo/bar" AWSQS::EKS::Cluster +``` + +Will generate a Go module under: `awsqs-eks-cluster`. + +## Examples + +Generates constructs for the latest version AWSQS::EKS::Cluster in TypeScript: ```shell -$ cdk-import AWSQS::CheckPoint::CloudGuardQS::MODULE -awsqs-checkpoint-cloudguardqs-module.ts +cdk-import -l typescript AWSQS::EKS::Cluster ``` -## Roadmap +Generates construct in Go for a specific resource version: -- [ ] Use `jsii-srcmak` to allow generating sources in multiple languages (first version only supports TypeScript). -- [ ] Allow library usage +```shell +cdk-import -l golang --go-module "github.com/account/repo" AWSQS::EKS::Cluster@1.2.0 +``` + +Generates construct in Python under the "src" subfolder instead of working +directory: + +```shell +cdk-import -l python -o src AWSQS::EKS::Cluster +``` + +Generates construct in Java and identifies the resource type by its ARN: + +```shell +cdk-import -l java --java-package "com.acme.myproject" arn:aws:cloudformation:... +``` + +Modules are also supported: + +```shell +cdk-import AWSQS::CheckPoint::CloudGuardQS::MODULE +``` ## Contributing @@ -547,7 +146,8 @@ See [CONTRIBUTING](CONTRIBUTING.md) ## Security -See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information. +See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more +information. ## License diff --git a/package.json b/package.json index b8837d9b..0e0192cb 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,8 @@ }, "dependencies": { "aws-sdk": "^2.999.0", - "camelcase": "^6.2.0", + "case": "^1.6.3", + "jsii-srcmak": "^0.1.357", "json2jsii": "^0.2.33", "minimist": "^1.2.5", "proxy-agent": "^5.0.0" diff --git a/src/cfn-resource-generator.ts b/src/cfn-resource-generator.ts index f7d7fe7a..ad3ac6fd 100644 --- a/src/cfn-resource-generator.ts +++ b/src/cfn-resource-generator.ts @@ -1,4 +1,4 @@ -import * as camelcase from 'camelcase'; +import { camel, pascal } from 'case'; import * as j2j from 'json2jsii'; import { TypeInfo } from './type-info'; import { sanitizeTypeName } from './util'; @@ -42,6 +42,7 @@ export class CfnResourceGenerator { } private emitImports(code: j2j.Code) { + code.line('// Generated by cdk-import'); code.line("import * as cdk from '@aws-cdk/core';"); code.line(); } @@ -88,7 +89,7 @@ export class CfnResourceGenerator { } code.line(` * @link ${this.typeDef.SourceUrl}`); code.line(' */'); - code.line(`public readonly ${camelcase(prop)}: ${this.getTypeOfProperty(prop)}${optionalMarker};`); + code.line(`public readonly ${camel(prop)}: ${this.getTypeOfProperty(prop)}${optionalMarker};`); } for (const prop of this.resourceAttributes) { @@ -96,7 +97,7 @@ export class CfnResourceGenerator { code.line(` * Attribute \`${this.typeName}.${prop}\``); code.line(` * @link ${this.typeDef.SourceUrl}`); code.line(' */'); - code.line(`public readonly attr${camelcase(prop, { pascalCase: true })}: ${this.getTypeOfProperty(prop)};`); + code.line(`public readonly attr${pascal(prop)}: ${this.getTypeOfProperty(prop)};`); } code.line(); @@ -112,10 +113,10 @@ export class CfnResourceGenerator { code.line(`super(scope, id, { type: ${this.constructClassName}.CFN_RESOURCE_TYPE_NAME, properties: toJson_${this.propsStructName}(props)! });`); code.line(''); for (const prop of this.resourceProperties) { - code.line(`this.${camelcase(prop)} = props.${camelcase(prop)};`); + code.line(`this.${camel(prop)} = props.${camel(prop)};`); } for (const prop of this.resourceAttributes) { - const propertyName = `attr${camelcase(prop, { pascalCase: true })}`; + const propertyName = `attr${pascal(prop)}`; code.line(`this.${propertyName} = ${this.renderGetAtt(prop)};`); } code.closeBlock(); diff --git a/src/cli.ts b/src/cli.ts index 7b94e2f4..3f7ee464 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,10 +1,17 @@ #!/usr/bin/env node +import * as fs from 'fs/promises'; +import * as os from 'os'; +import * as path from 'path'; import * as minimist from 'minimist'; import { importResourceType } from '.'; +import { renderCode, SUPPORTED_LANGUAGES } from './languages'; + const args = minimist(process.argv.slice(2), { string: [ 'outdir', + 'language', + 'go-module-name', ], boolean: [ 'help', @@ -12,22 +19,36 @@ const args = minimist(process.argv.slice(2), { alias: { outdir: 'o', help: 'h', + language: 'l', }, }); function showHelp() { console.log(''); - console.log('Usage: cdk-import RESOURCE-NAME[@VERSION]'); - console.log(''); + console.log('Usage:'); + console.log(' cdk-import -l LANGUAGE RESOURCE-NAME[@VERSION]'); + console.log(); console.log('Options:'); - console.log(' -o, --outdir Output directory [string] [default: "."]'); - console.log(' -h, --help Show this usage info [boolean] [default: false]'); + console.log(' -l, --language Output programming language [string]'); + console.log(' -o, --outdir Output directory [string] [default: "."]'); + console.log(' --go-module Go module name (required if language is "golang") [string]'); + console.log(' --java-package Java package name (required if language is "java") [string]'); + console.log(' -h, --help Show this usage info [boolean]'); console.log(''); console.log('Examples:'); - console.log(' cdk-import AWSQS::EKS::Cluster Generates an L1 construct for the latest version of this resource under awsqs-eks-cluster.ts'); - console.log(' cdk-import AWSQS::EKS::Cluster@1.2.0 Generates an L1 construct for a specific version'); - console.log(' cdk-import -o src AWSQS::EKS::Cluster Generates an L1 construct in the src subfolder'); - console.log(' cdk-import arn:aws:cloudformation:... Generates an L1 construct and identifies the resource type by its ARN'); + console.log(); + console.log(' Generates constructs for the latest version AWSQS::EKS::Cluster in TypeScript:'); + console.log(' cdk-import -l typescript AWSQS::EKS::Cluster'); + console.log(); + console.log(' Generates construct in Go for a specific resource version:'); + console.log(' cdk-import -l golang --go-module "github.com/account/repo" AWSQS::EKS::Cluster@1.2.0'); + console.log(); + console.log(' Generates construct in Python under the "src" subfolder instead of working directory:'); + console.log(' cdk-import -l python -o src AWSQS::EKS::Cluster'); + console.log(); + console.log(' Generates construct in Java and identifies the resource type by its ARN:'); + console.log(' cdk-import -l java --java-package "com.acme.myproject" arn:aws:cloudformation:...'); + console.log(); } void (async () => { @@ -35,9 +56,27 @@ void (async () => { showHelp(); process.exit(1); } + + if (!args.language) { + throw new Error(`Missing required option: --language. Supported languages: ${SUPPORTED_LANGUAGES.join(',')}`); + } + + if (SUPPORTED_LANGUAGES.indexOf(args.language) === -1) { + throw new Error(`Unsupported language ${args.language}. Supported: ${SUPPORTED_LANGUAGES.join(',')}`); + } + try { const [resourceName, resourceVersion] = args._[0].split('@'); - await importResourceType(resourceName, resourceVersion, args.outdir); + const workdir = await fs.mkdtemp(path.join(os.tmpdir(), 'cdk-import')); + const typeName = await importResourceType(resourceName, resourceVersion, workdir); + await renderCode({ + srcdir: workdir, + language: args.language, + outdir: args.outdir ?? '.', + typeName: typeName, + goModule: args['go-module'], + javaPacakge: args['java-package'], + }); } catch (e) { console.log(e); process.exit(1); diff --git a/src/index.ts b/src/index.ts index 67a6cb8c..d582de90 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,7 +2,6 @@ import * as fs from 'fs'; import * as path from 'path'; import { describeResourceType } from './cfn-registry'; import { CfnResourceGenerator } from './cfn-resource-generator'; -import { sanitizeFileName } from './util'; /** * Entry point to import CFN resource types @@ -10,8 +9,9 @@ import { sanitizeFileName } from './util'; * @param resourceName the name or ARN of the resource type * @param resourceVersion the version of the resource type * @param outdir the out folder to use (defaults to the current directory) + * @returns name of the resource type */ -export async function importResourceType(resourceName: string, resourceVersion: string, outdir: string = '.') { +export async function importResourceType(resourceName: string, resourceVersion: string, outdir: string = '.'): Promise { const type = await describeResourceType(resourceName, resourceVersion); const typeSchema = JSON.parse(type.Schema!); @@ -20,5 +20,7 @@ export async function importResourceType(resourceName: string, resourceVersion: fs.mkdirSync(outdir, { recursive: true }); - fs.writeFileSync(path.join(outdir, sanitizeFileName(type.TypeName)), gen.render()); + fs.writeFileSync(path.join(outdir, 'index.ts'), gen.render()); + + return type.TypeName; }; diff --git a/src/languages.ts b/src/languages.ts new file mode 100644 index 00000000..74dc9dca --- /dev/null +++ b/src/languages.ts @@ -0,0 +1,91 @@ +import * as fs from 'fs/promises'; +import * as path from 'path'; +import * as caseutil from 'case'; +import { srcmak, Options } from 'jsii-srcmak'; + +const cdkDeps = [ + '@aws-cdk/cloud-assembly-schema', + '@aws-cdk/core', + '@aws-cdk/cx-api', + '@aws-cdk/region-info', + 'constructs', +]; + +export const SUPPORTED_LANGUAGES = [ + 'typescript', + 'python', + 'java', + 'csharp', + 'golang', +]; + +export interface RenderCodeOptions { + readonly srcdir: string; + readonly outdir: string; + readonly language: string; + readonly typeName: string; + + /** + * The name of the Go module to use for the generated code. Required if `language` is `golang`. + */ + readonly goModule?: string; + + /** + * The name of the Java package to use for the generated code. Required if `language` is `java`. + */ + readonly javaPacakge?: string; +} + +export async function renderCode(options: RenderCodeOptions) { + const srcmakopts: Options = { + deps: cdkDeps.map(x => path.dirname(require.resolve(`${x}/package.json`))), + }; + + switch (options.language) { + case 'typescript': + await fs.mkdir(options.outdir, { recursive: true }); + return fs.copyFile(path.join(options.srcdir, 'index.ts'), path.join(options.outdir, `${caseutil.header(options.typeName).toLowerCase()}.ts`)); + + case 'python': + srcmakopts.python = { + outdir: options.outdir, + moduleName: caseutil.snake(options.typeName), + }; + break; + + case 'csharp': + srcmakopts.csharp = { + outdir: options.outdir, + namespace: options.typeName, // already AWS::Foo::Bar + }; + break; + + case 'java': + if (!options.javaPacakge) { + throw new Error('Java package name (`--java-package`) must be specified (e.g. "com.foo.bar.my.resource")'); + } + + srcmakopts.java = { + outdir: options.outdir, + package: options.javaPacakge, + }; + break; + + case 'golang': + if (!options.goModule) { + throw new Error('Go module name (--go-module) is required (e.g. "github.com/foo/bar")'); + } + + srcmakopts.golang = { + outdir: options.outdir, + packageName: caseutil.lower(options.typeName, '-'), + moduleName: options.goModule, + }; + break; + + default: + throw new Error(`Unsupported language: ${options.language}`); + } + + await srcmak(options.srcdir, srcmakopts); +} diff --git a/src/util.ts b/src/util.ts index 6d667f20..aecc64ca 100644 --- a/src/util.ts +++ b/src/util.ts @@ -10,13 +10,3 @@ export function sanitizeTypeName(typeName: string) { const lastPart = parts[parts.length - 1]; return lastPart.substr(0, 1).toUpperCase() + lastPart.substr(1).toLowerCase(); } - -/** - * convert the type name to a file name by kebap-casing and removing `::` - * - * @param typeName the name of the resource type - * @returns the name to use as file name - */ -export function sanitizeFileName(typeName: string) { - return `${typeName.replace(/::/g, '-').toLowerCase()}.ts`; -} \ No newline at end of file diff --git a/test/__snapshots__/cfn-resource-generator.test.ts.snap b/test/__snapshots__/cfn-resource-generator.test.ts.snap index 517fb01d..d7f4758e 100644 --- a/test/__snapshots__/cfn-resource-generator.test.ts.snap +++ b/test/__snapshots__/cfn-resource-generator.test.ts.snap @@ -1,7 +1,8 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`should generate correct file for type 1`] = ` -"import * as cdk from '@aws-cdk/core'; +"// Generated by cdk-import +import * as cdk from '@aws-cdk/core'; /** * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. @@ -458,7 +459,7 @@ export class CfnCluster extends cdk.CfnResource { * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\` * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git */ - public readonly attrOidcIssuerUrl: string; + public readonly attrOIDCIssuerURL: string; /** * Create a new \`AWSQS::EKS::Cluster\`. @@ -485,7 +486,7 @@ export class CfnCluster extends cdk.CfnResource { this.attrClusterSecurityGroupId = cdk.Token.asString(this.getAtt('ClusterSecurityGroupId')); this.attrCertificateAuthorityData = cdk.Token.asString(this.getAtt('CertificateAuthorityData')); this.attrEncryptionConfigKeyArn = cdk.Token.asString(this.getAtt('EncryptionConfigKeyArn')); - this.attrOidcIssuerUrl = cdk.Token.asString(this.getAtt('OIDCIssuerURL')); + this.attrOIDCIssuerURL = cdk.Token.asString(this.getAtt('OIDCIssuerURL')); } }" `; diff --git a/test/__snapshots__/languages.test.ts.snap b/test/__snapshots__/languages.test.ts.snap new file mode 100644 index 00000000..75f07bf9 --- /dev/null +++ b/test/__snapshots__/languages.test.ts.snap @@ -0,0 +1,15839 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`csharp 1`] = ` +Map { + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnCluster.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// A CloudFormation \`AWSQS::EKS::Cluster\`. + /// + /// CloudformationResource: AWSQS::EKS::Cluster + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiClass(nativeType: typeof(AWSQS::EKS::Cluster.CfnCluster), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", parametersJson: \\"[{\\\\\\"docs\\\\\\":{\\\\\\"summary\\\\\\":\\\\\\"- scope in which this resource is defined.\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"scope\\\\\\",\\\\\\"type\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"@aws-cdk/core.Construct\\\\\\"}},{\\\\\\"docs\\\\\\":{\\\\\\"summary\\\\\\":\\\\\\"- scoped id of the resource.\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"id\\\\\\",\\\\\\"type\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}},{\\\\\\"docs\\\\\\":{\\\\\\"summary\\\\\\":\\\\\\"- resource properties.\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"props\\\\\\",\\\\\\"type\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\\\\\"}}]\\")] + public class CfnCluster : Amazon.CDK.CfnResource + { + /// Create a new \`AWSQS::EKS::Cluster\`. + /// - scope in which this resource is defined. + /// - scoped id of the resource. + /// - resource properties. + public CfnCluster(Amazon.CDK.Construct scope, string id, AWSQS::EKS::Cluster.ICfnClusterProps props): base(new DeputyProps(new object?[]{scope, id, props})) + { + } + + /// Used by jsii to construct an instance of this class from a Javascript-owned object reference + /// The Javascript-owned object reference + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + protected CfnCluster(ByRefValue reference): base(reference) + { + } + + /// Used by jsii to construct an instance of this class from DeputyProps + /// The deputy props + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + protected CfnCluster(DeputyProps props): base(props) + { + } + + /// The CloudFormation resource type name for this resource class. + [JsiiProperty(name: \\"CFN_RESOURCE_TYPE_NAME\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public static string CFN_RESOURCE_TYPE_NAME + { + get; + } + = GetStaticProperty(typeof(AWSQS::EKS::Cluster.CfnCluster))!; + + /// Attribute \`AWSQS::EKS::Cluster.Arn\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrArn + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrCertificateAuthorityData\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrCertificateAuthorityData + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrClusterSecurityGroupId\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrClusterSecurityGroupId + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrEncryptionConfigKeyArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrEncryptionConfigKeyArn + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.Endpoint\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrEndpoint\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrEndpoint + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrOIDCIssuerURL\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrOIDCIssuerURL + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.KubernetesApiAccess\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"kubernetesApiAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"any\\\\\\"}\\")] + public virtual object KubernetesApiAccess + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` Network configuration for Amazon EKS cluster. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"kubernetesNetworkConfig\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"any\\\\\\"}\\")] + public virtual object KubernetesNetworkConfig + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"resourcesVpcConfig\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"any\\\\\\"}\\")] + public virtual object ResourcesVpcConfig + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.RoleArn\` Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"roleArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string RoleArn + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"enabledClusterLoggingTypes\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public virtual string[]? EnabledClusterLoggingTypes + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.EncryptionConfig\` Encryption configuration for the cluster. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"encryptionConfig\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public virtual AWSQS::EKS::Cluster.IEncryptionConfigEntry[]? EncryptionConfig + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.LambdaRoleName\` Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"lambdaRoleName\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public virtual string? LambdaRoleName + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.Name\` A unique name for your cluster. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"name\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public virtual string? Name + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.Tags\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"tags\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"any\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public virtual object[]? Tags + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.Version\` Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"version\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public virtual string? Version + { + get => GetInstanceProperty(); + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterProps.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + #pragma warning disable CS8618 + + /// A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + /// + /// Schema: CfnClusterProps + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\")] + public class CfnClusterProps : AWSQS::EKS::Cluster.ICfnClusterProps + { + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#ResourcesVpcConfig + /// + [JsiiProperty(name: \\"resourcesVpcConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\\\\\"}\\", isOverride: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig ResourcesVpcConfig + { + get; + set; + } + + /// Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + /// + /// This provides permissions for Amazon EKS to call other AWS APIs. + /// + /// Schema: CfnClusterProps#RoleArn + /// + [JsiiProperty(name: \\"roleArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOverride: true)] + public string RoleArn + { + get; + set; + } + + /// Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + /// + /// By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + /// + /// Schema: CfnClusterProps#EnabledClusterLoggingTypes + /// + [JsiiOptional] + [JsiiProperty(name: \\"enabledClusterLoggingTypes\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? EnabledClusterLoggingTypes + { + get; + set; + } + + /// Encryption configuration for the cluster. + /// + /// Schema: CfnClusterProps#EncryptionConfig + /// + [JsiiOptional] + [JsiiProperty(name: \\"encryptionConfig\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.IEncryptionConfigEntry[]? EncryptionConfig + { + get; + set; + } + + /// + /// Schema: CfnClusterProps#KubernetesApiAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"kubernetesApiAccess\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\\\\\"}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess? KubernetesApiAccess + { + get; + set; + } + + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#KubernetesNetworkConfig + /// + [JsiiOptional] + [JsiiProperty(name: \\"kubernetesNetworkConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\\\\\"}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig? KubernetesNetworkConfig + { + get; + set; + } + + /// Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + /// + /// this provides permissions for Lambda to be invoked and attach to the cluster VPC + /// + /// Schema: CfnClusterProps#LambdaRoleName + /// + [JsiiOptional] + [JsiiProperty(name: \\"lambdaRoleName\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? LambdaRoleName + { + get; + set; + } + + /// A unique name for your cluster. + /// + /// Schema: CfnClusterProps#Name + /// + [JsiiOptional] + [JsiiProperty(name: \\"name\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? Name + { + get; + set; + } + + /// + /// Schema: CfnClusterProps#Tags + /// + [JsiiOptional] + [JsiiProperty(name: \\"tags\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsTags[]? Tags + { + get; + set; + } + + /// Desired Kubernetes version for your cluster. + /// + /// If you don't specify this value, the cluster uses the latest version from Amazon EKS. + /// + /// Schema: CfnClusterProps#Version + /// + [JsiiOptional] + [JsiiProperty(name: \\"version\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? Version + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterPropsKubernetesApiAccess.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: CfnClusterPropsKubernetesApiAccess + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\")] + public class CfnClusterPropsKubernetesApiAccess : AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess + { + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Roles + /// + [JsiiOptional] + [JsiiProperty(name: \\"roles\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Roles + { + get; + set; + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Users + /// + [JsiiOptional] + [JsiiProperty(name: \\"users\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Users + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterPropsKubernetesNetworkConfig.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\")] + public class CfnClusterPropsKubernetesNetworkConfig : AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig + { + /// Specify the range from which cluster services will receive IPv4 addresses. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + /// + [JsiiOptional] + [JsiiProperty(name: \\"serviceIpv4Cidr\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? ServiceIpv4Cidr + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterPropsResourcesVpcConfig.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + #pragma warning disable CS8618 + + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\")] + public class CfnClusterPropsResourcesVpcConfig : AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig + { + /// Specify subnets for your Amazon EKS worker nodes. + /// + /// Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + /// + [JsiiProperty(name: \\"subnetIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOverride: true)] + public string[] SubnetIds + { + get; + set; + } + + /// Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + /// + /// If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"endpointPrivateAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true, isOverride: true)] + public bool? EndpointPrivateAccess + { + get; + set; + } + + /// Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + /// + /// If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"endpointPublicAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true, isOverride: true)] + public bool? EndpointPublicAccess + { + get; + set; + } + + /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + /// + /// Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + /// + [JsiiOptional] + [JsiiProperty(name: \\"publicAccessCidrs\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? PublicAccessCidrs + { + get; + set; + } + + /// Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// If you don't specify a security group, the default security group for your VPC is used. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + /// + [JsiiOptional] + [JsiiProperty(name: \\"securityGroupIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? SecurityGroupIds + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterPropsTags.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + #pragma warning disable CS8618 + + /// + /// Schema: CfnClusterPropsTags + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\")] + public class CfnClusterPropsTags : AWSQS::EKS::Cluster.ICfnClusterPropsTags + { + /// + /// Schema: CfnClusterPropsTags#Key + /// + [JsiiProperty(name: \\"key\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOverride: true)] + public string Key + { + get; + set; + } + + /// + /// Schema: CfnClusterPropsTags#Value + /// + [JsiiProperty(name: \\"value\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOverride: true)] + public string Value + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/EncryptionConfigEntry.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// The encryption configuration for the cluster. + /// + /// Schema: EncryptionConfigEntry + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\")] + public class EncryptionConfigEntry : AWSQS::EKS::Cluster.IEncryptionConfigEntry + { + /// + /// Schema: EncryptionConfigEntry#Provider + /// + [JsiiOptional] + [JsiiProperty(name: \\"provider\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\\\\\"}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.IProvider? Provider + { + get; + set; + } + + /// Specifies the resources to be encrypted. + /// + /// The only supported value is \\"secrets\\". + /// + /// Schema: EncryptionConfigEntry#Resources + /// + [JsiiOptional] + [JsiiProperty(name: \\"resources\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? Resources + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterProps.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + /// + /// Schema: CfnClusterProps + /// + [JsiiInterface(nativeType: typeof(ICfnClusterProps), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\")] + public interface ICfnClusterProps + { + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#ResourcesVpcConfig + /// + [JsiiProperty(name: \\"resourcesVpcConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\\\\\"}\\")] + AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig ResourcesVpcConfig + { + get; + } + + /// Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + /// + /// This provides permissions for Amazon EKS to call other AWS APIs. + /// + /// Schema: CfnClusterProps#RoleArn + /// + [JsiiProperty(name: \\"roleArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + string RoleArn + { + get; + } + + /// Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + /// + /// By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + /// + /// Schema: CfnClusterProps#EnabledClusterLoggingTypes + /// + [JsiiProperty(name: \\"enabledClusterLoggingTypes\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? EnabledClusterLoggingTypes + { + get + { + return null; + } + } + + /// Encryption configuration for the cluster. + /// + /// Schema: CfnClusterProps#EncryptionConfig + /// + [JsiiProperty(name: \\"encryptionConfig\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.IEncryptionConfigEntry[]? EncryptionConfig + { + get + { + return null; + } + } + + /// + /// Schema: CfnClusterProps#KubernetesApiAccess + /// + [JsiiProperty(name: \\"kubernetesApiAccess\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess? KubernetesApiAccess + { + get + { + return null; + } + } + + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#KubernetesNetworkConfig + /// + [JsiiProperty(name: \\"kubernetesNetworkConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig? KubernetesNetworkConfig + { + get + { + return null; + } + } + + /// Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + /// + /// this provides permissions for Lambda to be invoked and attach to the cluster VPC + /// + /// Schema: CfnClusterProps#LambdaRoleName + /// + [JsiiProperty(name: \\"lambdaRoleName\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? LambdaRoleName + { + get + { + return null; + } + } + + /// A unique name for your cluster. + /// + /// Schema: CfnClusterProps#Name + /// + [JsiiProperty(name: \\"name\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? Name + { + get + { + return null; + } + } + + /// + /// Schema: CfnClusterProps#Tags + /// + [JsiiProperty(name: \\"tags\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.ICfnClusterPropsTags[]? Tags + { + get + { + return null; + } + } + + /// Desired Kubernetes version for your cluster. + /// + /// If you don't specify this value, the cluster uses the latest version from Amazon EKS. + /// + /// Schema: CfnClusterProps#Version + /// + [JsiiProperty(name: \\"version\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? Version + { + get + { + return null; + } + } + + /// A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + /// + /// Schema: CfnClusterProps + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterProps), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterProps + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#ResourcesVpcConfig + /// + [JsiiProperty(name: \\"resourcesVpcConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\\\\\"}\\")] + public AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig ResourcesVpcConfig + { + get => GetInstanceProperty()!; + } + + /// Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + /// + /// This provides permissions for Amazon EKS to call other AWS APIs. + /// + /// Schema: CfnClusterProps#RoleArn + /// + [JsiiProperty(name: \\"roleArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public string RoleArn + { + get => GetInstanceProperty()!; + } + + /// Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + /// + /// By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + /// + /// Schema: CfnClusterProps#EnabledClusterLoggingTypes + /// + [JsiiOptional] + [JsiiProperty(name: \\"enabledClusterLoggingTypes\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? EnabledClusterLoggingTypes + { + get => GetInstanceProperty(); + } + + /// Encryption configuration for the cluster. + /// + /// Schema: CfnClusterProps#EncryptionConfig + /// + [JsiiOptional] + [JsiiProperty(name: \\"encryptionConfig\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public AWSQS::EKS::Cluster.IEncryptionConfigEntry[]? EncryptionConfig + { + get => GetInstanceProperty(); + } + + /// + /// Schema: CfnClusterProps#KubernetesApiAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"kubernetesApiAccess\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\\\\\"}\\", isOptional: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess? KubernetesApiAccess + { + get => GetInstanceProperty(); + } + + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#KubernetesNetworkConfig + /// + [JsiiOptional] + [JsiiProperty(name: \\"kubernetesNetworkConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\\\\\"}\\", isOptional: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig? KubernetesNetworkConfig + { + get => GetInstanceProperty(); + } + + /// Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + /// + /// this provides permissions for Lambda to be invoked and attach to the cluster VPC + /// + /// Schema: CfnClusterProps#LambdaRoleName + /// + [JsiiOptional] + [JsiiProperty(name: \\"lambdaRoleName\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? LambdaRoleName + { + get => GetInstanceProperty(); + } + + /// A unique name for your cluster. + /// + /// Schema: CfnClusterProps#Name + /// + [JsiiOptional] + [JsiiProperty(name: \\"name\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? Name + { + get => GetInstanceProperty(); + } + + /// + /// Schema: CfnClusterProps#Tags + /// + [JsiiOptional] + [JsiiProperty(name: \\"tags\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsTags[]? Tags + { + get => GetInstanceProperty(); + } + + /// Desired Kubernetes version for your cluster. + /// + /// If you don't specify this value, the cluster uses the latest version from Amazon EKS. + /// + /// Schema: CfnClusterProps#Version + /// + [JsiiOptional] + [JsiiProperty(name: \\"version\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? Version + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterPropsKubernetesApiAccess.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: CfnClusterPropsKubernetesApiAccess + /// + [JsiiInterface(nativeType: typeof(ICfnClusterPropsKubernetesApiAccess), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\")] + public interface ICfnClusterPropsKubernetesApiAccess + { + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Roles + /// + [JsiiProperty(name: \\"roles\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Roles + { + get + { + return null; + } + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Users + /// + [JsiiProperty(name: \\"users\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Users + { + get + { + return null; + } + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterPropsKubernetesApiAccess), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Roles + /// + [JsiiOptional] + [JsiiProperty(name: \\"roles\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Roles + { + get => GetInstanceProperty(); + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Users + /// + [JsiiOptional] + [JsiiProperty(name: \\"users\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Users + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterPropsKubernetesNetworkConfig.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig + /// + [JsiiInterface(nativeType: typeof(ICfnClusterPropsKubernetesNetworkConfig), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\")] + public interface ICfnClusterPropsKubernetesNetworkConfig + { + /// Specify the range from which cluster services will receive IPv4 addresses. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + /// + [JsiiProperty(name: \\"serviceIpv4Cidr\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? ServiceIpv4Cidr + { + get + { + return null; + } + } + + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterPropsKubernetesNetworkConfig), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// Specify the range from which cluster services will receive IPv4 addresses. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + /// + [JsiiOptional] + [JsiiProperty(name: \\"serviceIpv4Cidr\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? ServiceIpv4Cidr + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterPropsResourcesVpcConfig.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig + /// + [JsiiInterface(nativeType: typeof(ICfnClusterPropsResourcesVpcConfig), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\")] + public interface ICfnClusterPropsResourcesVpcConfig + { + /// Specify subnets for your Amazon EKS worker nodes. + /// + /// Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + /// + [JsiiProperty(name: \\"subnetIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\")] + string[] SubnetIds + { + get; + } + + /// Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + /// + /// If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + /// + [JsiiProperty(name: \\"endpointPrivateAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + bool? EndpointPrivateAccess + { + get + { + return null; + } + } + + /// Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + /// + /// If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + /// + [JsiiProperty(name: \\"endpointPublicAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + bool? EndpointPublicAccess + { + get + { + return null; + } + } + + /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + /// + /// Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + /// + [JsiiProperty(name: \\"publicAccessCidrs\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? PublicAccessCidrs + { + get + { + return null; + } + } + + /// Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// If you don't specify a security group, the default security group for your VPC is used. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + /// + [JsiiProperty(name: \\"securityGroupIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? SecurityGroupIds + { + get + { + return null; + } + } + + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterPropsResourcesVpcConfig), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// Specify subnets for your Amazon EKS worker nodes. + /// + /// Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + /// + [JsiiProperty(name: \\"subnetIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\")] + public string[] SubnetIds + { + get => GetInstanceProperty()!; + } + + /// Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + /// + /// If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"endpointPrivateAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true)] + public bool? EndpointPrivateAccess + { + get => GetInstanceProperty(); + } + + /// Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + /// + /// If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"endpointPublicAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true)] + public bool? EndpointPublicAccess + { + get => GetInstanceProperty(); + } + + /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + /// + /// Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + /// + [JsiiOptional] + [JsiiProperty(name: \\"publicAccessCidrs\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? PublicAccessCidrs + { + get => GetInstanceProperty(); + } + + /// Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// If you don't specify a security group, the default security group for your VPC is used. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + /// + [JsiiOptional] + [JsiiProperty(name: \\"securityGroupIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? SecurityGroupIds + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterPropsTags.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: CfnClusterPropsTags + /// + [JsiiInterface(nativeType: typeof(ICfnClusterPropsTags), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\")] + public interface ICfnClusterPropsTags + { + /// + /// Schema: CfnClusterPropsTags#Key + /// + [JsiiProperty(name: \\"key\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + string Key + { + get; + } + + /// + /// Schema: CfnClusterPropsTags#Value + /// + [JsiiProperty(name: \\"value\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + string Value + { + get; + } + + /// + /// Schema: CfnClusterPropsTags + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterPropsTags), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterPropsTags + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// + /// Schema: CfnClusterPropsTags#Key + /// + [JsiiProperty(name: \\"key\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public string Key + { + get => GetInstanceProperty()!; + } + + /// + /// Schema: CfnClusterPropsTags#Value + /// + [JsiiProperty(name: \\"value\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public string Value + { + get => GetInstanceProperty()!; + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/IEncryptionConfigEntry.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// The encryption configuration for the cluster. + /// + /// Schema: EncryptionConfigEntry + /// + [JsiiInterface(nativeType: typeof(IEncryptionConfigEntry), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\")] + public interface IEncryptionConfigEntry + { + /// + /// Schema: EncryptionConfigEntry#Provider + /// + [JsiiProperty(name: \\"provider\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.IProvider? Provider + { + get + { + return null; + } + } + + /// Specifies the resources to be encrypted. + /// + /// The only supported value is \\"secrets\\". + /// + /// Schema: EncryptionConfigEntry#Resources + /// + [JsiiProperty(name: \\"resources\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? Resources + { + get + { + return null; + } + } + + /// The encryption configuration for the cluster. + /// + /// Schema: EncryptionConfigEntry + /// + [JsiiTypeProxy(nativeType: typeof(IEncryptionConfigEntry), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.IEncryptionConfigEntry + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// + /// Schema: EncryptionConfigEntry#Provider + /// + [JsiiOptional] + [JsiiProperty(name: \\"provider\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\\\\\"}\\", isOptional: true)] + public AWSQS::EKS::Cluster.IProvider? Provider + { + get => GetInstanceProperty(); + } + + /// Specifies the resources to be encrypted. + /// + /// The only supported value is \\"secrets\\". + /// + /// Schema: EncryptionConfigEntry#Resources + /// + [JsiiOptional] + [JsiiProperty(name: \\"resources\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? Resources + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/IKubernetesApiAccessEntry.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: KubernetesApiAccessEntry + /// + [JsiiInterface(nativeType: typeof(IKubernetesApiAccessEntry), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\")] + public interface IKubernetesApiAccessEntry + { + /// + /// Schema: KubernetesApiAccessEntry#Arn + /// + [JsiiProperty(name: \\"arn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? Arn + { + get + { + return null; + } + } + + /// + /// Schema: KubernetesApiAccessEntry#Groups + /// + [JsiiProperty(name: \\"groups\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? Groups + { + get + { + return null; + } + } + + /// + /// Schema: KubernetesApiAccessEntry#Username + /// + [JsiiProperty(name: \\"username\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? Username + { + get + { + return null; + } + } + + /// + /// Schema: KubernetesApiAccessEntry + /// + [JsiiTypeProxy(nativeType: typeof(IKubernetesApiAccessEntry), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.IKubernetesApiAccessEntry + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// + /// Schema: KubernetesApiAccessEntry#Arn + /// + [JsiiOptional] + [JsiiProperty(name: \\"arn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? Arn + { + get => GetInstanceProperty(); + } + + /// + /// Schema: KubernetesApiAccessEntry#Groups + /// + [JsiiOptional] + [JsiiProperty(name: \\"groups\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? Groups + { + get => GetInstanceProperty(); + } + + /// + /// Schema: KubernetesApiAccessEntry#Username + /// + [JsiiOptional] + [JsiiProperty(name: \\"username\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? Username + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/IProvider.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// AWS Key Management Service (AWS KMS) customer master key (CMK). + /// + /// Either the ARN or the alias can be used. + /// + /// Schema: Provider + /// + [JsiiInterface(nativeType: typeof(IProvider), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\")] + public interface IProvider + { + /// Amazon Resource Name (ARN) or alias of the customer master key (CMK). + /// + /// The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + /// + /// Schema: Provider#KeyArn + /// + [JsiiProperty(name: \\"keyArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? KeyArn + { + get + { + return null; + } + } + + /// AWS Key Management Service (AWS KMS) customer master key (CMK). + /// + /// Either the ARN or the alias can be used. + /// + /// Schema: Provider + /// + [JsiiTypeProxy(nativeType: typeof(IProvider), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.IProvider + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// Amazon Resource Name (ARN) or alias of the customer master key (CMK). + /// + /// The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + /// + /// Schema: Provider#KeyArn + /// + [JsiiOptional] + [JsiiProperty(name: \\"keyArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? KeyArn + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/Internal/DependencyResolution/Anchor.cs" => "#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster.Internal.DependencyResolution +{ + public sealed class Anchor + { + public Anchor() + { + new Amazon.CDK.CloudAssembly.Schema.Internal.DependencyResolution.Anchor(); + new Amazon.CDK.Internal.DependencyResolution.Anchor(); + new Amazon.CDK.CXAPI.Internal.DependencyResolution.Anchor(); + new Amazon.CDK.RegionInfo.Internal.DependencyResolution.Anchor(); + new Constructs.Internal.DependencyResolution.Anchor(); + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/KubernetesApiAccessEntry.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: KubernetesApiAccessEntry + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\")] + public class KubernetesApiAccessEntry : AWSQS::EKS::Cluster.IKubernetesApiAccessEntry + { + /// + /// Schema: KubernetesApiAccessEntry#Arn + /// + [JsiiOptional] + [JsiiProperty(name: \\"arn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? Arn + { + get; + set; + } + + /// + /// Schema: KubernetesApiAccessEntry#Groups + /// + [JsiiOptional] + [JsiiProperty(name: \\"groups\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? Groups + { + get; + set; + } + + /// + /// Schema: KubernetesApiAccessEntry#Username + /// + [JsiiOptional] + [JsiiProperty(name: \\"username\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? Username + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/Provider.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// AWS Key Management Service (AWS KMS) customer master key (CMK). + /// + /// Either the ARN or the alias can be used. + /// + /// Schema: Provider + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\")] + public class Provider : AWSQS::EKS::Cluster.IProvider + { + /// Amazon Resource Name (ARN) or alias of the customer master key (CMK). + /// + /// The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + /// + /// Schema: Provider#KeyArn + /// + [JsiiOptional] + [JsiiProperty(name: \\"keyArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? KeyArn + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster.csproj" => " + + + 1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6 + AWSQS::EKS::Cluster + UNLICENSED + 0.0.0 + + generated@generated.com + en-US + http://generated + http://generated + git + + true + true + true + true + enable + snupkg + netcoreapp3.1 + + + + + + + + + + + + + + + 0612,0618 + + 0108,0109 + + + +", + "AWSQS::EKS::Cluster/AssemblyInfo.cs" => "using Amazon.JSII.Runtime.Deputy; + +[assembly: JsiiAssembly(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", \\"0.0.0\\", \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6-0.0.0.tgz\\")] +", + "awsqs-eks-cluster.ts" => "// Generated by cdk-import +import * as cdk from '@aws-cdk/core'; + +/** + * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + * + * @schema CfnClusterProps + */ +export interface CfnClusterProps { + /** + * A unique name for your cluster. + * + * @schema CfnClusterProps#Name + */ + readonly name?: string; + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * + * @schema CfnClusterProps#RoleArn + */ + readonly roleArn: string; + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * + * @schema CfnClusterProps#LambdaRoleName + */ + readonly lambdaRoleName?: string; + + /** + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * + * @schema CfnClusterProps#Version + */ + readonly version?: string; + + /** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterProps#KubernetesNetworkConfig + */ + readonly kubernetesNetworkConfig?: CfnClusterPropsKubernetesNetworkConfig; + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterProps#ResourcesVpcConfig + */ + readonly resourcesVpcConfig: CfnClusterPropsResourcesVpcConfig; + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * + * @schema CfnClusterProps#EnabledClusterLoggingTypes + */ + readonly enabledClusterLoggingTypes?: string[]; + + /** + * Encryption configuration for the cluster. + * + * @schema CfnClusterProps#EncryptionConfig + */ + readonly encryptionConfig?: EncryptionConfigEntry[]; + + /** + * @schema CfnClusterProps#KubernetesApiAccess + */ + readonly kubernetesApiAccess?: CfnClusterPropsKubernetesApiAccess; + + /** + * @schema CfnClusterProps#Tags + */ + readonly tags?: CfnClusterPropsTags[]; + +} + +/** + * Converts an object of type 'CfnClusterProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterProps(obj: CfnClusterProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Name': obj.name, + 'RoleArn': obj.roleArn, + 'LambdaRoleName': obj.lambdaRoleName, + 'Version': obj.version, + 'KubernetesNetworkConfig': toJson_CfnClusterPropsKubernetesNetworkConfig(obj.kubernetesNetworkConfig), + 'ResourcesVpcConfig': toJson_CfnClusterPropsResourcesVpcConfig(obj.resourcesVpcConfig), + 'EnabledClusterLoggingTypes': obj.enabledClusterLoggingTypes?.map(y => y), + 'EncryptionConfig': obj.encryptionConfig?.map(y => toJson_EncryptionConfigEntry(y)), + 'KubernetesApiAccess': toJson_CfnClusterPropsKubernetesApiAccess(obj.kubernetesApiAccess), + 'Tags': obj.tags?.map(y => toJson_CfnClusterPropsTags(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterPropsKubernetesNetworkConfig + */ +export interface CfnClusterPropsKubernetesNetworkConfig { + /** + * Specify the range from which cluster services will receive IPv4 addresses. + * + * @schema CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + */ + readonly serviceIpv4Cidr?: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesNetworkConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesNetworkConfig(obj: CfnClusterPropsKubernetesNetworkConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'ServiceIpv4Cidr': obj.serviceIpv4Cidr, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterPropsResourcesVpcConfig + */ +export interface CfnClusterPropsResourcesVpcConfig { + /** + * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + * + * @schema CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + */ + readonly securityGroupIds?: string[]; + + /** + * Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + * + * @schema CfnClusterPropsResourcesVpcConfig#SubnetIds + */ + readonly subnetIds: string[]; + + /** + * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + */ + readonly endpointPublicAccess?: boolean; + + /** + * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + */ + readonly endpointPrivateAccess?: boolean; + + /** + * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + * + * @schema CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + */ + readonly publicAccessCidrs?: string[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsResourcesVpcConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsResourcesVpcConfig(obj: CfnClusterPropsResourcesVpcConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecurityGroupIds': obj.securityGroupIds?.map(y => y), + 'SubnetIds': obj.subnetIds?.map(y => y), + 'EndpointPublicAccess': obj.endpointPublicAccess, + 'EndpointPrivateAccess': obj.endpointPrivateAccess, + 'PublicAccessCidrs': obj.publicAccessCidrs?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The encryption configuration for the cluster. + * + * @schema EncryptionConfigEntry + */ +export interface EncryptionConfigEntry { + /** + * Specifies the resources to be encrypted. The only supported value is \\"secrets\\". + * + * @schema EncryptionConfigEntry#Resources + */ + readonly resources?: string[]; + + /** + * @schema EncryptionConfigEntry#Provider + */ + readonly provider?: Provider; + +} + +/** + * Converts an object of type 'EncryptionConfigEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EncryptionConfigEntry(obj: EncryptionConfigEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Resources': obj.resources?.map(y => y), + 'Provider': toJson_Provider(obj.provider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsKubernetesApiAccess + */ +export interface CfnClusterPropsKubernetesApiAccess { + /** + * @schema CfnClusterPropsKubernetesApiAccess#Roles + */ + readonly roles?: KubernetesApiAccessEntry[]; + + /** + * @schema CfnClusterPropsKubernetesApiAccess#Users + */ + readonly users?: KubernetesApiAccessEntry[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesApiAccess' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesApiAccess(obj: CfnClusterPropsKubernetesApiAccess | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Roles': obj.roles?.map(y => toJson_KubernetesApiAccessEntry(y)), + 'Users': obj.users?.map(y => toJson_KubernetesApiAccessEntry(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsTags + */ +export interface CfnClusterPropsTags { + /** + * @schema CfnClusterPropsTags#Value + */ + readonly value: string; + + /** + * @schema CfnClusterPropsTags#Key + */ + readonly key: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsTags' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsTags(obj: CfnClusterPropsTags | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Value': obj.value, + 'Key': obj.key, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used. + * + * @schema Provider + */ +export interface Provider { + /** + * Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + * + * @schema Provider#KeyArn + */ + readonly keyArn?: string; + +} + +/** + * Converts an object of type 'Provider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_Provider(obj: Provider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'KeyArn': obj.keyArn, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema KubernetesApiAccessEntry + */ +export interface KubernetesApiAccessEntry { + /** + * @schema KubernetesApiAccessEntry#Arn + */ + readonly arn?: string; + + /** + * @schema KubernetesApiAccessEntry#Username + */ + readonly username?: string; + + /** + * @schema KubernetesApiAccessEntry#Groups + */ + readonly groups?: string[]; + +} + +/** + * Converts an object of type 'KubernetesApiAccessEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubernetesApiAccessEntry(obj: KubernetesApiAccessEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Arn': obj.arn, + 'Username': obj.username, + 'Groups': obj.groups?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * A CloudFormation \`AWSQS::EKS::Cluster\` + * + * @cloudformationResource AWSQS::EKS::Cluster + * @stability external + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ +export class CfnCluster extends cdk.CfnResource { + /** + * The CloudFormation resource type name for this resource class. + */ + public static readonly CFN_RESOURCE_TYPE_NAME = 'AWSQS::EKS::Cluster'; + + /** + * \`AWSQS::EKS::Cluster.Name\` + * A unique name for your cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly name: string | undefined; + /** + * \`AWSQS::EKS::Cluster.RoleArn\` + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly roleArn: string; + /** + * \`AWSQS::EKS::Cluster.LambdaRoleName\` + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly lambdaRoleName: string | undefined; + /** + * \`AWSQS::EKS::Cluster.Version\` + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly version: string | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` + * Network configuration for Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesNetworkConfig: any | undefined; + /** + * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly resourcesVpcConfig: any; + /** + * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly enabledClusterLoggingTypes: string[] | undefined; + /** + * \`AWSQS::EKS::Cluster.EncryptionConfig\` + * Encryption configuration for the cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly encryptionConfig: EncryptionConfigEntry[] | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesApiAccess\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesApiAccess: any | undefined; + /** + * \`AWSQS::EKS::Cluster.Tags\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly tags: any[] | undefined; + /** + * Attribute \`AWSQS::EKS::Cluster.Arn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.Endpoint\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEndpoint: string; + /** + * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrClusterSecurityGroupId: string; + /** + * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrCertificateAuthorityData: string; + /** + * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEncryptionConfigKeyArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrOIDCIssuerURL: string; + + /** + * Create a new \`AWSQS::EKS::Cluster\`. + * + * @param scope - scope in which this resource is defined + * @param id - scoped id of the resource + * @param props - resource properties + */ + constructor(scope: cdk.Construct, id: string, props: CfnClusterProps) { + super(scope, id, { type: CfnCluster.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnClusterProps(props)! }); + + this.name = props.name; + this.roleArn = props.roleArn; + this.lambdaRoleName = props.lambdaRoleName; + this.version = props.version; + this.kubernetesNetworkConfig = props.kubernetesNetworkConfig; + this.resourcesVpcConfig = props.resourcesVpcConfig; + this.enabledClusterLoggingTypes = props.enabledClusterLoggingTypes; + this.encryptionConfig = props.encryptionConfig; + this.kubernetesApiAccess = props.kubernetesApiAccess; + this.tags = props.tags; + this.attrArn = cdk.Token.asString(this.getAtt('Arn')); + this.attrEndpoint = cdk.Token.asString(this.getAtt('Endpoint')); + this.attrClusterSecurityGroupId = cdk.Token.asString(this.getAtt('ClusterSecurityGroupId')); + this.attrCertificateAuthorityData = cdk.Token.asString(this.getAtt('CertificateAuthorityData')); + this.attrEncryptionConfigKeyArn = cdk.Token.asString(this.getAtt('EncryptionConfigKeyArn')); + this.attrOIDCIssuerURL = cdk.Token.asString(this.getAtt('OIDCIssuerURL')); + } +}", + "awsqs_eks_cluster/__init__.py" => "import abc +import builtins +import datetime +import enum +import typing + +import jsii +import publication +import typing_extensions + +from ._jsii import * + +import aws_cdk.core + + +class CfnCluster( + aws_cdk.core.CfnResource, + metaclass=jsii.JSIIMeta, + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", +): + '''A CloudFormation \`\`AWSQS::EKS::Cluster\`\`. + + :cloudformationResource: AWSQS::EKS::Cluster + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + + def __init__( + self, + scope: aws_cdk.core.Construct, + id: builtins.str, + *, + resources_vpc_config: \\"CfnClusterPropsResourcesVpcConfig\\", + role_arn: builtins.str, + enabled_cluster_logging_types: typing.Optional[typing.Sequence[builtins.str]] = None, + encryption_config: typing.Optional[typing.Sequence[\\"EncryptionConfigEntry\\"]] = None, + kubernetes_api_access: typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"] = None, + kubernetes_network_config: typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"] = None, + lambda_role_name: typing.Optional[builtins.str] = None, + name: typing.Optional[builtins.str] = None, + tags: typing.Optional[typing.Sequence[\\"CfnClusterPropsTags\\"]] = None, + version: typing.Optional[builtins.str] = None, + ) -> None: + '''Create a new \`\`AWSQS::EKS::Cluster\`\`. + + :param scope: - scope in which this resource is defined. + :param id: - scoped id of the resource. + :param resources_vpc_config: An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + :param role_arn: Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + :param enabled_cluster_logging_types: Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + :param encryption_config: Encryption configuration for the cluster. + :param kubernetes_api_access: + :param kubernetes_network_config: Network configuration for Amazon EKS cluster. + :param lambda_role_name: Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + :param name: A unique name for your cluster. + :param tags: + :param version: Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + ''' + props = CfnClusterProps( + resources_vpc_config=resources_vpc_config, + role_arn=role_arn, + enabled_cluster_logging_types=enabled_cluster_logging_types, + encryption_config=encryption_config, + kubernetes_api_access=kubernetes_api_access, + kubernetes_network_config=kubernetes_network_config, + lambda_role_name=lambda_role_name, + name=name, + tags=tags, + version=version, + ) + + jsii.create(self.__class__, self, [scope, id, props]) + + @jsii.python.classproperty # type: ignore[misc] + @jsii.member(jsii_name=\\"CFN_RESOURCE_TYPE_NAME\\") + def CFN_RESOURCE_TYPE_NAME(cls) -> builtins.str: + '''The CloudFormation resource type name for this resource class.''' + return typing.cast(builtins.str, jsii.sget(cls, \\"CFN_RESOURCE_TYPE_NAME\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrArn\\") + def attr_arn(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.Arn\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrCertificateAuthorityData\\") + def attr_certificate_authority_data(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.CertificateAuthorityData\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrCertificateAuthorityData\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrClusterSecurityGroupId\\") + def attr_cluster_security_group_id(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrClusterSecurityGroupId\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrEncryptionConfigKeyArn\\") + def attr_encryption_config_key_arn(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrEncryptionConfigKeyArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrEndpoint\\") + def attr_endpoint(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.Endpoint\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrEndpoint\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrOIDCIssuerURL\\") + def attr_oidc_issuer_url(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.OIDCIssuerURL\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrOIDCIssuerURL\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"kubernetesApiAccess\\") + def kubernetes_api_access(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.KubernetesApiAccess\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"kubernetesApiAccess\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"kubernetesNetworkConfig\\") + def kubernetes_network_config(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.KubernetesNetworkConfig\`\` Network configuration for Amazon EKS cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"kubernetesNetworkConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"resourcesVpcConfig\\") + def resources_vpc_config(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.ResourcesVpcConfig\`\` An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"resourcesVpcConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"roleArn\\") + def role_arn(self) -> builtins.str: + '''\`\`AWSQS::EKS::Cluster.RoleArn\`\` Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"roleArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"enabledClusterLoggingTypes\\") + def enabled_cluster_logging_types( + self, + ) -> typing.Optional[typing.List[builtins.str]]: + '''\`\`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\`\` Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, \\"enabledClusterLoggingTypes\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"encryptionConfig\\") + def encryption_config( + self, + ) -> typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]]: + '''\`\`AWSQS::EKS::Cluster.EncryptionConfig\`\` Encryption configuration for the cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]], jsii.get(self, \\"encryptionConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"lambdaRoleName\\") + def lambda_role_name(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.LambdaRoleName\`\` Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"lambdaRoleName\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"name\\") + def name(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.Name\`\` A unique name for your cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"name\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"tags\\") + def tags(self) -> typing.Optional[typing.List[typing.Any]]: + '''\`\`AWSQS::EKS::Cluster.Tags\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[typing.Any]], jsii.get(self, \\"tags\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"version\\") + def version(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.Version\`\` Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"version\\")) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\", + jsii_struct_bases=[], + name_mapping={ + \\"resources_vpc_config\\": \\"resourcesVpcConfig\\", + \\"role_arn\\": \\"roleArn\\", + \\"enabled_cluster_logging_types\\": \\"enabledClusterLoggingTypes\\", + \\"encryption_config\\": \\"encryptionConfig\\", + \\"kubernetes_api_access\\": \\"kubernetesApiAccess\\", + \\"kubernetes_network_config\\": \\"kubernetesNetworkConfig\\", + \\"lambda_role_name\\": \\"lambdaRoleName\\", + \\"name\\": \\"name\\", + \\"tags\\": \\"tags\\", + \\"version\\": \\"version\\", + }, +) +class CfnClusterProps: + def __init__( + self, + *, + resources_vpc_config: \\"CfnClusterPropsResourcesVpcConfig\\", + role_arn: builtins.str, + enabled_cluster_logging_types: typing.Optional[typing.Sequence[builtins.str]] = None, + encryption_config: typing.Optional[typing.Sequence[\\"EncryptionConfigEntry\\"]] = None, + kubernetes_api_access: typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"] = None, + kubernetes_network_config: typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"] = None, + lambda_role_name: typing.Optional[builtins.str] = None, + name: typing.Optional[builtins.str] = None, + tags: typing.Optional[typing.Sequence[\\"CfnClusterPropsTags\\"]] = None, + version: typing.Optional[builtins.str] = None, + ) -> None: + '''A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + + :param resources_vpc_config: An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + :param role_arn: Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + :param enabled_cluster_logging_types: Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + :param encryption_config: Encryption configuration for the cluster. + :param kubernetes_api_access: + :param kubernetes_network_config: Network configuration for Amazon EKS cluster. + :param lambda_role_name: Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + :param name: A unique name for your cluster. + :param tags: + :param version: Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :schema: CfnClusterProps + ''' + if isinstance(resources_vpc_config, dict): + resources_vpc_config = CfnClusterPropsResourcesVpcConfig(**resources_vpc_config) + if isinstance(kubernetes_api_access, dict): + kubernetes_api_access = CfnClusterPropsKubernetesApiAccess(**kubernetes_api_access) + if isinstance(kubernetes_network_config, dict): + kubernetes_network_config = CfnClusterPropsKubernetesNetworkConfig(**kubernetes_network_config) + self._values: typing.Dict[str, typing.Any] = { + \\"resources_vpc_config\\": resources_vpc_config, + \\"role_arn\\": role_arn, + } + if enabled_cluster_logging_types is not None: + self._values[\\"enabled_cluster_logging_types\\"] = enabled_cluster_logging_types + if encryption_config is not None: + self._values[\\"encryption_config\\"] = encryption_config + if kubernetes_api_access is not None: + self._values[\\"kubernetes_api_access\\"] = kubernetes_api_access + if kubernetes_network_config is not None: + self._values[\\"kubernetes_network_config\\"] = kubernetes_network_config + if lambda_role_name is not None: + self._values[\\"lambda_role_name\\"] = lambda_role_name + if name is not None: + self._values[\\"name\\"] = name + if tags is not None: + self._values[\\"tags\\"] = tags + if version is not None: + self._values[\\"version\\"] = version + + @builtins.property + def resources_vpc_config(self) -> \\"CfnClusterPropsResourcesVpcConfig\\": + '''An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :schema: CfnClusterProps#ResourcesVpcConfig + ''' + result = self._values.get(\\"resources_vpc_config\\") + assert result is not None, \\"Required property 'resources_vpc_config' is missing\\" + return typing.cast(\\"CfnClusterPropsResourcesVpcConfig\\", result) + + @builtins.property + def role_arn(self) -> builtins.str: + '''Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + + This provides permissions for Amazon EKS to call other AWS APIs. + + :schema: CfnClusterProps#RoleArn + ''' + result = self._values.get(\\"role_arn\\") + assert result is not None, \\"Required property 'role_arn' is missing\\" + return typing.cast(builtins.str, result) + + @builtins.property + def enabled_cluster_logging_types( + self, + ) -> typing.Optional[typing.List[builtins.str]]: + '''Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + + By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + + :schema: CfnClusterProps#EnabledClusterLoggingTypes + ''' + result = self._values.get(\\"enabled_cluster_logging_types\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def encryption_config( + self, + ) -> typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]]: + '''Encryption configuration for the cluster. + + :schema: CfnClusterProps#EncryptionConfig + ''' + result = self._values.get(\\"encryption_config\\") + return typing.cast(typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]], result) + + @builtins.property + def kubernetes_api_access( + self, + ) -> typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"]: + ''' + :schema: CfnClusterProps#KubernetesApiAccess + ''' + result = self._values.get(\\"kubernetes_api_access\\") + return typing.cast(typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"], result) + + @builtins.property + def kubernetes_network_config( + self, + ) -> typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"]: + '''Network configuration for Amazon EKS cluster. + + :schema: CfnClusterProps#KubernetesNetworkConfig + ''' + result = self._values.get(\\"kubernetes_network_config\\") + return typing.cast(typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"], result) + + @builtins.property + def lambda_role_name(self) -> typing.Optional[builtins.str]: + '''Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + + this provides permissions for Lambda to be invoked and attach to the cluster VPC + + :schema: CfnClusterProps#LambdaRoleName + ''' + result = self._values.get(\\"lambda_role_name\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def name(self) -> typing.Optional[builtins.str]: + '''A unique name for your cluster. + + :schema: CfnClusterProps#Name + ''' + result = self._values.get(\\"name\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def tags(self) -> typing.Optional[typing.List[\\"CfnClusterPropsTags\\"]]: + ''' + :schema: CfnClusterProps#Tags + ''' + result = self._values.get(\\"tags\\") + return typing.cast(typing.Optional[typing.List[\\"CfnClusterPropsTags\\"]], result) + + @builtins.property + def version(self) -> typing.Optional[builtins.str]: + '''Desired Kubernetes version for your cluster. + + If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :schema: CfnClusterProps#Version + ''' + result = self._values.get(\\"version\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterProps(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\", + jsii_struct_bases=[], + name_mapping={\\"roles\\": \\"roles\\", \\"users\\": \\"users\\"}, +) +class CfnClusterPropsKubernetesApiAccess: + def __init__( + self, + *, + roles: typing.Optional[typing.Sequence[\\"KubernetesApiAccessEntry\\"]] = None, + users: typing.Optional[typing.Sequence[\\"KubernetesApiAccessEntry\\"]] = None, + ) -> None: + ''' + :param roles: + :param users: + + :schema: CfnClusterPropsKubernetesApiAccess + ''' + self._values: typing.Dict[str, typing.Any] = {} + if roles is not None: + self._values[\\"roles\\"] = roles + if users is not None: + self._values[\\"users\\"] = users + + @builtins.property + def roles(self) -> typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]]: + ''' + :schema: CfnClusterPropsKubernetesApiAccess#Roles + ''' + result = self._values.get(\\"roles\\") + return typing.cast(typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]], result) + + @builtins.property + def users(self) -> typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]]: + ''' + :schema: CfnClusterPropsKubernetesApiAccess#Users + ''' + result = self._values.get(\\"users\\") + return typing.cast(typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsKubernetesApiAccess(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\", + jsii_struct_bases=[], + name_mapping={\\"service_ipv4_cidr\\": \\"serviceIpv4Cidr\\"}, +) +class CfnClusterPropsKubernetesNetworkConfig: + def __init__( + self, + *, + service_ipv4_cidr: typing.Optional[builtins.str] = None, + ) -> None: + '''Network configuration for Amazon EKS cluster. + + :param service_ipv4_cidr: Specify the range from which cluster services will receive IPv4 addresses. + + :schema: CfnClusterPropsKubernetesNetworkConfig + ''' + self._values: typing.Dict[str, typing.Any] = {} + if service_ipv4_cidr is not None: + self._values[\\"service_ipv4_cidr\\"] = service_ipv4_cidr + + @builtins.property + def service_ipv4_cidr(self) -> typing.Optional[builtins.str]: + '''Specify the range from which cluster services will receive IPv4 addresses. + + :schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + ''' + result = self._values.get(\\"service_ipv4_cidr\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsKubernetesNetworkConfig(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\", + jsii_struct_bases=[], + name_mapping={ + \\"subnet_ids\\": \\"subnetIds\\", + \\"endpoint_private_access\\": \\"endpointPrivateAccess\\", + \\"endpoint_public_access\\": \\"endpointPublicAccess\\", + \\"public_access_cidrs\\": \\"publicAccessCidrs\\", + \\"security_group_ids\\": \\"securityGroupIds\\", + }, +) +class CfnClusterPropsResourcesVpcConfig: + def __init__( + self, + *, + subnet_ids: typing.Sequence[builtins.str], + endpoint_private_access: typing.Optional[builtins.bool] = None, + endpoint_public_access: typing.Optional[builtins.bool] = None, + public_access_cidrs: typing.Optional[typing.Sequence[builtins.str]] = None, + security_group_ids: typing.Optional[typing.Sequence[builtins.str]] = None, + ) -> None: + '''An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :param subnet_ids: Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + :param endpoint_private_access: Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + :param endpoint_public_access: Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + :param public_access_cidrs: The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + :param security_group_ids: Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + + :schema: CfnClusterPropsResourcesVpcConfig + ''' + self._values: typing.Dict[str, typing.Any] = { + \\"subnet_ids\\": subnet_ids, + } + if endpoint_private_access is not None: + self._values[\\"endpoint_private_access\\"] = endpoint_private_access + if endpoint_public_access is not None: + self._values[\\"endpoint_public_access\\"] = endpoint_public_access + if public_access_cidrs is not None: + self._values[\\"public_access_cidrs\\"] = public_access_cidrs + if security_group_ids is not None: + self._values[\\"security_group_ids\\"] = security_group_ids + + @builtins.property + def subnet_ids(self) -> typing.List[builtins.str]: + '''Specify subnets for your Amazon EKS worker nodes. + + Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + + :schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + ''' + result = self._values.get(\\"subnet_ids\\") + assert result is not None, \\"Required property 'subnet_ids' is missing\\" + return typing.cast(typing.List[builtins.str], result) + + @builtins.property + def endpoint_private_access(self) -> typing.Optional[builtins.bool]: + '''Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + + If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + + :schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + ''' + result = self._values.get(\\"endpoint_private_access\\") + return typing.cast(typing.Optional[builtins.bool], result) + + @builtins.property + def endpoint_public_access(self) -> typing.Optional[builtins.bool]: + '''Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + + If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + + :schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + ''' + result = self._values.get(\\"endpoint_public_access\\") + return typing.cast(typing.Optional[builtins.bool], result) + + @builtins.property + def public_access_cidrs(self) -> typing.Optional[typing.List[builtins.str]]: + '''The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + + Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + + :schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + ''' + result = self._values.get(\\"public_access_cidrs\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def security_group_ids(self) -> typing.Optional[typing.List[builtins.str]]: + '''Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + + If you don't specify a security group, the default security group for your VPC is used. + + :schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + ''' + result = self._values.get(\\"security_group_ids\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsResourcesVpcConfig(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\", + jsii_struct_bases=[], + name_mapping={\\"key\\": \\"key\\", \\"value\\": \\"value\\"}, +) +class CfnClusterPropsTags: + def __init__(self, *, key: builtins.str, value: builtins.str) -> None: + ''' + :param key: + :param value: + + :schema: CfnClusterPropsTags + ''' + self._values: typing.Dict[str, typing.Any] = { + \\"key\\": key, + \\"value\\": value, + } + + @builtins.property + def key(self) -> builtins.str: + ''' + :schema: CfnClusterPropsTags#Key + ''' + result = self._values.get(\\"key\\") + assert result is not None, \\"Required property 'key' is missing\\" + return typing.cast(builtins.str, result) + + @builtins.property + def value(self) -> builtins.str: + ''' + :schema: CfnClusterPropsTags#Value + ''' + result = self._values.get(\\"value\\") + assert result is not None, \\"Required property 'value' is missing\\" + return typing.cast(builtins.str, result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsTags(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\", + jsii_struct_bases=[], + name_mapping={\\"provider\\": \\"provider\\", \\"resources\\": \\"resources\\"}, +) +class EncryptionConfigEntry: + def __init__( + self, + *, + provider: typing.Optional[\\"Provider\\"] = None, + resources: typing.Optional[typing.Sequence[builtins.str]] = None, + ) -> None: + '''The encryption configuration for the cluster. + + :param provider: + :param resources: Specifies the resources to be encrypted. The only supported value is \\"secrets\\". + + :schema: EncryptionConfigEntry + ''' + if isinstance(provider, dict): + provider = Provider(**provider) + self._values: typing.Dict[str, typing.Any] = {} + if provider is not None: + self._values[\\"provider\\"] = provider + if resources is not None: + self._values[\\"resources\\"] = resources + + @builtins.property + def provider(self) -> typing.Optional[\\"Provider\\"]: + ''' + :schema: EncryptionConfigEntry#Provider + ''' + result = self._values.get(\\"provider\\") + return typing.cast(typing.Optional[\\"Provider\\"], result) + + @builtins.property + def resources(self) -> typing.Optional[typing.List[builtins.str]]: + '''Specifies the resources to be encrypted. + + The only supported value is \\"secrets\\". + + :schema: EncryptionConfigEntry#Resources + ''' + result = self._values.get(\\"resources\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"EncryptionConfigEntry(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\", + jsii_struct_bases=[], + name_mapping={\\"arn\\": \\"arn\\", \\"groups\\": \\"groups\\", \\"username\\": \\"username\\"}, +) +class KubernetesApiAccessEntry: + def __init__( + self, + *, + arn: typing.Optional[builtins.str] = None, + groups: typing.Optional[typing.Sequence[builtins.str]] = None, + username: typing.Optional[builtins.str] = None, + ) -> None: + ''' + :param arn: + :param groups: + :param username: + + :schema: KubernetesApiAccessEntry + ''' + self._values: typing.Dict[str, typing.Any] = {} + if arn is not None: + self._values[\\"arn\\"] = arn + if groups is not None: + self._values[\\"groups\\"] = groups + if username is not None: + self._values[\\"username\\"] = username + + @builtins.property + def arn(self) -> typing.Optional[builtins.str]: + ''' + :schema: KubernetesApiAccessEntry#Arn + ''' + result = self._values.get(\\"arn\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def groups(self) -> typing.Optional[typing.List[builtins.str]]: + ''' + :schema: KubernetesApiAccessEntry#Groups + ''' + result = self._values.get(\\"groups\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def username(self) -> typing.Optional[builtins.str]: + ''' + :schema: KubernetesApiAccessEntry#Username + ''' + result = self._values.get(\\"username\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"KubernetesApiAccessEntry(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\", + jsii_struct_bases=[], + name_mapping={\\"key_arn\\": \\"keyArn\\"}, +) +class Provider: + def __init__(self, *, key_arn: typing.Optional[builtins.str] = None) -> None: + '''AWS Key Management Service (AWS KMS) customer master key (CMK). + + Either the ARN or the alias can be used. + + :param key_arn: Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + + :schema: Provider + ''' + self._values: typing.Dict[str, typing.Any] = {} + if key_arn is not None: + self._values[\\"key_arn\\"] = key_arn + + @builtins.property + def key_arn(self) -> typing.Optional[builtins.str]: + '''Amazon Resource Name (ARN) or alias of the customer master key (CMK). + + The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + + :schema: Provider#KeyArn + ''' + result = self._values.get(\\"key_arn\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"Provider(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +__all__ = [ + \\"CfnCluster\\", + \\"CfnClusterProps\\", + \\"CfnClusterPropsKubernetesApiAccess\\", + \\"CfnClusterPropsKubernetesNetworkConfig\\", + \\"CfnClusterPropsResourcesVpcConfig\\", + \\"CfnClusterPropsTags\\", + \\"EncryptionConfigEntry\\", + \\"KubernetesApiAccessEntry\\", + \\"Provider\\", +] + +publication.publish() +", + "awsqs_eks_cluster/_jsii/__init__.py" => "import abc +import builtins +import datetime +import enum +import typing + +import jsii +import publication +import typing_extensions + +import aws_cdk.cloud_assembly_schema._jsii +import aws_cdk.core._jsii +import aws_cdk.cx_api._jsii +import aws_cdk.region_info._jsii +import constructs._jsii + +__jsii_assembly__ = jsii.JSIIAssembly.load( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", + \\"0.0.0\\", + __name__[0:-6], + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6@0.0.0.jsii.tgz\\", +) + +__all__ = [ + \\"__jsii_assembly__\\", +] + +publication.publish() +", + "awsqs_eks_cluster/py.typed" => " +", + "src/main/java/com/my/module/$Module.java" => "package com.my.module; + +import static java.util.Arrays.asList; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.Reader; +import java.io.UncheckedIOException; + +import java.nio.charset.StandardCharsets; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import software.amazon.jsii.JsiiModule; + +@software.amazon.jsii.Internal +public final class $Module extends JsiiModule { + private static final Map MODULE_TYPES = load(); + + private static Map load() { + final Map result = new HashMap<>(); + final ClassLoader cl = $Module.class.getClassLoader(); + try (final InputStream is = cl.getResourceAsStream(\\"com/my/module/$Module.txt\\"); + final Reader rd = new InputStreamReader(is, StandardCharsets.UTF_8); + final BufferedReader br = new BufferedReader(rd)) { + br.lines() + .filter(line -> !line.trim().isEmpty()) + .forEach(line -> { + final String[] parts = line.split(\\"=\\", 2); + final String fqn = parts[0]; + final String className = parts[1]; + result.put(fqn, className); + }); + } + catch (final IOException exception) { + throw new UncheckedIOException(exception); + } + return result; + } + + private final Map> cache = new HashMap<>(); + + public $Module() { + super(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", \\"0.0.0\\", $Module.class, \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6@0.0.0.jsii.tgz\\"); + } + + @Override + public List> getDependencies() { + return asList(software.amazon.awscdk.cloudassembly.schema.$Module.class, software.amazon.awscdk.core.$Module.class, software.amazon.awscdk.cxapi.$Module.class, software.amazon.awscdk.regioninfo.$Module.class, software.constructs.$Module.class); + } + + @Override + protected Class resolveClass(final String fqn) throws ClassNotFoundException { + if (!MODULE_TYPES.containsKey(fqn)) { + throw new ClassNotFoundException(\\"Unknown JSII type: \\" + fqn); + } + String className = MODULE_TYPES.get(fqn); + if (!this.cache.containsKey(className)) { + this.cache.put(className, this.findClass(className)); + } + return this.cache.get(className); + } + + private Class findClass(final String binaryName) { + try { + return Class.forName(binaryName); + } + catch (final ClassNotFoundException exception) { + throw new RuntimeException(exception); + } + } +} +", + "src/main/java/com/my/module/CfnCluster.java" => "package com.my.module; + +/** + * A CloudFormation \`AWSQS::EKS::Cluster\`. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.888Z\\") +@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\") +public class CfnCluster extends software.amazon.awscdk.core.CfnResource { + + protected CfnCluster(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + } + + protected CfnCluster(final software.amazon.jsii.JsiiObject.InitializationMode initializationMode) { + super(initializationMode); + } + + static { + CFN_RESOURCE_TYPE_NAME = software.amazon.jsii.JsiiObject.jsiiStaticGet(com.my.module.CfnCluster.class, \\"CFN_RESOURCE_TYPE_NAME\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Create a new \`AWSQS::EKS::Cluster\`. + *

+ * @param scope - scope in which this resource is defined. This parameter is required. + * @param id - scoped id of the resource. This parameter is required. + * @param props - resource properties. This parameter is required. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public CfnCluster(final @org.jetbrains.annotations.NotNull software.amazon.awscdk.core.Construct scope, final @org.jetbrains.annotations.NotNull java.lang.String id, final @org.jetbrains.annotations.NotNull com.my.module.CfnClusterProps props) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + software.amazon.jsii.JsiiEngine.getInstance().createNewObject(this, new Object[] { java.util.Objects.requireNonNull(scope, \\"scope is required\\"), java.util.Objects.requireNonNull(id, \\"id is required\\"), java.util.Objects.requireNonNull(props, \\"props is required\\") }); + } + + /** + * The CloudFormation resource type name for this resource class. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public final static java.lang.String CFN_RESOURCE_TYPE_NAME; + + /** + * Attribute \`AWSQS::EKS::Cluster.Arn\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrArn() { + return software.amazon.jsii.Kernel.get(this, \\"attrArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrCertificateAuthorityData() { + return software.amazon.jsii.Kernel.get(this, \\"attrCertificateAuthorityData\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrClusterSecurityGroupId() { + return software.amazon.jsii.Kernel.get(this, \\"attrClusterSecurityGroupId\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrEncryptionConfigKeyArn() { + return software.amazon.jsii.Kernel.get(this, \\"attrEncryptionConfigKeyArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.Endpoint\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrEndpoint() { + return software.amazon.jsii.Kernel.get(this, \\"attrEndpoint\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrOIDCIssuerURL() { + return software.amazon.jsii.Kernel.get(this, \\"attrOIDCIssuerURL\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.KubernetesApiAccess\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.Object getKubernetesApiAccess() { + return software.amazon.jsii.Kernel.get(this, \\"kubernetesApiAccess\\", software.amazon.jsii.NativeType.forClass(java.lang.Object.class)); + } + + /** + * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` Network configuration for Amazon EKS cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.Object getKubernetesNetworkConfig() { + return software.amazon.jsii.Kernel.get(this, \\"kubernetesNetworkConfig\\", software.amazon.jsii.NativeType.forClass(java.lang.Object.class)); + } + + /** + * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.Object getResourcesVpcConfig() { + return software.amazon.jsii.Kernel.get(this, \\"resourcesVpcConfig\\", software.amazon.jsii.NativeType.forClass(java.lang.Object.class)); + } + + /** + * \`AWSQS::EKS::Cluster.RoleArn\` Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getRoleArn() { + return software.amazon.jsii.Kernel.get(this, \\"roleArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.util.List getEnabledClusterLoggingTypes() { + return java.util.Optional.ofNullable((java.util.List)(software.amazon.jsii.Kernel.get(this, \\"enabledClusterLoggingTypes\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))))).map(java.util.Collections::unmodifiableList).orElse(null); + } + + /** + * \`AWSQS::EKS::Cluster.EncryptionConfig\` Encryption configuration for the cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.util.List getEncryptionConfig() { + return java.util.Optional.ofNullable((java.util.List)(software.amazon.jsii.Kernel.get(this, \\"encryptionConfig\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.EncryptionConfigEntry.class))))).map(java.util.Collections::unmodifiableList).orElse(null); + } + + /** + * \`AWSQS::EKS::Cluster.LambdaRoleName\` Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.lang.String getLambdaRoleName() { + return software.amazon.jsii.Kernel.get(this, \\"lambdaRoleName\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.Name\` A unique name for your cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.lang.String getName() { + return software.amazon.jsii.Kernel.get(this, \\"name\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.Tags\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.util.List getTags() { + return java.util.Optional.ofNullable((java.util.List)(software.amazon.jsii.Kernel.get(this, \\"tags\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.Object.class))))).map(java.util.Collections::unmodifiableList).orElse(null); + } + + /** + * \`AWSQS::EKS::Cluster.Version\` Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.lang.String getVersion() { + return software.amazon.jsii.Kernel.get(this, \\"version\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * A fluent builder for {@link com.my.module.CfnCluster}. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public static final class Builder implements software.amazon.jsii.Builder { + /** + * @return a new instance of {@link Builder}. + * @param scope - scope in which this resource is defined. This parameter is required. + * @param id - scoped id of the resource. This parameter is required. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public static Builder create(final software.amazon.awscdk.core.Construct scope, final java.lang.String id) { + return new Builder(scope, id); + } + + private final software.amazon.awscdk.core.Construct scope; + private final java.lang.String id; + private final com.my.module.CfnClusterProps.Builder props; + + private Builder(final software.amazon.awscdk.core.Construct scope, final java.lang.String id) { + this.scope = scope; + this.id = id; + this.props = new com.my.module.CfnClusterProps.Builder(); + } + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + *

+ * @return {@code this} + * @param resourcesVpcConfig An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. This parameter is required. + */ + public Builder resourcesVpcConfig(final com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig) { + this.props.resourcesVpcConfig(resourcesVpcConfig); + return this; + } + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + *

+ * This provides permissions for Amazon EKS to call other AWS APIs. + *

+ * @return {@code this} + * @param roleArn Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This parameter is required. + */ + public Builder roleArn(final java.lang.String roleArn) { + this.props.roleArn(roleArn); + return this; + } + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + *

+ * By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + *

+ * @return {@code this} + * @param enabledClusterLoggingTypes Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. This parameter is required. + */ + public Builder enabledClusterLoggingTypes(final java.util.List enabledClusterLoggingTypes) { + this.props.enabledClusterLoggingTypes(enabledClusterLoggingTypes); + return this; + } + + /** + * Encryption configuration for the cluster. + *

+ * @return {@code this} + * @param encryptionConfig Encryption configuration for the cluster. This parameter is required. + */ + public Builder encryptionConfig(final java.util.List encryptionConfig) { + this.props.encryptionConfig(encryptionConfig); + return this; + } + + /** + * @return {@code this} + * @param kubernetesApiAccess This parameter is required. + */ + public Builder kubernetesApiAccess(final com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess) { + this.props.kubernetesApiAccess(kubernetesApiAccess); + return this; + } + + /** + * Network configuration for Amazon EKS cluster. + *

+ * @return {@code this} + * @param kubernetesNetworkConfig Network configuration for Amazon EKS cluster. This parameter is required. + */ + public Builder kubernetesNetworkConfig(final com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig) { + this.props.kubernetesNetworkConfig(kubernetesNetworkConfig); + return this; + } + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + *

+ * this provides permissions for Lambda to be invoked and attach to the cluster VPC + *

+ * @return {@code this} + * @param lambdaRoleName Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. This parameter is required. + */ + public Builder lambdaRoleName(final java.lang.String lambdaRoleName) { + this.props.lambdaRoleName(lambdaRoleName); + return this; + } + + /** + * A unique name for your cluster. + *

+ * @return {@code this} + * @param name A unique name for your cluster. This parameter is required. + */ + public Builder name(final java.lang.String name) { + this.props.name(name); + return this; + } + + /** + * @return {@code this} + * @param tags This parameter is required. + */ + public Builder tags(final java.util.List tags) { + this.props.tags(tags); + return this; + } + + /** + * Desired Kubernetes version for your cluster. + *

+ * If you don't specify this value, the cluster uses the latest version from Amazon EKS. + *

+ * @return {@code this} + * @param version Desired Kubernetes version for your cluster. This parameter is required. + */ + public Builder version(final java.lang.String version) { + this.props.version(version); + return this; + } + + /** + * @returns a newly built instance of {@link com.my.module.CfnCluster}. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + @Override + public com.my.module.CfnCluster build() { + return new com.my.module.CfnCluster( + this.scope, + this.id, + this.props.build() + ); + } + } +} +", + "src/main/java/com/my/module/CfnClusterProps.java" => "package com.my.module; + +/** + * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.899Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterProps.Jsii$Proxy.class) +public interface CfnClusterProps extends software.amazon.jsii.JsiiSerializable { + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + */ + @org.jetbrains.annotations.NotNull com.my.module.CfnClusterPropsResourcesVpcConfig getResourcesVpcConfig(); + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + *

+ * This provides permissions for Amazon EKS to call other AWS APIs. + */ + @org.jetbrains.annotations.NotNull java.lang.String getRoleArn(); + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + *

+ * By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + */ + default @org.jetbrains.annotations.Nullable java.util.List getEnabledClusterLoggingTypes() { + return null; + } + + /** + * Encryption configuration for the cluster. + */ + default @org.jetbrains.annotations.Nullable java.util.List getEncryptionConfig() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable com.my.module.CfnClusterPropsKubernetesApiAccess getKubernetesApiAccess() { + return null; + } + + /** + * Network configuration for Amazon EKS cluster. + */ + default @org.jetbrains.annotations.Nullable com.my.module.CfnClusterPropsKubernetesNetworkConfig getKubernetesNetworkConfig() { + return null; + } + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + *

+ * this provides permissions for Lambda to be invoked and attach to the cluster VPC + */ + default @org.jetbrains.annotations.Nullable java.lang.String getLambdaRoleName() { + return null; + } + + /** + * A unique name for your cluster. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getName() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getTags() { + return null; + } + + /** + * Desired Kubernetes version for your cluster. + *

+ * If you don't specify this value, the cluster uses the latest version from Amazon EKS. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getVersion() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterProps} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterProps} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig; + private java.lang.String roleArn; + private java.util.List enabledClusterLoggingTypes; + private java.util.List encryptionConfig; + private com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess; + private com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig; + private java.lang.String lambdaRoleName; + private java.lang.String name; + private java.util.List tags; + private java.lang.String version; + + /** + * Sets the value of {@link CfnClusterProps#getResourcesVpcConfig} + * @param resourcesVpcConfig An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. This parameter is required. + * @return {@code this} + */ + public Builder resourcesVpcConfig(com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig) { + this.resourcesVpcConfig = resourcesVpcConfig; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getRoleArn} + * @param roleArn Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This parameter is required. + * This provides permissions for Amazon EKS to call other AWS APIs. + * @return {@code this} + */ + public Builder roleArn(java.lang.String roleArn) { + this.roleArn = roleArn; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getEnabledClusterLoggingTypes} + * @param enabledClusterLoggingTypes Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + * By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * @return {@code this} + */ + public Builder enabledClusterLoggingTypes(java.util.List enabledClusterLoggingTypes) { + this.enabledClusterLoggingTypes = enabledClusterLoggingTypes; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getEncryptionConfig} + * @param encryptionConfig Encryption configuration for the cluster. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder encryptionConfig(java.util.List encryptionConfig) { + this.encryptionConfig = (java.util.List)encryptionConfig; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getKubernetesApiAccess} + * @param kubernetesApiAccess the value to be set. + * @return {@code this} + */ + public Builder kubernetesApiAccess(com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess) { + this.kubernetesApiAccess = kubernetesApiAccess; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getKubernetesNetworkConfig} + * @param kubernetesNetworkConfig Network configuration for Amazon EKS cluster. + * @return {@code this} + */ + public Builder kubernetesNetworkConfig(com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig) { + this.kubernetesNetworkConfig = kubernetesNetworkConfig; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getLambdaRoleName} + * @param lambdaRoleName Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + * this provides permissions for Lambda to be invoked and attach to the cluster VPC + * @return {@code this} + */ + public Builder lambdaRoleName(java.lang.String lambdaRoleName) { + this.lambdaRoleName = lambdaRoleName; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getName} + * @param name A unique name for your cluster. + * @return {@code this} + */ + public Builder name(java.lang.String name) { + this.name = name; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getTags} + * @param tags the value to be set. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder tags(java.util.List tags) { + this.tags = (java.util.List)tags; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getVersion} + * @param version Desired Kubernetes version for your cluster. + * If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * @return {@code this} + */ + public Builder version(java.lang.String version) { + this.version = version; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterProps} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterProps build() { + return new Jsii$Proxy(resourcesVpcConfig, roleArn, enabledClusterLoggingTypes, encryptionConfig, kubernetesApiAccess, kubernetesNetworkConfig, lambdaRoleName, name, tags, version); + } + } + + /** + * An implementation for {@link CfnClusterProps} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterProps { + private final com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig; + private final java.lang.String roleArn; + private final java.util.List enabledClusterLoggingTypes; + private final java.util.List encryptionConfig; + private final com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess; + private final com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig; + private final java.lang.String lambdaRoleName; + private final java.lang.String name; + private final java.util.List tags; + private final java.lang.String version; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.resourcesVpcConfig = software.amazon.jsii.Kernel.get(this, \\"resourcesVpcConfig\\", software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsResourcesVpcConfig.class)); + this.roleArn = software.amazon.jsii.Kernel.get(this, \\"roleArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.enabledClusterLoggingTypes = software.amazon.jsii.Kernel.get(this, \\"enabledClusterLoggingTypes\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.encryptionConfig = software.amazon.jsii.Kernel.get(this, \\"encryptionConfig\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.EncryptionConfigEntry.class))); + this.kubernetesApiAccess = software.amazon.jsii.Kernel.get(this, \\"kubernetesApiAccess\\", software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsKubernetesApiAccess.class)); + this.kubernetesNetworkConfig = software.amazon.jsii.Kernel.get(this, \\"kubernetesNetworkConfig\\", software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsKubernetesNetworkConfig.class)); + this.lambdaRoleName = software.amazon.jsii.Kernel.get(this, \\"lambdaRoleName\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.name = software.amazon.jsii.Kernel.get(this, \\"name\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.tags = software.amazon.jsii.Kernel.get(this, \\"tags\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsTags.class))); + this.version = software.amazon.jsii.Kernel.get(this, \\"version\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + @SuppressWarnings(\\"unchecked\\") + protected Jsii$Proxy(final com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig, final java.lang.String roleArn, final java.util.List enabledClusterLoggingTypes, final java.util.List encryptionConfig, final com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess, final com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig, final java.lang.String lambdaRoleName, final java.lang.String name, final java.util.List tags, final java.lang.String version) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.resourcesVpcConfig = java.util.Objects.requireNonNull(resourcesVpcConfig, \\"resourcesVpcConfig is required\\"); + this.roleArn = java.util.Objects.requireNonNull(roleArn, \\"roleArn is required\\"); + this.enabledClusterLoggingTypes = enabledClusterLoggingTypes; + this.encryptionConfig = (java.util.List)encryptionConfig; + this.kubernetesApiAccess = kubernetesApiAccess; + this.kubernetesNetworkConfig = kubernetesNetworkConfig; + this.lambdaRoleName = lambdaRoleName; + this.name = name; + this.tags = (java.util.List)tags; + this.version = version; + } + + @Override + public final com.my.module.CfnClusterPropsResourcesVpcConfig getResourcesVpcConfig() { + return this.resourcesVpcConfig; + } + + @Override + public final java.lang.String getRoleArn() { + return this.roleArn; + } + + @Override + public final java.util.List getEnabledClusterLoggingTypes() { + return this.enabledClusterLoggingTypes; + } + + @Override + public final java.util.List getEncryptionConfig() { + return this.encryptionConfig; + } + + @Override + public final com.my.module.CfnClusterPropsKubernetesApiAccess getKubernetesApiAccess() { + return this.kubernetesApiAccess; + } + + @Override + public final com.my.module.CfnClusterPropsKubernetesNetworkConfig getKubernetesNetworkConfig() { + return this.kubernetesNetworkConfig; + } + + @Override + public final java.lang.String getLambdaRoleName() { + return this.lambdaRoleName; + } + + @Override + public final java.lang.String getName() { + return this.name; + } + + @Override + public final java.util.List getTags() { + return this.tags; + } + + @Override + public final java.lang.String getVersion() { + return this.version; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + data.set(\\"resourcesVpcConfig\\", om.valueToTree(this.getResourcesVpcConfig())); + data.set(\\"roleArn\\", om.valueToTree(this.getRoleArn())); + if (this.getEnabledClusterLoggingTypes() != null) { + data.set(\\"enabledClusterLoggingTypes\\", om.valueToTree(this.getEnabledClusterLoggingTypes())); + } + if (this.getEncryptionConfig() != null) { + data.set(\\"encryptionConfig\\", om.valueToTree(this.getEncryptionConfig())); + } + if (this.getKubernetesApiAccess() != null) { + data.set(\\"kubernetesApiAccess\\", om.valueToTree(this.getKubernetesApiAccess())); + } + if (this.getKubernetesNetworkConfig() != null) { + data.set(\\"kubernetesNetworkConfig\\", om.valueToTree(this.getKubernetesNetworkConfig())); + } + if (this.getLambdaRoleName() != null) { + data.set(\\"lambdaRoleName\\", om.valueToTree(this.getLambdaRoleName())); + } + if (this.getName() != null) { + data.set(\\"name\\", om.valueToTree(this.getName())); + } + if (this.getTags() != null) { + data.set(\\"tags\\", om.valueToTree(this.getTags())); + } + if (this.getVersion() != null) { + data.set(\\"version\\", om.valueToTree(this.getVersion())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterProps.Jsii$Proxy that = (CfnClusterProps.Jsii$Proxy) o; + + if (!resourcesVpcConfig.equals(that.resourcesVpcConfig)) return false; + if (!roleArn.equals(that.roleArn)) return false; + if (this.enabledClusterLoggingTypes != null ? !this.enabledClusterLoggingTypes.equals(that.enabledClusterLoggingTypes) : that.enabledClusterLoggingTypes != null) return false; + if (this.encryptionConfig != null ? !this.encryptionConfig.equals(that.encryptionConfig) : that.encryptionConfig != null) return false; + if (this.kubernetesApiAccess != null ? !this.kubernetesApiAccess.equals(that.kubernetesApiAccess) : that.kubernetesApiAccess != null) return false; + if (this.kubernetesNetworkConfig != null ? !this.kubernetesNetworkConfig.equals(that.kubernetesNetworkConfig) : that.kubernetesNetworkConfig != null) return false; + if (this.lambdaRoleName != null ? !this.lambdaRoleName.equals(that.lambdaRoleName) : that.lambdaRoleName != null) return false; + if (this.name != null ? !this.name.equals(that.name) : that.name != null) return false; + if (this.tags != null ? !this.tags.equals(that.tags) : that.tags != null) return false; + return this.version != null ? this.version.equals(that.version) : that.version == null; + } + + @Override + public final int hashCode() { + int result = this.resourcesVpcConfig.hashCode(); + result = 31 * result + (this.roleArn.hashCode()); + result = 31 * result + (this.enabledClusterLoggingTypes != null ? this.enabledClusterLoggingTypes.hashCode() : 0); + result = 31 * result + (this.encryptionConfig != null ? this.encryptionConfig.hashCode() : 0); + result = 31 * result + (this.kubernetesApiAccess != null ? this.kubernetesApiAccess.hashCode() : 0); + result = 31 * result + (this.kubernetesNetworkConfig != null ? this.kubernetesNetworkConfig.hashCode() : 0); + result = 31 * result + (this.lambdaRoleName != null ? this.lambdaRoleName.hashCode() : 0); + result = 31 * result + (this.name != null ? this.name.hashCode() : 0); + result = 31 * result + (this.tags != null ? this.tags.hashCode() : 0); + result = 31 * result + (this.version != null ? this.version.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsKubernetesApiAccess.java" => "package com.my.module; + +/** + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.903Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsKubernetesApiAccess.Jsii$Proxy.class) +public interface CfnClusterPropsKubernetesApiAccess extends software.amazon.jsii.JsiiSerializable { + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getRoles() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getUsers() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterPropsKubernetesApiAccess} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsKubernetesApiAccess} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.util.List roles; + private java.util.List users; + + /** + * Sets the value of {@link CfnClusterPropsKubernetesApiAccess#getRoles} + * @param roles the value to be set. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder roles(java.util.List roles) { + this.roles = (java.util.List)roles; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsKubernetesApiAccess#getUsers} + * @param users the value to be set. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder users(java.util.List users) { + this.users = (java.util.List)users; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsKubernetesApiAccess} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsKubernetesApiAccess build() { + return new Jsii$Proxy(roles, users); + } + } + + /** + * An implementation for {@link CfnClusterPropsKubernetesApiAccess} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsKubernetesApiAccess { + private final java.util.List roles; + private final java.util.List users; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.roles = software.amazon.jsii.Kernel.get(this, \\"roles\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.KubernetesApiAccessEntry.class))); + this.users = software.amazon.jsii.Kernel.get(this, \\"users\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.KubernetesApiAccessEntry.class))); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + @SuppressWarnings(\\"unchecked\\") + protected Jsii$Proxy(final java.util.List roles, final java.util.List users) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.roles = (java.util.List)roles; + this.users = (java.util.List)users; + } + + @Override + public final java.util.List getRoles() { + return this.roles; + } + + @Override + public final java.util.List getUsers() { + return this.users; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getRoles() != null) { + data.set(\\"roles\\", om.valueToTree(this.getRoles())); + } + if (this.getUsers() != null) { + data.set(\\"users\\", om.valueToTree(this.getUsers())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsKubernetesApiAccess.Jsii$Proxy that = (CfnClusterPropsKubernetesApiAccess.Jsii$Proxy) o; + + if (this.roles != null ? !this.roles.equals(that.roles) : that.roles != null) return false; + return this.users != null ? this.users.equals(that.users) : that.users == null; + } + + @Override + public final int hashCode() { + int result = this.roles != null ? this.roles.hashCode() : 0; + result = 31 * result + (this.users != null ? this.users.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsKubernetesNetworkConfig.java" => "package com.my.module; + +/** + * Network configuration for Amazon EKS cluster. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.903Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsKubernetesNetworkConfig.Jsii$Proxy.class) +public interface CfnClusterPropsKubernetesNetworkConfig extends software.amazon.jsii.JsiiSerializable { + + /** + * Specify the range from which cluster services will receive IPv4 addresses. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getServiceIpv4Cidr() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterPropsKubernetesNetworkConfig} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsKubernetesNetworkConfig} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String serviceIpv4Cidr; + + /** + * Sets the value of {@link CfnClusterPropsKubernetesNetworkConfig#getServiceIpv4Cidr} + * @param serviceIpv4Cidr Specify the range from which cluster services will receive IPv4 addresses. + * @return {@code this} + */ + public Builder serviceIpv4Cidr(java.lang.String serviceIpv4Cidr) { + this.serviceIpv4Cidr = serviceIpv4Cidr; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsKubernetesNetworkConfig} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsKubernetesNetworkConfig build() { + return new Jsii$Proxy(serviceIpv4Cidr); + } + } + + /** + * An implementation for {@link CfnClusterPropsKubernetesNetworkConfig} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsKubernetesNetworkConfig { + private final java.lang.String serviceIpv4Cidr; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.serviceIpv4Cidr = software.amazon.jsii.Kernel.get(this, \\"serviceIpv4Cidr\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String serviceIpv4Cidr) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.serviceIpv4Cidr = serviceIpv4Cidr; + } + + @Override + public final java.lang.String getServiceIpv4Cidr() { + return this.serviceIpv4Cidr; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getServiceIpv4Cidr() != null) { + data.set(\\"serviceIpv4Cidr\\", om.valueToTree(this.getServiceIpv4Cidr())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsKubernetesNetworkConfig.Jsii$Proxy that = (CfnClusterPropsKubernetesNetworkConfig.Jsii$Proxy) o; + + return this.serviceIpv4Cidr != null ? this.serviceIpv4Cidr.equals(that.serviceIpv4Cidr) : that.serviceIpv4Cidr == null; + } + + @Override + public final int hashCode() { + int result = this.serviceIpv4Cidr != null ? this.serviceIpv4Cidr.hashCode() : 0; + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsResourcesVpcConfig.java" => "package com.my.module; + +/** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.903Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsResourcesVpcConfig.Jsii$Proxy.class) +public interface CfnClusterPropsResourcesVpcConfig extends software.amazon.jsii.JsiiSerializable { + + /** + * Specify subnets for your Amazon EKS worker nodes. + *

+ * Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + */ + @org.jetbrains.annotations.NotNull java.util.List getSubnetIds(); + + /** + * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + *

+ * If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + */ + default @org.jetbrains.annotations.Nullable java.lang.Boolean getEndpointPrivateAccess() { + return null; + } + + /** + * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + *

+ * If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + */ + default @org.jetbrains.annotations.Nullable java.lang.Boolean getEndpointPublicAccess() { + return null; + } + + /** + * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + *

+ * Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + */ + default @org.jetbrains.annotations.Nullable java.util.List getPublicAccessCidrs() { + return null; + } + + /** + * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + *

+ * If you don't specify a security group, the default security group for your VPC is used. + */ + default @org.jetbrains.annotations.Nullable java.util.List getSecurityGroupIds() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterPropsResourcesVpcConfig} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsResourcesVpcConfig} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.util.List subnetIds; + private java.lang.Boolean endpointPrivateAccess; + private java.lang.Boolean endpointPublicAccess; + private java.util.List publicAccessCidrs; + private java.util.List securityGroupIds; + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getSubnetIds} + * @param subnetIds Specify subnets for your Amazon EKS worker nodes. This parameter is required. + * Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + * @return {@code this} + */ + public Builder subnetIds(java.util.List subnetIds) { + this.subnetIds = subnetIds; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getEndpointPrivateAccess} + * @param endpointPrivateAccess Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + * If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + * @return {@code this} + */ + public Builder endpointPrivateAccess(java.lang.Boolean endpointPrivateAccess) { + this.endpointPrivateAccess = endpointPrivateAccess; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getEndpointPublicAccess} + * @param endpointPublicAccess Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + * If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + * @return {@code this} + */ + public Builder endpointPublicAccess(java.lang.Boolean endpointPublicAccess) { + this.endpointPublicAccess = endpointPublicAccess; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getPublicAccessCidrs} + * @param publicAccessCidrs The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + * Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + * @return {@code this} + */ + public Builder publicAccessCidrs(java.util.List publicAccessCidrs) { + this.publicAccessCidrs = publicAccessCidrs; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getSecurityGroupIds} + * @param securityGroupIds Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + * If you don't specify a security group, the default security group for your VPC is used. + * @return {@code this} + */ + public Builder securityGroupIds(java.util.List securityGroupIds) { + this.securityGroupIds = securityGroupIds; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsResourcesVpcConfig} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsResourcesVpcConfig build() { + return new Jsii$Proxy(subnetIds, endpointPrivateAccess, endpointPublicAccess, publicAccessCidrs, securityGroupIds); + } + } + + /** + * An implementation for {@link CfnClusterPropsResourcesVpcConfig} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsResourcesVpcConfig { + private final java.util.List subnetIds; + private final java.lang.Boolean endpointPrivateAccess; + private final java.lang.Boolean endpointPublicAccess; + private final java.util.List publicAccessCidrs; + private final java.util.List securityGroupIds; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.subnetIds = software.amazon.jsii.Kernel.get(this, \\"subnetIds\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.endpointPrivateAccess = software.amazon.jsii.Kernel.get(this, \\"endpointPrivateAccess\\", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class)); + this.endpointPublicAccess = software.amazon.jsii.Kernel.get(this, \\"endpointPublicAccess\\", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class)); + this.publicAccessCidrs = software.amazon.jsii.Kernel.get(this, \\"publicAccessCidrs\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.securityGroupIds = software.amazon.jsii.Kernel.get(this, \\"securityGroupIds\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.util.List subnetIds, final java.lang.Boolean endpointPrivateAccess, final java.lang.Boolean endpointPublicAccess, final java.util.List publicAccessCidrs, final java.util.List securityGroupIds) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.subnetIds = java.util.Objects.requireNonNull(subnetIds, \\"subnetIds is required\\"); + this.endpointPrivateAccess = endpointPrivateAccess; + this.endpointPublicAccess = endpointPublicAccess; + this.publicAccessCidrs = publicAccessCidrs; + this.securityGroupIds = securityGroupIds; + } + + @Override + public final java.util.List getSubnetIds() { + return this.subnetIds; + } + + @Override + public final java.lang.Boolean getEndpointPrivateAccess() { + return this.endpointPrivateAccess; + } + + @Override + public final java.lang.Boolean getEndpointPublicAccess() { + return this.endpointPublicAccess; + } + + @Override + public final java.util.List getPublicAccessCidrs() { + return this.publicAccessCidrs; + } + + @Override + public final java.util.List getSecurityGroupIds() { + return this.securityGroupIds; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + data.set(\\"subnetIds\\", om.valueToTree(this.getSubnetIds())); + if (this.getEndpointPrivateAccess() != null) { + data.set(\\"endpointPrivateAccess\\", om.valueToTree(this.getEndpointPrivateAccess())); + } + if (this.getEndpointPublicAccess() != null) { + data.set(\\"endpointPublicAccess\\", om.valueToTree(this.getEndpointPublicAccess())); + } + if (this.getPublicAccessCidrs() != null) { + data.set(\\"publicAccessCidrs\\", om.valueToTree(this.getPublicAccessCidrs())); + } + if (this.getSecurityGroupIds() != null) { + data.set(\\"securityGroupIds\\", om.valueToTree(this.getSecurityGroupIds())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsResourcesVpcConfig.Jsii$Proxy that = (CfnClusterPropsResourcesVpcConfig.Jsii$Proxy) o; + + if (!subnetIds.equals(that.subnetIds)) return false; + if (this.endpointPrivateAccess != null ? !this.endpointPrivateAccess.equals(that.endpointPrivateAccess) : that.endpointPrivateAccess != null) return false; + if (this.endpointPublicAccess != null ? !this.endpointPublicAccess.equals(that.endpointPublicAccess) : that.endpointPublicAccess != null) return false; + if (this.publicAccessCidrs != null ? !this.publicAccessCidrs.equals(that.publicAccessCidrs) : that.publicAccessCidrs != null) return false; + return this.securityGroupIds != null ? this.securityGroupIds.equals(that.securityGroupIds) : that.securityGroupIds == null; + } + + @Override + public final int hashCode() { + int result = this.subnetIds.hashCode(); + result = 31 * result + (this.endpointPrivateAccess != null ? this.endpointPrivateAccess.hashCode() : 0); + result = 31 * result + (this.endpointPublicAccess != null ? this.endpointPublicAccess.hashCode() : 0); + result = 31 * result + (this.publicAccessCidrs != null ? this.publicAccessCidrs.hashCode() : 0); + result = 31 * result + (this.securityGroupIds != null ? this.securityGroupIds.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsTags.java" => "package com.my.module; + +/** + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.905Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsTags.Jsii$Proxy.class) +public interface CfnClusterPropsTags extends software.amazon.jsii.JsiiSerializable { + + /** + */ + @org.jetbrains.annotations.NotNull java.lang.String getKey(); + + /** + */ + @org.jetbrains.annotations.NotNull java.lang.String getValue(); + + /** + * @return a {@link Builder} of {@link CfnClusterPropsTags} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsTags} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String key; + private java.lang.String value; + + /** + * Sets the value of {@link CfnClusterPropsTags#getKey} + * @param key the value to be set. This parameter is required. + * @return {@code this} + */ + public Builder key(java.lang.String key) { + this.key = key; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsTags#getValue} + * @param value the value to be set. This parameter is required. + * @return {@code this} + */ + public Builder value(java.lang.String value) { + this.value = value; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsTags} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsTags build() { + return new Jsii$Proxy(key, value); + } + } + + /** + * An implementation for {@link CfnClusterPropsTags} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsTags { + private final java.lang.String key; + private final java.lang.String value; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.key = software.amazon.jsii.Kernel.get(this, \\"key\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.value = software.amazon.jsii.Kernel.get(this, \\"value\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String key, final java.lang.String value) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.key = java.util.Objects.requireNonNull(key, \\"key is required\\"); + this.value = java.util.Objects.requireNonNull(value, \\"value is required\\"); + } + + @Override + public final java.lang.String getKey() { + return this.key; + } + + @Override + public final java.lang.String getValue() { + return this.value; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + data.set(\\"key\\", om.valueToTree(this.getKey())); + data.set(\\"value\\", om.valueToTree(this.getValue())); + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsTags.Jsii$Proxy that = (CfnClusterPropsTags.Jsii$Proxy) o; + + if (!key.equals(that.key)) return false; + return this.value.equals(that.value); + } + + @Override + public final int hashCode() { + int result = this.key.hashCode(); + result = 31 * result + (this.value.hashCode()); + return result; + } + } +} +", + "src/main/java/com/my/module/EncryptionConfigEntry.java" => "package com.my.module; + +/** + * The encryption configuration for the cluster. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.905Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\") +@software.amazon.jsii.Jsii.Proxy(EncryptionConfigEntry.Jsii$Proxy.class) +public interface EncryptionConfigEntry extends software.amazon.jsii.JsiiSerializable { + + /** + */ + default @org.jetbrains.annotations.Nullable com.my.module.Provider getProvider() { + return null; + } + + /** + * Specifies the resources to be encrypted. + *

+ * The only supported value is \\"secrets\\". + */ + default @org.jetbrains.annotations.Nullable java.util.List getResources() { + return null; + } + + /** + * @return a {@link Builder} of {@link EncryptionConfigEntry} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link EncryptionConfigEntry} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private com.my.module.Provider provider; + private java.util.List resources; + + /** + * Sets the value of {@link EncryptionConfigEntry#getProvider} + * @param provider the value to be set. + * @return {@code this} + */ + public Builder provider(com.my.module.Provider provider) { + this.provider = provider; + return this; + } + + /** + * Sets the value of {@link EncryptionConfigEntry#getResources} + * @param resources Specifies the resources to be encrypted. + * The only supported value is \\"secrets\\". + * @return {@code this} + */ + public Builder resources(java.util.List resources) { + this.resources = resources; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link EncryptionConfigEntry} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public EncryptionConfigEntry build() { + return new Jsii$Proxy(provider, resources); + } + } + + /** + * An implementation for {@link EncryptionConfigEntry} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements EncryptionConfigEntry { + private final com.my.module.Provider provider; + private final java.util.List resources; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.provider = software.amazon.jsii.Kernel.get(this, \\"provider\\", software.amazon.jsii.NativeType.forClass(com.my.module.Provider.class)); + this.resources = software.amazon.jsii.Kernel.get(this, \\"resources\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final com.my.module.Provider provider, final java.util.List resources) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.provider = provider; + this.resources = resources; + } + + @Override + public final com.my.module.Provider getProvider() { + return this.provider; + } + + @Override + public final java.util.List getResources() { + return this.resources; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getProvider() != null) { + data.set(\\"provider\\", om.valueToTree(this.getProvider())); + } + if (this.getResources() != null) { + data.set(\\"resources\\", om.valueToTree(this.getResources())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + EncryptionConfigEntry.Jsii$Proxy that = (EncryptionConfigEntry.Jsii$Proxy) o; + + if (this.provider != null ? !this.provider.equals(that.provider) : that.provider != null) return false; + return this.resources != null ? this.resources.equals(that.resources) : that.resources == null; + } + + @Override + public final int hashCode() { + int result = this.provider != null ? this.provider.hashCode() : 0; + result = 31 * result + (this.resources != null ? this.resources.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/KubernetesApiAccessEntry.java" => "package com.my.module; + +/** + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.906Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\") +@software.amazon.jsii.Jsii.Proxy(KubernetesApiAccessEntry.Jsii$Proxy.class) +public interface KubernetesApiAccessEntry extends software.amazon.jsii.JsiiSerializable { + + /** + */ + default @org.jetbrains.annotations.Nullable java.lang.String getArn() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getGroups() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.lang.String getUsername() { + return null; + } + + /** + * @return a {@link Builder} of {@link KubernetesApiAccessEntry} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link KubernetesApiAccessEntry} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String arn; + private java.util.List groups; + private java.lang.String username; + + /** + * Sets the value of {@link KubernetesApiAccessEntry#getArn} + * @param arn the value to be set. + * @return {@code this} + */ + public Builder arn(java.lang.String arn) { + this.arn = arn; + return this; + } + + /** + * Sets the value of {@link KubernetesApiAccessEntry#getGroups} + * @param groups the value to be set. + * @return {@code this} + */ + public Builder groups(java.util.List groups) { + this.groups = groups; + return this; + } + + /** + * Sets the value of {@link KubernetesApiAccessEntry#getUsername} + * @param username the value to be set. + * @return {@code this} + */ + public Builder username(java.lang.String username) { + this.username = username; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link KubernetesApiAccessEntry} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public KubernetesApiAccessEntry build() { + return new Jsii$Proxy(arn, groups, username); + } + } + + /** + * An implementation for {@link KubernetesApiAccessEntry} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements KubernetesApiAccessEntry { + private final java.lang.String arn; + private final java.util.List groups; + private final java.lang.String username; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.arn = software.amazon.jsii.Kernel.get(this, \\"arn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.groups = software.amazon.jsii.Kernel.get(this, \\"groups\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.username = software.amazon.jsii.Kernel.get(this, \\"username\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String arn, final java.util.List groups, final java.lang.String username) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.arn = arn; + this.groups = groups; + this.username = username; + } + + @Override + public final java.lang.String getArn() { + return this.arn; + } + + @Override + public final java.util.List getGroups() { + return this.groups; + } + + @Override + public final java.lang.String getUsername() { + return this.username; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getArn() != null) { + data.set(\\"arn\\", om.valueToTree(this.getArn())); + } + if (this.getGroups() != null) { + data.set(\\"groups\\", om.valueToTree(this.getGroups())); + } + if (this.getUsername() != null) { + data.set(\\"username\\", om.valueToTree(this.getUsername())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + KubernetesApiAccessEntry.Jsii$Proxy that = (KubernetesApiAccessEntry.Jsii$Proxy) o; + + if (this.arn != null ? !this.arn.equals(that.arn) : that.arn != null) return false; + if (this.groups != null ? !this.groups.equals(that.groups) : that.groups != null) return false; + return this.username != null ? this.username.equals(that.username) : that.username == null; + } + + @Override + public final int hashCode() { + int result = this.arn != null ? this.arn.hashCode() : 0; + result = 31 * result + (this.groups != null ? this.groups.hashCode() : 0); + result = 31 * result + (this.username != null ? this.username.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/Provider.java" => "package com.my.module; + +/** + * AWS Key Management Service (AWS KMS) customer master key (CMK). + *

+ * Either the ARN or the alias can be used. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.906Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\") +@software.amazon.jsii.Jsii.Proxy(Provider.Jsii$Proxy.class) +public interface Provider extends software.amazon.jsii.JsiiSerializable { + + /** + * Amazon Resource Name (ARN) or alias of the customer master key (CMK). + *

+ * The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getKeyArn() { + return null; + } + + /** + * @return a {@link Builder} of {@link Provider} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link Provider} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String keyArn; + + /** + * Sets the value of {@link Provider#getKeyArn} + * @param keyArn Amazon Resource Name (ARN) or alias of the customer master key (CMK). + * The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + * @return {@code this} + */ + public Builder keyArn(java.lang.String keyArn) { + this.keyArn = keyArn; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link Provider} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public Provider build() { + return new Jsii$Proxy(keyArn); + } + } + + /** + * An implementation for {@link Provider} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements Provider { + private final java.lang.String keyArn; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.keyArn = software.amazon.jsii.Kernel.get(this, \\"keyArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String keyArn) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.keyArn = keyArn; + } + + @Override + public final java.lang.String getKeyArn() { + return this.keyArn; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getKeyArn() != null) { + data.set(\\"keyArn\\", om.valueToTree(this.getKeyArn())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Provider.Jsii$Proxy that = (Provider.Jsii$Proxy) o; + + return this.keyArn != null ? this.keyArn.equals(that.keyArn) : that.keyArn == null; + } + + @Override + public final int hashCode() { + int result = this.keyArn != null ? this.keyArn.hashCode() : 0; + return result; + } + } +} +", + "src/main/resources/com/my/module/$Module.txt" => "1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster=com.my.module.CfnCluster +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps=com.my.module.CfnClusterProps +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess=com.my.module.CfnClusterPropsKubernetesApiAccess +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig=com.my.module.CfnClusterPropsKubernetesNetworkConfig +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig=com.my.module.CfnClusterPropsResourcesVpcConfig +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags=com.my.module.CfnClusterPropsTags +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry=com.my.module.EncryptionConfigEntry +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry=com.my.module.KubernetesApiAccessEntry +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider=com.my.module.Provider +", +} +`; + +exports[`golang 1`] = ` +Map { + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnCluster.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + ///

A CloudFormation \`AWSQS::EKS::Cluster\`. + /// + /// CloudformationResource: AWSQS::EKS::Cluster + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiClass(nativeType: typeof(AWSQS::EKS::Cluster.CfnCluster), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", parametersJson: \\"[{\\\\\\"docs\\\\\\":{\\\\\\"summary\\\\\\":\\\\\\"- scope in which this resource is defined.\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"scope\\\\\\",\\\\\\"type\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"@aws-cdk/core.Construct\\\\\\"}},{\\\\\\"docs\\\\\\":{\\\\\\"summary\\\\\\":\\\\\\"- scoped id of the resource.\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"id\\\\\\",\\\\\\"type\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}},{\\\\\\"docs\\\\\\":{\\\\\\"summary\\\\\\":\\\\\\"- resource properties.\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"props\\\\\\",\\\\\\"type\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\\\\\"}}]\\")] + public class CfnCluster : Amazon.CDK.CfnResource + { + /// Create a new \`AWSQS::EKS::Cluster\`. + /// - scope in which this resource is defined. + /// - scoped id of the resource. + /// - resource properties. + public CfnCluster(Amazon.CDK.Construct scope, string id, AWSQS::EKS::Cluster.ICfnClusterProps props): base(new DeputyProps(new object?[]{scope, id, props})) + { + } + + /// Used by jsii to construct an instance of this class from a Javascript-owned object reference + /// The Javascript-owned object reference + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + protected CfnCluster(ByRefValue reference): base(reference) + { + } + + /// Used by jsii to construct an instance of this class from DeputyProps + /// The deputy props + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + protected CfnCluster(DeputyProps props): base(props) + { + } + + /// The CloudFormation resource type name for this resource class. + [JsiiProperty(name: \\"CFN_RESOURCE_TYPE_NAME\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public static string CFN_RESOURCE_TYPE_NAME + { + get; + } + = GetStaticProperty(typeof(AWSQS::EKS::Cluster.CfnCluster))!; + + /// Attribute \`AWSQS::EKS::Cluster.Arn\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrArn + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrCertificateAuthorityData\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrCertificateAuthorityData + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrClusterSecurityGroupId\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrClusterSecurityGroupId + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrEncryptionConfigKeyArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrEncryptionConfigKeyArn + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.Endpoint\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrEndpoint\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrEndpoint + { + get => GetInstanceProperty()!; + } + + /// Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"attrOIDCIssuerURL\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string AttrOIDCIssuerURL + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.KubernetesApiAccess\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"kubernetesApiAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"any\\\\\\"}\\")] + public virtual object KubernetesApiAccess + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` Network configuration for Amazon EKS cluster. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"kubernetesNetworkConfig\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"any\\\\\\"}\\")] + public virtual object KubernetesNetworkConfig + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"resourcesVpcConfig\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"any\\\\\\"}\\")] + public virtual object ResourcesVpcConfig + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.RoleArn\` Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiProperty(name: \\"roleArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public virtual string RoleArn + { + get => GetInstanceProperty()!; + } + + /// \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"enabledClusterLoggingTypes\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public virtual string[]? EnabledClusterLoggingTypes + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.EncryptionConfig\` Encryption configuration for the cluster. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"encryptionConfig\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public virtual AWSQS::EKS::Cluster.IEncryptionConfigEntry[]? EncryptionConfig + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.LambdaRoleName\` Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"lambdaRoleName\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public virtual string? LambdaRoleName + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.Name\` A unique name for your cluster. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"name\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public virtual string? Name + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.Tags\`. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"tags\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"any\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public virtual object[]? Tags + { + get => GetInstanceProperty(); + } + + /// \`AWSQS::EKS::Cluster.Version\` Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + /// + /// Link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + /// + [JsiiOptional] + [JsiiProperty(name: \\"version\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public virtual string? Version + { + get => GetInstanceProperty(); + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterProps.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + #pragma warning disable CS8618 + + /// A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + /// + /// Schema: CfnClusterProps + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\")] + public class CfnClusterProps : AWSQS::EKS::Cluster.ICfnClusterProps + { + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#ResourcesVpcConfig + /// + [JsiiProperty(name: \\"resourcesVpcConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\\\\\"}\\", isOverride: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig ResourcesVpcConfig + { + get; + set; + } + + /// Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + /// + /// This provides permissions for Amazon EKS to call other AWS APIs. + /// + /// Schema: CfnClusterProps#RoleArn + /// + [JsiiProperty(name: \\"roleArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOverride: true)] + public string RoleArn + { + get; + set; + } + + /// Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + /// + /// By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + /// + /// Schema: CfnClusterProps#EnabledClusterLoggingTypes + /// + [JsiiOptional] + [JsiiProperty(name: \\"enabledClusterLoggingTypes\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? EnabledClusterLoggingTypes + { + get; + set; + } + + /// Encryption configuration for the cluster. + /// + /// Schema: CfnClusterProps#EncryptionConfig + /// + [JsiiOptional] + [JsiiProperty(name: \\"encryptionConfig\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.IEncryptionConfigEntry[]? EncryptionConfig + { + get; + set; + } + + /// + /// Schema: CfnClusterProps#KubernetesApiAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"kubernetesApiAccess\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\\\\\"}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess? KubernetesApiAccess + { + get; + set; + } + + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#KubernetesNetworkConfig + /// + [JsiiOptional] + [JsiiProperty(name: \\"kubernetesNetworkConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\\\\\"}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig? KubernetesNetworkConfig + { + get; + set; + } + + /// Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + /// + /// this provides permissions for Lambda to be invoked and attach to the cluster VPC + /// + /// Schema: CfnClusterProps#LambdaRoleName + /// + [JsiiOptional] + [JsiiProperty(name: \\"lambdaRoleName\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? LambdaRoleName + { + get; + set; + } + + /// A unique name for your cluster. + /// + /// Schema: CfnClusterProps#Name + /// + [JsiiOptional] + [JsiiProperty(name: \\"name\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? Name + { + get; + set; + } + + /// + /// Schema: CfnClusterProps#Tags + /// + [JsiiOptional] + [JsiiProperty(name: \\"tags\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsTags[]? Tags + { + get; + set; + } + + /// Desired Kubernetes version for your cluster. + /// + /// If you don't specify this value, the cluster uses the latest version from Amazon EKS. + /// + /// Schema: CfnClusterProps#Version + /// + [JsiiOptional] + [JsiiProperty(name: \\"version\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? Version + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterPropsKubernetesApiAccess.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: CfnClusterPropsKubernetesApiAccess + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\")] + public class CfnClusterPropsKubernetesApiAccess : AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess + { + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Roles + /// + [JsiiOptional] + [JsiiProperty(name: \\"roles\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Roles + { + get; + set; + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Users + /// + [JsiiOptional] + [JsiiProperty(name: \\"users\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Users + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterPropsKubernetesNetworkConfig.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\")] + public class CfnClusterPropsKubernetesNetworkConfig : AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig + { + /// Specify the range from which cluster services will receive IPv4 addresses. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + /// + [JsiiOptional] + [JsiiProperty(name: \\"serviceIpv4Cidr\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? ServiceIpv4Cidr + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterPropsResourcesVpcConfig.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + #pragma warning disable CS8618 + + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\")] + public class CfnClusterPropsResourcesVpcConfig : AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig + { + /// Specify subnets for your Amazon EKS worker nodes. + /// + /// Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + /// + [JsiiProperty(name: \\"subnetIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOverride: true)] + public string[] SubnetIds + { + get; + set; + } + + /// Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + /// + /// If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"endpointPrivateAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true, isOverride: true)] + public bool? EndpointPrivateAccess + { + get; + set; + } + + /// Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + /// + /// If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"endpointPublicAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true, isOverride: true)] + public bool? EndpointPublicAccess + { + get; + set; + } + + /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + /// + /// Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + /// + [JsiiOptional] + [JsiiProperty(name: \\"publicAccessCidrs\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? PublicAccessCidrs + { + get; + set; + } + + /// Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// If you don't specify a security group, the default security group for your VPC is used. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + /// + [JsiiOptional] + [JsiiProperty(name: \\"securityGroupIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? SecurityGroupIds + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/CfnClusterPropsTags.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + #pragma warning disable CS8618 + + /// + /// Schema: CfnClusterPropsTags + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\")] + public class CfnClusterPropsTags : AWSQS::EKS::Cluster.ICfnClusterPropsTags + { + /// + /// Schema: CfnClusterPropsTags#Key + /// + [JsiiProperty(name: \\"key\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOverride: true)] + public string Key + { + get; + set; + } + + /// + /// Schema: CfnClusterPropsTags#Value + /// + [JsiiProperty(name: \\"value\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOverride: true)] + public string Value + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/EncryptionConfigEntry.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// The encryption configuration for the cluster. + /// + /// Schema: EncryptionConfigEntry + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\")] + public class EncryptionConfigEntry : AWSQS::EKS::Cluster.IEncryptionConfigEntry + { + /// + /// Schema: EncryptionConfigEntry#Provider + /// + [JsiiOptional] + [JsiiProperty(name: \\"provider\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\\\\\"}\\", isOptional: true, isOverride: true)] + public AWSQS::EKS::Cluster.IProvider? Provider + { + get; + set; + } + + /// Specifies the resources to be encrypted. + /// + /// The only supported value is \\"secrets\\". + /// + /// Schema: EncryptionConfigEntry#Resources + /// + [JsiiOptional] + [JsiiProperty(name: \\"resources\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? Resources + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterProps.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + /// + /// Schema: CfnClusterProps + /// + [JsiiInterface(nativeType: typeof(ICfnClusterProps), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\")] + public interface ICfnClusterProps + { + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#ResourcesVpcConfig + /// + [JsiiProperty(name: \\"resourcesVpcConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\\\\\"}\\")] + AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig ResourcesVpcConfig + { + get; + } + + /// Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + /// + /// This provides permissions for Amazon EKS to call other AWS APIs. + /// + /// Schema: CfnClusterProps#RoleArn + /// + [JsiiProperty(name: \\"roleArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + string RoleArn + { + get; + } + + /// Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + /// + /// By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + /// + /// Schema: CfnClusterProps#EnabledClusterLoggingTypes + /// + [JsiiProperty(name: \\"enabledClusterLoggingTypes\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? EnabledClusterLoggingTypes + { + get + { + return null; + } + } + + /// Encryption configuration for the cluster. + /// + /// Schema: CfnClusterProps#EncryptionConfig + /// + [JsiiProperty(name: \\"encryptionConfig\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.IEncryptionConfigEntry[]? EncryptionConfig + { + get + { + return null; + } + } + + /// + /// Schema: CfnClusterProps#KubernetesApiAccess + /// + [JsiiProperty(name: \\"kubernetesApiAccess\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess? KubernetesApiAccess + { + get + { + return null; + } + } + + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#KubernetesNetworkConfig + /// + [JsiiProperty(name: \\"kubernetesNetworkConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig? KubernetesNetworkConfig + { + get + { + return null; + } + } + + /// Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + /// + /// this provides permissions for Lambda to be invoked and attach to the cluster VPC + /// + /// Schema: CfnClusterProps#LambdaRoleName + /// + [JsiiProperty(name: \\"lambdaRoleName\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? LambdaRoleName + { + get + { + return null; + } + } + + /// A unique name for your cluster. + /// + /// Schema: CfnClusterProps#Name + /// + [JsiiProperty(name: \\"name\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? Name + { + get + { + return null; + } + } + + /// + /// Schema: CfnClusterProps#Tags + /// + [JsiiProperty(name: \\"tags\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.ICfnClusterPropsTags[]? Tags + { + get + { + return null; + } + } + + /// Desired Kubernetes version for your cluster. + /// + /// If you don't specify this value, the cluster uses the latest version from Amazon EKS. + /// + /// Schema: CfnClusterProps#Version + /// + [JsiiProperty(name: \\"version\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? Version + { + get + { + return null; + } + } + + /// A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + /// + /// Schema: CfnClusterProps + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterProps), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterProps + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#ResourcesVpcConfig + /// + [JsiiProperty(name: \\"resourcesVpcConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\\\\\"}\\")] + public AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig ResourcesVpcConfig + { + get => GetInstanceProperty()!; + } + + /// Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + /// + /// This provides permissions for Amazon EKS to call other AWS APIs. + /// + /// Schema: CfnClusterProps#RoleArn + /// + [JsiiProperty(name: \\"roleArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public string RoleArn + { + get => GetInstanceProperty()!; + } + + /// Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + /// + /// By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + /// + /// Schema: CfnClusterProps#EnabledClusterLoggingTypes + /// + [JsiiOptional] + [JsiiProperty(name: \\"enabledClusterLoggingTypes\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? EnabledClusterLoggingTypes + { + get => GetInstanceProperty(); + } + + /// Encryption configuration for the cluster. + /// + /// Schema: CfnClusterProps#EncryptionConfig + /// + [JsiiOptional] + [JsiiProperty(name: \\"encryptionConfig\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public AWSQS::EKS::Cluster.IEncryptionConfigEntry[]? EncryptionConfig + { + get => GetInstanceProperty(); + } + + /// + /// Schema: CfnClusterProps#KubernetesApiAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"kubernetesApiAccess\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\\\\\"}\\", isOptional: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess? KubernetesApiAccess + { + get => GetInstanceProperty(); + } + + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterProps#KubernetesNetworkConfig + /// + [JsiiOptional] + [JsiiProperty(name: \\"kubernetesNetworkConfig\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\\\\\"}\\", isOptional: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig? KubernetesNetworkConfig + { + get => GetInstanceProperty(); + } + + /// Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + /// + /// this provides permissions for Lambda to be invoked and attach to the cluster VPC + /// + /// Schema: CfnClusterProps#LambdaRoleName + /// + [JsiiOptional] + [JsiiProperty(name: \\"lambdaRoleName\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? LambdaRoleName + { + get => GetInstanceProperty(); + } + + /// A unique name for your cluster. + /// + /// Schema: CfnClusterProps#Name + /// + [JsiiOptional] + [JsiiProperty(name: \\"name\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? Name + { + get => GetInstanceProperty(); + } + + /// + /// Schema: CfnClusterProps#Tags + /// + [JsiiOptional] + [JsiiProperty(name: \\"tags\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public AWSQS::EKS::Cluster.ICfnClusterPropsTags[]? Tags + { + get => GetInstanceProperty(); + } + + /// Desired Kubernetes version for your cluster. + /// + /// If you don't specify this value, the cluster uses the latest version from Amazon EKS. + /// + /// Schema: CfnClusterProps#Version + /// + [JsiiOptional] + [JsiiProperty(name: \\"version\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? Version + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterPropsKubernetesApiAccess.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: CfnClusterPropsKubernetesApiAccess + /// + [JsiiInterface(nativeType: typeof(ICfnClusterPropsKubernetesApiAccess), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\")] + public interface ICfnClusterPropsKubernetesApiAccess + { + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Roles + /// + [JsiiProperty(name: \\"roles\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Roles + { + get + { + return null; + } + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Users + /// + [JsiiProperty(name: \\"users\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Users + { + get + { + return null; + } + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterPropsKubernetesApiAccess), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesApiAccess + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Roles + /// + [JsiiOptional] + [JsiiProperty(name: \\"roles\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Roles + { + get => GetInstanceProperty(); + } + + /// + /// Schema: CfnClusterPropsKubernetesApiAccess#Users + /// + [JsiiOptional] + [JsiiProperty(name: \\"users\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public AWSQS::EKS::Cluster.IKubernetesApiAccessEntry[]? Users + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterPropsKubernetesNetworkConfig.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig + /// + [JsiiInterface(nativeType: typeof(ICfnClusterPropsKubernetesNetworkConfig), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\")] + public interface ICfnClusterPropsKubernetesNetworkConfig + { + /// Specify the range from which cluster services will receive IPv4 addresses. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + /// + [JsiiProperty(name: \\"serviceIpv4Cidr\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? ServiceIpv4Cidr + { + get + { + return null; + } + } + + /// Network configuration for Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterPropsKubernetesNetworkConfig), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterPropsKubernetesNetworkConfig + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// Specify the range from which cluster services will receive IPv4 addresses. + /// + /// Schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + /// + [JsiiOptional] + [JsiiProperty(name: \\"serviceIpv4Cidr\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? ServiceIpv4Cidr + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterPropsResourcesVpcConfig.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig + /// + [JsiiInterface(nativeType: typeof(ICfnClusterPropsResourcesVpcConfig), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\")] + public interface ICfnClusterPropsResourcesVpcConfig + { + /// Specify subnets for your Amazon EKS worker nodes. + /// + /// Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + /// + [JsiiProperty(name: \\"subnetIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\")] + string[] SubnetIds + { + get; + } + + /// Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + /// + /// If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + /// + [JsiiProperty(name: \\"endpointPrivateAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + bool? EndpointPrivateAccess + { + get + { + return null; + } + } + + /// Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + /// + /// If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + /// + [JsiiProperty(name: \\"endpointPublicAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + bool? EndpointPublicAccess + { + get + { + return null; + } + } + + /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + /// + /// Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + /// + [JsiiProperty(name: \\"publicAccessCidrs\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? PublicAccessCidrs + { + get + { + return null; + } + } + + /// Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// If you don't specify a security group, the default security group for your VPC is used. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + /// + [JsiiProperty(name: \\"securityGroupIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? SecurityGroupIds + { + get + { + return null; + } + } + + /// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterPropsResourcesVpcConfig), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterPropsResourcesVpcConfig + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// Specify subnets for your Amazon EKS worker nodes. + /// + /// Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + /// + [JsiiProperty(name: \\"subnetIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\")] + public string[] SubnetIds + { + get => GetInstanceProperty()!; + } + + /// Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + /// + /// If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"endpointPrivateAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true)] + public bool? EndpointPrivateAccess + { + get => GetInstanceProperty(); + } + + /// Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + /// + /// If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + /// + [JsiiOptional] + [JsiiProperty(name: \\"endpointPublicAccess\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"boolean\\\\\\"}\\", isOptional: true)] + public bool? EndpointPublicAccess + { + get => GetInstanceProperty(); + } + + /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + /// + /// Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + /// + [JsiiOptional] + [JsiiProperty(name: \\"publicAccessCidrs\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? PublicAccessCidrs + { + get => GetInstanceProperty(); + } + + /// Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + /// + /// If you don't specify a security group, the default security group for your VPC is used. + /// + /// Schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + /// + [JsiiOptional] + [JsiiProperty(name: \\"securityGroupIds\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? SecurityGroupIds + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/ICfnClusterPropsTags.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: CfnClusterPropsTags + /// + [JsiiInterface(nativeType: typeof(ICfnClusterPropsTags), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\")] + public interface ICfnClusterPropsTags + { + /// + /// Schema: CfnClusterPropsTags#Key + /// + [JsiiProperty(name: \\"key\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + string Key + { + get; + } + + /// + /// Schema: CfnClusterPropsTags#Value + /// + [JsiiProperty(name: \\"value\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + string Value + { + get; + } + + /// + /// Schema: CfnClusterPropsTags + /// + [JsiiTypeProxy(nativeType: typeof(ICfnClusterPropsTags), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.ICfnClusterPropsTags + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// + /// Schema: CfnClusterPropsTags#Key + /// + [JsiiProperty(name: \\"key\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public string Key + { + get => GetInstanceProperty()!; + } + + /// + /// Schema: CfnClusterPropsTags#Value + /// + [JsiiProperty(name: \\"value\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\")] + public string Value + { + get => GetInstanceProperty()!; + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/IEncryptionConfigEntry.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// The encryption configuration for the cluster. + /// + /// Schema: EncryptionConfigEntry + /// + [JsiiInterface(nativeType: typeof(IEncryptionConfigEntry), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\")] + public interface IEncryptionConfigEntry + { + /// + /// Schema: EncryptionConfigEntry#Provider + /// + [JsiiProperty(name: \\"provider\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + AWSQS::EKS::Cluster.IProvider? Provider + { + get + { + return null; + } + } + + /// Specifies the resources to be encrypted. + /// + /// The only supported value is \\"secrets\\". + /// + /// Schema: EncryptionConfigEntry#Resources + /// + [JsiiProperty(name: \\"resources\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? Resources + { + get + { + return null; + } + } + + /// The encryption configuration for the cluster. + /// + /// Schema: EncryptionConfigEntry + /// + [JsiiTypeProxy(nativeType: typeof(IEncryptionConfigEntry), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.IEncryptionConfigEntry + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// + /// Schema: EncryptionConfigEntry#Provider + /// + [JsiiOptional] + [JsiiProperty(name: \\"provider\\", typeJson: \\"{\\\\\\"fqn\\\\\\":\\\\\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\\\\\"}\\", isOptional: true)] + public AWSQS::EKS::Cluster.IProvider? Provider + { + get => GetInstanceProperty(); + } + + /// Specifies the resources to be encrypted. + /// + /// The only supported value is \\"secrets\\". + /// + /// Schema: EncryptionConfigEntry#Resources + /// + [JsiiOptional] + [JsiiProperty(name: \\"resources\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? Resources + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/IKubernetesApiAccessEntry.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: KubernetesApiAccessEntry + /// + [JsiiInterface(nativeType: typeof(IKubernetesApiAccessEntry), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\")] + public interface IKubernetesApiAccessEntry + { + /// + /// Schema: KubernetesApiAccessEntry#Arn + /// + [JsiiProperty(name: \\"arn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? Arn + { + get + { + return null; + } + } + + /// + /// Schema: KubernetesApiAccessEntry#Groups + /// + [JsiiProperty(name: \\"groups\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string[]? Groups + { + get + { + return null; + } + } + + /// + /// Schema: KubernetesApiAccessEntry#Username + /// + [JsiiProperty(name: \\"username\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? Username + { + get + { + return null; + } + } + + /// + /// Schema: KubernetesApiAccessEntry + /// + [JsiiTypeProxy(nativeType: typeof(IKubernetesApiAccessEntry), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.IKubernetesApiAccessEntry + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// + /// Schema: KubernetesApiAccessEntry#Arn + /// + [JsiiOptional] + [JsiiProperty(name: \\"arn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? Arn + { + get => GetInstanceProperty(); + } + + /// + /// Schema: KubernetesApiAccessEntry#Groups + /// + [JsiiOptional] + [JsiiProperty(name: \\"groups\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true)] + public string[]? Groups + { + get => GetInstanceProperty(); + } + + /// + /// Schema: KubernetesApiAccessEntry#Username + /// + [JsiiOptional] + [JsiiProperty(name: \\"username\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? Username + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/IProvider.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// AWS Key Management Service (AWS KMS) customer master key (CMK). + /// + /// Either the ARN or the alias can be used. + /// + /// Schema: Provider + /// + [JsiiInterface(nativeType: typeof(IProvider), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\")] + public interface IProvider + { + /// Amazon Resource Name (ARN) or alias of the customer master key (CMK). + /// + /// The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + /// + /// Schema: Provider#KeyArn + /// + [JsiiProperty(name: \\"keyArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + [Amazon.JSII.Runtime.Deputy.JsiiOptional] + string? KeyArn + { + get + { + return null; + } + } + + /// AWS Key Management Service (AWS KMS) customer master key (CMK). + /// + /// Either the ARN or the alias can be used. + /// + /// Schema: Provider + /// + [JsiiTypeProxy(nativeType: typeof(IProvider), fullyQualifiedName: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\")] + internal sealed class _Proxy : DeputyBase, AWSQS::EKS::Cluster.IProvider + { + private _Proxy(ByRefValue reference): base(reference) + { + } + + /// Amazon Resource Name (ARN) or alias of the customer master key (CMK). + /// + /// The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + /// + /// Schema: Provider#KeyArn + /// + [JsiiOptional] + [JsiiProperty(name: \\"keyArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true)] + public string? KeyArn + { + get => GetInstanceProperty(); + } + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/Internal/DependencyResolution/Anchor.cs" => "#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster.Internal.DependencyResolution +{ + public sealed class Anchor + { + public Anchor() + { + new Amazon.CDK.CloudAssembly.Schema.Internal.DependencyResolution.Anchor(); + new Amazon.CDK.Internal.DependencyResolution.Anchor(); + new Amazon.CDK.CXAPI.Internal.DependencyResolution.Anchor(); + new Amazon.CDK.RegionInfo.Internal.DependencyResolution.Anchor(); + new Constructs.Internal.DependencyResolution.Anchor(); + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/KubernetesApiAccessEntry.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// + /// Schema: KubernetesApiAccessEntry + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\")] + public class KubernetesApiAccessEntry : AWSQS::EKS::Cluster.IKubernetesApiAccessEntry + { + /// + /// Schema: KubernetesApiAccessEntry#Arn + /// + [JsiiOptional] + [JsiiProperty(name: \\"arn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? Arn + { + get; + set; + } + + /// + /// Schema: KubernetesApiAccessEntry#Groups + /// + [JsiiOptional] + [JsiiProperty(name: \\"groups\\", typeJson: \\"{\\\\\\"collection\\\\\\":{\\\\\\"elementtype\\\\\\":{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"},\\\\\\"kind\\\\\\":\\\\\\"array\\\\\\"}}\\", isOptional: true, isOverride: true)] + public string[]? Groups + { + get; + set; + } + + /// + /// Schema: KubernetesApiAccessEntry#Username + /// + [JsiiOptional] + [JsiiProperty(name: \\"username\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? Username + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster/Provider.cs" => "using Amazon.JSII.Runtime.Deputy; + +#pragma warning disable CS0672,CS0809,CS1591 + +namespace AWSQS::EKS::Cluster +{ + /// AWS Key Management Service (AWS KMS) customer master key (CMK). + /// + /// Either the ARN or the alias can be used. + /// + /// Schema: Provider + /// + [JsiiByValue(fqn: \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\")] + public class Provider : AWSQS::EKS::Cluster.IProvider + { + /// Amazon Resource Name (ARN) or alias of the customer master key (CMK). + /// + /// The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + /// + /// Schema: Provider#KeyArn + /// + [JsiiOptional] + [JsiiProperty(name: \\"keyArn\\", typeJson: \\"{\\\\\\"primitive\\\\\\":\\\\\\"string\\\\\\"}\\", isOptional: true, isOverride: true)] + public string? KeyArn + { + get; + set; + } + } +} +", + "AWSQS::EKS::Cluster/AWSQS::EKS::Cluster.csproj" => " + + + 1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6 + AWSQS::EKS::Cluster + UNLICENSED + 0.0.0 + + generated@generated.com + en-US + http://generated + http://generated + git + + true + true + true + true + enable + snupkg + netcoreapp3.1 + + + + + + + + + + + + + + + 0612,0618 + + 0108,0109 + + + +", + "AWSQS::EKS::Cluster/AssemblyInfo.cs" => "using Amazon.JSII.Runtime.Deputy; + +[assembly: JsiiAssembly(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", \\"0.0.0\\", \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6-0.0.0.tgz\\")] +", + "awsqs-eks-cluster/awsqs-eks-cluster.go" => "// 1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6 +package awsqs-eks-cluster + +import ( + \\"awscdkcore\\" + + _jsii_ \\"github.com/aws/jsii-runtime-go/runtime\\" + _init_ \\"github.com/my/module/awsqs-eks-cluster/jsii\\" + + \\"github.com/aws/constructs-go/constructs/v3\\" + \\"github.com/my/module/awsqs-eks-cluster/internal\\" +) + +// A CloudFormation \`AWSQS::EKS::Cluster\`. +type CfnCluster interface { + awscdkcore.CfnResource + AttrArn() *string + AttrCertificateAuthorityData() *string + AttrClusterSecurityGroupId() *string + AttrEncryptionConfigKeyArn() *string + AttrEndpoint() *string + AttrOIDCIssuerURL() *string + CfnOptions() awscdkcore.ICfnResourceOptions + CfnProperties() *map[string]interface{} + CfnResourceType() *string + CreationStack() *[]*string + EnabledClusterLoggingTypes() *[]*string + EncryptionConfig() *[]*EncryptionConfigEntry + KubernetesApiAccess() interface{} + KubernetesNetworkConfig() interface{} + LambdaRoleName() *string + LogicalId() *string + Name() *string + Node() awscdkcore.ConstructNode + Ref() *string + ResourcesVpcConfig() interface{} + RoleArn() *string + Stack() awscdkcore.Stack + Tags() *[]interface{} + UpdatedProperites() *map[string]interface{} + Version() *string + AddDeletionOverride(path *string) + AddDependsOn(target awscdkcore.CfnResource) + AddMetadata(key *string, value interface{}) + AddOverride(path *string, value interface{}) + AddPropertyDeletionOverride(propertyPath *string) + AddPropertyOverride(propertyPath *string, value interface{}) + ApplyRemovalPolicy(policy awscdkcore.RemovalPolicy, options *awscdkcore.RemovalPolicyOptions) + GetAtt(attributeName *string) awscdkcore.Reference + GetMetadata(key *string) interface{} + OnPrepare() + OnSynthesize(session constructs.ISynthesisSession) + OnValidate() *[]*string + OverrideLogicalId(newLogicalId *string) + Prepare() + RenderProperties(props *map[string]interface{}) *map[string]interface{} + ShouldSynthesize() *bool + Synthesize(session awscdkcore.ISynthesisSession) + ToString() *string + Validate() *[]*string + ValidateProperties(_properties interface{}) +} + +// The jsii proxy struct for CfnCluster +type jsiiProxy_CfnCluster struct { + internal.Type__awscdkcoreCfnResource +} + +func (j *jsiiProxy_CfnCluster) AttrArn() *string { + var returns *string + _jsii_.Get( + j, + \\"attrArn\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) AttrCertificateAuthorityData() *string { + var returns *string + _jsii_.Get( + j, + \\"attrCertificateAuthorityData\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) AttrClusterSecurityGroupId() *string { + var returns *string + _jsii_.Get( + j, + \\"attrClusterSecurityGroupId\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) AttrEncryptionConfigKeyArn() *string { + var returns *string + _jsii_.Get( + j, + \\"attrEncryptionConfigKeyArn\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) AttrEndpoint() *string { + var returns *string + _jsii_.Get( + j, + \\"attrEndpoint\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) AttrOIDCIssuerURL() *string { + var returns *string + _jsii_.Get( + j, + \\"attrOIDCIssuerURL\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) CfnOptions() awscdkcore.ICfnResourceOptions { + var returns awscdkcore.ICfnResourceOptions + _jsii_.Get( + j, + \\"cfnOptions\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) CfnProperties() *map[string]interface{} { + var returns *map[string]interface{} + _jsii_.Get( + j, + \\"cfnProperties\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) CfnResourceType() *string { + var returns *string + _jsii_.Get( + j, + \\"cfnResourceType\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) CreationStack() *[]*string { + var returns *[]*string + _jsii_.Get( + j, + \\"creationStack\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) EnabledClusterLoggingTypes() *[]*string { + var returns *[]*string + _jsii_.Get( + j, + \\"enabledClusterLoggingTypes\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) EncryptionConfig() *[]*EncryptionConfigEntry { + var returns *[]*EncryptionConfigEntry + _jsii_.Get( + j, + \\"encryptionConfig\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) KubernetesApiAccess() interface{} { + var returns interface{} + _jsii_.Get( + j, + \\"kubernetesApiAccess\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) KubernetesNetworkConfig() interface{} { + var returns interface{} + _jsii_.Get( + j, + \\"kubernetesNetworkConfig\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) LambdaRoleName() *string { + var returns *string + _jsii_.Get( + j, + \\"lambdaRoleName\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) LogicalId() *string { + var returns *string + _jsii_.Get( + j, + \\"logicalId\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) Name() *string { + var returns *string + _jsii_.Get( + j, + \\"name\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) Node() awscdkcore.ConstructNode { + var returns awscdkcore.ConstructNode + _jsii_.Get( + j, + \\"node\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) Ref() *string { + var returns *string + _jsii_.Get( + j, + \\"ref\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) ResourcesVpcConfig() interface{} { + var returns interface{} + _jsii_.Get( + j, + \\"resourcesVpcConfig\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) RoleArn() *string { + var returns *string + _jsii_.Get( + j, + \\"roleArn\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) Stack() awscdkcore.Stack { + var returns awscdkcore.Stack + _jsii_.Get( + j, + \\"stack\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) Tags() *[]interface{} { + var returns *[]interface{} + _jsii_.Get( + j, + \\"tags\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) UpdatedProperites() *map[string]interface{} { + var returns *map[string]interface{} + _jsii_.Get( + j, + \\"updatedProperites\\", + &returns, + ) + return returns +} + +func (j *jsiiProxy_CfnCluster) Version() *string { + var returns *string + _jsii_.Get( + j, + \\"version\\", + &returns, + ) + return returns +} + + +// Create a new \`AWSQS::EKS::Cluster\`. +func NewCfnCluster(scope awscdkcore.Construct, id *string, props *CfnClusterProps) CfnCluster { + _init_.Initialize() + + j := jsiiProxy_CfnCluster{} + + _jsii_.Create( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", + []interface{}{scope, id, props}, + &j, + ) + + return &j +} + +// Create a new \`AWSQS::EKS::Cluster\`. +func NewCfnCluster_Override(c CfnCluster, scope awscdkcore.Construct, id *string, props *CfnClusterProps) { + _init_.Initialize() + + _jsii_.Create( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", + []interface{}{scope, id, props}, + c, + ) +} + +// Returns \`true\` if a construct is a stack element (i.e. part of the synthesized cloudformation template). +// +// Uses duck-typing instead of \`instanceof\` to allow stack elements from different +// versions of this library to be included in the same stack. +// +// Returns: The construct as a stack element or undefined if it is not a stack element. +func CfnCluster_IsCfnElement(x interface{}) *bool { + _init_.Initialize() + + var returns *bool + + _jsii_.StaticInvoke( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", + \\"isCfnElement\\", + []interface{}{x}, + &returns, + ) + + return returns +} + +// Check whether the given construct is a CfnResource. +func CfnCluster_IsCfnResource(construct constructs.IConstruct) *bool { + _init_.Initialize() + + var returns *bool + + _jsii_.StaticInvoke( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", + \\"isCfnResource\\", + []interface{}{construct}, + &returns, + ) + + return returns +} + +// Return whether the given object is a Construct. +func CfnCluster_IsConstruct(x interface{}) *bool { + _init_.Initialize() + + var returns *bool + + _jsii_.StaticInvoke( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", + \\"isConstruct\\", + []interface{}{x}, + &returns, + ) + + return returns +} + +func CfnCluster_CFN_RESOURCE_TYPE_NAME() *string { + _init_.Initialize() + var returns *string + _jsii_.StaticGet( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", + \\"CFN_RESOURCE_TYPE_NAME\\", + &returns, + ) + return returns +} + +// Syntactic sugar for \`addOverride(path, undefined)\`. +func (c *jsiiProxy_CfnCluster) AddDeletionOverride(path *string) { + _jsii_.InvokeVoid( + c, + \\"addDeletionOverride\\", + []interface{}{path}, + ) +} + +// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned. +// +// This can be used for resources across stacks (or nested stack) boundaries +// and the dependency will automatically be transferred to the relevant scope. +func (c *jsiiProxy_CfnCluster) AddDependsOn(target awscdkcore.CfnResource) { + _jsii_.InvokeVoid( + c, + \\"addDependsOn\\", + []interface{}{target}, + ) +} + +// Add a value to the CloudFormation Resource Metadata. +// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html +// +// Note that this is a different set of metadata from CDK node metadata; this +// metadata ends up in the stack template under the resource, whereas CDK +// node metadata ends up in the Cloud Assembly. +// +func (c *jsiiProxy_CfnCluster) AddMetadata(key *string, value interface{}) { + _jsii_.InvokeVoid( + c, + \\"addMetadata\\", + []interface{}{key, value}, + ) +} + +// Adds an override to the synthesized CloudFormation resource. +// +// To add a +// property override, either use \`addPropertyOverride\` or prefix \`path\` with +// \\"Properties.\\" (i.e. \`Properties.TopicName\`). +// +// If the override is nested, separate each nested level using a dot (.) in the path parameter. +// If there is an array as part of the nesting, specify the index in the path. +// +// To include a literal \`.\` in the property name, prefix with a \`\\\\\`. In most +// programming languages you will need to write this as \`\\"\\\\\\\\.\\"\` because the +// \`\\\\\` itself will need to be escaped. +// +// For example, +// \`\`\`typescript +// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']); +// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE'); +// \`\`\` +// would add the overrides +// \`\`\`json +// \\"Properties\\": { +// \\"GlobalSecondaryIndexes\\": [ +// { +// \\"Projection\\": { +// \\"NonKeyAttributes\\": [ \\"myattribute\\" ] +// ... +// } +// ... +// }, +// { +// \\"ProjectionType\\": \\"INCLUDE\\" +// ... +// }, +// ] +// ... +// } +// \`\`\` +func (c *jsiiProxy_CfnCluster) AddOverride(path *string, value interface{}) { + _jsii_.InvokeVoid( + c, + \\"addOverride\\", + []interface{}{path, value}, + ) +} + +// Adds an override that deletes the value of a property from the resource definition. +func (c *jsiiProxy_CfnCluster) AddPropertyDeletionOverride(propertyPath *string) { + _jsii_.InvokeVoid( + c, + \\"addPropertyDeletionOverride\\", + []interface{}{propertyPath}, + ) +} + +// Adds an override to a resource property. +// +// Syntactic sugar for \`addOverride(\\"Properties.<...>\\", value)\`. +func (c *jsiiProxy_CfnCluster) AddPropertyOverride(propertyPath *string, value interface{}) { + _jsii_.InvokeVoid( + c, + \\"addPropertyOverride\\", + []interface{}{propertyPath, value}, + ) +} + +// Sets the deletion policy of the resource based on the removal policy specified. +func (c *jsiiProxy_CfnCluster) ApplyRemovalPolicy(policy awscdkcore.RemovalPolicy, options *awscdkcore.RemovalPolicyOptions) { + _jsii_.InvokeVoid( + c, + \\"applyRemovalPolicy\\", + []interface{}{policy, options}, + ) +} + +// Returns a token for an runtime attribute of this resource. +// +// Ideally, use generated attribute accessors (e.g. \`resource.arn\`), but this can be used for future compatibility +// in case there is no generated attribute. +func (c *jsiiProxy_CfnCluster) GetAtt(attributeName *string) awscdkcore.Reference { + var returns awscdkcore.Reference + + _jsii_.Invoke( + c, + \\"getAtt\\", + []interface{}{attributeName}, + &returns, + ) + + return returns +} + +// Retrieve a value value from the CloudFormation Resource Metadata. +// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html +// +// Note that this is a different set of metadata from CDK node metadata; this +// metadata ends up in the stack template under the resource, whereas CDK +// node metadata ends up in the Cloud Assembly. +// +func (c *jsiiProxy_CfnCluster) GetMetadata(key *string) interface{} { + var returns interface{} + + _jsii_.Invoke( + c, + \\"getMetadata\\", + []interface{}{key}, + &returns, + ) + + return returns +} + +// Perform final modifications before synthesis. +// +// This method can be implemented by derived constructs in order to perform +// final changes before synthesis. prepare() will be called after child +// constructs have been prepared. +// +// This is an advanced framework feature. Only use this if you +// understand the implications. +func (c *jsiiProxy_CfnCluster) OnPrepare() { + _jsii_.InvokeVoid( + c, + \\"onPrepare\\", + nil, // no parameters + ) +} + +// Allows this construct to emit artifacts into the cloud assembly during synthesis. +// +// This method is usually implemented by framework-level constructs such as \`Stack\` and \`Asset\` +// as they participate in synthesizing the cloud assembly. +func (c *jsiiProxy_CfnCluster) OnSynthesize(session constructs.ISynthesisSession) { + _jsii_.InvokeVoid( + c, + \\"onSynthesize\\", + []interface{}{session}, + ) +} + +// Validate the current construct. +// +// This method can be implemented by derived constructs in order to perform +// validation logic. It is called on all constructs before synthesis. +// +// Returns: An array of validation error messages, or an empty array if the construct is valid. +func (c *jsiiProxy_CfnCluster) OnValidate() *[]*string { + var returns *[]*string + + _jsii_.Invoke( + c, + \\"onValidate\\", + nil, // no parameters + &returns, + ) + + return returns +} + +// Overrides the auto-generated logical ID with a specific ID. +func (c *jsiiProxy_CfnCluster) OverrideLogicalId(newLogicalId *string) { + _jsii_.InvokeVoid( + c, + \\"overrideLogicalId\\", + []interface{}{newLogicalId}, + ) +} + +// Perform final modifications before synthesis. +// +// This method can be implemented by derived constructs in order to perform +// final changes before synthesis. prepare() will be called after child +// constructs have been prepared. +// +// This is an advanced framework feature. Only use this if you +// understand the implications. +func (c *jsiiProxy_CfnCluster) Prepare() { + _jsii_.InvokeVoid( + c, + \\"prepare\\", + nil, // no parameters + ) +} + +func (c *jsiiProxy_CfnCluster) RenderProperties(props *map[string]interface{}) *map[string]interface{} { + var returns *map[string]interface{} + + _jsii_.Invoke( + c, + \\"renderProperties\\", + []interface{}{props}, + &returns, + ) + + return returns +} + +// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template. +// +// Returns: \`true\` if the resource should be included or \`false\` is the resource +// should be omitted. +func (c *jsiiProxy_CfnCluster) ShouldSynthesize() *bool { + var returns *bool + + _jsii_.Invoke( + c, + \\"shouldSynthesize\\", + nil, // no parameters + &returns, + ) + + return returns +} + +// Allows this construct to emit artifacts into the cloud assembly during synthesis. +// +// This method is usually implemented by framework-level constructs such as \`Stack\` and \`Asset\` +// as they participate in synthesizing the cloud assembly. +func (c *jsiiProxy_CfnCluster) Synthesize(session awscdkcore.ISynthesisSession) { + _jsii_.InvokeVoid( + c, + \\"synthesize\\", + []interface{}{session}, + ) +} + +// Returns a string representation of this construct. +// +// Returns: a string representation of this resource +func (c *jsiiProxy_CfnCluster) ToString() *string { + var returns *string + + _jsii_.Invoke( + c, + \\"toString\\", + nil, // no parameters + &returns, + ) + + return returns +} + +// Validate the current construct. +// +// This method can be implemented by derived constructs in order to perform +// validation logic. It is called on all constructs before synthesis. +// +// Returns: An array of validation error messages, or an empty array if the construct is valid. +func (c *jsiiProxy_CfnCluster) Validate() *[]*string { + var returns *[]*string + + _jsii_.Invoke( + c, + \\"validate\\", + nil, // no parameters + &returns, + ) + + return returns +} + +func (c *jsiiProxy_CfnCluster) ValidateProperties(_properties interface{}) { + _jsii_.InvokeVoid( + c, + \\"validateProperties\\", + []interface{}{_properties}, + ) +} + +// A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. +type CfnClusterProps struct { + // An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + ResourcesVpcConfig *CfnClusterPropsResourcesVpcConfig \`json:\\"resourcesVpcConfig\\"\` + // Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + // + // This provides permissions for Amazon EKS to call other AWS APIs. + RoleArn *string \`json:\\"roleArn\\"\` + // Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + // + // By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + EnabledClusterLoggingTypes *[]*string \`json:\\"enabledClusterLoggingTypes\\"\` + // Encryption configuration for the cluster. + EncryptionConfig *[]*EncryptionConfigEntry \`json:\\"encryptionConfig\\"\` + KubernetesApiAccess *CfnClusterPropsKubernetesApiAccess \`json:\\"kubernetesApiAccess\\"\` + // Network configuration for Amazon EKS cluster. + KubernetesNetworkConfig *CfnClusterPropsKubernetesNetworkConfig \`json:\\"kubernetesNetworkConfig\\"\` + // Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + // + // this provides permissions for Lambda to be invoked and attach to the cluster VPC + LambdaRoleName *string \`json:\\"lambdaRoleName\\"\` + // A unique name for your cluster. + Name *string \`json:\\"name\\"\` + Tags *[]*CfnClusterPropsTags \`json:\\"tags\\"\` + // Desired Kubernetes version for your cluster. + // + // If you don't specify this value, the cluster uses the latest version from Amazon EKS. + Version *string \`json:\\"version\\"\` +} + +type CfnClusterPropsKubernetesApiAccess struct { + Roles *[]*KubernetesApiAccessEntry \`json:\\"roles\\"\` + Users *[]*KubernetesApiAccessEntry \`json:\\"users\\"\` +} + +// Network configuration for Amazon EKS cluster. +type CfnClusterPropsKubernetesNetworkConfig struct { + // Specify the range from which cluster services will receive IPv4 addresses. + ServiceIpv4Cidr *string \`json:\\"serviceIpv4Cidr\\"\` +} + +// An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. +type CfnClusterPropsResourcesVpcConfig struct { + // Specify subnets for your Amazon EKS worker nodes. + // + // Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + SubnetIds *[]*string \`json:\\"subnetIds\\"\` + // Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + // + // If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + EndpointPrivateAccess *bool \`json:\\"endpointPrivateAccess\\"\` + // Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + // + // If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + EndpointPublicAccess *bool \`json:\\"endpointPublicAccess\\"\` + // The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + // + // Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + PublicAccessCidrs *[]*string \`json:\\"publicAccessCidrs\\"\` + // Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + // + // If you don't specify a security group, the default security group for your VPC is used. + SecurityGroupIds *[]*string \`json:\\"securityGroupIds\\"\` +} + +type CfnClusterPropsTags struct { + Key *string \`json:\\"key\\"\` + Value *string \`json:\\"value\\"\` +} + +// The encryption configuration for the cluster. +type EncryptionConfigEntry struct { + Provider *Provider \`json:\\"provider\\"\` + // Specifies the resources to be encrypted. + // + // The only supported value is \\"secrets\\". + Resources *[]*string \`json:\\"resources\\"\` +} + +type KubernetesApiAccessEntry struct { + Arn *string \`json:\\"arn\\"\` + Groups *[]*string \`json:\\"groups\\"\` + Username *string \`json:\\"username\\"\` +} + +// AWS Key Management Service (AWS KMS) customer master key (CMK). +// +// Either the ARN or the alias can be used. +type Provider struct { + // Amazon Resource Name (ARN) or alias of the customer master key (CMK). + // + // The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + KeyArn *string \`json:\\"keyArn\\"\` +} + +", + "awsqs-eks-cluster/awsqs-eks-cluster.init.go" => "package awsqs-eks-cluster + +import ( + \\"reflect\\" + + _jsii_ \\"github.com/aws/jsii-runtime-go/runtime\\" +) + +func init() { + _jsii_.RegisterClass( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", + reflect.TypeOf((*CfnCluster)(nil)).Elem(), + []_jsii_.Member{ + _jsii_.MemberMethod{JsiiMethod: \\"addDeletionOverride\\", GoMethod: \\"AddDeletionOverride\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"addDependsOn\\", GoMethod: \\"AddDependsOn\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"addMetadata\\", GoMethod: \\"AddMetadata\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"addOverride\\", GoMethod: \\"AddOverride\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"addPropertyDeletionOverride\\", GoMethod: \\"AddPropertyDeletionOverride\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"addPropertyOverride\\", GoMethod: \\"AddPropertyOverride\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"applyRemovalPolicy\\", GoMethod: \\"ApplyRemovalPolicy\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"attrArn\\", GoGetter: \\"AttrArn\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"attrCertificateAuthorityData\\", GoGetter: \\"AttrCertificateAuthorityData\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"attrClusterSecurityGroupId\\", GoGetter: \\"AttrClusterSecurityGroupId\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"attrEncryptionConfigKeyArn\\", GoGetter: \\"AttrEncryptionConfigKeyArn\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"attrEndpoint\\", GoGetter: \\"AttrEndpoint\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"attrOIDCIssuerURL\\", GoGetter: \\"AttrOIDCIssuerURL\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"cfnOptions\\", GoGetter: \\"CfnOptions\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"cfnProperties\\", GoGetter: \\"CfnProperties\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"cfnResourceType\\", GoGetter: \\"CfnResourceType\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"creationStack\\", GoGetter: \\"CreationStack\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"enabledClusterLoggingTypes\\", GoGetter: \\"EnabledClusterLoggingTypes\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"encryptionConfig\\", GoGetter: \\"EncryptionConfig\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"getAtt\\", GoMethod: \\"GetAtt\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"getMetadata\\", GoMethod: \\"GetMetadata\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"kubernetesApiAccess\\", GoGetter: \\"KubernetesApiAccess\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"kubernetesNetworkConfig\\", GoGetter: \\"KubernetesNetworkConfig\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"lambdaRoleName\\", GoGetter: \\"LambdaRoleName\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"logicalId\\", GoGetter: \\"LogicalId\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"name\\", GoGetter: \\"Name\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"node\\", GoGetter: \\"Node\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"onPrepare\\", GoMethod: \\"OnPrepare\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"onSynthesize\\", GoMethod: \\"OnSynthesize\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"onValidate\\", GoMethod: \\"OnValidate\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"overrideLogicalId\\", GoMethod: \\"OverrideLogicalId\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"prepare\\", GoMethod: \\"Prepare\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"ref\\", GoGetter: \\"Ref\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"renderProperties\\", GoMethod: \\"RenderProperties\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"resourcesVpcConfig\\", GoGetter: \\"ResourcesVpcConfig\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"roleArn\\", GoGetter: \\"RoleArn\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"shouldSynthesize\\", GoMethod: \\"ShouldSynthesize\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"stack\\", GoGetter: \\"Stack\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"synthesize\\", GoMethod: \\"Synthesize\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"tags\\", GoGetter: \\"Tags\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"toString\\", GoMethod: \\"ToString\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"updatedProperites\\", GoGetter: \\"UpdatedProperites\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"validate\\", GoMethod: \\"Validate\\"}, + _jsii_.MemberMethod{JsiiMethod: \\"validateProperties\\", GoMethod: \\"ValidateProperties\\"}, + _jsii_.MemberProperty{JsiiProperty: \\"version\\", GoGetter: \\"Version\\"}, + }, + func() interface{} { + j := jsiiProxy_CfnCluster{} + _jsii_.InitJsiiProxy(&j.Type__awscdkcoreCfnResource) + return &j + }, + ) + _jsii_.RegisterStruct( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\", + reflect.TypeOf((*CfnClusterProps)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\", + reflect.TypeOf((*CfnClusterPropsKubernetesApiAccess)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\", + reflect.TypeOf((*CfnClusterPropsKubernetesNetworkConfig)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\", + reflect.TypeOf((*CfnClusterPropsResourcesVpcConfig)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\", + reflect.TypeOf((*CfnClusterPropsTags)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\", + reflect.TypeOf((*EncryptionConfigEntry)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\", + reflect.TypeOf((*KubernetesApiAccessEntry)(nil)).Elem(), + ) + _jsii_.RegisterStruct( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\", + reflect.TypeOf((*Provider)(nil)).Elem(), + ) +} +", + "awsqs-eks-cluster/internal/types.go" => "package internal +import ( + \\"awscdkcore\\" +) +type Type__awscdkcoreCfnResource = awscdkcore.CfnResource +", + "awsqs-eks-cluster/jsii/jsii.go" => "// Package jsii contains the functionaility needed for jsii packages to +// initialize their dependencies and themselves. Users should never need to use this package +// directly. If you find you need to - please report a bug at +// https://github.com/aws/jsii/issues/new/choose +package jsii + +import ( + awscdkcloudassemblyschema \\"awscdkcloudassemblyschema/jsii\\" + awscdkcore \\"awscdkcore/jsii\\" + awscdkcxapi \\"awscdkcxapi/jsii\\" + awscdkregioninfo \\"awscdkregioninfo/jsii\\" + _ \\"embed\\" + + _jsii_ \\"github.com/aws/jsii-runtime-go/runtime\\" + + constructs \\"github.com/aws/constructs-go/constructs/v3/jsii\\" +) + +//go:embed 1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6-0.0.0.tgz +var tarball []byte + +// Initialize loads the necessary packages in the @jsii/kernel to support the enclosing module. +// The implementation is idempotent (and hence safe to be called over and over). +func Initialize() { + // Ensure all dependencies are initialized + awscdkcloudassemblyschema.Initialize() + awscdkcore.Initialize() + awscdkcxapi.Initialize() + awscdkregioninfo.Initialize() + constructs.Initialize() + + // Load this library into the kernel + _jsii_.Load(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", \\"0.0.0\\", tarball) +} +", + "awsqs-eks-cluster/version" => "0.0.0 +", + "awsqs-eks-cluster.ts" => "// Generated by cdk-import +import * as cdk from '@aws-cdk/core'; + +/** + * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + * + * @schema CfnClusterProps + */ +export interface CfnClusterProps { + /** + * A unique name for your cluster. + * + * @schema CfnClusterProps#Name + */ + readonly name?: string; + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * + * @schema CfnClusterProps#RoleArn + */ + readonly roleArn: string; + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * + * @schema CfnClusterProps#LambdaRoleName + */ + readonly lambdaRoleName?: string; + + /** + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * + * @schema CfnClusterProps#Version + */ + readonly version?: string; + + /** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterProps#KubernetesNetworkConfig + */ + readonly kubernetesNetworkConfig?: CfnClusterPropsKubernetesNetworkConfig; + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterProps#ResourcesVpcConfig + */ + readonly resourcesVpcConfig: CfnClusterPropsResourcesVpcConfig; + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * + * @schema CfnClusterProps#EnabledClusterLoggingTypes + */ + readonly enabledClusterLoggingTypes?: string[]; + + /** + * Encryption configuration for the cluster. + * + * @schema CfnClusterProps#EncryptionConfig + */ + readonly encryptionConfig?: EncryptionConfigEntry[]; + + /** + * @schema CfnClusterProps#KubernetesApiAccess + */ + readonly kubernetesApiAccess?: CfnClusterPropsKubernetesApiAccess; + + /** + * @schema CfnClusterProps#Tags + */ + readonly tags?: CfnClusterPropsTags[]; + +} + +/** + * Converts an object of type 'CfnClusterProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterProps(obj: CfnClusterProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Name': obj.name, + 'RoleArn': obj.roleArn, + 'LambdaRoleName': obj.lambdaRoleName, + 'Version': obj.version, + 'KubernetesNetworkConfig': toJson_CfnClusterPropsKubernetesNetworkConfig(obj.kubernetesNetworkConfig), + 'ResourcesVpcConfig': toJson_CfnClusterPropsResourcesVpcConfig(obj.resourcesVpcConfig), + 'EnabledClusterLoggingTypes': obj.enabledClusterLoggingTypes?.map(y => y), + 'EncryptionConfig': obj.encryptionConfig?.map(y => toJson_EncryptionConfigEntry(y)), + 'KubernetesApiAccess': toJson_CfnClusterPropsKubernetesApiAccess(obj.kubernetesApiAccess), + 'Tags': obj.tags?.map(y => toJson_CfnClusterPropsTags(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterPropsKubernetesNetworkConfig + */ +export interface CfnClusterPropsKubernetesNetworkConfig { + /** + * Specify the range from which cluster services will receive IPv4 addresses. + * + * @schema CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + */ + readonly serviceIpv4Cidr?: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesNetworkConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesNetworkConfig(obj: CfnClusterPropsKubernetesNetworkConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'ServiceIpv4Cidr': obj.serviceIpv4Cidr, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterPropsResourcesVpcConfig + */ +export interface CfnClusterPropsResourcesVpcConfig { + /** + * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + * + * @schema CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + */ + readonly securityGroupIds?: string[]; + + /** + * Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + * + * @schema CfnClusterPropsResourcesVpcConfig#SubnetIds + */ + readonly subnetIds: string[]; + + /** + * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + */ + readonly endpointPublicAccess?: boolean; + + /** + * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + */ + readonly endpointPrivateAccess?: boolean; + + /** + * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + * + * @schema CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + */ + readonly publicAccessCidrs?: string[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsResourcesVpcConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsResourcesVpcConfig(obj: CfnClusterPropsResourcesVpcConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecurityGroupIds': obj.securityGroupIds?.map(y => y), + 'SubnetIds': obj.subnetIds?.map(y => y), + 'EndpointPublicAccess': obj.endpointPublicAccess, + 'EndpointPrivateAccess': obj.endpointPrivateAccess, + 'PublicAccessCidrs': obj.publicAccessCidrs?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The encryption configuration for the cluster. + * + * @schema EncryptionConfigEntry + */ +export interface EncryptionConfigEntry { + /** + * Specifies the resources to be encrypted. The only supported value is \\"secrets\\". + * + * @schema EncryptionConfigEntry#Resources + */ + readonly resources?: string[]; + + /** + * @schema EncryptionConfigEntry#Provider + */ + readonly provider?: Provider; + +} + +/** + * Converts an object of type 'EncryptionConfigEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EncryptionConfigEntry(obj: EncryptionConfigEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Resources': obj.resources?.map(y => y), + 'Provider': toJson_Provider(obj.provider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsKubernetesApiAccess + */ +export interface CfnClusterPropsKubernetesApiAccess { + /** + * @schema CfnClusterPropsKubernetesApiAccess#Roles + */ + readonly roles?: KubernetesApiAccessEntry[]; + + /** + * @schema CfnClusterPropsKubernetesApiAccess#Users + */ + readonly users?: KubernetesApiAccessEntry[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesApiAccess' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesApiAccess(obj: CfnClusterPropsKubernetesApiAccess | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Roles': obj.roles?.map(y => toJson_KubernetesApiAccessEntry(y)), + 'Users': obj.users?.map(y => toJson_KubernetesApiAccessEntry(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsTags + */ +export interface CfnClusterPropsTags { + /** + * @schema CfnClusterPropsTags#Value + */ + readonly value: string; + + /** + * @schema CfnClusterPropsTags#Key + */ + readonly key: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsTags' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsTags(obj: CfnClusterPropsTags | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Value': obj.value, + 'Key': obj.key, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used. + * + * @schema Provider + */ +export interface Provider { + /** + * Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + * + * @schema Provider#KeyArn + */ + readonly keyArn?: string; + +} + +/** + * Converts an object of type 'Provider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_Provider(obj: Provider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'KeyArn': obj.keyArn, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema KubernetesApiAccessEntry + */ +export interface KubernetesApiAccessEntry { + /** + * @schema KubernetesApiAccessEntry#Arn + */ + readonly arn?: string; + + /** + * @schema KubernetesApiAccessEntry#Username + */ + readonly username?: string; + + /** + * @schema KubernetesApiAccessEntry#Groups + */ + readonly groups?: string[]; + +} + +/** + * Converts an object of type 'KubernetesApiAccessEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubernetesApiAccessEntry(obj: KubernetesApiAccessEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Arn': obj.arn, + 'Username': obj.username, + 'Groups': obj.groups?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * A CloudFormation \`AWSQS::EKS::Cluster\` + * + * @cloudformationResource AWSQS::EKS::Cluster + * @stability external + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ +export class CfnCluster extends cdk.CfnResource { + /** + * The CloudFormation resource type name for this resource class. + */ + public static readonly CFN_RESOURCE_TYPE_NAME = 'AWSQS::EKS::Cluster'; + + /** + * \`AWSQS::EKS::Cluster.Name\` + * A unique name for your cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly name: string | undefined; + /** + * \`AWSQS::EKS::Cluster.RoleArn\` + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly roleArn: string; + /** + * \`AWSQS::EKS::Cluster.LambdaRoleName\` + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly lambdaRoleName: string | undefined; + /** + * \`AWSQS::EKS::Cluster.Version\` + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly version: string | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` + * Network configuration for Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesNetworkConfig: any | undefined; + /** + * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly resourcesVpcConfig: any; + /** + * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly enabledClusterLoggingTypes: string[] | undefined; + /** + * \`AWSQS::EKS::Cluster.EncryptionConfig\` + * Encryption configuration for the cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly encryptionConfig: EncryptionConfigEntry[] | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesApiAccess\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesApiAccess: any | undefined; + /** + * \`AWSQS::EKS::Cluster.Tags\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly tags: any[] | undefined; + /** + * Attribute \`AWSQS::EKS::Cluster.Arn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.Endpoint\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEndpoint: string; + /** + * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrClusterSecurityGroupId: string; + /** + * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrCertificateAuthorityData: string; + /** + * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEncryptionConfigKeyArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrOIDCIssuerURL: string; + + /** + * Create a new \`AWSQS::EKS::Cluster\`. + * + * @param scope - scope in which this resource is defined + * @param id - scoped id of the resource + * @param props - resource properties + */ + constructor(scope: cdk.Construct, id: string, props: CfnClusterProps) { + super(scope, id, { type: CfnCluster.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnClusterProps(props)! }); + + this.name = props.name; + this.roleArn = props.roleArn; + this.lambdaRoleName = props.lambdaRoleName; + this.version = props.version; + this.kubernetesNetworkConfig = props.kubernetesNetworkConfig; + this.resourcesVpcConfig = props.resourcesVpcConfig; + this.enabledClusterLoggingTypes = props.enabledClusterLoggingTypes; + this.encryptionConfig = props.encryptionConfig; + this.kubernetesApiAccess = props.kubernetesApiAccess; + this.tags = props.tags; + this.attrArn = cdk.Token.asString(this.getAtt('Arn')); + this.attrEndpoint = cdk.Token.asString(this.getAtt('Endpoint')); + this.attrClusterSecurityGroupId = cdk.Token.asString(this.getAtt('ClusterSecurityGroupId')); + this.attrCertificateAuthorityData = cdk.Token.asString(this.getAtt('CertificateAuthorityData')); + this.attrEncryptionConfigKeyArn = cdk.Token.asString(this.getAtt('EncryptionConfigKeyArn')); + this.attrOIDCIssuerURL = cdk.Token.asString(this.getAtt('OIDCIssuerURL')); + } +}", + "awsqs_eks_cluster/__init__.py" => "import abc +import builtins +import datetime +import enum +import typing + +import jsii +import publication +import typing_extensions + +from ._jsii import * + +import aws_cdk.core + + +class CfnCluster( + aws_cdk.core.CfnResource, + metaclass=jsii.JSIIMeta, + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", +): + '''A CloudFormation \`\`AWSQS::EKS::Cluster\`\`. + + :cloudformationResource: AWSQS::EKS::Cluster + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + + def __init__( + self, + scope: aws_cdk.core.Construct, + id: builtins.str, + *, + resources_vpc_config: \\"CfnClusterPropsResourcesVpcConfig\\", + role_arn: builtins.str, + enabled_cluster_logging_types: typing.Optional[typing.Sequence[builtins.str]] = None, + encryption_config: typing.Optional[typing.Sequence[\\"EncryptionConfigEntry\\"]] = None, + kubernetes_api_access: typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"] = None, + kubernetes_network_config: typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"] = None, + lambda_role_name: typing.Optional[builtins.str] = None, + name: typing.Optional[builtins.str] = None, + tags: typing.Optional[typing.Sequence[\\"CfnClusterPropsTags\\"]] = None, + version: typing.Optional[builtins.str] = None, + ) -> None: + '''Create a new \`\`AWSQS::EKS::Cluster\`\`. + + :param scope: - scope in which this resource is defined. + :param id: - scoped id of the resource. + :param resources_vpc_config: An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + :param role_arn: Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + :param enabled_cluster_logging_types: Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + :param encryption_config: Encryption configuration for the cluster. + :param kubernetes_api_access: + :param kubernetes_network_config: Network configuration for Amazon EKS cluster. + :param lambda_role_name: Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + :param name: A unique name for your cluster. + :param tags: + :param version: Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + ''' + props = CfnClusterProps( + resources_vpc_config=resources_vpc_config, + role_arn=role_arn, + enabled_cluster_logging_types=enabled_cluster_logging_types, + encryption_config=encryption_config, + kubernetes_api_access=kubernetes_api_access, + kubernetes_network_config=kubernetes_network_config, + lambda_role_name=lambda_role_name, + name=name, + tags=tags, + version=version, + ) + + jsii.create(self.__class__, self, [scope, id, props]) + + @jsii.python.classproperty # type: ignore[misc] + @jsii.member(jsii_name=\\"CFN_RESOURCE_TYPE_NAME\\") + def CFN_RESOURCE_TYPE_NAME(cls) -> builtins.str: + '''The CloudFormation resource type name for this resource class.''' + return typing.cast(builtins.str, jsii.sget(cls, \\"CFN_RESOURCE_TYPE_NAME\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrArn\\") + def attr_arn(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.Arn\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrCertificateAuthorityData\\") + def attr_certificate_authority_data(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.CertificateAuthorityData\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrCertificateAuthorityData\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrClusterSecurityGroupId\\") + def attr_cluster_security_group_id(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrClusterSecurityGroupId\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrEncryptionConfigKeyArn\\") + def attr_encryption_config_key_arn(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrEncryptionConfigKeyArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrEndpoint\\") + def attr_endpoint(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.Endpoint\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrEndpoint\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrOIDCIssuerURL\\") + def attr_oidc_issuer_url(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.OIDCIssuerURL\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrOIDCIssuerURL\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"kubernetesApiAccess\\") + def kubernetes_api_access(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.KubernetesApiAccess\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"kubernetesApiAccess\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"kubernetesNetworkConfig\\") + def kubernetes_network_config(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.KubernetesNetworkConfig\`\` Network configuration for Amazon EKS cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"kubernetesNetworkConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"resourcesVpcConfig\\") + def resources_vpc_config(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.ResourcesVpcConfig\`\` An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"resourcesVpcConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"roleArn\\") + def role_arn(self) -> builtins.str: + '''\`\`AWSQS::EKS::Cluster.RoleArn\`\` Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"roleArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"enabledClusterLoggingTypes\\") + def enabled_cluster_logging_types( + self, + ) -> typing.Optional[typing.List[builtins.str]]: + '''\`\`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\`\` Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, \\"enabledClusterLoggingTypes\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"encryptionConfig\\") + def encryption_config( + self, + ) -> typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]]: + '''\`\`AWSQS::EKS::Cluster.EncryptionConfig\`\` Encryption configuration for the cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]], jsii.get(self, \\"encryptionConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"lambdaRoleName\\") + def lambda_role_name(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.LambdaRoleName\`\` Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"lambdaRoleName\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"name\\") + def name(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.Name\`\` A unique name for your cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"name\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"tags\\") + def tags(self) -> typing.Optional[typing.List[typing.Any]]: + '''\`\`AWSQS::EKS::Cluster.Tags\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[typing.Any]], jsii.get(self, \\"tags\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"version\\") + def version(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.Version\`\` Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"version\\")) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\", + jsii_struct_bases=[], + name_mapping={ + \\"resources_vpc_config\\": \\"resourcesVpcConfig\\", + \\"role_arn\\": \\"roleArn\\", + \\"enabled_cluster_logging_types\\": \\"enabledClusterLoggingTypes\\", + \\"encryption_config\\": \\"encryptionConfig\\", + \\"kubernetes_api_access\\": \\"kubernetesApiAccess\\", + \\"kubernetes_network_config\\": \\"kubernetesNetworkConfig\\", + \\"lambda_role_name\\": \\"lambdaRoleName\\", + \\"name\\": \\"name\\", + \\"tags\\": \\"tags\\", + \\"version\\": \\"version\\", + }, +) +class CfnClusterProps: + def __init__( + self, + *, + resources_vpc_config: \\"CfnClusterPropsResourcesVpcConfig\\", + role_arn: builtins.str, + enabled_cluster_logging_types: typing.Optional[typing.Sequence[builtins.str]] = None, + encryption_config: typing.Optional[typing.Sequence[\\"EncryptionConfigEntry\\"]] = None, + kubernetes_api_access: typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"] = None, + kubernetes_network_config: typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"] = None, + lambda_role_name: typing.Optional[builtins.str] = None, + name: typing.Optional[builtins.str] = None, + tags: typing.Optional[typing.Sequence[\\"CfnClusterPropsTags\\"]] = None, + version: typing.Optional[builtins.str] = None, + ) -> None: + '''A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + + :param resources_vpc_config: An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + :param role_arn: Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + :param enabled_cluster_logging_types: Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + :param encryption_config: Encryption configuration for the cluster. + :param kubernetes_api_access: + :param kubernetes_network_config: Network configuration for Amazon EKS cluster. + :param lambda_role_name: Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + :param name: A unique name for your cluster. + :param tags: + :param version: Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :schema: CfnClusterProps + ''' + if isinstance(resources_vpc_config, dict): + resources_vpc_config = CfnClusterPropsResourcesVpcConfig(**resources_vpc_config) + if isinstance(kubernetes_api_access, dict): + kubernetes_api_access = CfnClusterPropsKubernetesApiAccess(**kubernetes_api_access) + if isinstance(kubernetes_network_config, dict): + kubernetes_network_config = CfnClusterPropsKubernetesNetworkConfig(**kubernetes_network_config) + self._values: typing.Dict[str, typing.Any] = { + \\"resources_vpc_config\\": resources_vpc_config, + \\"role_arn\\": role_arn, + } + if enabled_cluster_logging_types is not None: + self._values[\\"enabled_cluster_logging_types\\"] = enabled_cluster_logging_types + if encryption_config is not None: + self._values[\\"encryption_config\\"] = encryption_config + if kubernetes_api_access is not None: + self._values[\\"kubernetes_api_access\\"] = kubernetes_api_access + if kubernetes_network_config is not None: + self._values[\\"kubernetes_network_config\\"] = kubernetes_network_config + if lambda_role_name is not None: + self._values[\\"lambda_role_name\\"] = lambda_role_name + if name is not None: + self._values[\\"name\\"] = name + if tags is not None: + self._values[\\"tags\\"] = tags + if version is not None: + self._values[\\"version\\"] = version + + @builtins.property + def resources_vpc_config(self) -> \\"CfnClusterPropsResourcesVpcConfig\\": + '''An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :schema: CfnClusterProps#ResourcesVpcConfig + ''' + result = self._values.get(\\"resources_vpc_config\\") + assert result is not None, \\"Required property 'resources_vpc_config' is missing\\" + return typing.cast(\\"CfnClusterPropsResourcesVpcConfig\\", result) + + @builtins.property + def role_arn(self) -> builtins.str: + '''Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + + This provides permissions for Amazon EKS to call other AWS APIs. + + :schema: CfnClusterProps#RoleArn + ''' + result = self._values.get(\\"role_arn\\") + assert result is not None, \\"Required property 'role_arn' is missing\\" + return typing.cast(builtins.str, result) + + @builtins.property + def enabled_cluster_logging_types( + self, + ) -> typing.Optional[typing.List[builtins.str]]: + '''Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + + By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + + :schema: CfnClusterProps#EnabledClusterLoggingTypes + ''' + result = self._values.get(\\"enabled_cluster_logging_types\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def encryption_config( + self, + ) -> typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]]: + '''Encryption configuration for the cluster. + + :schema: CfnClusterProps#EncryptionConfig + ''' + result = self._values.get(\\"encryption_config\\") + return typing.cast(typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]], result) + + @builtins.property + def kubernetes_api_access( + self, + ) -> typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"]: + ''' + :schema: CfnClusterProps#KubernetesApiAccess + ''' + result = self._values.get(\\"kubernetes_api_access\\") + return typing.cast(typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"], result) + + @builtins.property + def kubernetes_network_config( + self, + ) -> typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"]: + '''Network configuration for Amazon EKS cluster. + + :schema: CfnClusterProps#KubernetesNetworkConfig + ''' + result = self._values.get(\\"kubernetes_network_config\\") + return typing.cast(typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"], result) + + @builtins.property + def lambda_role_name(self) -> typing.Optional[builtins.str]: + '''Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + + this provides permissions for Lambda to be invoked and attach to the cluster VPC + + :schema: CfnClusterProps#LambdaRoleName + ''' + result = self._values.get(\\"lambda_role_name\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def name(self) -> typing.Optional[builtins.str]: + '''A unique name for your cluster. + + :schema: CfnClusterProps#Name + ''' + result = self._values.get(\\"name\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def tags(self) -> typing.Optional[typing.List[\\"CfnClusterPropsTags\\"]]: + ''' + :schema: CfnClusterProps#Tags + ''' + result = self._values.get(\\"tags\\") + return typing.cast(typing.Optional[typing.List[\\"CfnClusterPropsTags\\"]], result) + + @builtins.property + def version(self) -> typing.Optional[builtins.str]: + '''Desired Kubernetes version for your cluster. + + If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :schema: CfnClusterProps#Version + ''' + result = self._values.get(\\"version\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterProps(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\", + jsii_struct_bases=[], + name_mapping={\\"roles\\": \\"roles\\", \\"users\\": \\"users\\"}, +) +class CfnClusterPropsKubernetesApiAccess: + def __init__( + self, + *, + roles: typing.Optional[typing.Sequence[\\"KubernetesApiAccessEntry\\"]] = None, + users: typing.Optional[typing.Sequence[\\"KubernetesApiAccessEntry\\"]] = None, + ) -> None: + ''' + :param roles: + :param users: + + :schema: CfnClusterPropsKubernetesApiAccess + ''' + self._values: typing.Dict[str, typing.Any] = {} + if roles is not None: + self._values[\\"roles\\"] = roles + if users is not None: + self._values[\\"users\\"] = users + + @builtins.property + def roles(self) -> typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]]: + ''' + :schema: CfnClusterPropsKubernetesApiAccess#Roles + ''' + result = self._values.get(\\"roles\\") + return typing.cast(typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]], result) + + @builtins.property + def users(self) -> typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]]: + ''' + :schema: CfnClusterPropsKubernetesApiAccess#Users + ''' + result = self._values.get(\\"users\\") + return typing.cast(typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsKubernetesApiAccess(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\", + jsii_struct_bases=[], + name_mapping={\\"service_ipv4_cidr\\": \\"serviceIpv4Cidr\\"}, +) +class CfnClusterPropsKubernetesNetworkConfig: + def __init__( + self, + *, + service_ipv4_cidr: typing.Optional[builtins.str] = None, + ) -> None: + '''Network configuration for Amazon EKS cluster. + + :param service_ipv4_cidr: Specify the range from which cluster services will receive IPv4 addresses. + + :schema: CfnClusterPropsKubernetesNetworkConfig + ''' + self._values: typing.Dict[str, typing.Any] = {} + if service_ipv4_cidr is not None: + self._values[\\"service_ipv4_cidr\\"] = service_ipv4_cidr + + @builtins.property + def service_ipv4_cidr(self) -> typing.Optional[builtins.str]: + '''Specify the range from which cluster services will receive IPv4 addresses. + + :schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + ''' + result = self._values.get(\\"service_ipv4_cidr\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsKubernetesNetworkConfig(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\", + jsii_struct_bases=[], + name_mapping={ + \\"subnet_ids\\": \\"subnetIds\\", + \\"endpoint_private_access\\": \\"endpointPrivateAccess\\", + \\"endpoint_public_access\\": \\"endpointPublicAccess\\", + \\"public_access_cidrs\\": \\"publicAccessCidrs\\", + \\"security_group_ids\\": \\"securityGroupIds\\", + }, +) +class CfnClusterPropsResourcesVpcConfig: + def __init__( + self, + *, + subnet_ids: typing.Sequence[builtins.str], + endpoint_private_access: typing.Optional[builtins.bool] = None, + endpoint_public_access: typing.Optional[builtins.bool] = None, + public_access_cidrs: typing.Optional[typing.Sequence[builtins.str]] = None, + security_group_ids: typing.Optional[typing.Sequence[builtins.str]] = None, + ) -> None: + '''An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :param subnet_ids: Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + :param endpoint_private_access: Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + :param endpoint_public_access: Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + :param public_access_cidrs: The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + :param security_group_ids: Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + + :schema: CfnClusterPropsResourcesVpcConfig + ''' + self._values: typing.Dict[str, typing.Any] = { + \\"subnet_ids\\": subnet_ids, + } + if endpoint_private_access is not None: + self._values[\\"endpoint_private_access\\"] = endpoint_private_access + if endpoint_public_access is not None: + self._values[\\"endpoint_public_access\\"] = endpoint_public_access + if public_access_cidrs is not None: + self._values[\\"public_access_cidrs\\"] = public_access_cidrs + if security_group_ids is not None: + self._values[\\"security_group_ids\\"] = security_group_ids + + @builtins.property + def subnet_ids(self) -> typing.List[builtins.str]: + '''Specify subnets for your Amazon EKS worker nodes. + + Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + + :schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + ''' + result = self._values.get(\\"subnet_ids\\") + assert result is not None, \\"Required property 'subnet_ids' is missing\\" + return typing.cast(typing.List[builtins.str], result) + + @builtins.property + def endpoint_private_access(self) -> typing.Optional[builtins.bool]: + '''Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + + If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + + :schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + ''' + result = self._values.get(\\"endpoint_private_access\\") + return typing.cast(typing.Optional[builtins.bool], result) + + @builtins.property + def endpoint_public_access(self) -> typing.Optional[builtins.bool]: + '''Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + + If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + + :schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + ''' + result = self._values.get(\\"endpoint_public_access\\") + return typing.cast(typing.Optional[builtins.bool], result) + + @builtins.property + def public_access_cidrs(self) -> typing.Optional[typing.List[builtins.str]]: + '''The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + + Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + + :schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + ''' + result = self._values.get(\\"public_access_cidrs\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def security_group_ids(self) -> typing.Optional[typing.List[builtins.str]]: + '''Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + + If you don't specify a security group, the default security group for your VPC is used. + + :schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + ''' + result = self._values.get(\\"security_group_ids\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsResourcesVpcConfig(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\", + jsii_struct_bases=[], + name_mapping={\\"key\\": \\"key\\", \\"value\\": \\"value\\"}, +) +class CfnClusterPropsTags: + def __init__(self, *, key: builtins.str, value: builtins.str) -> None: + ''' + :param key: + :param value: + + :schema: CfnClusterPropsTags + ''' + self._values: typing.Dict[str, typing.Any] = { + \\"key\\": key, + \\"value\\": value, + } + + @builtins.property + def key(self) -> builtins.str: + ''' + :schema: CfnClusterPropsTags#Key + ''' + result = self._values.get(\\"key\\") + assert result is not None, \\"Required property 'key' is missing\\" + return typing.cast(builtins.str, result) + + @builtins.property + def value(self) -> builtins.str: + ''' + :schema: CfnClusterPropsTags#Value + ''' + result = self._values.get(\\"value\\") + assert result is not None, \\"Required property 'value' is missing\\" + return typing.cast(builtins.str, result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsTags(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\", + jsii_struct_bases=[], + name_mapping={\\"provider\\": \\"provider\\", \\"resources\\": \\"resources\\"}, +) +class EncryptionConfigEntry: + def __init__( + self, + *, + provider: typing.Optional[\\"Provider\\"] = None, + resources: typing.Optional[typing.Sequence[builtins.str]] = None, + ) -> None: + '''The encryption configuration for the cluster. + + :param provider: + :param resources: Specifies the resources to be encrypted. The only supported value is \\"secrets\\". + + :schema: EncryptionConfigEntry + ''' + if isinstance(provider, dict): + provider = Provider(**provider) + self._values: typing.Dict[str, typing.Any] = {} + if provider is not None: + self._values[\\"provider\\"] = provider + if resources is not None: + self._values[\\"resources\\"] = resources + + @builtins.property + def provider(self) -> typing.Optional[\\"Provider\\"]: + ''' + :schema: EncryptionConfigEntry#Provider + ''' + result = self._values.get(\\"provider\\") + return typing.cast(typing.Optional[\\"Provider\\"], result) + + @builtins.property + def resources(self) -> typing.Optional[typing.List[builtins.str]]: + '''Specifies the resources to be encrypted. + + The only supported value is \\"secrets\\". + + :schema: EncryptionConfigEntry#Resources + ''' + result = self._values.get(\\"resources\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"EncryptionConfigEntry(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\", + jsii_struct_bases=[], + name_mapping={\\"arn\\": \\"arn\\", \\"groups\\": \\"groups\\", \\"username\\": \\"username\\"}, +) +class KubernetesApiAccessEntry: + def __init__( + self, + *, + arn: typing.Optional[builtins.str] = None, + groups: typing.Optional[typing.Sequence[builtins.str]] = None, + username: typing.Optional[builtins.str] = None, + ) -> None: + ''' + :param arn: + :param groups: + :param username: + + :schema: KubernetesApiAccessEntry + ''' + self._values: typing.Dict[str, typing.Any] = {} + if arn is not None: + self._values[\\"arn\\"] = arn + if groups is not None: + self._values[\\"groups\\"] = groups + if username is not None: + self._values[\\"username\\"] = username + + @builtins.property + def arn(self) -> typing.Optional[builtins.str]: + ''' + :schema: KubernetesApiAccessEntry#Arn + ''' + result = self._values.get(\\"arn\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def groups(self) -> typing.Optional[typing.List[builtins.str]]: + ''' + :schema: KubernetesApiAccessEntry#Groups + ''' + result = self._values.get(\\"groups\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def username(self) -> typing.Optional[builtins.str]: + ''' + :schema: KubernetesApiAccessEntry#Username + ''' + result = self._values.get(\\"username\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"KubernetesApiAccessEntry(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\", + jsii_struct_bases=[], + name_mapping={\\"key_arn\\": \\"keyArn\\"}, +) +class Provider: + def __init__(self, *, key_arn: typing.Optional[builtins.str] = None) -> None: + '''AWS Key Management Service (AWS KMS) customer master key (CMK). + + Either the ARN or the alias can be used. + + :param key_arn: Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + + :schema: Provider + ''' + self._values: typing.Dict[str, typing.Any] = {} + if key_arn is not None: + self._values[\\"key_arn\\"] = key_arn + + @builtins.property + def key_arn(self) -> typing.Optional[builtins.str]: + '''Amazon Resource Name (ARN) or alias of the customer master key (CMK). + + The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + + :schema: Provider#KeyArn + ''' + result = self._values.get(\\"key_arn\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"Provider(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +__all__ = [ + \\"CfnCluster\\", + \\"CfnClusterProps\\", + \\"CfnClusterPropsKubernetesApiAccess\\", + \\"CfnClusterPropsKubernetesNetworkConfig\\", + \\"CfnClusterPropsResourcesVpcConfig\\", + \\"CfnClusterPropsTags\\", + \\"EncryptionConfigEntry\\", + \\"KubernetesApiAccessEntry\\", + \\"Provider\\", +] + +publication.publish() +", + "awsqs_eks_cluster/_jsii/__init__.py" => "import abc +import builtins +import datetime +import enum +import typing + +import jsii +import publication +import typing_extensions + +import aws_cdk.cloud_assembly_schema._jsii +import aws_cdk.core._jsii +import aws_cdk.cx_api._jsii +import aws_cdk.region_info._jsii +import constructs._jsii + +__jsii_assembly__ = jsii.JSIIAssembly.load( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", + \\"0.0.0\\", + __name__[0:-6], + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6@0.0.0.jsii.tgz\\", +) + +__all__ = [ + \\"__jsii_assembly__\\", +] + +publication.publish() +", + "awsqs_eks_cluster/py.typed" => " +", + "src/main/java/com/my/module/$Module.java" => "package com.my.module; + +import static java.util.Arrays.asList; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.Reader; +import java.io.UncheckedIOException; + +import java.nio.charset.StandardCharsets; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import software.amazon.jsii.JsiiModule; + +@software.amazon.jsii.Internal +public final class $Module extends JsiiModule { + private static final Map MODULE_TYPES = load(); + + private static Map load() { + final Map result = new HashMap<>(); + final ClassLoader cl = $Module.class.getClassLoader(); + try (final InputStream is = cl.getResourceAsStream(\\"com/my/module/$Module.txt\\"); + final Reader rd = new InputStreamReader(is, StandardCharsets.UTF_8); + final BufferedReader br = new BufferedReader(rd)) { + br.lines() + .filter(line -> !line.trim().isEmpty()) + .forEach(line -> { + final String[] parts = line.split(\\"=\\", 2); + final String fqn = parts[0]; + final String className = parts[1]; + result.put(fqn, className); + }); + } + catch (final IOException exception) { + throw new UncheckedIOException(exception); + } + return result; + } + + private final Map> cache = new HashMap<>(); + + public $Module() { + super(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", \\"0.0.0\\", $Module.class, \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6@0.0.0.jsii.tgz\\"); + } + + @Override + public List> getDependencies() { + return asList(software.amazon.awscdk.cloudassembly.schema.$Module.class, software.amazon.awscdk.core.$Module.class, software.amazon.awscdk.cxapi.$Module.class, software.amazon.awscdk.regioninfo.$Module.class, software.constructs.$Module.class); + } + + @Override + protected Class resolveClass(final String fqn) throws ClassNotFoundException { + if (!MODULE_TYPES.containsKey(fqn)) { + throw new ClassNotFoundException(\\"Unknown JSII type: \\" + fqn); + } + String className = MODULE_TYPES.get(fqn); + if (!this.cache.containsKey(className)) { + this.cache.put(className, this.findClass(className)); + } + return this.cache.get(className); + } + + private Class findClass(final String binaryName) { + try { + return Class.forName(binaryName); + } + catch (final ClassNotFoundException exception) { + throw new RuntimeException(exception); + } + } +} +", + "src/main/java/com/my/module/CfnCluster.java" => "package com.my.module; + +/** + * A CloudFormation \`AWSQS::EKS::Cluster\`. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.888Z\\") +@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\") +public class CfnCluster extends software.amazon.awscdk.core.CfnResource { + + protected CfnCluster(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + } + + protected CfnCluster(final software.amazon.jsii.JsiiObject.InitializationMode initializationMode) { + super(initializationMode); + } + + static { + CFN_RESOURCE_TYPE_NAME = software.amazon.jsii.JsiiObject.jsiiStaticGet(com.my.module.CfnCluster.class, \\"CFN_RESOURCE_TYPE_NAME\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Create a new \`AWSQS::EKS::Cluster\`. + *

+ * @param scope - scope in which this resource is defined. This parameter is required. + * @param id - scoped id of the resource. This parameter is required. + * @param props - resource properties. This parameter is required. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public CfnCluster(final @org.jetbrains.annotations.NotNull software.amazon.awscdk.core.Construct scope, final @org.jetbrains.annotations.NotNull java.lang.String id, final @org.jetbrains.annotations.NotNull com.my.module.CfnClusterProps props) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + software.amazon.jsii.JsiiEngine.getInstance().createNewObject(this, new Object[] { java.util.Objects.requireNonNull(scope, \\"scope is required\\"), java.util.Objects.requireNonNull(id, \\"id is required\\"), java.util.Objects.requireNonNull(props, \\"props is required\\") }); + } + + /** + * The CloudFormation resource type name for this resource class. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public final static java.lang.String CFN_RESOURCE_TYPE_NAME; + + /** + * Attribute \`AWSQS::EKS::Cluster.Arn\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrArn() { + return software.amazon.jsii.Kernel.get(this, \\"attrArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrCertificateAuthorityData() { + return software.amazon.jsii.Kernel.get(this, \\"attrCertificateAuthorityData\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrClusterSecurityGroupId() { + return software.amazon.jsii.Kernel.get(this, \\"attrClusterSecurityGroupId\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrEncryptionConfigKeyArn() { + return software.amazon.jsii.Kernel.get(this, \\"attrEncryptionConfigKeyArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.Endpoint\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrEndpoint() { + return software.amazon.jsii.Kernel.get(this, \\"attrEndpoint\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrOIDCIssuerURL() { + return software.amazon.jsii.Kernel.get(this, \\"attrOIDCIssuerURL\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.KubernetesApiAccess\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.Object getKubernetesApiAccess() { + return software.amazon.jsii.Kernel.get(this, \\"kubernetesApiAccess\\", software.amazon.jsii.NativeType.forClass(java.lang.Object.class)); + } + + /** + * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` Network configuration for Amazon EKS cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.Object getKubernetesNetworkConfig() { + return software.amazon.jsii.Kernel.get(this, \\"kubernetesNetworkConfig\\", software.amazon.jsii.NativeType.forClass(java.lang.Object.class)); + } + + /** + * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.Object getResourcesVpcConfig() { + return software.amazon.jsii.Kernel.get(this, \\"resourcesVpcConfig\\", software.amazon.jsii.NativeType.forClass(java.lang.Object.class)); + } + + /** + * \`AWSQS::EKS::Cluster.RoleArn\` Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getRoleArn() { + return software.amazon.jsii.Kernel.get(this, \\"roleArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.util.List getEnabledClusterLoggingTypes() { + return java.util.Optional.ofNullable((java.util.List)(software.amazon.jsii.Kernel.get(this, \\"enabledClusterLoggingTypes\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))))).map(java.util.Collections::unmodifiableList).orElse(null); + } + + /** + * \`AWSQS::EKS::Cluster.EncryptionConfig\` Encryption configuration for the cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.util.List getEncryptionConfig() { + return java.util.Optional.ofNullable((java.util.List)(software.amazon.jsii.Kernel.get(this, \\"encryptionConfig\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.EncryptionConfigEntry.class))))).map(java.util.Collections::unmodifiableList).orElse(null); + } + + /** + * \`AWSQS::EKS::Cluster.LambdaRoleName\` Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.lang.String getLambdaRoleName() { + return software.amazon.jsii.Kernel.get(this, \\"lambdaRoleName\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.Name\` A unique name for your cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.lang.String getName() { + return software.amazon.jsii.Kernel.get(this, \\"name\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.Tags\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.util.List getTags() { + return java.util.Optional.ofNullable((java.util.List)(software.amazon.jsii.Kernel.get(this, \\"tags\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.Object.class))))).map(java.util.Collections::unmodifiableList).orElse(null); + } + + /** + * \`AWSQS::EKS::Cluster.Version\` Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.lang.String getVersion() { + return software.amazon.jsii.Kernel.get(this, \\"version\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * A fluent builder for {@link com.my.module.CfnCluster}. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public static final class Builder implements software.amazon.jsii.Builder { + /** + * @return a new instance of {@link Builder}. + * @param scope - scope in which this resource is defined. This parameter is required. + * @param id - scoped id of the resource. This parameter is required. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public static Builder create(final software.amazon.awscdk.core.Construct scope, final java.lang.String id) { + return new Builder(scope, id); + } + + private final software.amazon.awscdk.core.Construct scope; + private final java.lang.String id; + private final com.my.module.CfnClusterProps.Builder props; + + private Builder(final software.amazon.awscdk.core.Construct scope, final java.lang.String id) { + this.scope = scope; + this.id = id; + this.props = new com.my.module.CfnClusterProps.Builder(); + } + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + *

+ * @return {@code this} + * @param resourcesVpcConfig An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. This parameter is required. + */ + public Builder resourcesVpcConfig(final com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig) { + this.props.resourcesVpcConfig(resourcesVpcConfig); + return this; + } + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + *

+ * This provides permissions for Amazon EKS to call other AWS APIs. + *

+ * @return {@code this} + * @param roleArn Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This parameter is required. + */ + public Builder roleArn(final java.lang.String roleArn) { + this.props.roleArn(roleArn); + return this; + } + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + *

+ * By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + *

+ * @return {@code this} + * @param enabledClusterLoggingTypes Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. This parameter is required. + */ + public Builder enabledClusterLoggingTypes(final java.util.List enabledClusterLoggingTypes) { + this.props.enabledClusterLoggingTypes(enabledClusterLoggingTypes); + return this; + } + + /** + * Encryption configuration for the cluster. + *

+ * @return {@code this} + * @param encryptionConfig Encryption configuration for the cluster. This parameter is required. + */ + public Builder encryptionConfig(final java.util.List encryptionConfig) { + this.props.encryptionConfig(encryptionConfig); + return this; + } + + /** + * @return {@code this} + * @param kubernetesApiAccess This parameter is required. + */ + public Builder kubernetesApiAccess(final com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess) { + this.props.kubernetesApiAccess(kubernetesApiAccess); + return this; + } + + /** + * Network configuration for Amazon EKS cluster. + *

+ * @return {@code this} + * @param kubernetesNetworkConfig Network configuration for Amazon EKS cluster. This parameter is required. + */ + public Builder kubernetesNetworkConfig(final com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig) { + this.props.kubernetesNetworkConfig(kubernetesNetworkConfig); + return this; + } + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + *

+ * this provides permissions for Lambda to be invoked and attach to the cluster VPC + *

+ * @return {@code this} + * @param lambdaRoleName Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. This parameter is required. + */ + public Builder lambdaRoleName(final java.lang.String lambdaRoleName) { + this.props.lambdaRoleName(lambdaRoleName); + return this; + } + + /** + * A unique name for your cluster. + *

+ * @return {@code this} + * @param name A unique name for your cluster. This parameter is required. + */ + public Builder name(final java.lang.String name) { + this.props.name(name); + return this; + } + + /** + * @return {@code this} + * @param tags This parameter is required. + */ + public Builder tags(final java.util.List tags) { + this.props.tags(tags); + return this; + } + + /** + * Desired Kubernetes version for your cluster. + *

+ * If you don't specify this value, the cluster uses the latest version from Amazon EKS. + *

+ * @return {@code this} + * @param version Desired Kubernetes version for your cluster. This parameter is required. + */ + public Builder version(final java.lang.String version) { + this.props.version(version); + return this; + } + + /** + * @returns a newly built instance of {@link com.my.module.CfnCluster}. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + @Override + public com.my.module.CfnCluster build() { + return new com.my.module.CfnCluster( + this.scope, + this.id, + this.props.build() + ); + } + } +} +", + "src/main/java/com/my/module/CfnClusterProps.java" => "package com.my.module; + +/** + * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.899Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterProps.Jsii$Proxy.class) +public interface CfnClusterProps extends software.amazon.jsii.JsiiSerializable { + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + */ + @org.jetbrains.annotations.NotNull com.my.module.CfnClusterPropsResourcesVpcConfig getResourcesVpcConfig(); + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + *

+ * This provides permissions for Amazon EKS to call other AWS APIs. + */ + @org.jetbrains.annotations.NotNull java.lang.String getRoleArn(); + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + *

+ * By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + */ + default @org.jetbrains.annotations.Nullable java.util.List getEnabledClusterLoggingTypes() { + return null; + } + + /** + * Encryption configuration for the cluster. + */ + default @org.jetbrains.annotations.Nullable java.util.List getEncryptionConfig() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable com.my.module.CfnClusterPropsKubernetesApiAccess getKubernetesApiAccess() { + return null; + } + + /** + * Network configuration for Amazon EKS cluster. + */ + default @org.jetbrains.annotations.Nullable com.my.module.CfnClusterPropsKubernetesNetworkConfig getKubernetesNetworkConfig() { + return null; + } + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + *

+ * this provides permissions for Lambda to be invoked and attach to the cluster VPC + */ + default @org.jetbrains.annotations.Nullable java.lang.String getLambdaRoleName() { + return null; + } + + /** + * A unique name for your cluster. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getName() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getTags() { + return null; + } + + /** + * Desired Kubernetes version for your cluster. + *

+ * If you don't specify this value, the cluster uses the latest version from Amazon EKS. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getVersion() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterProps} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterProps} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig; + private java.lang.String roleArn; + private java.util.List enabledClusterLoggingTypes; + private java.util.List encryptionConfig; + private com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess; + private com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig; + private java.lang.String lambdaRoleName; + private java.lang.String name; + private java.util.List tags; + private java.lang.String version; + + /** + * Sets the value of {@link CfnClusterProps#getResourcesVpcConfig} + * @param resourcesVpcConfig An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. This parameter is required. + * @return {@code this} + */ + public Builder resourcesVpcConfig(com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig) { + this.resourcesVpcConfig = resourcesVpcConfig; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getRoleArn} + * @param roleArn Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This parameter is required. + * This provides permissions for Amazon EKS to call other AWS APIs. + * @return {@code this} + */ + public Builder roleArn(java.lang.String roleArn) { + this.roleArn = roleArn; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getEnabledClusterLoggingTypes} + * @param enabledClusterLoggingTypes Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + * By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * @return {@code this} + */ + public Builder enabledClusterLoggingTypes(java.util.List enabledClusterLoggingTypes) { + this.enabledClusterLoggingTypes = enabledClusterLoggingTypes; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getEncryptionConfig} + * @param encryptionConfig Encryption configuration for the cluster. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder encryptionConfig(java.util.List encryptionConfig) { + this.encryptionConfig = (java.util.List)encryptionConfig; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getKubernetesApiAccess} + * @param kubernetesApiAccess the value to be set. + * @return {@code this} + */ + public Builder kubernetesApiAccess(com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess) { + this.kubernetesApiAccess = kubernetesApiAccess; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getKubernetesNetworkConfig} + * @param kubernetesNetworkConfig Network configuration for Amazon EKS cluster. + * @return {@code this} + */ + public Builder kubernetesNetworkConfig(com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig) { + this.kubernetesNetworkConfig = kubernetesNetworkConfig; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getLambdaRoleName} + * @param lambdaRoleName Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + * this provides permissions for Lambda to be invoked and attach to the cluster VPC + * @return {@code this} + */ + public Builder lambdaRoleName(java.lang.String lambdaRoleName) { + this.lambdaRoleName = lambdaRoleName; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getName} + * @param name A unique name for your cluster. + * @return {@code this} + */ + public Builder name(java.lang.String name) { + this.name = name; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getTags} + * @param tags the value to be set. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder tags(java.util.List tags) { + this.tags = (java.util.List)tags; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getVersion} + * @param version Desired Kubernetes version for your cluster. + * If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * @return {@code this} + */ + public Builder version(java.lang.String version) { + this.version = version; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterProps} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterProps build() { + return new Jsii$Proxy(resourcesVpcConfig, roleArn, enabledClusterLoggingTypes, encryptionConfig, kubernetesApiAccess, kubernetesNetworkConfig, lambdaRoleName, name, tags, version); + } + } + + /** + * An implementation for {@link CfnClusterProps} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterProps { + private final com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig; + private final java.lang.String roleArn; + private final java.util.List enabledClusterLoggingTypes; + private final java.util.List encryptionConfig; + private final com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess; + private final com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig; + private final java.lang.String lambdaRoleName; + private final java.lang.String name; + private final java.util.List tags; + private final java.lang.String version; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.resourcesVpcConfig = software.amazon.jsii.Kernel.get(this, \\"resourcesVpcConfig\\", software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsResourcesVpcConfig.class)); + this.roleArn = software.amazon.jsii.Kernel.get(this, \\"roleArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.enabledClusterLoggingTypes = software.amazon.jsii.Kernel.get(this, \\"enabledClusterLoggingTypes\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.encryptionConfig = software.amazon.jsii.Kernel.get(this, \\"encryptionConfig\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.EncryptionConfigEntry.class))); + this.kubernetesApiAccess = software.amazon.jsii.Kernel.get(this, \\"kubernetesApiAccess\\", software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsKubernetesApiAccess.class)); + this.kubernetesNetworkConfig = software.amazon.jsii.Kernel.get(this, \\"kubernetesNetworkConfig\\", software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsKubernetesNetworkConfig.class)); + this.lambdaRoleName = software.amazon.jsii.Kernel.get(this, \\"lambdaRoleName\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.name = software.amazon.jsii.Kernel.get(this, \\"name\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.tags = software.amazon.jsii.Kernel.get(this, \\"tags\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsTags.class))); + this.version = software.amazon.jsii.Kernel.get(this, \\"version\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + @SuppressWarnings(\\"unchecked\\") + protected Jsii$Proxy(final com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig, final java.lang.String roleArn, final java.util.List enabledClusterLoggingTypes, final java.util.List encryptionConfig, final com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess, final com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig, final java.lang.String lambdaRoleName, final java.lang.String name, final java.util.List tags, final java.lang.String version) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.resourcesVpcConfig = java.util.Objects.requireNonNull(resourcesVpcConfig, \\"resourcesVpcConfig is required\\"); + this.roleArn = java.util.Objects.requireNonNull(roleArn, \\"roleArn is required\\"); + this.enabledClusterLoggingTypes = enabledClusterLoggingTypes; + this.encryptionConfig = (java.util.List)encryptionConfig; + this.kubernetesApiAccess = kubernetesApiAccess; + this.kubernetesNetworkConfig = kubernetesNetworkConfig; + this.lambdaRoleName = lambdaRoleName; + this.name = name; + this.tags = (java.util.List)tags; + this.version = version; + } + + @Override + public final com.my.module.CfnClusterPropsResourcesVpcConfig getResourcesVpcConfig() { + return this.resourcesVpcConfig; + } + + @Override + public final java.lang.String getRoleArn() { + return this.roleArn; + } + + @Override + public final java.util.List getEnabledClusterLoggingTypes() { + return this.enabledClusterLoggingTypes; + } + + @Override + public final java.util.List getEncryptionConfig() { + return this.encryptionConfig; + } + + @Override + public final com.my.module.CfnClusterPropsKubernetesApiAccess getKubernetesApiAccess() { + return this.kubernetesApiAccess; + } + + @Override + public final com.my.module.CfnClusterPropsKubernetesNetworkConfig getKubernetesNetworkConfig() { + return this.kubernetesNetworkConfig; + } + + @Override + public final java.lang.String getLambdaRoleName() { + return this.lambdaRoleName; + } + + @Override + public final java.lang.String getName() { + return this.name; + } + + @Override + public final java.util.List getTags() { + return this.tags; + } + + @Override + public final java.lang.String getVersion() { + return this.version; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + data.set(\\"resourcesVpcConfig\\", om.valueToTree(this.getResourcesVpcConfig())); + data.set(\\"roleArn\\", om.valueToTree(this.getRoleArn())); + if (this.getEnabledClusterLoggingTypes() != null) { + data.set(\\"enabledClusterLoggingTypes\\", om.valueToTree(this.getEnabledClusterLoggingTypes())); + } + if (this.getEncryptionConfig() != null) { + data.set(\\"encryptionConfig\\", om.valueToTree(this.getEncryptionConfig())); + } + if (this.getKubernetesApiAccess() != null) { + data.set(\\"kubernetesApiAccess\\", om.valueToTree(this.getKubernetesApiAccess())); + } + if (this.getKubernetesNetworkConfig() != null) { + data.set(\\"kubernetesNetworkConfig\\", om.valueToTree(this.getKubernetesNetworkConfig())); + } + if (this.getLambdaRoleName() != null) { + data.set(\\"lambdaRoleName\\", om.valueToTree(this.getLambdaRoleName())); + } + if (this.getName() != null) { + data.set(\\"name\\", om.valueToTree(this.getName())); + } + if (this.getTags() != null) { + data.set(\\"tags\\", om.valueToTree(this.getTags())); + } + if (this.getVersion() != null) { + data.set(\\"version\\", om.valueToTree(this.getVersion())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterProps.Jsii$Proxy that = (CfnClusterProps.Jsii$Proxy) o; + + if (!resourcesVpcConfig.equals(that.resourcesVpcConfig)) return false; + if (!roleArn.equals(that.roleArn)) return false; + if (this.enabledClusterLoggingTypes != null ? !this.enabledClusterLoggingTypes.equals(that.enabledClusterLoggingTypes) : that.enabledClusterLoggingTypes != null) return false; + if (this.encryptionConfig != null ? !this.encryptionConfig.equals(that.encryptionConfig) : that.encryptionConfig != null) return false; + if (this.kubernetesApiAccess != null ? !this.kubernetesApiAccess.equals(that.kubernetesApiAccess) : that.kubernetesApiAccess != null) return false; + if (this.kubernetesNetworkConfig != null ? !this.kubernetesNetworkConfig.equals(that.kubernetesNetworkConfig) : that.kubernetesNetworkConfig != null) return false; + if (this.lambdaRoleName != null ? !this.lambdaRoleName.equals(that.lambdaRoleName) : that.lambdaRoleName != null) return false; + if (this.name != null ? !this.name.equals(that.name) : that.name != null) return false; + if (this.tags != null ? !this.tags.equals(that.tags) : that.tags != null) return false; + return this.version != null ? this.version.equals(that.version) : that.version == null; + } + + @Override + public final int hashCode() { + int result = this.resourcesVpcConfig.hashCode(); + result = 31 * result + (this.roleArn.hashCode()); + result = 31 * result + (this.enabledClusterLoggingTypes != null ? this.enabledClusterLoggingTypes.hashCode() : 0); + result = 31 * result + (this.encryptionConfig != null ? this.encryptionConfig.hashCode() : 0); + result = 31 * result + (this.kubernetesApiAccess != null ? this.kubernetesApiAccess.hashCode() : 0); + result = 31 * result + (this.kubernetesNetworkConfig != null ? this.kubernetesNetworkConfig.hashCode() : 0); + result = 31 * result + (this.lambdaRoleName != null ? this.lambdaRoleName.hashCode() : 0); + result = 31 * result + (this.name != null ? this.name.hashCode() : 0); + result = 31 * result + (this.tags != null ? this.tags.hashCode() : 0); + result = 31 * result + (this.version != null ? this.version.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsKubernetesApiAccess.java" => "package com.my.module; + +/** + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.903Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsKubernetesApiAccess.Jsii$Proxy.class) +public interface CfnClusterPropsKubernetesApiAccess extends software.amazon.jsii.JsiiSerializable { + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getRoles() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getUsers() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterPropsKubernetesApiAccess} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsKubernetesApiAccess} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.util.List roles; + private java.util.List users; + + /** + * Sets the value of {@link CfnClusterPropsKubernetesApiAccess#getRoles} + * @param roles the value to be set. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder roles(java.util.List roles) { + this.roles = (java.util.List)roles; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsKubernetesApiAccess#getUsers} + * @param users the value to be set. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder users(java.util.List users) { + this.users = (java.util.List)users; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsKubernetesApiAccess} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsKubernetesApiAccess build() { + return new Jsii$Proxy(roles, users); + } + } + + /** + * An implementation for {@link CfnClusterPropsKubernetesApiAccess} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsKubernetesApiAccess { + private final java.util.List roles; + private final java.util.List users; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.roles = software.amazon.jsii.Kernel.get(this, \\"roles\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.KubernetesApiAccessEntry.class))); + this.users = software.amazon.jsii.Kernel.get(this, \\"users\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.KubernetesApiAccessEntry.class))); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + @SuppressWarnings(\\"unchecked\\") + protected Jsii$Proxy(final java.util.List roles, final java.util.List users) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.roles = (java.util.List)roles; + this.users = (java.util.List)users; + } + + @Override + public final java.util.List getRoles() { + return this.roles; + } + + @Override + public final java.util.List getUsers() { + return this.users; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getRoles() != null) { + data.set(\\"roles\\", om.valueToTree(this.getRoles())); + } + if (this.getUsers() != null) { + data.set(\\"users\\", om.valueToTree(this.getUsers())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsKubernetesApiAccess.Jsii$Proxy that = (CfnClusterPropsKubernetesApiAccess.Jsii$Proxy) o; + + if (this.roles != null ? !this.roles.equals(that.roles) : that.roles != null) return false; + return this.users != null ? this.users.equals(that.users) : that.users == null; + } + + @Override + public final int hashCode() { + int result = this.roles != null ? this.roles.hashCode() : 0; + result = 31 * result + (this.users != null ? this.users.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsKubernetesNetworkConfig.java" => "package com.my.module; + +/** + * Network configuration for Amazon EKS cluster. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.903Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsKubernetesNetworkConfig.Jsii$Proxy.class) +public interface CfnClusterPropsKubernetesNetworkConfig extends software.amazon.jsii.JsiiSerializable { + + /** + * Specify the range from which cluster services will receive IPv4 addresses. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getServiceIpv4Cidr() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterPropsKubernetesNetworkConfig} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsKubernetesNetworkConfig} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String serviceIpv4Cidr; + + /** + * Sets the value of {@link CfnClusterPropsKubernetesNetworkConfig#getServiceIpv4Cidr} + * @param serviceIpv4Cidr Specify the range from which cluster services will receive IPv4 addresses. + * @return {@code this} + */ + public Builder serviceIpv4Cidr(java.lang.String serviceIpv4Cidr) { + this.serviceIpv4Cidr = serviceIpv4Cidr; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsKubernetesNetworkConfig} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsKubernetesNetworkConfig build() { + return new Jsii$Proxy(serviceIpv4Cidr); + } + } + + /** + * An implementation for {@link CfnClusterPropsKubernetesNetworkConfig} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsKubernetesNetworkConfig { + private final java.lang.String serviceIpv4Cidr; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.serviceIpv4Cidr = software.amazon.jsii.Kernel.get(this, \\"serviceIpv4Cidr\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String serviceIpv4Cidr) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.serviceIpv4Cidr = serviceIpv4Cidr; + } + + @Override + public final java.lang.String getServiceIpv4Cidr() { + return this.serviceIpv4Cidr; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getServiceIpv4Cidr() != null) { + data.set(\\"serviceIpv4Cidr\\", om.valueToTree(this.getServiceIpv4Cidr())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsKubernetesNetworkConfig.Jsii$Proxy that = (CfnClusterPropsKubernetesNetworkConfig.Jsii$Proxy) o; + + return this.serviceIpv4Cidr != null ? this.serviceIpv4Cidr.equals(that.serviceIpv4Cidr) : that.serviceIpv4Cidr == null; + } + + @Override + public final int hashCode() { + int result = this.serviceIpv4Cidr != null ? this.serviceIpv4Cidr.hashCode() : 0; + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsResourcesVpcConfig.java" => "package com.my.module; + +/** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.903Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsResourcesVpcConfig.Jsii$Proxy.class) +public interface CfnClusterPropsResourcesVpcConfig extends software.amazon.jsii.JsiiSerializable { + + /** + * Specify subnets for your Amazon EKS worker nodes. + *

+ * Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + */ + @org.jetbrains.annotations.NotNull java.util.List getSubnetIds(); + + /** + * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + *

+ * If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + */ + default @org.jetbrains.annotations.Nullable java.lang.Boolean getEndpointPrivateAccess() { + return null; + } + + /** + * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + *

+ * If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + */ + default @org.jetbrains.annotations.Nullable java.lang.Boolean getEndpointPublicAccess() { + return null; + } + + /** + * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + *

+ * Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + */ + default @org.jetbrains.annotations.Nullable java.util.List getPublicAccessCidrs() { + return null; + } + + /** + * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + *

+ * If you don't specify a security group, the default security group for your VPC is used. + */ + default @org.jetbrains.annotations.Nullable java.util.List getSecurityGroupIds() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterPropsResourcesVpcConfig} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsResourcesVpcConfig} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.util.List subnetIds; + private java.lang.Boolean endpointPrivateAccess; + private java.lang.Boolean endpointPublicAccess; + private java.util.List publicAccessCidrs; + private java.util.List securityGroupIds; + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getSubnetIds} + * @param subnetIds Specify subnets for your Amazon EKS worker nodes. This parameter is required. + * Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + * @return {@code this} + */ + public Builder subnetIds(java.util.List subnetIds) { + this.subnetIds = subnetIds; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getEndpointPrivateAccess} + * @param endpointPrivateAccess Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + * If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + * @return {@code this} + */ + public Builder endpointPrivateAccess(java.lang.Boolean endpointPrivateAccess) { + this.endpointPrivateAccess = endpointPrivateAccess; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getEndpointPublicAccess} + * @param endpointPublicAccess Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + * If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + * @return {@code this} + */ + public Builder endpointPublicAccess(java.lang.Boolean endpointPublicAccess) { + this.endpointPublicAccess = endpointPublicAccess; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getPublicAccessCidrs} + * @param publicAccessCidrs The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + * Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + * @return {@code this} + */ + public Builder publicAccessCidrs(java.util.List publicAccessCidrs) { + this.publicAccessCidrs = publicAccessCidrs; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getSecurityGroupIds} + * @param securityGroupIds Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + * If you don't specify a security group, the default security group for your VPC is used. + * @return {@code this} + */ + public Builder securityGroupIds(java.util.List securityGroupIds) { + this.securityGroupIds = securityGroupIds; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsResourcesVpcConfig} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsResourcesVpcConfig build() { + return new Jsii$Proxy(subnetIds, endpointPrivateAccess, endpointPublicAccess, publicAccessCidrs, securityGroupIds); + } + } + + /** + * An implementation for {@link CfnClusterPropsResourcesVpcConfig} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsResourcesVpcConfig { + private final java.util.List subnetIds; + private final java.lang.Boolean endpointPrivateAccess; + private final java.lang.Boolean endpointPublicAccess; + private final java.util.List publicAccessCidrs; + private final java.util.List securityGroupIds; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.subnetIds = software.amazon.jsii.Kernel.get(this, \\"subnetIds\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.endpointPrivateAccess = software.amazon.jsii.Kernel.get(this, \\"endpointPrivateAccess\\", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class)); + this.endpointPublicAccess = software.amazon.jsii.Kernel.get(this, \\"endpointPublicAccess\\", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class)); + this.publicAccessCidrs = software.amazon.jsii.Kernel.get(this, \\"publicAccessCidrs\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.securityGroupIds = software.amazon.jsii.Kernel.get(this, \\"securityGroupIds\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.util.List subnetIds, final java.lang.Boolean endpointPrivateAccess, final java.lang.Boolean endpointPublicAccess, final java.util.List publicAccessCidrs, final java.util.List securityGroupIds) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.subnetIds = java.util.Objects.requireNonNull(subnetIds, \\"subnetIds is required\\"); + this.endpointPrivateAccess = endpointPrivateAccess; + this.endpointPublicAccess = endpointPublicAccess; + this.publicAccessCidrs = publicAccessCidrs; + this.securityGroupIds = securityGroupIds; + } + + @Override + public final java.util.List getSubnetIds() { + return this.subnetIds; + } + + @Override + public final java.lang.Boolean getEndpointPrivateAccess() { + return this.endpointPrivateAccess; + } + + @Override + public final java.lang.Boolean getEndpointPublicAccess() { + return this.endpointPublicAccess; + } + + @Override + public final java.util.List getPublicAccessCidrs() { + return this.publicAccessCidrs; + } + + @Override + public final java.util.List getSecurityGroupIds() { + return this.securityGroupIds; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + data.set(\\"subnetIds\\", om.valueToTree(this.getSubnetIds())); + if (this.getEndpointPrivateAccess() != null) { + data.set(\\"endpointPrivateAccess\\", om.valueToTree(this.getEndpointPrivateAccess())); + } + if (this.getEndpointPublicAccess() != null) { + data.set(\\"endpointPublicAccess\\", om.valueToTree(this.getEndpointPublicAccess())); + } + if (this.getPublicAccessCidrs() != null) { + data.set(\\"publicAccessCidrs\\", om.valueToTree(this.getPublicAccessCidrs())); + } + if (this.getSecurityGroupIds() != null) { + data.set(\\"securityGroupIds\\", om.valueToTree(this.getSecurityGroupIds())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsResourcesVpcConfig.Jsii$Proxy that = (CfnClusterPropsResourcesVpcConfig.Jsii$Proxy) o; + + if (!subnetIds.equals(that.subnetIds)) return false; + if (this.endpointPrivateAccess != null ? !this.endpointPrivateAccess.equals(that.endpointPrivateAccess) : that.endpointPrivateAccess != null) return false; + if (this.endpointPublicAccess != null ? !this.endpointPublicAccess.equals(that.endpointPublicAccess) : that.endpointPublicAccess != null) return false; + if (this.publicAccessCidrs != null ? !this.publicAccessCidrs.equals(that.publicAccessCidrs) : that.publicAccessCidrs != null) return false; + return this.securityGroupIds != null ? this.securityGroupIds.equals(that.securityGroupIds) : that.securityGroupIds == null; + } + + @Override + public final int hashCode() { + int result = this.subnetIds.hashCode(); + result = 31 * result + (this.endpointPrivateAccess != null ? this.endpointPrivateAccess.hashCode() : 0); + result = 31 * result + (this.endpointPublicAccess != null ? this.endpointPublicAccess.hashCode() : 0); + result = 31 * result + (this.publicAccessCidrs != null ? this.publicAccessCidrs.hashCode() : 0); + result = 31 * result + (this.securityGroupIds != null ? this.securityGroupIds.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsTags.java" => "package com.my.module; + +/** + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.905Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsTags.Jsii$Proxy.class) +public interface CfnClusterPropsTags extends software.amazon.jsii.JsiiSerializable { + + /** + */ + @org.jetbrains.annotations.NotNull java.lang.String getKey(); + + /** + */ + @org.jetbrains.annotations.NotNull java.lang.String getValue(); + + /** + * @return a {@link Builder} of {@link CfnClusterPropsTags} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsTags} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String key; + private java.lang.String value; + + /** + * Sets the value of {@link CfnClusterPropsTags#getKey} + * @param key the value to be set. This parameter is required. + * @return {@code this} + */ + public Builder key(java.lang.String key) { + this.key = key; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsTags#getValue} + * @param value the value to be set. This parameter is required. + * @return {@code this} + */ + public Builder value(java.lang.String value) { + this.value = value; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsTags} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsTags build() { + return new Jsii$Proxy(key, value); + } + } + + /** + * An implementation for {@link CfnClusterPropsTags} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsTags { + private final java.lang.String key; + private final java.lang.String value; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.key = software.amazon.jsii.Kernel.get(this, \\"key\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.value = software.amazon.jsii.Kernel.get(this, \\"value\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String key, final java.lang.String value) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.key = java.util.Objects.requireNonNull(key, \\"key is required\\"); + this.value = java.util.Objects.requireNonNull(value, \\"value is required\\"); + } + + @Override + public final java.lang.String getKey() { + return this.key; + } + + @Override + public final java.lang.String getValue() { + return this.value; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + data.set(\\"key\\", om.valueToTree(this.getKey())); + data.set(\\"value\\", om.valueToTree(this.getValue())); + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsTags.Jsii$Proxy that = (CfnClusterPropsTags.Jsii$Proxy) o; + + if (!key.equals(that.key)) return false; + return this.value.equals(that.value); + } + + @Override + public final int hashCode() { + int result = this.key.hashCode(); + result = 31 * result + (this.value.hashCode()); + return result; + } + } +} +", + "src/main/java/com/my/module/EncryptionConfigEntry.java" => "package com.my.module; + +/** + * The encryption configuration for the cluster. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.905Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\") +@software.amazon.jsii.Jsii.Proxy(EncryptionConfigEntry.Jsii$Proxy.class) +public interface EncryptionConfigEntry extends software.amazon.jsii.JsiiSerializable { + + /** + */ + default @org.jetbrains.annotations.Nullable com.my.module.Provider getProvider() { + return null; + } + + /** + * Specifies the resources to be encrypted. + *

+ * The only supported value is \\"secrets\\". + */ + default @org.jetbrains.annotations.Nullable java.util.List getResources() { + return null; + } + + /** + * @return a {@link Builder} of {@link EncryptionConfigEntry} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link EncryptionConfigEntry} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private com.my.module.Provider provider; + private java.util.List resources; + + /** + * Sets the value of {@link EncryptionConfigEntry#getProvider} + * @param provider the value to be set. + * @return {@code this} + */ + public Builder provider(com.my.module.Provider provider) { + this.provider = provider; + return this; + } + + /** + * Sets the value of {@link EncryptionConfigEntry#getResources} + * @param resources Specifies the resources to be encrypted. + * The only supported value is \\"secrets\\". + * @return {@code this} + */ + public Builder resources(java.util.List resources) { + this.resources = resources; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link EncryptionConfigEntry} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public EncryptionConfigEntry build() { + return new Jsii$Proxy(provider, resources); + } + } + + /** + * An implementation for {@link EncryptionConfigEntry} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements EncryptionConfigEntry { + private final com.my.module.Provider provider; + private final java.util.List resources; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.provider = software.amazon.jsii.Kernel.get(this, \\"provider\\", software.amazon.jsii.NativeType.forClass(com.my.module.Provider.class)); + this.resources = software.amazon.jsii.Kernel.get(this, \\"resources\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final com.my.module.Provider provider, final java.util.List resources) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.provider = provider; + this.resources = resources; + } + + @Override + public final com.my.module.Provider getProvider() { + return this.provider; + } + + @Override + public final java.util.List getResources() { + return this.resources; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getProvider() != null) { + data.set(\\"provider\\", om.valueToTree(this.getProvider())); + } + if (this.getResources() != null) { + data.set(\\"resources\\", om.valueToTree(this.getResources())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + EncryptionConfigEntry.Jsii$Proxy that = (EncryptionConfigEntry.Jsii$Proxy) o; + + if (this.provider != null ? !this.provider.equals(that.provider) : that.provider != null) return false; + return this.resources != null ? this.resources.equals(that.resources) : that.resources == null; + } + + @Override + public final int hashCode() { + int result = this.provider != null ? this.provider.hashCode() : 0; + result = 31 * result + (this.resources != null ? this.resources.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/KubernetesApiAccessEntry.java" => "package com.my.module; + +/** + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.906Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\") +@software.amazon.jsii.Jsii.Proxy(KubernetesApiAccessEntry.Jsii$Proxy.class) +public interface KubernetesApiAccessEntry extends software.amazon.jsii.JsiiSerializable { + + /** + */ + default @org.jetbrains.annotations.Nullable java.lang.String getArn() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getGroups() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.lang.String getUsername() { + return null; + } + + /** + * @return a {@link Builder} of {@link KubernetesApiAccessEntry} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link KubernetesApiAccessEntry} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String arn; + private java.util.List groups; + private java.lang.String username; + + /** + * Sets the value of {@link KubernetesApiAccessEntry#getArn} + * @param arn the value to be set. + * @return {@code this} + */ + public Builder arn(java.lang.String arn) { + this.arn = arn; + return this; + } + + /** + * Sets the value of {@link KubernetesApiAccessEntry#getGroups} + * @param groups the value to be set. + * @return {@code this} + */ + public Builder groups(java.util.List groups) { + this.groups = groups; + return this; + } + + /** + * Sets the value of {@link KubernetesApiAccessEntry#getUsername} + * @param username the value to be set. + * @return {@code this} + */ + public Builder username(java.lang.String username) { + this.username = username; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link KubernetesApiAccessEntry} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public KubernetesApiAccessEntry build() { + return new Jsii$Proxy(arn, groups, username); + } + } + + /** + * An implementation for {@link KubernetesApiAccessEntry} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements KubernetesApiAccessEntry { + private final java.lang.String arn; + private final java.util.List groups; + private final java.lang.String username; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.arn = software.amazon.jsii.Kernel.get(this, \\"arn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.groups = software.amazon.jsii.Kernel.get(this, \\"groups\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.username = software.amazon.jsii.Kernel.get(this, \\"username\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String arn, final java.util.List groups, final java.lang.String username) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.arn = arn; + this.groups = groups; + this.username = username; + } + + @Override + public final java.lang.String getArn() { + return this.arn; + } + + @Override + public final java.util.List getGroups() { + return this.groups; + } + + @Override + public final java.lang.String getUsername() { + return this.username; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getArn() != null) { + data.set(\\"arn\\", om.valueToTree(this.getArn())); + } + if (this.getGroups() != null) { + data.set(\\"groups\\", om.valueToTree(this.getGroups())); + } + if (this.getUsername() != null) { + data.set(\\"username\\", om.valueToTree(this.getUsername())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + KubernetesApiAccessEntry.Jsii$Proxy that = (KubernetesApiAccessEntry.Jsii$Proxy) o; + + if (this.arn != null ? !this.arn.equals(that.arn) : that.arn != null) return false; + if (this.groups != null ? !this.groups.equals(that.groups) : that.groups != null) return false; + return this.username != null ? this.username.equals(that.username) : that.username == null; + } + + @Override + public final int hashCode() { + int result = this.arn != null ? this.arn.hashCode() : 0; + result = 31 * result + (this.groups != null ? this.groups.hashCode() : 0); + result = 31 * result + (this.username != null ? this.username.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/Provider.java" => "package com.my.module; + +/** + * AWS Key Management Service (AWS KMS) customer master key (CMK). + *

+ * Either the ARN or the alias can be used. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.906Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\") +@software.amazon.jsii.Jsii.Proxy(Provider.Jsii$Proxy.class) +public interface Provider extends software.amazon.jsii.JsiiSerializable { + + /** + * Amazon Resource Name (ARN) or alias of the customer master key (CMK). + *

+ * The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getKeyArn() { + return null; + } + + /** + * @return a {@link Builder} of {@link Provider} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link Provider} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String keyArn; + + /** + * Sets the value of {@link Provider#getKeyArn} + * @param keyArn Amazon Resource Name (ARN) or alias of the customer master key (CMK). + * The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + * @return {@code this} + */ + public Builder keyArn(java.lang.String keyArn) { + this.keyArn = keyArn; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link Provider} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public Provider build() { + return new Jsii$Proxy(keyArn); + } + } + + /** + * An implementation for {@link Provider} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements Provider { + private final java.lang.String keyArn; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.keyArn = software.amazon.jsii.Kernel.get(this, \\"keyArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String keyArn) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.keyArn = keyArn; + } + + @Override + public final java.lang.String getKeyArn() { + return this.keyArn; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getKeyArn() != null) { + data.set(\\"keyArn\\", om.valueToTree(this.getKeyArn())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Provider.Jsii$Proxy that = (Provider.Jsii$Proxy) o; + + return this.keyArn != null ? this.keyArn.equals(that.keyArn) : that.keyArn == null; + } + + @Override + public final int hashCode() { + int result = this.keyArn != null ? this.keyArn.hashCode() : 0; + return result; + } + } +} +", + "src/main/resources/com/my/module/$Module.txt" => "1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster=com.my.module.CfnCluster +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps=com.my.module.CfnClusterProps +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess=com.my.module.CfnClusterPropsKubernetesApiAccess +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig=com.my.module.CfnClusterPropsKubernetesNetworkConfig +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig=com.my.module.CfnClusterPropsResourcesVpcConfig +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags=com.my.module.CfnClusterPropsTags +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry=com.my.module.EncryptionConfigEntry +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry=com.my.module.KubernetesApiAccessEntry +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider=com.my.module.Provider +", +} +`; + +exports[`java 1`] = ` +Map { + "awsqs-eks-cluster.ts" => "// Generated by cdk-import +import * as cdk from '@aws-cdk/core'; + +/** + * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + * + * @schema CfnClusterProps + */ +export interface CfnClusterProps { + /** + * A unique name for your cluster. + * + * @schema CfnClusterProps#Name + */ + readonly name?: string; + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * + * @schema CfnClusterProps#RoleArn + */ + readonly roleArn: string; + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * + * @schema CfnClusterProps#LambdaRoleName + */ + readonly lambdaRoleName?: string; + + /** + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * + * @schema CfnClusterProps#Version + */ + readonly version?: string; + + /** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterProps#KubernetesNetworkConfig + */ + readonly kubernetesNetworkConfig?: CfnClusterPropsKubernetesNetworkConfig; + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterProps#ResourcesVpcConfig + */ + readonly resourcesVpcConfig: CfnClusterPropsResourcesVpcConfig; + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * + * @schema CfnClusterProps#EnabledClusterLoggingTypes + */ + readonly enabledClusterLoggingTypes?: string[]; + + /** + * Encryption configuration for the cluster. + * + * @schema CfnClusterProps#EncryptionConfig + */ + readonly encryptionConfig?: EncryptionConfigEntry[]; + + /** + * @schema CfnClusterProps#KubernetesApiAccess + */ + readonly kubernetesApiAccess?: CfnClusterPropsKubernetesApiAccess; + + /** + * @schema CfnClusterProps#Tags + */ + readonly tags?: CfnClusterPropsTags[]; + +} + +/** + * Converts an object of type 'CfnClusterProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterProps(obj: CfnClusterProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Name': obj.name, + 'RoleArn': obj.roleArn, + 'LambdaRoleName': obj.lambdaRoleName, + 'Version': obj.version, + 'KubernetesNetworkConfig': toJson_CfnClusterPropsKubernetesNetworkConfig(obj.kubernetesNetworkConfig), + 'ResourcesVpcConfig': toJson_CfnClusterPropsResourcesVpcConfig(obj.resourcesVpcConfig), + 'EnabledClusterLoggingTypes': obj.enabledClusterLoggingTypes?.map(y => y), + 'EncryptionConfig': obj.encryptionConfig?.map(y => toJson_EncryptionConfigEntry(y)), + 'KubernetesApiAccess': toJson_CfnClusterPropsKubernetesApiAccess(obj.kubernetesApiAccess), + 'Tags': obj.tags?.map(y => toJson_CfnClusterPropsTags(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterPropsKubernetesNetworkConfig + */ +export interface CfnClusterPropsKubernetesNetworkConfig { + /** + * Specify the range from which cluster services will receive IPv4 addresses. + * + * @schema CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + */ + readonly serviceIpv4Cidr?: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesNetworkConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesNetworkConfig(obj: CfnClusterPropsKubernetesNetworkConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'ServiceIpv4Cidr': obj.serviceIpv4Cidr, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterPropsResourcesVpcConfig + */ +export interface CfnClusterPropsResourcesVpcConfig { + /** + * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + * + * @schema CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + */ + readonly securityGroupIds?: string[]; + + /** + * Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + * + * @schema CfnClusterPropsResourcesVpcConfig#SubnetIds + */ + readonly subnetIds: string[]; + + /** + * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + */ + readonly endpointPublicAccess?: boolean; + + /** + * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + */ + readonly endpointPrivateAccess?: boolean; + + /** + * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + * + * @schema CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + */ + readonly publicAccessCidrs?: string[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsResourcesVpcConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsResourcesVpcConfig(obj: CfnClusterPropsResourcesVpcConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecurityGroupIds': obj.securityGroupIds?.map(y => y), + 'SubnetIds': obj.subnetIds?.map(y => y), + 'EndpointPublicAccess': obj.endpointPublicAccess, + 'EndpointPrivateAccess': obj.endpointPrivateAccess, + 'PublicAccessCidrs': obj.publicAccessCidrs?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The encryption configuration for the cluster. + * + * @schema EncryptionConfigEntry + */ +export interface EncryptionConfigEntry { + /** + * Specifies the resources to be encrypted. The only supported value is \\"secrets\\". + * + * @schema EncryptionConfigEntry#Resources + */ + readonly resources?: string[]; + + /** + * @schema EncryptionConfigEntry#Provider + */ + readonly provider?: Provider; + +} + +/** + * Converts an object of type 'EncryptionConfigEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EncryptionConfigEntry(obj: EncryptionConfigEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Resources': obj.resources?.map(y => y), + 'Provider': toJson_Provider(obj.provider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsKubernetesApiAccess + */ +export interface CfnClusterPropsKubernetesApiAccess { + /** + * @schema CfnClusterPropsKubernetesApiAccess#Roles + */ + readonly roles?: KubernetesApiAccessEntry[]; + + /** + * @schema CfnClusterPropsKubernetesApiAccess#Users + */ + readonly users?: KubernetesApiAccessEntry[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesApiAccess' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesApiAccess(obj: CfnClusterPropsKubernetesApiAccess | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Roles': obj.roles?.map(y => toJson_KubernetesApiAccessEntry(y)), + 'Users': obj.users?.map(y => toJson_KubernetesApiAccessEntry(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsTags + */ +export interface CfnClusterPropsTags { + /** + * @schema CfnClusterPropsTags#Value + */ + readonly value: string; + + /** + * @schema CfnClusterPropsTags#Key + */ + readonly key: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsTags' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsTags(obj: CfnClusterPropsTags | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Value': obj.value, + 'Key': obj.key, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used. + * + * @schema Provider + */ +export interface Provider { + /** + * Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + * + * @schema Provider#KeyArn + */ + readonly keyArn?: string; + +} + +/** + * Converts an object of type 'Provider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_Provider(obj: Provider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'KeyArn': obj.keyArn, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema KubernetesApiAccessEntry + */ +export interface KubernetesApiAccessEntry { + /** + * @schema KubernetesApiAccessEntry#Arn + */ + readonly arn?: string; + + /** + * @schema KubernetesApiAccessEntry#Username + */ + readonly username?: string; + + /** + * @schema KubernetesApiAccessEntry#Groups + */ + readonly groups?: string[]; + +} + +/** + * Converts an object of type 'KubernetesApiAccessEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubernetesApiAccessEntry(obj: KubernetesApiAccessEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Arn': obj.arn, + 'Username': obj.username, + 'Groups': obj.groups?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * A CloudFormation \`AWSQS::EKS::Cluster\` + * + * @cloudformationResource AWSQS::EKS::Cluster + * @stability external + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ +export class CfnCluster extends cdk.CfnResource { + /** + * The CloudFormation resource type name for this resource class. + */ + public static readonly CFN_RESOURCE_TYPE_NAME = 'AWSQS::EKS::Cluster'; + + /** + * \`AWSQS::EKS::Cluster.Name\` + * A unique name for your cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly name: string | undefined; + /** + * \`AWSQS::EKS::Cluster.RoleArn\` + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly roleArn: string; + /** + * \`AWSQS::EKS::Cluster.LambdaRoleName\` + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly lambdaRoleName: string | undefined; + /** + * \`AWSQS::EKS::Cluster.Version\` + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly version: string | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` + * Network configuration for Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesNetworkConfig: any | undefined; + /** + * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly resourcesVpcConfig: any; + /** + * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly enabledClusterLoggingTypes: string[] | undefined; + /** + * \`AWSQS::EKS::Cluster.EncryptionConfig\` + * Encryption configuration for the cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly encryptionConfig: EncryptionConfigEntry[] | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesApiAccess\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesApiAccess: any | undefined; + /** + * \`AWSQS::EKS::Cluster.Tags\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly tags: any[] | undefined; + /** + * Attribute \`AWSQS::EKS::Cluster.Arn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.Endpoint\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEndpoint: string; + /** + * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrClusterSecurityGroupId: string; + /** + * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrCertificateAuthorityData: string; + /** + * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEncryptionConfigKeyArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrOIDCIssuerURL: string; + + /** + * Create a new \`AWSQS::EKS::Cluster\`. + * + * @param scope - scope in which this resource is defined + * @param id - scoped id of the resource + * @param props - resource properties + */ + constructor(scope: cdk.Construct, id: string, props: CfnClusterProps) { + super(scope, id, { type: CfnCluster.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnClusterProps(props)! }); + + this.name = props.name; + this.roleArn = props.roleArn; + this.lambdaRoleName = props.lambdaRoleName; + this.version = props.version; + this.kubernetesNetworkConfig = props.kubernetesNetworkConfig; + this.resourcesVpcConfig = props.resourcesVpcConfig; + this.enabledClusterLoggingTypes = props.enabledClusterLoggingTypes; + this.encryptionConfig = props.encryptionConfig; + this.kubernetesApiAccess = props.kubernetesApiAccess; + this.tags = props.tags; + this.attrArn = cdk.Token.asString(this.getAtt('Arn')); + this.attrEndpoint = cdk.Token.asString(this.getAtt('Endpoint')); + this.attrClusterSecurityGroupId = cdk.Token.asString(this.getAtt('ClusterSecurityGroupId')); + this.attrCertificateAuthorityData = cdk.Token.asString(this.getAtt('CertificateAuthorityData')); + this.attrEncryptionConfigKeyArn = cdk.Token.asString(this.getAtt('EncryptionConfigKeyArn')); + this.attrOIDCIssuerURL = cdk.Token.asString(this.getAtt('OIDCIssuerURL')); + } +}", + "awsqs_eks_cluster/__init__.py" => "import abc +import builtins +import datetime +import enum +import typing + +import jsii +import publication +import typing_extensions + +from ._jsii import * + +import aws_cdk.core + + +class CfnCluster( + aws_cdk.core.CfnResource, + metaclass=jsii.JSIIMeta, + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", +): + '''A CloudFormation \`\`AWSQS::EKS::Cluster\`\`. + + :cloudformationResource: AWSQS::EKS::Cluster + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + + def __init__( + self, + scope: aws_cdk.core.Construct, + id: builtins.str, + *, + resources_vpc_config: \\"CfnClusterPropsResourcesVpcConfig\\", + role_arn: builtins.str, + enabled_cluster_logging_types: typing.Optional[typing.Sequence[builtins.str]] = None, + encryption_config: typing.Optional[typing.Sequence[\\"EncryptionConfigEntry\\"]] = None, + kubernetes_api_access: typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"] = None, + kubernetes_network_config: typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"] = None, + lambda_role_name: typing.Optional[builtins.str] = None, + name: typing.Optional[builtins.str] = None, + tags: typing.Optional[typing.Sequence[\\"CfnClusterPropsTags\\"]] = None, + version: typing.Optional[builtins.str] = None, + ) -> None: + '''Create a new \`\`AWSQS::EKS::Cluster\`\`. + + :param scope: - scope in which this resource is defined. + :param id: - scoped id of the resource. + :param resources_vpc_config: An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + :param role_arn: Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + :param enabled_cluster_logging_types: Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + :param encryption_config: Encryption configuration for the cluster. + :param kubernetes_api_access: + :param kubernetes_network_config: Network configuration for Amazon EKS cluster. + :param lambda_role_name: Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + :param name: A unique name for your cluster. + :param tags: + :param version: Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + ''' + props = CfnClusterProps( + resources_vpc_config=resources_vpc_config, + role_arn=role_arn, + enabled_cluster_logging_types=enabled_cluster_logging_types, + encryption_config=encryption_config, + kubernetes_api_access=kubernetes_api_access, + kubernetes_network_config=kubernetes_network_config, + lambda_role_name=lambda_role_name, + name=name, + tags=tags, + version=version, + ) + + jsii.create(self.__class__, self, [scope, id, props]) + + @jsii.python.classproperty # type: ignore[misc] + @jsii.member(jsii_name=\\"CFN_RESOURCE_TYPE_NAME\\") + def CFN_RESOURCE_TYPE_NAME(cls) -> builtins.str: + '''The CloudFormation resource type name for this resource class.''' + return typing.cast(builtins.str, jsii.sget(cls, \\"CFN_RESOURCE_TYPE_NAME\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrArn\\") + def attr_arn(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.Arn\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrCertificateAuthorityData\\") + def attr_certificate_authority_data(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.CertificateAuthorityData\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrCertificateAuthorityData\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrClusterSecurityGroupId\\") + def attr_cluster_security_group_id(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrClusterSecurityGroupId\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrEncryptionConfigKeyArn\\") + def attr_encryption_config_key_arn(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrEncryptionConfigKeyArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrEndpoint\\") + def attr_endpoint(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.Endpoint\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrEndpoint\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrOIDCIssuerURL\\") + def attr_oidc_issuer_url(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.OIDCIssuerURL\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrOIDCIssuerURL\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"kubernetesApiAccess\\") + def kubernetes_api_access(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.KubernetesApiAccess\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"kubernetesApiAccess\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"kubernetesNetworkConfig\\") + def kubernetes_network_config(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.KubernetesNetworkConfig\`\` Network configuration for Amazon EKS cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"kubernetesNetworkConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"resourcesVpcConfig\\") + def resources_vpc_config(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.ResourcesVpcConfig\`\` An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"resourcesVpcConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"roleArn\\") + def role_arn(self) -> builtins.str: + '''\`\`AWSQS::EKS::Cluster.RoleArn\`\` Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"roleArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"enabledClusterLoggingTypes\\") + def enabled_cluster_logging_types( + self, + ) -> typing.Optional[typing.List[builtins.str]]: + '''\`\`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\`\` Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, \\"enabledClusterLoggingTypes\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"encryptionConfig\\") + def encryption_config( + self, + ) -> typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]]: + '''\`\`AWSQS::EKS::Cluster.EncryptionConfig\`\` Encryption configuration for the cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]], jsii.get(self, \\"encryptionConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"lambdaRoleName\\") + def lambda_role_name(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.LambdaRoleName\`\` Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"lambdaRoleName\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"name\\") + def name(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.Name\`\` A unique name for your cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"name\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"tags\\") + def tags(self) -> typing.Optional[typing.List[typing.Any]]: + '''\`\`AWSQS::EKS::Cluster.Tags\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[typing.Any]], jsii.get(self, \\"tags\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"version\\") + def version(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.Version\`\` Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"version\\")) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\", + jsii_struct_bases=[], + name_mapping={ + \\"resources_vpc_config\\": \\"resourcesVpcConfig\\", + \\"role_arn\\": \\"roleArn\\", + \\"enabled_cluster_logging_types\\": \\"enabledClusterLoggingTypes\\", + \\"encryption_config\\": \\"encryptionConfig\\", + \\"kubernetes_api_access\\": \\"kubernetesApiAccess\\", + \\"kubernetes_network_config\\": \\"kubernetesNetworkConfig\\", + \\"lambda_role_name\\": \\"lambdaRoleName\\", + \\"name\\": \\"name\\", + \\"tags\\": \\"tags\\", + \\"version\\": \\"version\\", + }, +) +class CfnClusterProps: + def __init__( + self, + *, + resources_vpc_config: \\"CfnClusterPropsResourcesVpcConfig\\", + role_arn: builtins.str, + enabled_cluster_logging_types: typing.Optional[typing.Sequence[builtins.str]] = None, + encryption_config: typing.Optional[typing.Sequence[\\"EncryptionConfigEntry\\"]] = None, + kubernetes_api_access: typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"] = None, + kubernetes_network_config: typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"] = None, + lambda_role_name: typing.Optional[builtins.str] = None, + name: typing.Optional[builtins.str] = None, + tags: typing.Optional[typing.Sequence[\\"CfnClusterPropsTags\\"]] = None, + version: typing.Optional[builtins.str] = None, + ) -> None: + '''A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + + :param resources_vpc_config: An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + :param role_arn: Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + :param enabled_cluster_logging_types: Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + :param encryption_config: Encryption configuration for the cluster. + :param kubernetes_api_access: + :param kubernetes_network_config: Network configuration for Amazon EKS cluster. + :param lambda_role_name: Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + :param name: A unique name for your cluster. + :param tags: + :param version: Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :schema: CfnClusterProps + ''' + if isinstance(resources_vpc_config, dict): + resources_vpc_config = CfnClusterPropsResourcesVpcConfig(**resources_vpc_config) + if isinstance(kubernetes_api_access, dict): + kubernetes_api_access = CfnClusterPropsKubernetesApiAccess(**kubernetes_api_access) + if isinstance(kubernetes_network_config, dict): + kubernetes_network_config = CfnClusterPropsKubernetesNetworkConfig(**kubernetes_network_config) + self._values: typing.Dict[str, typing.Any] = { + \\"resources_vpc_config\\": resources_vpc_config, + \\"role_arn\\": role_arn, + } + if enabled_cluster_logging_types is not None: + self._values[\\"enabled_cluster_logging_types\\"] = enabled_cluster_logging_types + if encryption_config is not None: + self._values[\\"encryption_config\\"] = encryption_config + if kubernetes_api_access is not None: + self._values[\\"kubernetes_api_access\\"] = kubernetes_api_access + if kubernetes_network_config is not None: + self._values[\\"kubernetes_network_config\\"] = kubernetes_network_config + if lambda_role_name is not None: + self._values[\\"lambda_role_name\\"] = lambda_role_name + if name is not None: + self._values[\\"name\\"] = name + if tags is not None: + self._values[\\"tags\\"] = tags + if version is not None: + self._values[\\"version\\"] = version + + @builtins.property + def resources_vpc_config(self) -> \\"CfnClusterPropsResourcesVpcConfig\\": + '''An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :schema: CfnClusterProps#ResourcesVpcConfig + ''' + result = self._values.get(\\"resources_vpc_config\\") + assert result is not None, \\"Required property 'resources_vpc_config' is missing\\" + return typing.cast(\\"CfnClusterPropsResourcesVpcConfig\\", result) + + @builtins.property + def role_arn(self) -> builtins.str: + '''Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + + This provides permissions for Amazon EKS to call other AWS APIs. + + :schema: CfnClusterProps#RoleArn + ''' + result = self._values.get(\\"role_arn\\") + assert result is not None, \\"Required property 'role_arn' is missing\\" + return typing.cast(builtins.str, result) + + @builtins.property + def enabled_cluster_logging_types( + self, + ) -> typing.Optional[typing.List[builtins.str]]: + '''Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + + By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + + :schema: CfnClusterProps#EnabledClusterLoggingTypes + ''' + result = self._values.get(\\"enabled_cluster_logging_types\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def encryption_config( + self, + ) -> typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]]: + '''Encryption configuration for the cluster. + + :schema: CfnClusterProps#EncryptionConfig + ''' + result = self._values.get(\\"encryption_config\\") + return typing.cast(typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]], result) + + @builtins.property + def kubernetes_api_access( + self, + ) -> typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"]: + ''' + :schema: CfnClusterProps#KubernetesApiAccess + ''' + result = self._values.get(\\"kubernetes_api_access\\") + return typing.cast(typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"], result) + + @builtins.property + def kubernetes_network_config( + self, + ) -> typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"]: + '''Network configuration for Amazon EKS cluster. + + :schema: CfnClusterProps#KubernetesNetworkConfig + ''' + result = self._values.get(\\"kubernetes_network_config\\") + return typing.cast(typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"], result) + + @builtins.property + def lambda_role_name(self) -> typing.Optional[builtins.str]: + '''Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + + this provides permissions for Lambda to be invoked and attach to the cluster VPC + + :schema: CfnClusterProps#LambdaRoleName + ''' + result = self._values.get(\\"lambda_role_name\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def name(self) -> typing.Optional[builtins.str]: + '''A unique name for your cluster. + + :schema: CfnClusterProps#Name + ''' + result = self._values.get(\\"name\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def tags(self) -> typing.Optional[typing.List[\\"CfnClusterPropsTags\\"]]: + ''' + :schema: CfnClusterProps#Tags + ''' + result = self._values.get(\\"tags\\") + return typing.cast(typing.Optional[typing.List[\\"CfnClusterPropsTags\\"]], result) + + @builtins.property + def version(self) -> typing.Optional[builtins.str]: + '''Desired Kubernetes version for your cluster. + + If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :schema: CfnClusterProps#Version + ''' + result = self._values.get(\\"version\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterProps(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\", + jsii_struct_bases=[], + name_mapping={\\"roles\\": \\"roles\\", \\"users\\": \\"users\\"}, +) +class CfnClusterPropsKubernetesApiAccess: + def __init__( + self, + *, + roles: typing.Optional[typing.Sequence[\\"KubernetesApiAccessEntry\\"]] = None, + users: typing.Optional[typing.Sequence[\\"KubernetesApiAccessEntry\\"]] = None, + ) -> None: + ''' + :param roles: + :param users: + + :schema: CfnClusterPropsKubernetesApiAccess + ''' + self._values: typing.Dict[str, typing.Any] = {} + if roles is not None: + self._values[\\"roles\\"] = roles + if users is not None: + self._values[\\"users\\"] = users + + @builtins.property + def roles(self) -> typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]]: + ''' + :schema: CfnClusterPropsKubernetesApiAccess#Roles + ''' + result = self._values.get(\\"roles\\") + return typing.cast(typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]], result) + + @builtins.property + def users(self) -> typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]]: + ''' + :schema: CfnClusterPropsKubernetesApiAccess#Users + ''' + result = self._values.get(\\"users\\") + return typing.cast(typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsKubernetesApiAccess(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\", + jsii_struct_bases=[], + name_mapping={\\"service_ipv4_cidr\\": \\"serviceIpv4Cidr\\"}, +) +class CfnClusterPropsKubernetesNetworkConfig: + def __init__( + self, + *, + service_ipv4_cidr: typing.Optional[builtins.str] = None, + ) -> None: + '''Network configuration for Amazon EKS cluster. + + :param service_ipv4_cidr: Specify the range from which cluster services will receive IPv4 addresses. + + :schema: CfnClusterPropsKubernetesNetworkConfig + ''' + self._values: typing.Dict[str, typing.Any] = {} + if service_ipv4_cidr is not None: + self._values[\\"service_ipv4_cidr\\"] = service_ipv4_cidr + + @builtins.property + def service_ipv4_cidr(self) -> typing.Optional[builtins.str]: + '''Specify the range from which cluster services will receive IPv4 addresses. + + :schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + ''' + result = self._values.get(\\"service_ipv4_cidr\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsKubernetesNetworkConfig(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\", + jsii_struct_bases=[], + name_mapping={ + \\"subnet_ids\\": \\"subnetIds\\", + \\"endpoint_private_access\\": \\"endpointPrivateAccess\\", + \\"endpoint_public_access\\": \\"endpointPublicAccess\\", + \\"public_access_cidrs\\": \\"publicAccessCidrs\\", + \\"security_group_ids\\": \\"securityGroupIds\\", + }, +) +class CfnClusterPropsResourcesVpcConfig: + def __init__( + self, + *, + subnet_ids: typing.Sequence[builtins.str], + endpoint_private_access: typing.Optional[builtins.bool] = None, + endpoint_public_access: typing.Optional[builtins.bool] = None, + public_access_cidrs: typing.Optional[typing.Sequence[builtins.str]] = None, + security_group_ids: typing.Optional[typing.Sequence[builtins.str]] = None, + ) -> None: + '''An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :param subnet_ids: Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + :param endpoint_private_access: Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + :param endpoint_public_access: Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + :param public_access_cidrs: The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + :param security_group_ids: Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + + :schema: CfnClusterPropsResourcesVpcConfig + ''' + self._values: typing.Dict[str, typing.Any] = { + \\"subnet_ids\\": subnet_ids, + } + if endpoint_private_access is not None: + self._values[\\"endpoint_private_access\\"] = endpoint_private_access + if endpoint_public_access is not None: + self._values[\\"endpoint_public_access\\"] = endpoint_public_access + if public_access_cidrs is not None: + self._values[\\"public_access_cidrs\\"] = public_access_cidrs + if security_group_ids is not None: + self._values[\\"security_group_ids\\"] = security_group_ids + + @builtins.property + def subnet_ids(self) -> typing.List[builtins.str]: + '''Specify subnets for your Amazon EKS worker nodes. + + Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + + :schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + ''' + result = self._values.get(\\"subnet_ids\\") + assert result is not None, \\"Required property 'subnet_ids' is missing\\" + return typing.cast(typing.List[builtins.str], result) + + @builtins.property + def endpoint_private_access(self) -> typing.Optional[builtins.bool]: + '''Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + + If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + + :schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + ''' + result = self._values.get(\\"endpoint_private_access\\") + return typing.cast(typing.Optional[builtins.bool], result) + + @builtins.property + def endpoint_public_access(self) -> typing.Optional[builtins.bool]: + '''Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + + If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + + :schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + ''' + result = self._values.get(\\"endpoint_public_access\\") + return typing.cast(typing.Optional[builtins.bool], result) + + @builtins.property + def public_access_cidrs(self) -> typing.Optional[typing.List[builtins.str]]: + '''The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + + Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + + :schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + ''' + result = self._values.get(\\"public_access_cidrs\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def security_group_ids(self) -> typing.Optional[typing.List[builtins.str]]: + '''Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + + If you don't specify a security group, the default security group for your VPC is used. + + :schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + ''' + result = self._values.get(\\"security_group_ids\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsResourcesVpcConfig(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\", + jsii_struct_bases=[], + name_mapping={\\"key\\": \\"key\\", \\"value\\": \\"value\\"}, +) +class CfnClusterPropsTags: + def __init__(self, *, key: builtins.str, value: builtins.str) -> None: + ''' + :param key: + :param value: + + :schema: CfnClusterPropsTags + ''' + self._values: typing.Dict[str, typing.Any] = { + \\"key\\": key, + \\"value\\": value, + } + + @builtins.property + def key(self) -> builtins.str: + ''' + :schema: CfnClusterPropsTags#Key + ''' + result = self._values.get(\\"key\\") + assert result is not None, \\"Required property 'key' is missing\\" + return typing.cast(builtins.str, result) + + @builtins.property + def value(self) -> builtins.str: + ''' + :schema: CfnClusterPropsTags#Value + ''' + result = self._values.get(\\"value\\") + assert result is not None, \\"Required property 'value' is missing\\" + return typing.cast(builtins.str, result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsTags(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\", + jsii_struct_bases=[], + name_mapping={\\"provider\\": \\"provider\\", \\"resources\\": \\"resources\\"}, +) +class EncryptionConfigEntry: + def __init__( + self, + *, + provider: typing.Optional[\\"Provider\\"] = None, + resources: typing.Optional[typing.Sequence[builtins.str]] = None, + ) -> None: + '''The encryption configuration for the cluster. + + :param provider: + :param resources: Specifies the resources to be encrypted. The only supported value is \\"secrets\\". + + :schema: EncryptionConfigEntry + ''' + if isinstance(provider, dict): + provider = Provider(**provider) + self._values: typing.Dict[str, typing.Any] = {} + if provider is not None: + self._values[\\"provider\\"] = provider + if resources is not None: + self._values[\\"resources\\"] = resources + + @builtins.property + def provider(self) -> typing.Optional[\\"Provider\\"]: + ''' + :schema: EncryptionConfigEntry#Provider + ''' + result = self._values.get(\\"provider\\") + return typing.cast(typing.Optional[\\"Provider\\"], result) + + @builtins.property + def resources(self) -> typing.Optional[typing.List[builtins.str]]: + '''Specifies the resources to be encrypted. + + The only supported value is \\"secrets\\". + + :schema: EncryptionConfigEntry#Resources + ''' + result = self._values.get(\\"resources\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"EncryptionConfigEntry(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\", + jsii_struct_bases=[], + name_mapping={\\"arn\\": \\"arn\\", \\"groups\\": \\"groups\\", \\"username\\": \\"username\\"}, +) +class KubernetesApiAccessEntry: + def __init__( + self, + *, + arn: typing.Optional[builtins.str] = None, + groups: typing.Optional[typing.Sequence[builtins.str]] = None, + username: typing.Optional[builtins.str] = None, + ) -> None: + ''' + :param arn: + :param groups: + :param username: + + :schema: KubernetesApiAccessEntry + ''' + self._values: typing.Dict[str, typing.Any] = {} + if arn is not None: + self._values[\\"arn\\"] = arn + if groups is not None: + self._values[\\"groups\\"] = groups + if username is not None: + self._values[\\"username\\"] = username + + @builtins.property + def arn(self) -> typing.Optional[builtins.str]: + ''' + :schema: KubernetesApiAccessEntry#Arn + ''' + result = self._values.get(\\"arn\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def groups(self) -> typing.Optional[typing.List[builtins.str]]: + ''' + :schema: KubernetesApiAccessEntry#Groups + ''' + result = self._values.get(\\"groups\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def username(self) -> typing.Optional[builtins.str]: + ''' + :schema: KubernetesApiAccessEntry#Username + ''' + result = self._values.get(\\"username\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"KubernetesApiAccessEntry(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\", + jsii_struct_bases=[], + name_mapping={\\"key_arn\\": \\"keyArn\\"}, +) +class Provider: + def __init__(self, *, key_arn: typing.Optional[builtins.str] = None) -> None: + '''AWS Key Management Service (AWS KMS) customer master key (CMK). + + Either the ARN or the alias can be used. + + :param key_arn: Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + + :schema: Provider + ''' + self._values: typing.Dict[str, typing.Any] = {} + if key_arn is not None: + self._values[\\"key_arn\\"] = key_arn + + @builtins.property + def key_arn(self) -> typing.Optional[builtins.str]: + '''Amazon Resource Name (ARN) or alias of the customer master key (CMK). + + The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + + :schema: Provider#KeyArn + ''' + result = self._values.get(\\"key_arn\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"Provider(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +__all__ = [ + \\"CfnCluster\\", + \\"CfnClusterProps\\", + \\"CfnClusterPropsKubernetesApiAccess\\", + \\"CfnClusterPropsKubernetesNetworkConfig\\", + \\"CfnClusterPropsResourcesVpcConfig\\", + \\"CfnClusterPropsTags\\", + \\"EncryptionConfigEntry\\", + \\"KubernetesApiAccessEntry\\", + \\"Provider\\", +] + +publication.publish() +", + "awsqs_eks_cluster/_jsii/__init__.py" => "import abc +import builtins +import datetime +import enum +import typing + +import jsii +import publication +import typing_extensions + +import aws_cdk.cloud_assembly_schema._jsii +import aws_cdk.core._jsii +import aws_cdk.cx_api._jsii +import aws_cdk.region_info._jsii +import constructs._jsii + +__jsii_assembly__ = jsii.JSIIAssembly.load( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", + \\"0.0.0\\", + __name__[0:-6], + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6@0.0.0.jsii.tgz\\", +) + +__all__ = [ + \\"__jsii_assembly__\\", +] + +publication.publish() +", + "awsqs_eks_cluster/py.typed" => " +", + "src/main/java/com/my/module/$Module.java" => "package com.my.module; + +import static java.util.Arrays.asList; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.Reader; +import java.io.UncheckedIOException; + +import java.nio.charset.StandardCharsets; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import software.amazon.jsii.JsiiModule; + +@software.amazon.jsii.Internal +public final class $Module extends JsiiModule { + private static final Map MODULE_TYPES = load(); + + private static Map load() { + final Map result = new HashMap<>(); + final ClassLoader cl = $Module.class.getClassLoader(); + try (final InputStream is = cl.getResourceAsStream(\\"com/my/module/$Module.txt\\"); + final Reader rd = new InputStreamReader(is, StandardCharsets.UTF_8); + final BufferedReader br = new BufferedReader(rd)) { + br.lines() + .filter(line -> !line.trim().isEmpty()) + .forEach(line -> { + final String[] parts = line.split(\\"=\\", 2); + final String fqn = parts[0]; + final String className = parts[1]; + result.put(fqn, className); + }); + } + catch (final IOException exception) { + throw new UncheckedIOException(exception); + } + return result; + } + + private final Map> cache = new HashMap<>(); + + public $Module() { + super(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", \\"0.0.0\\", $Module.class, \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6@0.0.0.jsii.tgz\\"); + } + + @Override + public List> getDependencies() { + return asList(software.amazon.awscdk.cloudassembly.schema.$Module.class, software.amazon.awscdk.core.$Module.class, software.amazon.awscdk.cxapi.$Module.class, software.amazon.awscdk.regioninfo.$Module.class, software.constructs.$Module.class); + } + + @Override + protected Class resolveClass(final String fqn) throws ClassNotFoundException { + if (!MODULE_TYPES.containsKey(fqn)) { + throw new ClassNotFoundException(\\"Unknown JSII type: \\" + fqn); + } + String className = MODULE_TYPES.get(fqn); + if (!this.cache.containsKey(className)) { + this.cache.put(className, this.findClass(className)); + } + return this.cache.get(className); + } + + private Class findClass(final String binaryName) { + try { + return Class.forName(binaryName); + } + catch (final ClassNotFoundException exception) { + throw new RuntimeException(exception); + } + } +} +", + "src/main/java/com/my/module/CfnCluster.java" => "package com.my.module; + +/** + * A CloudFormation \`AWSQS::EKS::Cluster\`. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.888Z\\") +@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\") +public class CfnCluster extends software.amazon.awscdk.core.CfnResource { + + protected CfnCluster(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + } + + protected CfnCluster(final software.amazon.jsii.JsiiObject.InitializationMode initializationMode) { + super(initializationMode); + } + + static { + CFN_RESOURCE_TYPE_NAME = software.amazon.jsii.JsiiObject.jsiiStaticGet(com.my.module.CfnCluster.class, \\"CFN_RESOURCE_TYPE_NAME\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Create a new \`AWSQS::EKS::Cluster\`. + *

+ * @param scope - scope in which this resource is defined. This parameter is required. + * @param id - scoped id of the resource. This parameter is required. + * @param props - resource properties. This parameter is required. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public CfnCluster(final @org.jetbrains.annotations.NotNull software.amazon.awscdk.core.Construct scope, final @org.jetbrains.annotations.NotNull java.lang.String id, final @org.jetbrains.annotations.NotNull com.my.module.CfnClusterProps props) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + software.amazon.jsii.JsiiEngine.getInstance().createNewObject(this, new Object[] { java.util.Objects.requireNonNull(scope, \\"scope is required\\"), java.util.Objects.requireNonNull(id, \\"id is required\\"), java.util.Objects.requireNonNull(props, \\"props is required\\") }); + } + + /** + * The CloudFormation resource type name for this resource class. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public final static java.lang.String CFN_RESOURCE_TYPE_NAME; + + /** + * Attribute \`AWSQS::EKS::Cluster.Arn\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrArn() { + return software.amazon.jsii.Kernel.get(this, \\"attrArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrCertificateAuthorityData() { + return software.amazon.jsii.Kernel.get(this, \\"attrCertificateAuthorityData\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrClusterSecurityGroupId() { + return software.amazon.jsii.Kernel.get(this, \\"attrClusterSecurityGroupId\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrEncryptionConfigKeyArn() { + return software.amazon.jsii.Kernel.get(this, \\"attrEncryptionConfigKeyArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.Endpoint\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrEndpoint() { + return software.amazon.jsii.Kernel.get(this, \\"attrEndpoint\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getAttrOIDCIssuerURL() { + return software.amazon.jsii.Kernel.get(this, \\"attrOIDCIssuerURL\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.KubernetesApiAccess\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.Object getKubernetesApiAccess() { + return software.amazon.jsii.Kernel.get(this, \\"kubernetesApiAccess\\", software.amazon.jsii.NativeType.forClass(java.lang.Object.class)); + } + + /** + * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` Network configuration for Amazon EKS cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.Object getKubernetesNetworkConfig() { + return software.amazon.jsii.Kernel.get(this, \\"kubernetesNetworkConfig\\", software.amazon.jsii.NativeType.forClass(java.lang.Object.class)); + } + + /** + * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.Object getResourcesVpcConfig() { + return software.amazon.jsii.Kernel.get(this, \\"resourcesVpcConfig\\", software.amazon.jsii.NativeType.forClass(java.lang.Object.class)); + } + + /** + * \`AWSQS::EKS::Cluster.RoleArn\` Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.NotNull java.lang.String getRoleArn() { + return software.amazon.jsii.Kernel.get(this, \\"roleArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.util.List getEnabledClusterLoggingTypes() { + return java.util.Optional.ofNullable((java.util.List)(software.amazon.jsii.Kernel.get(this, \\"enabledClusterLoggingTypes\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))))).map(java.util.Collections::unmodifiableList).orElse(null); + } + + /** + * \`AWSQS::EKS::Cluster.EncryptionConfig\` Encryption configuration for the cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.util.List getEncryptionConfig() { + return java.util.Optional.ofNullable((java.util.List)(software.amazon.jsii.Kernel.get(this, \\"encryptionConfig\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.EncryptionConfigEntry.class))))).map(java.util.Collections::unmodifiableList).orElse(null); + } + + /** + * \`AWSQS::EKS::Cluster.LambdaRoleName\` Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.lang.String getLambdaRoleName() { + return software.amazon.jsii.Kernel.get(this, \\"lambdaRoleName\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.Name\` A unique name for your cluster. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.lang.String getName() { + return software.amazon.jsii.Kernel.get(this, \\"name\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * \`AWSQS::EKS::Cluster.Tags\`. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.util.List getTags() { + return java.util.Optional.ofNullable((java.util.List)(software.amazon.jsii.Kernel.get(this, \\"tags\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.Object.class))))).map(java.util.Collections::unmodifiableList).orElse(null); + } + + /** + * \`AWSQS::EKS::Cluster.Version\` Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public @org.jetbrains.annotations.Nullable java.lang.String getVersion() { + return software.amazon.jsii.Kernel.get(this, \\"version\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * A fluent builder for {@link com.my.module.CfnCluster}. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public static final class Builder implements software.amazon.jsii.Builder { + /** + * @return a new instance of {@link Builder}. + * @param scope - scope in which this resource is defined. This parameter is required. + * @param id - scoped id of the resource. This parameter is required. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + public static Builder create(final software.amazon.awscdk.core.Construct scope, final java.lang.String id) { + return new Builder(scope, id); + } + + private final software.amazon.awscdk.core.Construct scope; + private final java.lang.String id; + private final com.my.module.CfnClusterProps.Builder props; + + private Builder(final software.amazon.awscdk.core.Construct scope, final java.lang.String id) { + this.scope = scope; + this.id = id; + this.props = new com.my.module.CfnClusterProps.Builder(); + } + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + *

+ * @return {@code this} + * @param resourcesVpcConfig An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. This parameter is required. + */ + public Builder resourcesVpcConfig(final com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig) { + this.props.resourcesVpcConfig(resourcesVpcConfig); + return this; + } + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + *

+ * This provides permissions for Amazon EKS to call other AWS APIs. + *

+ * @return {@code this} + * @param roleArn Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This parameter is required. + */ + public Builder roleArn(final java.lang.String roleArn) { + this.props.roleArn(roleArn); + return this; + } + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + *

+ * By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + *

+ * @return {@code this} + * @param enabledClusterLoggingTypes Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. This parameter is required. + */ + public Builder enabledClusterLoggingTypes(final java.util.List enabledClusterLoggingTypes) { + this.props.enabledClusterLoggingTypes(enabledClusterLoggingTypes); + return this; + } + + /** + * Encryption configuration for the cluster. + *

+ * @return {@code this} + * @param encryptionConfig Encryption configuration for the cluster. This parameter is required. + */ + public Builder encryptionConfig(final java.util.List encryptionConfig) { + this.props.encryptionConfig(encryptionConfig); + return this; + } + + /** + * @return {@code this} + * @param kubernetesApiAccess This parameter is required. + */ + public Builder kubernetesApiAccess(final com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess) { + this.props.kubernetesApiAccess(kubernetesApiAccess); + return this; + } + + /** + * Network configuration for Amazon EKS cluster. + *

+ * @return {@code this} + * @param kubernetesNetworkConfig Network configuration for Amazon EKS cluster. This parameter is required. + */ + public Builder kubernetesNetworkConfig(final com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig) { + this.props.kubernetesNetworkConfig(kubernetesNetworkConfig); + return this; + } + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + *

+ * this provides permissions for Lambda to be invoked and attach to the cluster VPC + *

+ * @return {@code this} + * @param lambdaRoleName Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. This parameter is required. + */ + public Builder lambdaRoleName(final java.lang.String lambdaRoleName) { + this.props.lambdaRoleName(lambdaRoleName); + return this; + } + + /** + * A unique name for your cluster. + *

+ * @return {@code this} + * @param name A unique name for your cluster. This parameter is required. + */ + public Builder name(final java.lang.String name) { + this.props.name(name); + return this; + } + + /** + * @return {@code this} + * @param tags This parameter is required. + */ + public Builder tags(final java.util.List tags) { + this.props.tags(tags); + return this; + } + + /** + * Desired Kubernetes version for your cluster. + *

+ * If you don't specify this value, the cluster uses the latest version from Amazon EKS. + *

+ * @return {@code this} + * @param version Desired Kubernetes version for your cluster. This parameter is required. + */ + public Builder version(final java.lang.String version) { + this.props.version(version); + return this; + } + + /** + * @returns a newly built instance of {@link com.my.module.CfnCluster}. + */ + @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) + @Override + public com.my.module.CfnCluster build() { + return new com.my.module.CfnCluster( + this.scope, + this.id, + this.props.build() + ); + } + } +} +", + "src/main/java/com/my/module/CfnClusterProps.java" => "package com.my.module; + +/** + * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.899Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterProps.Jsii$Proxy.class) +public interface CfnClusterProps extends software.amazon.jsii.JsiiSerializable { + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + */ + @org.jetbrains.annotations.NotNull com.my.module.CfnClusterPropsResourcesVpcConfig getResourcesVpcConfig(); + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + *

+ * This provides permissions for Amazon EKS to call other AWS APIs. + */ + @org.jetbrains.annotations.NotNull java.lang.String getRoleArn(); + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + *

+ * By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + */ + default @org.jetbrains.annotations.Nullable java.util.List getEnabledClusterLoggingTypes() { + return null; + } + + /** + * Encryption configuration for the cluster. + */ + default @org.jetbrains.annotations.Nullable java.util.List getEncryptionConfig() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable com.my.module.CfnClusterPropsKubernetesApiAccess getKubernetesApiAccess() { + return null; + } + + /** + * Network configuration for Amazon EKS cluster. + */ + default @org.jetbrains.annotations.Nullable com.my.module.CfnClusterPropsKubernetesNetworkConfig getKubernetesNetworkConfig() { + return null; + } + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + *

+ * this provides permissions for Lambda to be invoked and attach to the cluster VPC + */ + default @org.jetbrains.annotations.Nullable java.lang.String getLambdaRoleName() { + return null; + } + + /** + * A unique name for your cluster. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getName() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getTags() { + return null; + } + + /** + * Desired Kubernetes version for your cluster. + *

+ * If you don't specify this value, the cluster uses the latest version from Amazon EKS. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getVersion() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterProps} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterProps} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig; + private java.lang.String roleArn; + private java.util.List enabledClusterLoggingTypes; + private java.util.List encryptionConfig; + private com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess; + private com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig; + private java.lang.String lambdaRoleName; + private java.lang.String name; + private java.util.List tags; + private java.lang.String version; + + /** + * Sets the value of {@link CfnClusterProps#getResourcesVpcConfig} + * @param resourcesVpcConfig An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. This parameter is required. + * @return {@code this} + */ + public Builder resourcesVpcConfig(com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig) { + this.resourcesVpcConfig = resourcesVpcConfig; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getRoleArn} + * @param roleArn Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This parameter is required. + * This provides permissions for Amazon EKS to call other AWS APIs. + * @return {@code this} + */ + public Builder roleArn(java.lang.String roleArn) { + this.roleArn = roleArn; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getEnabledClusterLoggingTypes} + * @param enabledClusterLoggingTypes Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + * By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * @return {@code this} + */ + public Builder enabledClusterLoggingTypes(java.util.List enabledClusterLoggingTypes) { + this.enabledClusterLoggingTypes = enabledClusterLoggingTypes; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getEncryptionConfig} + * @param encryptionConfig Encryption configuration for the cluster. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder encryptionConfig(java.util.List encryptionConfig) { + this.encryptionConfig = (java.util.List)encryptionConfig; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getKubernetesApiAccess} + * @param kubernetesApiAccess the value to be set. + * @return {@code this} + */ + public Builder kubernetesApiAccess(com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess) { + this.kubernetesApiAccess = kubernetesApiAccess; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getKubernetesNetworkConfig} + * @param kubernetesNetworkConfig Network configuration for Amazon EKS cluster. + * @return {@code this} + */ + public Builder kubernetesNetworkConfig(com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig) { + this.kubernetesNetworkConfig = kubernetesNetworkConfig; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getLambdaRoleName} + * @param lambdaRoleName Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + * this provides permissions for Lambda to be invoked and attach to the cluster VPC + * @return {@code this} + */ + public Builder lambdaRoleName(java.lang.String lambdaRoleName) { + this.lambdaRoleName = lambdaRoleName; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getName} + * @param name A unique name for your cluster. + * @return {@code this} + */ + public Builder name(java.lang.String name) { + this.name = name; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getTags} + * @param tags the value to be set. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder tags(java.util.List tags) { + this.tags = (java.util.List)tags; + return this; + } + + /** + * Sets the value of {@link CfnClusterProps#getVersion} + * @param version Desired Kubernetes version for your cluster. + * If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * @return {@code this} + */ + public Builder version(java.lang.String version) { + this.version = version; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterProps} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterProps build() { + return new Jsii$Proxy(resourcesVpcConfig, roleArn, enabledClusterLoggingTypes, encryptionConfig, kubernetesApiAccess, kubernetesNetworkConfig, lambdaRoleName, name, tags, version); + } + } + + /** + * An implementation for {@link CfnClusterProps} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterProps { + private final com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig; + private final java.lang.String roleArn; + private final java.util.List enabledClusterLoggingTypes; + private final java.util.List encryptionConfig; + private final com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess; + private final com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig; + private final java.lang.String lambdaRoleName; + private final java.lang.String name; + private final java.util.List tags; + private final java.lang.String version; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.resourcesVpcConfig = software.amazon.jsii.Kernel.get(this, \\"resourcesVpcConfig\\", software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsResourcesVpcConfig.class)); + this.roleArn = software.amazon.jsii.Kernel.get(this, \\"roleArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.enabledClusterLoggingTypes = software.amazon.jsii.Kernel.get(this, \\"enabledClusterLoggingTypes\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.encryptionConfig = software.amazon.jsii.Kernel.get(this, \\"encryptionConfig\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.EncryptionConfigEntry.class))); + this.kubernetesApiAccess = software.amazon.jsii.Kernel.get(this, \\"kubernetesApiAccess\\", software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsKubernetesApiAccess.class)); + this.kubernetesNetworkConfig = software.amazon.jsii.Kernel.get(this, \\"kubernetesNetworkConfig\\", software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsKubernetesNetworkConfig.class)); + this.lambdaRoleName = software.amazon.jsii.Kernel.get(this, \\"lambdaRoleName\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.name = software.amazon.jsii.Kernel.get(this, \\"name\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.tags = software.amazon.jsii.Kernel.get(this, \\"tags\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.CfnClusterPropsTags.class))); + this.version = software.amazon.jsii.Kernel.get(this, \\"version\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + @SuppressWarnings(\\"unchecked\\") + protected Jsii$Proxy(final com.my.module.CfnClusterPropsResourcesVpcConfig resourcesVpcConfig, final java.lang.String roleArn, final java.util.List enabledClusterLoggingTypes, final java.util.List encryptionConfig, final com.my.module.CfnClusterPropsKubernetesApiAccess kubernetesApiAccess, final com.my.module.CfnClusterPropsKubernetesNetworkConfig kubernetesNetworkConfig, final java.lang.String lambdaRoleName, final java.lang.String name, final java.util.List tags, final java.lang.String version) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.resourcesVpcConfig = java.util.Objects.requireNonNull(resourcesVpcConfig, \\"resourcesVpcConfig is required\\"); + this.roleArn = java.util.Objects.requireNonNull(roleArn, \\"roleArn is required\\"); + this.enabledClusterLoggingTypes = enabledClusterLoggingTypes; + this.encryptionConfig = (java.util.List)encryptionConfig; + this.kubernetesApiAccess = kubernetesApiAccess; + this.kubernetesNetworkConfig = kubernetesNetworkConfig; + this.lambdaRoleName = lambdaRoleName; + this.name = name; + this.tags = (java.util.List)tags; + this.version = version; + } + + @Override + public final com.my.module.CfnClusterPropsResourcesVpcConfig getResourcesVpcConfig() { + return this.resourcesVpcConfig; + } + + @Override + public final java.lang.String getRoleArn() { + return this.roleArn; + } + + @Override + public final java.util.List getEnabledClusterLoggingTypes() { + return this.enabledClusterLoggingTypes; + } + + @Override + public final java.util.List getEncryptionConfig() { + return this.encryptionConfig; + } + + @Override + public final com.my.module.CfnClusterPropsKubernetesApiAccess getKubernetesApiAccess() { + return this.kubernetesApiAccess; + } + + @Override + public final com.my.module.CfnClusterPropsKubernetesNetworkConfig getKubernetesNetworkConfig() { + return this.kubernetesNetworkConfig; + } + + @Override + public final java.lang.String getLambdaRoleName() { + return this.lambdaRoleName; + } + + @Override + public final java.lang.String getName() { + return this.name; + } + + @Override + public final java.util.List getTags() { + return this.tags; + } + + @Override + public final java.lang.String getVersion() { + return this.version; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + data.set(\\"resourcesVpcConfig\\", om.valueToTree(this.getResourcesVpcConfig())); + data.set(\\"roleArn\\", om.valueToTree(this.getRoleArn())); + if (this.getEnabledClusterLoggingTypes() != null) { + data.set(\\"enabledClusterLoggingTypes\\", om.valueToTree(this.getEnabledClusterLoggingTypes())); + } + if (this.getEncryptionConfig() != null) { + data.set(\\"encryptionConfig\\", om.valueToTree(this.getEncryptionConfig())); + } + if (this.getKubernetesApiAccess() != null) { + data.set(\\"kubernetesApiAccess\\", om.valueToTree(this.getKubernetesApiAccess())); + } + if (this.getKubernetesNetworkConfig() != null) { + data.set(\\"kubernetesNetworkConfig\\", om.valueToTree(this.getKubernetesNetworkConfig())); + } + if (this.getLambdaRoleName() != null) { + data.set(\\"lambdaRoleName\\", om.valueToTree(this.getLambdaRoleName())); + } + if (this.getName() != null) { + data.set(\\"name\\", om.valueToTree(this.getName())); + } + if (this.getTags() != null) { + data.set(\\"tags\\", om.valueToTree(this.getTags())); + } + if (this.getVersion() != null) { + data.set(\\"version\\", om.valueToTree(this.getVersion())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterProps.Jsii$Proxy that = (CfnClusterProps.Jsii$Proxy) o; + + if (!resourcesVpcConfig.equals(that.resourcesVpcConfig)) return false; + if (!roleArn.equals(that.roleArn)) return false; + if (this.enabledClusterLoggingTypes != null ? !this.enabledClusterLoggingTypes.equals(that.enabledClusterLoggingTypes) : that.enabledClusterLoggingTypes != null) return false; + if (this.encryptionConfig != null ? !this.encryptionConfig.equals(that.encryptionConfig) : that.encryptionConfig != null) return false; + if (this.kubernetesApiAccess != null ? !this.kubernetesApiAccess.equals(that.kubernetesApiAccess) : that.kubernetesApiAccess != null) return false; + if (this.kubernetesNetworkConfig != null ? !this.kubernetesNetworkConfig.equals(that.kubernetesNetworkConfig) : that.kubernetesNetworkConfig != null) return false; + if (this.lambdaRoleName != null ? !this.lambdaRoleName.equals(that.lambdaRoleName) : that.lambdaRoleName != null) return false; + if (this.name != null ? !this.name.equals(that.name) : that.name != null) return false; + if (this.tags != null ? !this.tags.equals(that.tags) : that.tags != null) return false; + return this.version != null ? this.version.equals(that.version) : that.version == null; + } + + @Override + public final int hashCode() { + int result = this.resourcesVpcConfig.hashCode(); + result = 31 * result + (this.roleArn.hashCode()); + result = 31 * result + (this.enabledClusterLoggingTypes != null ? this.enabledClusterLoggingTypes.hashCode() : 0); + result = 31 * result + (this.encryptionConfig != null ? this.encryptionConfig.hashCode() : 0); + result = 31 * result + (this.kubernetesApiAccess != null ? this.kubernetesApiAccess.hashCode() : 0); + result = 31 * result + (this.kubernetesNetworkConfig != null ? this.kubernetesNetworkConfig.hashCode() : 0); + result = 31 * result + (this.lambdaRoleName != null ? this.lambdaRoleName.hashCode() : 0); + result = 31 * result + (this.name != null ? this.name.hashCode() : 0); + result = 31 * result + (this.tags != null ? this.tags.hashCode() : 0); + result = 31 * result + (this.version != null ? this.version.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsKubernetesApiAccess.java" => "package com.my.module; + +/** + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.903Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsKubernetesApiAccess.Jsii$Proxy.class) +public interface CfnClusterPropsKubernetesApiAccess extends software.amazon.jsii.JsiiSerializable { + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getRoles() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getUsers() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterPropsKubernetesApiAccess} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsKubernetesApiAccess} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.util.List roles; + private java.util.List users; + + /** + * Sets the value of {@link CfnClusterPropsKubernetesApiAccess#getRoles} + * @param roles the value to be set. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder roles(java.util.List roles) { + this.roles = (java.util.List)roles; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsKubernetesApiAccess#getUsers} + * @param users the value to be set. + * @return {@code this} + */ + @SuppressWarnings(\\"unchecked\\") + public Builder users(java.util.List users) { + this.users = (java.util.List)users; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsKubernetesApiAccess} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsKubernetesApiAccess build() { + return new Jsii$Proxy(roles, users); + } + } + + /** + * An implementation for {@link CfnClusterPropsKubernetesApiAccess} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsKubernetesApiAccess { + private final java.util.List roles; + private final java.util.List users; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.roles = software.amazon.jsii.Kernel.get(this, \\"roles\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.KubernetesApiAccessEntry.class))); + this.users = software.amazon.jsii.Kernel.get(this, \\"users\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.my.module.KubernetesApiAccessEntry.class))); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + @SuppressWarnings(\\"unchecked\\") + protected Jsii$Proxy(final java.util.List roles, final java.util.List users) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.roles = (java.util.List)roles; + this.users = (java.util.List)users; + } + + @Override + public final java.util.List getRoles() { + return this.roles; + } + + @Override + public final java.util.List getUsers() { + return this.users; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getRoles() != null) { + data.set(\\"roles\\", om.valueToTree(this.getRoles())); + } + if (this.getUsers() != null) { + data.set(\\"users\\", om.valueToTree(this.getUsers())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsKubernetesApiAccess.Jsii$Proxy that = (CfnClusterPropsKubernetesApiAccess.Jsii$Proxy) o; + + if (this.roles != null ? !this.roles.equals(that.roles) : that.roles != null) return false; + return this.users != null ? this.users.equals(that.users) : that.users == null; + } + + @Override + public final int hashCode() { + int result = this.roles != null ? this.roles.hashCode() : 0; + result = 31 * result + (this.users != null ? this.users.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsKubernetesNetworkConfig.java" => "package com.my.module; + +/** + * Network configuration for Amazon EKS cluster. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.903Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsKubernetesNetworkConfig.Jsii$Proxy.class) +public interface CfnClusterPropsKubernetesNetworkConfig extends software.amazon.jsii.JsiiSerializable { + + /** + * Specify the range from which cluster services will receive IPv4 addresses. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getServiceIpv4Cidr() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterPropsKubernetesNetworkConfig} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsKubernetesNetworkConfig} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String serviceIpv4Cidr; + + /** + * Sets the value of {@link CfnClusterPropsKubernetesNetworkConfig#getServiceIpv4Cidr} + * @param serviceIpv4Cidr Specify the range from which cluster services will receive IPv4 addresses. + * @return {@code this} + */ + public Builder serviceIpv4Cidr(java.lang.String serviceIpv4Cidr) { + this.serviceIpv4Cidr = serviceIpv4Cidr; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsKubernetesNetworkConfig} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsKubernetesNetworkConfig build() { + return new Jsii$Proxy(serviceIpv4Cidr); + } + } + + /** + * An implementation for {@link CfnClusterPropsKubernetesNetworkConfig} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsKubernetesNetworkConfig { + private final java.lang.String serviceIpv4Cidr; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.serviceIpv4Cidr = software.amazon.jsii.Kernel.get(this, \\"serviceIpv4Cidr\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String serviceIpv4Cidr) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.serviceIpv4Cidr = serviceIpv4Cidr; + } + + @Override + public final java.lang.String getServiceIpv4Cidr() { + return this.serviceIpv4Cidr; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getServiceIpv4Cidr() != null) { + data.set(\\"serviceIpv4Cidr\\", om.valueToTree(this.getServiceIpv4Cidr())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsKubernetesNetworkConfig.Jsii$Proxy that = (CfnClusterPropsKubernetesNetworkConfig.Jsii$Proxy) o; + + return this.serviceIpv4Cidr != null ? this.serviceIpv4Cidr.equals(that.serviceIpv4Cidr) : that.serviceIpv4Cidr == null; + } + + @Override + public final int hashCode() { + int result = this.serviceIpv4Cidr != null ? this.serviceIpv4Cidr.hashCode() : 0; + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsResourcesVpcConfig.java" => "package com.my.module; + +/** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.903Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsResourcesVpcConfig.Jsii$Proxy.class) +public interface CfnClusterPropsResourcesVpcConfig extends software.amazon.jsii.JsiiSerializable { + + /** + * Specify subnets for your Amazon EKS worker nodes. + *

+ * Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + */ + @org.jetbrains.annotations.NotNull java.util.List getSubnetIds(); + + /** + * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + *

+ * If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + */ + default @org.jetbrains.annotations.Nullable java.lang.Boolean getEndpointPrivateAccess() { + return null; + } + + /** + * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + *

+ * If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + */ + default @org.jetbrains.annotations.Nullable java.lang.Boolean getEndpointPublicAccess() { + return null; + } + + /** + * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + *

+ * Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + */ + default @org.jetbrains.annotations.Nullable java.util.List getPublicAccessCidrs() { + return null; + } + + /** + * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + *

+ * If you don't specify a security group, the default security group for your VPC is used. + */ + default @org.jetbrains.annotations.Nullable java.util.List getSecurityGroupIds() { + return null; + } + + /** + * @return a {@link Builder} of {@link CfnClusterPropsResourcesVpcConfig} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsResourcesVpcConfig} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.util.List subnetIds; + private java.lang.Boolean endpointPrivateAccess; + private java.lang.Boolean endpointPublicAccess; + private java.util.List publicAccessCidrs; + private java.util.List securityGroupIds; + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getSubnetIds} + * @param subnetIds Specify subnets for your Amazon EKS worker nodes. This parameter is required. + * Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + * @return {@code this} + */ + public Builder subnetIds(java.util.List subnetIds) { + this.subnetIds = subnetIds; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getEndpointPrivateAccess} + * @param endpointPrivateAccess Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + * If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + * @return {@code this} + */ + public Builder endpointPrivateAccess(java.lang.Boolean endpointPrivateAccess) { + this.endpointPrivateAccess = endpointPrivateAccess; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getEndpointPublicAccess} + * @param endpointPublicAccess Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + * If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + * @return {@code this} + */ + public Builder endpointPublicAccess(java.lang.Boolean endpointPublicAccess) { + this.endpointPublicAccess = endpointPublicAccess; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getPublicAccessCidrs} + * @param publicAccessCidrs The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + * Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + * @return {@code this} + */ + public Builder publicAccessCidrs(java.util.List publicAccessCidrs) { + this.publicAccessCidrs = publicAccessCidrs; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsResourcesVpcConfig#getSecurityGroupIds} + * @param securityGroupIds Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + * If you don't specify a security group, the default security group for your VPC is used. + * @return {@code this} + */ + public Builder securityGroupIds(java.util.List securityGroupIds) { + this.securityGroupIds = securityGroupIds; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsResourcesVpcConfig} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsResourcesVpcConfig build() { + return new Jsii$Proxy(subnetIds, endpointPrivateAccess, endpointPublicAccess, publicAccessCidrs, securityGroupIds); + } + } + + /** + * An implementation for {@link CfnClusterPropsResourcesVpcConfig} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsResourcesVpcConfig { + private final java.util.List subnetIds; + private final java.lang.Boolean endpointPrivateAccess; + private final java.lang.Boolean endpointPublicAccess; + private final java.util.List publicAccessCidrs; + private final java.util.List securityGroupIds; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.subnetIds = software.amazon.jsii.Kernel.get(this, \\"subnetIds\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.endpointPrivateAccess = software.amazon.jsii.Kernel.get(this, \\"endpointPrivateAccess\\", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class)); + this.endpointPublicAccess = software.amazon.jsii.Kernel.get(this, \\"endpointPublicAccess\\", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class)); + this.publicAccessCidrs = software.amazon.jsii.Kernel.get(this, \\"publicAccessCidrs\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.securityGroupIds = software.amazon.jsii.Kernel.get(this, \\"securityGroupIds\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.util.List subnetIds, final java.lang.Boolean endpointPrivateAccess, final java.lang.Boolean endpointPublicAccess, final java.util.List publicAccessCidrs, final java.util.List securityGroupIds) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.subnetIds = java.util.Objects.requireNonNull(subnetIds, \\"subnetIds is required\\"); + this.endpointPrivateAccess = endpointPrivateAccess; + this.endpointPublicAccess = endpointPublicAccess; + this.publicAccessCidrs = publicAccessCidrs; + this.securityGroupIds = securityGroupIds; + } + + @Override + public final java.util.List getSubnetIds() { + return this.subnetIds; + } + + @Override + public final java.lang.Boolean getEndpointPrivateAccess() { + return this.endpointPrivateAccess; + } + + @Override + public final java.lang.Boolean getEndpointPublicAccess() { + return this.endpointPublicAccess; + } + + @Override + public final java.util.List getPublicAccessCidrs() { + return this.publicAccessCidrs; + } + + @Override + public final java.util.List getSecurityGroupIds() { + return this.securityGroupIds; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + data.set(\\"subnetIds\\", om.valueToTree(this.getSubnetIds())); + if (this.getEndpointPrivateAccess() != null) { + data.set(\\"endpointPrivateAccess\\", om.valueToTree(this.getEndpointPrivateAccess())); + } + if (this.getEndpointPublicAccess() != null) { + data.set(\\"endpointPublicAccess\\", om.valueToTree(this.getEndpointPublicAccess())); + } + if (this.getPublicAccessCidrs() != null) { + data.set(\\"publicAccessCidrs\\", om.valueToTree(this.getPublicAccessCidrs())); + } + if (this.getSecurityGroupIds() != null) { + data.set(\\"securityGroupIds\\", om.valueToTree(this.getSecurityGroupIds())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsResourcesVpcConfig.Jsii$Proxy that = (CfnClusterPropsResourcesVpcConfig.Jsii$Proxy) o; + + if (!subnetIds.equals(that.subnetIds)) return false; + if (this.endpointPrivateAccess != null ? !this.endpointPrivateAccess.equals(that.endpointPrivateAccess) : that.endpointPrivateAccess != null) return false; + if (this.endpointPublicAccess != null ? !this.endpointPublicAccess.equals(that.endpointPublicAccess) : that.endpointPublicAccess != null) return false; + if (this.publicAccessCidrs != null ? !this.publicAccessCidrs.equals(that.publicAccessCidrs) : that.publicAccessCidrs != null) return false; + return this.securityGroupIds != null ? this.securityGroupIds.equals(that.securityGroupIds) : that.securityGroupIds == null; + } + + @Override + public final int hashCode() { + int result = this.subnetIds.hashCode(); + result = 31 * result + (this.endpointPrivateAccess != null ? this.endpointPrivateAccess.hashCode() : 0); + result = 31 * result + (this.endpointPublicAccess != null ? this.endpointPublicAccess.hashCode() : 0); + result = 31 * result + (this.publicAccessCidrs != null ? this.publicAccessCidrs.hashCode() : 0); + result = 31 * result + (this.securityGroupIds != null ? this.securityGroupIds.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/CfnClusterPropsTags.java" => "package com.my.module; + +/** + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.905Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\") +@software.amazon.jsii.Jsii.Proxy(CfnClusterPropsTags.Jsii$Proxy.class) +public interface CfnClusterPropsTags extends software.amazon.jsii.JsiiSerializable { + + /** + */ + @org.jetbrains.annotations.NotNull java.lang.String getKey(); + + /** + */ + @org.jetbrains.annotations.NotNull java.lang.String getValue(); + + /** + * @return a {@link Builder} of {@link CfnClusterPropsTags} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link CfnClusterPropsTags} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String key; + private java.lang.String value; + + /** + * Sets the value of {@link CfnClusterPropsTags#getKey} + * @param key the value to be set. This parameter is required. + * @return {@code this} + */ + public Builder key(java.lang.String key) { + this.key = key; + return this; + } + + /** + * Sets the value of {@link CfnClusterPropsTags#getValue} + * @param value the value to be set. This parameter is required. + * @return {@code this} + */ + public Builder value(java.lang.String value) { + this.value = value; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link CfnClusterPropsTags} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public CfnClusterPropsTags build() { + return new Jsii$Proxy(key, value); + } + } + + /** + * An implementation for {@link CfnClusterPropsTags} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements CfnClusterPropsTags { + private final java.lang.String key; + private final java.lang.String value; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.key = software.amazon.jsii.Kernel.get(this, \\"key\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.value = software.amazon.jsii.Kernel.get(this, \\"value\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String key, final java.lang.String value) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.key = java.util.Objects.requireNonNull(key, \\"key is required\\"); + this.value = java.util.Objects.requireNonNull(value, \\"value is required\\"); + } + + @Override + public final java.lang.String getKey() { + return this.key; + } + + @Override + public final java.lang.String getValue() { + return this.value; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + data.set(\\"key\\", om.valueToTree(this.getKey())); + data.set(\\"value\\", om.valueToTree(this.getValue())); + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CfnClusterPropsTags.Jsii$Proxy that = (CfnClusterPropsTags.Jsii$Proxy) o; + + if (!key.equals(that.key)) return false; + return this.value.equals(that.value); + } + + @Override + public final int hashCode() { + int result = this.key.hashCode(); + result = 31 * result + (this.value.hashCode()); + return result; + } + } +} +", + "src/main/java/com/my/module/EncryptionConfigEntry.java" => "package com.my.module; + +/** + * The encryption configuration for the cluster. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.905Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\") +@software.amazon.jsii.Jsii.Proxy(EncryptionConfigEntry.Jsii$Proxy.class) +public interface EncryptionConfigEntry extends software.amazon.jsii.JsiiSerializable { + + /** + */ + default @org.jetbrains.annotations.Nullable com.my.module.Provider getProvider() { + return null; + } + + /** + * Specifies the resources to be encrypted. + *

+ * The only supported value is \\"secrets\\". + */ + default @org.jetbrains.annotations.Nullable java.util.List getResources() { + return null; + } + + /** + * @return a {@link Builder} of {@link EncryptionConfigEntry} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link EncryptionConfigEntry} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private com.my.module.Provider provider; + private java.util.List resources; + + /** + * Sets the value of {@link EncryptionConfigEntry#getProvider} + * @param provider the value to be set. + * @return {@code this} + */ + public Builder provider(com.my.module.Provider provider) { + this.provider = provider; + return this; + } + + /** + * Sets the value of {@link EncryptionConfigEntry#getResources} + * @param resources Specifies the resources to be encrypted. + * The only supported value is \\"secrets\\". + * @return {@code this} + */ + public Builder resources(java.util.List resources) { + this.resources = resources; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link EncryptionConfigEntry} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public EncryptionConfigEntry build() { + return new Jsii$Proxy(provider, resources); + } + } + + /** + * An implementation for {@link EncryptionConfigEntry} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements EncryptionConfigEntry { + private final com.my.module.Provider provider; + private final java.util.List resources; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.provider = software.amazon.jsii.Kernel.get(this, \\"provider\\", software.amazon.jsii.NativeType.forClass(com.my.module.Provider.class)); + this.resources = software.amazon.jsii.Kernel.get(this, \\"resources\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final com.my.module.Provider provider, final java.util.List resources) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.provider = provider; + this.resources = resources; + } + + @Override + public final com.my.module.Provider getProvider() { + return this.provider; + } + + @Override + public final java.util.List getResources() { + return this.resources; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getProvider() != null) { + data.set(\\"provider\\", om.valueToTree(this.getProvider())); + } + if (this.getResources() != null) { + data.set(\\"resources\\", om.valueToTree(this.getResources())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + EncryptionConfigEntry.Jsii$Proxy that = (EncryptionConfigEntry.Jsii$Proxy) o; + + if (this.provider != null ? !this.provider.equals(that.provider) : that.provider != null) return false; + return this.resources != null ? this.resources.equals(that.resources) : that.resources == null; + } + + @Override + public final int hashCode() { + int result = this.provider != null ? this.provider.hashCode() : 0; + result = 31 * result + (this.resources != null ? this.resources.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/KubernetesApiAccessEntry.java" => "package com.my.module; + +/** + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.906Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\") +@software.amazon.jsii.Jsii.Proxy(KubernetesApiAccessEntry.Jsii$Proxy.class) +public interface KubernetesApiAccessEntry extends software.amazon.jsii.JsiiSerializable { + + /** + */ + default @org.jetbrains.annotations.Nullable java.lang.String getArn() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.util.List getGroups() { + return null; + } + + /** + */ + default @org.jetbrains.annotations.Nullable java.lang.String getUsername() { + return null; + } + + /** + * @return a {@link Builder} of {@link KubernetesApiAccessEntry} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link KubernetesApiAccessEntry} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String arn; + private java.util.List groups; + private java.lang.String username; + + /** + * Sets the value of {@link KubernetesApiAccessEntry#getArn} + * @param arn the value to be set. + * @return {@code this} + */ + public Builder arn(java.lang.String arn) { + this.arn = arn; + return this; + } + + /** + * Sets the value of {@link KubernetesApiAccessEntry#getGroups} + * @param groups the value to be set. + * @return {@code this} + */ + public Builder groups(java.util.List groups) { + this.groups = groups; + return this; + } + + /** + * Sets the value of {@link KubernetesApiAccessEntry#getUsername} + * @param username the value to be set. + * @return {@code this} + */ + public Builder username(java.lang.String username) { + this.username = username; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link KubernetesApiAccessEntry} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public KubernetesApiAccessEntry build() { + return new Jsii$Proxy(arn, groups, username); + } + } + + /** + * An implementation for {@link KubernetesApiAccessEntry} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements KubernetesApiAccessEntry { + private final java.lang.String arn; + private final java.util.List groups; + private final java.lang.String username; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.arn = software.amazon.jsii.Kernel.get(this, \\"arn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + this.groups = software.amazon.jsii.Kernel.get(this, \\"groups\\", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); + this.username = software.amazon.jsii.Kernel.get(this, \\"username\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String arn, final java.util.List groups, final java.lang.String username) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.arn = arn; + this.groups = groups; + this.username = username; + } + + @Override + public final java.lang.String getArn() { + return this.arn; + } + + @Override + public final java.util.List getGroups() { + return this.groups; + } + + @Override + public final java.lang.String getUsername() { + return this.username; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getArn() != null) { + data.set(\\"arn\\", om.valueToTree(this.getArn())); + } + if (this.getGroups() != null) { + data.set(\\"groups\\", om.valueToTree(this.getGroups())); + } + if (this.getUsername() != null) { + data.set(\\"username\\", om.valueToTree(this.getUsername())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + KubernetesApiAccessEntry.Jsii$Proxy that = (KubernetesApiAccessEntry.Jsii$Proxy) o; + + if (this.arn != null ? !this.arn.equals(that.arn) : that.arn != null) return false; + if (this.groups != null ? !this.groups.equals(that.groups) : that.groups != null) return false; + return this.username != null ? this.username.equals(that.username) : that.username == null; + } + + @Override + public final int hashCode() { + int result = this.arn != null ? this.arn.hashCode() : 0; + result = 31 * result + (this.groups != null ? this.groups.hashCode() : 0); + result = 31 * result + (this.username != null ? this.username.hashCode() : 0); + return result; + } + } +} +", + "src/main/java/com/my/module/Provider.java" => "package com.my.module; + +/** + * AWS Key Management Service (AWS KMS) customer master key (CMK). + *

+ * Either the ARN or the alias can be used. + */ +@javax.annotation.Generated(value = \\"jsii-pacmak/1.35.0 (build 6ebef96)\\", date = \\"2021-10-04T17:28:49.906Z\\") +@software.amazon.jsii.Jsii(module = com.my.module.$Module.class, fqn = \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\") +@software.amazon.jsii.Jsii.Proxy(Provider.Jsii$Proxy.class) +public interface Provider extends software.amazon.jsii.JsiiSerializable { + + /** + * Amazon Resource Name (ARN) or alias of the customer master key (CMK). + *

+ * The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + */ + default @org.jetbrains.annotations.Nullable java.lang.String getKeyArn() { + return null; + } + + /** + * @return a {@link Builder} of {@link Provider} + */ + static Builder builder() { + return new Builder(); + } + /** + * A builder for {@link Provider} + */ + public static final class Builder implements software.amazon.jsii.Builder { + private java.lang.String keyArn; + + /** + * Sets the value of {@link Provider#getKeyArn} + * @param keyArn Amazon Resource Name (ARN) or alias of the customer master key (CMK). + * The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + * @return {@code this} + */ + public Builder keyArn(java.lang.String keyArn) { + this.keyArn = keyArn; + return this; + } + + /** + * Builds the configured instance. + * @return a new instance of {@link Provider} + * @throws NullPointerException if any required attribute was not provided + */ + @Override + public Provider build() { + return new Jsii$Proxy(keyArn); + } + } + + /** + * An implementation for {@link Provider} + */ + @software.amazon.jsii.Internal + final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements Provider { + private final java.lang.String keyArn; + + /** + * Constructor that initializes the object based on values retrieved from the JsiiObject. + * @param objRef Reference to the JSII managed object. + */ + protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) { + super(objRef); + this.keyArn = software.amazon.jsii.Kernel.get(this, \\"keyArn\\", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); + } + + /** + * Constructor that initializes the object based on literal property values passed by the {@link Builder}. + */ + protected Jsii$Proxy(final java.lang.String keyArn) { + super(software.amazon.jsii.JsiiObject.InitializationMode.JSII); + this.keyArn = keyArn; + } + + @Override + public final java.lang.String getKeyArn() { + return this.keyArn; + } + + @Override + @software.amazon.jsii.Internal + public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() { + final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE; + final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + + if (this.getKeyArn() != null) { + data.set(\\"keyArn\\", om.valueToTree(this.getKeyArn())); + } + + final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + struct.set(\\"fqn\\", om.valueToTree(\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\")); + struct.set(\\"data\\", data); + + final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); + obj.set(\\"$jsii.struct\\", struct); + + return obj; + } + + @Override + public final boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Provider.Jsii$Proxy that = (Provider.Jsii$Proxy) o; + + return this.keyArn != null ? this.keyArn.equals(that.keyArn) : that.keyArn == null; + } + + @Override + public final int hashCode() { + int result = this.keyArn != null ? this.keyArn.hashCode() : 0; + return result; + } + } +} +", + "src/main/resources/com/my/module/$Module.txt" => "1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster=com.my.module.CfnCluster +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps=com.my.module.CfnClusterProps +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess=com.my.module.CfnClusterPropsKubernetesApiAccess +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig=com.my.module.CfnClusterPropsKubernetesNetworkConfig +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig=com.my.module.CfnClusterPropsResourcesVpcConfig +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags=com.my.module.CfnClusterPropsTags +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry=com.my.module.EncryptionConfigEntry +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry=com.my.module.KubernetesApiAccessEntry +1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider=com.my.module.Provider +", +} +`; + +exports[`python 1`] = ` +Map { + "awsqs-eks-cluster.ts" => "// Generated by cdk-import +import * as cdk from '@aws-cdk/core'; + +/** + * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + * + * @schema CfnClusterProps + */ +export interface CfnClusterProps { + /** + * A unique name for your cluster. + * + * @schema CfnClusterProps#Name + */ + readonly name?: string; + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * + * @schema CfnClusterProps#RoleArn + */ + readonly roleArn: string; + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * + * @schema CfnClusterProps#LambdaRoleName + */ + readonly lambdaRoleName?: string; + + /** + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * + * @schema CfnClusterProps#Version + */ + readonly version?: string; + + /** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterProps#KubernetesNetworkConfig + */ + readonly kubernetesNetworkConfig?: CfnClusterPropsKubernetesNetworkConfig; + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterProps#ResourcesVpcConfig + */ + readonly resourcesVpcConfig: CfnClusterPropsResourcesVpcConfig; + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * + * @schema CfnClusterProps#EnabledClusterLoggingTypes + */ + readonly enabledClusterLoggingTypes?: string[]; + + /** + * Encryption configuration for the cluster. + * + * @schema CfnClusterProps#EncryptionConfig + */ + readonly encryptionConfig?: EncryptionConfigEntry[]; + + /** + * @schema CfnClusterProps#KubernetesApiAccess + */ + readonly kubernetesApiAccess?: CfnClusterPropsKubernetesApiAccess; + + /** + * @schema CfnClusterProps#Tags + */ + readonly tags?: CfnClusterPropsTags[]; + +} + +/** + * Converts an object of type 'CfnClusterProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterProps(obj: CfnClusterProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Name': obj.name, + 'RoleArn': obj.roleArn, + 'LambdaRoleName': obj.lambdaRoleName, + 'Version': obj.version, + 'KubernetesNetworkConfig': toJson_CfnClusterPropsKubernetesNetworkConfig(obj.kubernetesNetworkConfig), + 'ResourcesVpcConfig': toJson_CfnClusterPropsResourcesVpcConfig(obj.resourcesVpcConfig), + 'EnabledClusterLoggingTypes': obj.enabledClusterLoggingTypes?.map(y => y), + 'EncryptionConfig': obj.encryptionConfig?.map(y => toJson_EncryptionConfigEntry(y)), + 'KubernetesApiAccess': toJson_CfnClusterPropsKubernetesApiAccess(obj.kubernetesApiAccess), + 'Tags': obj.tags?.map(y => toJson_CfnClusterPropsTags(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterPropsKubernetesNetworkConfig + */ +export interface CfnClusterPropsKubernetesNetworkConfig { + /** + * Specify the range from which cluster services will receive IPv4 addresses. + * + * @schema CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + */ + readonly serviceIpv4Cidr?: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesNetworkConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesNetworkConfig(obj: CfnClusterPropsKubernetesNetworkConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'ServiceIpv4Cidr': obj.serviceIpv4Cidr, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterPropsResourcesVpcConfig + */ +export interface CfnClusterPropsResourcesVpcConfig { + /** + * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + * + * @schema CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + */ + readonly securityGroupIds?: string[]; + + /** + * Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + * + * @schema CfnClusterPropsResourcesVpcConfig#SubnetIds + */ + readonly subnetIds: string[]; + + /** + * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + */ + readonly endpointPublicAccess?: boolean; + + /** + * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + */ + readonly endpointPrivateAccess?: boolean; + + /** + * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + * + * @schema CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + */ + readonly publicAccessCidrs?: string[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsResourcesVpcConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsResourcesVpcConfig(obj: CfnClusterPropsResourcesVpcConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecurityGroupIds': obj.securityGroupIds?.map(y => y), + 'SubnetIds': obj.subnetIds?.map(y => y), + 'EndpointPublicAccess': obj.endpointPublicAccess, + 'EndpointPrivateAccess': obj.endpointPrivateAccess, + 'PublicAccessCidrs': obj.publicAccessCidrs?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The encryption configuration for the cluster. + * + * @schema EncryptionConfigEntry + */ +export interface EncryptionConfigEntry { + /** + * Specifies the resources to be encrypted. The only supported value is \\"secrets\\". + * + * @schema EncryptionConfigEntry#Resources + */ + readonly resources?: string[]; + + /** + * @schema EncryptionConfigEntry#Provider + */ + readonly provider?: Provider; + +} + +/** + * Converts an object of type 'EncryptionConfigEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EncryptionConfigEntry(obj: EncryptionConfigEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Resources': obj.resources?.map(y => y), + 'Provider': toJson_Provider(obj.provider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsKubernetesApiAccess + */ +export interface CfnClusterPropsKubernetesApiAccess { + /** + * @schema CfnClusterPropsKubernetesApiAccess#Roles + */ + readonly roles?: KubernetesApiAccessEntry[]; + + /** + * @schema CfnClusterPropsKubernetesApiAccess#Users + */ + readonly users?: KubernetesApiAccessEntry[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesApiAccess' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesApiAccess(obj: CfnClusterPropsKubernetesApiAccess | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Roles': obj.roles?.map(y => toJson_KubernetesApiAccessEntry(y)), + 'Users': obj.users?.map(y => toJson_KubernetesApiAccessEntry(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsTags + */ +export interface CfnClusterPropsTags { + /** + * @schema CfnClusterPropsTags#Value + */ + readonly value: string; + + /** + * @schema CfnClusterPropsTags#Key + */ + readonly key: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsTags' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsTags(obj: CfnClusterPropsTags | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Value': obj.value, + 'Key': obj.key, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used. + * + * @schema Provider + */ +export interface Provider { + /** + * Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + * + * @schema Provider#KeyArn + */ + readonly keyArn?: string; + +} + +/** + * Converts an object of type 'Provider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_Provider(obj: Provider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'KeyArn': obj.keyArn, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema KubernetesApiAccessEntry + */ +export interface KubernetesApiAccessEntry { + /** + * @schema KubernetesApiAccessEntry#Arn + */ + readonly arn?: string; + + /** + * @schema KubernetesApiAccessEntry#Username + */ + readonly username?: string; + + /** + * @schema KubernetesApiAccessEntry#Groups + */ + readonly groups?: string[]; + +} + +/** + * Converts an object of type 'KubernetesApiAccessEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubernetesApiAccessEntry(obj: KubernetesApiAccessEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Arn': obj.arn, + 'Username': obj.username, + 'Groups': obj.groups?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * A CloudFormation \`AWSQS::EKS::Cluster\` + * + * @cloudformationResource AWSQS::EKS::Cluster + * @stability external + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ +export class CfnCluster extends cdk.CfnResource { + /** + * The CloudFormation resource type name for this resource class. + */ + public static readonly CFN_RESOURCE_TYPE_NAME = 'AWSQS::EKS::Cluster'; + + /** + * \`AWSQS::EKS::Cluster.Name\` + * A unique name for your cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly name: string | undefined; + /** + * \`AWSQS::EKS::Cluster.RoleArn\` + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly roleArn: string; + /** + * \`AWSQS::EKS::Cluster.LambdaRoleName\` + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly lambdaRoleName: string | undefined; + /** + * \`AWSQS::EKS::Cluster.Version\` + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly version: string | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` + * Network configuration for Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesNetworkConfig: any | undefined; + /** + * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly resourcesVpcConfig: any; + /** + * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly enabledClusterLoggingTypes: string[] | undefined; + /** + * \`AWSQS::EKS::Cluster.EncryptionConfig\` + * Encryption configuration for the cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly encryptionConfig: EncryptionConfigEntry[] | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesApiAccess\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesApiAccess: any | undefined; + /** + * \`AWSQS::EKS::Cluster.Tags\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly tags: any[] | undefined; + /** + * Attribute \`AWSQS::EKS::Cluster.Arn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.Endpoint\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEndpoint: string; + /** + * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrClusterSecurityGroupId: string; + /** + * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrCertificateAuthorityData: string; + /** + * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEncryptionConfigKeyArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrOIDCIssuerURL: string; + + /** + * Create a new \`AWSQS::EKS::Cluster\`. + * + * @param scope - scope in which this resource is defined + * @param id - scoped id of the resource + * @param props - resource properties + */ + constructor(scope: cdk.Construct, id: string, props: CfnClusterProps) { + super(scope, id, { type: CfnCluster.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnClusterProps(props)! }); + + this.name = props.name; + this.roleArn = props.roleArn; + this.lambdaRoleName = props.lambdaRoleName; + this.version = props.version; + this.kubernetesNetworkConfig = props.kubernetesNetworkConfig; + this.resourcesVpcConfig = props.resourcesVpcConfig; + this.enabledClusterLoggingTypes = props.enabledClusterLoggingTypes; + this.encryptionConfig = props.encryptionConfig; + this.kubernetesApiAccess = props.kubernetesApiAccess; + this.tags = props.tags; + this.attrArn = cdk.Token.asString(this.getAtt('Arn')); + this.attrEndpoint = cdk.Token.asString(this.getAtt('Endpoint')); + this.attrClusterSecurityGroupId = cdk.Token.asString(this.getAtt('ClusterSecurityGroupId')); + this.attrCertificateAuthorityData = cdk.Token.asString(this.getAtt('CertificateAuthorityData')); + this.attrEncryptionConfigKeyArn = cdk.Token.asString(this.getAtt('EncryptionConfigKeyArn')); + this.attrOIDCIssuerURL = cdk.Token.asString(this.getAtt('OIDCIssuerURL')); + } +}", + "awsqs_eks_cluster/__init__.py" => "import abc +import builtins +import datetime +import enum +import typing + +import jsii +import publication +import typing_extensions + +from ._jsii import * + +import aws_cdk.core + + +class CfnCluster( + aws_cdk.core.CfnResource, + metaclass=jsii.JSIIMeta, + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnCluster\\", +): + '''A CloudFormation \`\`AWSQS::EKS::Cluster\`\`. + + :cloudformationResource: AWSQS::EKS::Cluster + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + + def __init__( + self, + scope: aws_cdk.core.Construct, + id: builtins.str, + *, + resources_vpc_config: \\"CfnClusterPropsResourcesVpcConfig\\", + role_arn: builtins.str, + enabled_cluster_logging_types: typing.Optional[typing.Sequence[builtins.str]] = None, + encryption_config: typing.Optional[typing.Sequence[\\"EncryptionConfigEntry\\"]] = None, + kubernetes_api_access: typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"] = None, + kubernetes_network_config: typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"] = None, + lambda_role_name: typing.Optional[builtins.str] = None, + name: typing.Optional[builtins.str] = None, + tags: typing.Optional[typing.Sequence[\\"CfnClusterPropsTags\\"]] = None, + version: typing.Optional[builtins.str] = None, + ) -> None: + '''Create a new \`\`AWSQS::EKS::Cluster\`\`. + + :param scope: - scope in which this resource is defined. + :param id: - scoped id of the resource. + :param resources_vpc_config: An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + :param role_arn: Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + :param enabled_cluster_logging_types: Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + :param encryption_config: Encryption configuration for the cluster. + :param kubernetes_api_access: + :param kubernetes_network_config: Network configuration for Amazon EKS cluster. + :param lambda_role_name: Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + :param name: A unique name for your cluster. + :param tags: + :param version: Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + ''' + props = CfnClusterProps( + resources_vpc_config=resources_vpc_config, + role_arn=role_arn, + enabled_cluster_logging_types=enabled_cluster_logging_types, + encryption_config=encryption_config, + kubernetes_api_access=kubernetes_api_access, + kubernetes_network_config=kubernetes_network_config, + lambda_role_name=lambda_role_name, + name=name, + tags=tags, + version=version, + ) + + jsii.create(self.__class__, self, [scope, id, props]) + + @jsii.python.classproperty # type: ignore[misc] + @jsii.member(jsii_name=\\"CFN_RESOURCE_TYPE_NAME\\") + def CFN_RESOURCE_TYPE_NAME(cls) -> builtins.str: + '''The CloudFormation resource type name for this resource class.''' + return typing.cast(builtins.str, jsii.sget(cls, \\"CFN_RESOURCE_TYPE_NAME\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrArn\\") + def attr_arn(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.Arn\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrCertificateAuthorityData\\") + def attr_certificate_authority_data(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.CertificateAuthorityData\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrCertificateAuthorityData\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrClusterSecurityGroupId\\") + def attr_cluster_security_group_id(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrClusterSecurityGroupId\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrEncryptionConfigKeyArn\\") + def attr_encryption_config_key_arn(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrEncryptionConfigKeyArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrEndpoint\\") + def attr_endpoint(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.Endpoint\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrEndpoint\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"attrOIDCIssuerURL\\") + def attr_oidc_issuer_url(self) -> builtins.str: + '''Attribute \`\`AWSQS::EKS::Cluster.OIDCIssuerURL\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"attrOIDCIssuerURL\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"kubernetesApiAccess\\") + def kubernetes_api_access(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.KubernetesApiAccess\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"kubernetesApiAccess\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"kubernetesNetworkConfig\\") + def kubernetes_network_config(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.KubernetesNetworkConfig\`\` Network configuration for Amazon EKS cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"kubernetesNetworkConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"resourcesVpcConfig\\") + def resources_vpc_config(self) -> typing.Any: + '''\`\`AWSQS::EKS::Cluster.ResourcesVpcConfig\`\` An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Any, jsii.get(self, \\"resourcesVpcConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"roleArn\\") + def role_arn(self) -> builtins.str: + '''\`\`AWSQS::EKS::Cluster.RoleArn\`\` Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(builtins.str, jsii.get(self, \\"roleArn\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"enabledClusterLoggingTypes\\") + def enabled_cluster_logging_types( + self, + ) -> typing.Optional[typing.List[builtins.str]]: + '''\`\`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\`\` Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, \\"enabledClusterLoggingTypes\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"encryptionConfig\\") + def encryption_config( + self, + ) -> typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]]: + '''\`\`AWSQS::EKS::Cluster.EncryptionConfig\`\` Encryption configuration for the cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]], jsii.get(self, \\"encryptionConfig\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"lambdaRoleName\\") + def lambda_role_name(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.LambdaRoleName\`\` Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"lambdaRoleName\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"name\\") + def name(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.Name\`\` A unique name for your cluster. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"name\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"tags\\") + def tags(self) -> typing.Optional[typing.List[typing.Any]]: + '''\`\`AWSQS::EKS::Cluster.Tags\`\`. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[typing.List[typing.Any]], jsii.get(self, \\"tags\\")) + + @builtins.property # type: ignore[misc] + @jsii.member(jsii_name=\\"version\\") + def version(self) -> typing.Optional[builtins.str]: + '''\`\`AWSQS::EKS::Cluster.Version\`\` Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :link: https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + ''' + return typing.cast(typing.Optional[builtins.str], jsii.get(self, \\"version\\")) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterProps\\", + jsii_struct_bases=[], + name_mapping={ + \\"resources_vpc_config\\": \\"resourcesVpcConfig\\", + \\"role_arn\\": \\"roleArn\\", + \\"enabled_cluster_logging_types\\": \\"enabledClusterLoggingTypes\\", + \\"encryption_config\\": \\"encryptionConfig\\", + \\"kubernetes_api_access\\": \\"kubernetesApiAccess\\", + \\"kubernetes_network_config\\": \\"kubernetesNetworkConfig\\", + \\"lambda_role_name\\": \\"lambdaRoleName\\", + \\"name\\": \\"name\\", + \\"tags\\": \\"tags\\", + \\"version\\": \\"version\\", + }, +) +class CfnClusterProps: + def __init__( + self, + *, + resources_vpc_config: \\"CfnClusterPropsResourcesVpcConfig\\", + role_arn: builtins.str, + enabled_cluster_logging_types: typing.Optional[typing.Sequence[builtins.str]] = None, + encryption_config: typing.Optional[typing.Sequence[\\"EncryptionConfigEntry\\"]] = None, + kubernetes_api_access: typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"] = None, + kubernetes_network_config: typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"] = None, + lambda_role_name: typing.Optional[builtins.str] = None, + name: typing.Optional[builtins.str] = None, + tags: typing.Optional[typing.Sequence[\\"CfnClusterPropsTags\\"]] = None, + version: typing.Optional[builtins.str] = None, + ) -> None: + '''A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + + :param resources_vpc_config: An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + :param role_arn: Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + :param enabled_cluster_logging_types: Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + :param encryption_config: Encryption configuration for the cluster. + :param kubernetes_api_access: + :param kubernetes_network_config: Network configuration for Amazon EKS cluster. + :param lambda_role_name: Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + :param name: A unique name for your cluster. + :param tags: + :param version: Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :schema: CfnClusterProps + ''' + if isinstance(resources_vpc_config, dict): + resources_vpc_config = CfnClusterPropsResourcesVpcConfig(**resources_vpc_config) + if isinstance(kubernetes_api_access, dict): + kubernetes_api_access = CfnClusterPropsKubernetesApiAccess(**kubernetes_api_access) + if isinstance(kubernetes_network_config, dict): + kubernetes_network_config = CfnClusterPropsKubernetesNetworkConfig(**kubernetes_network_config) + self._values: typing.Dict[str, typing.Any] = { + \\"resources_vpc_config\\": resources_vpc_config, + \\"role_arn\\": role_arn, + } + if enabled_cluster_logging_types is not None: + self._values[\\"enabled_cluster_logging_types\\"] = enabled_cluster_logging_types + if encryption_config is not None: + self._values[\\"encryption_config\\"] = encryption_config + if kubernetes_api_access is not None: + self._values[\\"kubernetes_api_access\\"] = kubernetes_api_access + if kubernetes_network_config is not None: + self._values[\\"kubernetes_network_config\\"] = kubernetes_network_config + if lambda_role_name is not None: + self._values[\\"lambda_role_name\\"] = lambda_role_name + if name is not None: + self._values[\\"name\\"] = name + if tags is not None: + self._values[\\"tags\\"] = tags + if version is not None: + self._values[\\"version\\"] = version + + @builtins.property + def resources_vpc_config(self) -> \\"CfnClusterPropsResourcesVpcConfig\\": + '''An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :schema: CfnClusterProps#ResourcesVpcConfig + ''' + result = self._values.get(\\"resources_vpc_config\\") + assert result is not None, \\"Required property 'resources_vpc_config' is missing\\" + return typing.cast(\\"CfnClusterPropsResourcesVpcConfig\\", result) + + @builtins.property + def role_arn(self) -> builtins.str: + '''Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. + + This provides permissions for Amazon EKS to call other AWS APIs. + + :schema: CfnClusterProps#RoleArn + ''' + result = self._values.get(\\"role_arn\\") + assert result is not None, \\"Required property 'role_arn' is missing\\" + return typing.cast(builtins.str, result) + + @builtins.property + def enabled_cluster_logging_types( + self, + ) -> typing.Optional[typing.List[builtins.str]]: + '''Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. + + By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + + :schema: CfnClusterProps#EnabledClusterLoggingTypes + ''' + result = self._values.get(\\"enabled_cluster_logging_types\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def encryption_config( + self, + ) -> typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]]: + '''Encryption configuration for the cluster. + + :schema: CfnClusterProps#EncryptionConfig + ''' + result = self._values.get(\\"encryption_config\\") + return typing.cast(typing.Optional[typing.List[\\"EncryptionConfigEntry\\"]], result) + + @builtins.property + def kubernetes_api_access( + self, + ) -> typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"]: + ''' + :schema: CfnClusterProps#KubernetesApiAccess + ''' + result = self._values.get(\\"kubernetes_api_access\\") + return typing.cast(typing.Optional[\\"CfnClusterPropsKubernetesApiAccess\\"], result) + + @builtins.property + def kubernetes_network_config( + self, + ) -> typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"]: + '''Network configuration for Amazon EKS cluster. + + :schema: CfnClusterProps#KubernetesNetworkConfig + ''' + result = self._values.get(\\"kubernetes_network_config\\") + return typing.cast(typing.Optional[\\"CfnClusterPropsKubernetesNetworkConfig\\"], result) + + @builtins.property + def lambda_role_name(self) -> typing.Optional[builtins.str]: + '''Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. + + this provides permissions for Lambda to be invoked and attach to the cluster VPC + + :schema: CfnClusterProps#LambdaRoleName + ''' + result = self._values.get(\\"lambda_role_name\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def name(self) -> typing.Optional[builtins.str]: + '''A unique name for your cluster. + + :schema: CfnClusterProps#Name + ''' + result = self._values.get(\\"name\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def tags(self) -> typing.Optional[typing.List[\\"CfnClusterPropsTags\\"]]: + ''' + :schema: CfnClusterProps#Tags + ''' + result = self._values.get(\\"tags\\") + return typing.cast(typing.Optional[typing.List[\\"CfnClusterPropsTags\\"]], result) + + @builtins.property + def version(self) -> typing.Optional[builtins.str]: + '''Desired Kubernetes version for your cluster. + + If you don't specify this value, the cluster uses the latest version from Amazon EKS. + + :schema: CfnClusterProps#Version + ''' + result = self._values.get(\\"version\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterProps(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesApiAccess\\", + jsii_struct_bases=[], + name_mapping={\\"roles\\": \\"roles\\", \\"users\\": \\"users\\"}, +) +class CfnClusterPropsKubernetesApiAccess: + def __init__( + self, + *, + roles: typing.Optional[typing.Sequence[\\"KubernetesApiAccessEntry\\"]] = None, + users: typing.Optional[typing.Sequence[\\"KubernetesApiAccessEntry\\"]] = None, + ) -> None: + ''' + :param roles: + :param users: + + :schema: CfnClusterPropsKubernetesApiAccess + ''' + self._values: typing.Dict[str, typing.Any] = {} + if roles is not None: + self._values[\\"roles\\"] = roles + if users is not None: + self._values[\\"users\\"] = users + + @builtins.property + def roles(self) -> typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]]: + ''' + :schema: CfnClusterPropsKubernetesApiAccess#Roles + ''' + result = self._values.get(\\"roles\\") + return typing.cast(typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]], result) + + @builtins.property + def users(self) -> typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]]: + ''' + :schema: CfnClusterPropsKubernetesApiAccess#Users + ''' + result = self._values.get(\\"users\\") + return typing.cast(typing.Optional[typing.List[\\"KubernetesApiAccessEntry\\"]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsKubernetesApiAccess(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsKubernetesNetworkConfig\\", + jsii_struct_bases=[], + name_mapping={\\"service_ipv4_cidr\\": \\"serviceIpv4Cidr\\"}, +) +class CfnClusterPropsKubernetesNetworkConfig: + def __init__( + self, + *, + service_ipv4_cidr: typing.Optional[builtins.str] = None, + ) -> None: + '''Network configuration for Amazon EKS cluster. + + :param service_ipv4_cidr: Specify the range from which cluster services will receive IPv4 addresses. + + :schema: CfnClusterPropsKubernetesNetworkConfig + ''' + self._values: typing.Dict[str, typing.Any] = {} + if service_ipv4_cidr is not None: + self._values[\\"service_ipv4_cidr\\"] = service_ipv4_cidr + + @builtins.property + def service_ipv4_cidr(self) -> typing.Optional[builtins.str]: + '''Specify the range from which cluster services will receive IPv4 addresses. + + :schema: CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + ''' + result = self._values.get(\\"service_ipv4_cidr\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsKubernetesNetworkConfig(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsResourcesVpcConfig\\", + jsii_struct_bases=[], + name_mapping={ + \\"subnet_ids\\": \\"subnetIds\\", + \\"endpoint_private_access\\": \\"endpointPrivateAccess\\", + \\"endpoint_public_access\\": \\"endpointPublicAccess\\", + \\"public_access_cidrs\\": \\"publicAccessCidrs\\", + \\"security_group_ids\\": \\"securityGroupIds\\", + }, +) +class CfnClusterPropsResourcesVpcConfig: + def __init__( + self, + *, + subnet_ids: typing.Sequence[builtins.str], + endpoint_private_access: typing.Optional[builtins.bool] = None, + endpoint_public_access: typing.Optional[builtins.bool] = None, + public_access_cidrs: typing.Optional[typing.Sequence[builtins.str]] = None, + security_group_ids: typing.Optional[typing.Sequence[builtins.str]] = None, + ) -> None: + '''An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + + :param subnet_ids: Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + :param endpoint_private_access: Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + :param endpoint_public_access: Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + :param public_access_cidrs: The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + :param security_group_ids: Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + + :schema: CfnClusterPropsResourcesVpcConfig + ''' + self._values: typing.Dict[str, typing.Any] = { + \\"subnet_ids\\": subnet_ids, + } + if endpoint_private_access is not None: + self._values[\\"endpoint_private_access\\"] = endpoint_private_access + if endpoint_public_access is not None: + self._values[\\"endpoint_public_access\\"] = endpoint_public_access + if public_access_cidrs is not None: + self._values[\\"public_access_cidrs\\"] = public_access_cidrs + if security_group_ids is not None: + self._values[\\"security_group_ids\\"] = security_group_ids + + @builtins.property + def subnet_ids(self) -> typing.List[builtins.str]: + '''Specify subnets for your Amazon EKS worker nodes. + + Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + + :schema: CfnClusterPropsResourcesVpcConfig#SubnetIds + ''' + result = self._values.get(\\"subnet_ids\\") + assert result is not None, \\"Required property 'subnet_ids' is missing\\" + return typing.cast(typing.List[builtins.str], result) + + @builtins.property + def endpoint_private_access(self) -> typing.Optional[builtins.bool]: + '''Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. + + If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + + :schema: CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + ''' + result = self._values.get(\\"endpoint_private_access\\") + return typing.cast(typing.Optional[builtins.bool], result) + + @builtins.property + def endpoint_public_access(self) -> typing.Optional[builtins.bool]: + '''Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. + + If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + + :schema: CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + ''' + result = self._values.get(\\"endpoint_public_access\\") + return typing.cast(typing.Optional[builtins.bool], result) + + @builtins.property + def public_access_cidrs(self) -> typing.Optional[typing.List[builtins.str]]: + '''The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. + + Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + + :schema: CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + ''' + result = self._values.get(\\"public_access_cidrs\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def security_group_ids(self) -> typing.Optional[typing.List[builtins.str]]: + '''Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. + + If you don't specify a security group, the default security group for your VPC is used. + + :schema: CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + ''' + result = self._values.get(\\"security_group_ids\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsResourcesVpcConfig(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.CfnClusterPropsTags\\", + jsii_struct_bases=[], + name_mapping={\\"key\\": \\"key\\", \\"value\\": \\"value\\"}, +) +class CfnClusterPropsTags: + def __init__(self, *, key: builtins.str, value: builtins.str) -> None: + ''' + :param key: + :param value: + + :schema: CfnClusterPropsTags + ''' + self._values: typing.Dict[str, typing.Any] = { + \\"key\\": key, + \\"value\\": value, + } + + @builtins.property + def key(self) -> builtins.str: + ''' + :schema: CfnClusterPropsTags#Key + ''' + result = self._values.get(\\"key\\") + assert result is not None, \\"Required property 'key' is missing\\" + return typing.cast(builtins.str, result) + + @builtins.property + def value(self) -> builtins.str: + ''' + :schema: CfnClusterPropsTags#Value + ''' + result = self._values.get(\\"value\\") + assert result is not None, \\"Required property 'value' is missing\\" + return typing.cast(builtins.str, result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"CfnClusterPropsTags(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.EncryptionConfigEntry\\", + jsii_struct_bases=[], + name_mapping={\\"provider\\": \\"provider\\", \\"resources\\": \\"resources\\"}, +) +class EncryptionConfigEntry: + def __init__( + self, + *, + provider: typing.Optional[\\"Provider\\"] = None, + resources: typing.Optional[typing.Sequence[builtins.str]] = None, + ) -> None: + '''The encryption configuration for the cluster. + + :param provider: + :param resources: Specifies the resources to be encrypted. The only supported value is \\"secrets\\". + + :schema: EncryptionConfigEntry + ''' + if isinstance(provider, dict): + provider = Provider(**provider) + self._values: typing.Dict[str, typing.Any] = {} + if provider is not None: + self._values[\\"provider\\"] = provider + if resources is not None: + self._values[\\"resources\\"] = resources + + @builtins.property + def provider(self) -> typing.Optional[\\"Provider\\"]: + ''' + :schema: EncryptionConfigEntry#Provider + ''' + result = self._values.get(\\"provider\\") + return typing.cast(typing.Optional[\\"Provider\\"], result) + + @builtins.property + def resources(self) -> typing.Optional[typing.List[builtins.str]]: + '''Specifies the resources to be encrypted. + + The only supported value is \\"secrets\\". + + :schema: EncryptionConfigEntry#Resources + ''' + result = self._values.get(\\"resources\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"EncryptionConfigEntry(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.KubernetesApiAccessEntry\\", + jsii_struct_bases=[], + name_mapping={\\"arn\\": \\"arn\\", \\"groups\\": \\"groups\\", \\"username\\": \\"username\\"}, +) +class KubernetesApiAccessEntry: + def __init__( + self, + *, + arn: typing.Optional[builtins.str] = None, + groups: typing.Optional[typing.Sequence[builtins.str]] = None, + username: typing.Optional[builtins.str] = None, + ) -> None: + ''' + :param arn: + :param groups: + :param username: + + :schema: KubernetesApiAccessEntry + ''' + self._values: typing.Dict[str, typing.Any] = {} + if arn is not None: + self._values[\\"arn\\"] = arn + if groups is not None: + self._values[\\"groups\\"] = groups + if username is not None: + self._values[\\"username\\"] = username + + @builtins.property + def arn(self) -> typing.Optional[builtins.str]: + ''' + :schema: KubernetesApiAccessEntry#Arn + ''' + result = self._values.get(\\"arn\\") + return typing.cast(typing.Optional[builtins.str], result) + + @builtins.property + def groups(self) -> typing.Optional[typing.List[builtins.str]]: + ''' + :schema: KubernetesApiAccessEntry#Groups + ''' + result = self._values.get(\\"groups\\") + return typing.cast(typing.Optional[typing.List[builtins.str]], result) + + @builtins.property + def username(self) -> typing.Optional[builtins.str]: + ''' + :schema: KubernetesApiAccessEntry#Username + ''' + result = self._values.get(\\"username\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"KubernetesApiAccessEntry(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +@jsii.data_type( + jsii_type=\\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6.Provider\\", + jsii_struct_bases=[], + name_mapping={\\"key_arn\\": \\"keyArn\\"}, +) +class Provider: + def __init__(self, *, key_arn: typing.Optional[builtins.str] = None) -> None: + '''AWS Key Management Service (AWS KMS) customer master key (CMK). + + Either the ARN or the alias can be used. + + :param key_arn: Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + + :schema: Provider + ''' + self._values: typing.Dict[str, typing.Any] = {} + if key_arn is not None: + self._values[\\"key_arn\\"] = key_arn + + @builtins.property + def key_arn(self) -> typing.Optional[builtins.str]: + '''Amazon Resource Name (ARN) or alias of the customer master key (CMK). + + The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + + :schema: Provider#KeyArn + ''' + result = self._values.get(\\"key_arn\\") + return typing.cast(typing.Optional[builtins.str], result) + + def __eq__(self, rhs: typing.Any) -> builtins.bool: + return isinstance(rhs, self.__class__) and rhs._values == self._values + + def __ne__(self, rhs: typing.Any) -> builtins.bool: + return not (rhs == self) + + def __repr__(self) -> str: + return \\"Provider(%s)\\" % \\", \\".join( + k + \\"=\\" + repr(v) for k, v in self._values.items() + ) + + +__all__ = [ + \\"CfnCluster\\", + \\"CfnClusterProps\\", + \\"CfnClusterPropsKubernetesApiAccess\\", + \\"CfnClusterPropsKubernetesNetworkConfig\\", + \\"CfnClusterPropsResourcesVpcConfig\\", + \\"CfnClusterPropsTags\\", + \\"EncryptionConfigEntry\\", + \\"KubernetesApiAccessEntry\\", + \\"Provider\\", +] + +publication.publish() +", + "awsqs_eks_cluster/_jsii/__init__.py" => "import abc +import builtins +import datetime +import enum +import typing + +import jsii +import publication +import typing_extensions + +import aws_cdk.cloud_assembly_schema._jsii +import aws_cdk.core._jsii +import aws_cdk.cx_api._jsii +import aws_cdk.region_info._jsii +import constructs._jsii + +__jsii_assembly__ = jsii.JSIIAssembly.load( + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6\\", + \\"0.0.0\\", + __name__[0:-6], + \\"1bc04b5291c26a46d918139138b992d2de976d6851d0893b0476b85bfbdfc6e6@0.0.0.jsii.tgz\\", +) + +__all__ = [ + \\"__jsii_assembly__\\", +] + +publication.publish() +", + "awsqs_eks_cluster/py.typed" => " +", +} +`; + +exports[`typescript 1`] = ` +Map { + "awsqs-eks-cluster.ts" => "// Generated by cdk-import +import * as cdk from '@aws-cdk/core'; + +/** + * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + * + * @schema CfnClusterProps + */ +export interface CfnClusterProps { + /** + * A unique name for your cluster. + * + * @schema CfnClusterProps#Name + */ + readonly name?: string; + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * + * @schema CfnClusterProps#RoleArn + */ + readonly roleArn: string; + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * + * @schema CfnClusterProps#LambdaRoleName + */ + readonly lambdaRoleName?: string; + + /** + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * + * @schema CfnClusterProps#Version + */ + readonly version?: string; + + /** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterProps#KubernetesNetworkConfig + */ + readonly kubernetesNetworkConfig?: CfnClusterPropsKubernetesNetworkConfig; + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterProps#ResourcesVpcConfig + */ + readonly resourcesVpcConfig: CfnClusterPropsResourcesVpcConfig; + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * + * @schema CfnClusterProps#EnabledClusterLoggingTypes + */ + readonly enabledClusterLoggingTypes?: string[]; + + /** + * Encryption configuration for the cluster. + * + * @schema CfnClusterProps#EncryptionConfig + */ + readonly encryptionConfig?: EncryptionConfigEntry[]; + + /** + * @schema CfnClusterProps#KubernetesApiAccess + */ + readonly kubernetesApiAccess?: CfnClusterPropsKubernetesApiAccess; + + /** + * @schema CfnClusterProps#Tags + */ + readonly tags?: CfnClusterPropsTags[]; + +} + +/** + * Converts an object of type 'CfnClusterProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterProps(obj: CfnClusterProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Name': obj.name, + 'RoleArn': obj.roleArn, + 'LambdaRoleName': obj.lambdaRoleName, + 'Version': obj.version, + 'KubernetesNetworkConfig': toJson_CfnClusterPropsKubernetesNetworkConfig(obj.kubernetesNetworkConfig), + 'ResourcesVpcConfig': toJson_CfnClusterPropsResourcesVpcConfig(obj.resourcesVpcConfig), + 'EnabledClusterLoggingTypes': obj.enabledClusterLoggingTypes?.map(y => y), + 'EncryptionConfig': obj.encryptionConfig?.map(y => toJson_EncryptionConfigEntry(y)), + 'KubernetesApiAccess': toJson_CfnClusterPropsKubernetesApiAccess(obj.kubernetesApiAccess), + 'Tags': obj.tags?.map(y => toJson_CfnClusterPropsTags(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterPropsKubernetesNetworkConfig + */ +export interface CfnClusterPropsKubernetesNetworkConfig { + /** + * Specify the range from which cluster services will receive IPv4 addresses. + * + * @schema CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + */ + readonly serviceIpv4Cidr?: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesNetworkConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesNetworkConfig(obj: CfnClusterPropsKubernetesNetworkConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'ServiceIpv4Cidr': obj.serviceIpv4Cidr, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterPropsResourcesVpcConfig + */ +export interface CfnClusterPropsResourcesVpcConfig { + /** + * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + * + * @schema CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + */ + readonly securityGroupIds?: string[]; + + /** + * Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + * + * @schema CfnClusterPropsResourcesVpcConfig#SubnetIds + */ + readonly subnetIds: string[]; + + /** + * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + */ + readonly endpointPublicAccess?: boolean; + + /** + * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + */ + readonly endpointPrivateAccess?: boolean; + + /** + * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + * + * @schema CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + */ + readonly publicAccessCidrs?: string[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsResourcesVpcConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsResourcesVpcConfig(obj: CfnClusterPropsResourcesVpcConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecurityGroupIds': obj.securityGroupIds?.map(y => y), + 'SubnetIds': obj.subnetIds?.map(y => y), + 'EndpointPublicAccess': obj.endpointPublicAccess, + 'EndpointPrivateAccess': obj.endpointPrivateAccess, + 'PublicAccessCidrs': obj.publicAccessCidrs?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The encryption configuration for the cluster. + * + * @schema EncryptionConfigEntry + */ +export interface EncryptionConfigEntry { + /** + * Specifies the resources to be encrypted. The only supported value is \\"secrets\\". + * + * @schema EncryptionConfigEntry#Resources + */ + readonly resources?: string[]; + + /** + * @schema EncryptionConfigEntry#Provider + */ + readonly provider?: Provider; + +} + +/** + * Converts an object of type 'EncryptionConfigEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EncryptionConfigEntry(obj: EncryptionConfigEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Resources': obj.resources?.map(y => y), + 'Provider': toJson_Provider(obj.provider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsKubernetesApiAccess + */ +export interface CfnClusterPropsKubernetesApiAccess { + /** + * @schema CfnClusterPropsKubernetesApiAccess#Roles + */ + readonly roles?: KubernetesApiAccessEntry[]; + + /** + * @schema CfnClusterPropsKubernetesApiAccess#Users + */ + readonly users?: KubernetesApiAccessEntry[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesApiAccess' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesApiAccess(obj: CfnClusterPropsKubernetesApiAccess | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Roles': obj.roles?.map(y => toJson_KubernetesApiAccessEntry(y)), + 'Users': obj.users?.map(y => toJson_KubernetesApiAccessEntry(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsTags + */ +export interface CfnClusterPropsTags { + /** + * @schema CfnClusterPropsTags#Value + */ + readonly value: string; + + /** + * @schema CfnClusterPropsTags#Key + */ + readonly key: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsTags' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsTags(obj: CfnClusterPropsTags | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Value': obj.value, + 'Key': obj.key, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used. + * + * @schema Provider + */ +export interface Provider { + /** + * Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + * + * @schema Provider#KeyArn + */ + readonly keyArn?: string; + +} + +/** + * Converts an object of type 'Provider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_Provider(obj: Provider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'KeyArn': obj.keyArn, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema KubernetesApiAccessEntry + */ +export interface KubernetesApiAccessEntry { + /** + * @schema KubernetesApiAccessEntry#Arn + */ + readonly arn?: string; + + /** + * @schema KubernetesApiAccessEntry#Username + */ + readonly username?: string; + + /** + * @schema KubernetesApiAccessEntry#Groups + */ + readonly groups?: string[]; + +} + +/** + * Converts an object of type 'KubernetesApiAccessEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubernetesApiAccessEntry(obj: KubernetesApiAccessEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Arn': obj.arn, + 'Username': obj.username, + 'Groups': obj.groups?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * A CloudFormation \`AWSQS::EKS::Cluster\` + * + * @cloudformationResource AWSQS::EKS::Cluster + * @stability external + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ +export class CfnCluster extends cdk.CfnResource { + /** + * The CloudFormation resource type name for this resource class. + */ + public static readonly CFN_RESOURCE_TYPE_NAME = 'AWSQS::EKS::Cluster'; + + /** + * \`AWSQS::EKS::Cluster.Name\` + * A unique name for your cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly name: string | undefined; + /** + * \`AWSQS::EKS::Cluster.RoleArn\` + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly roleArn: string; + /** + * \`AWSQS::EKS::Cluster.LambdaRoleName\` + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly lambdaRoleName: string | undefined; + /** + * \`AWSQS::EKS::Cluster.Version\` + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly version: string | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\` + * Network configuration for Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesNetworkConfig: any | undefined; + /** + * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\` + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly resourcesVpcConfig: any; + /** + * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\` + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly enabledClusterLoggingTypes: string[] | undefined; + /** + * \`AWSQS::EKS::Cluster.EncryptionConfig\` + * Encryption configuration for the cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly encryptionConfig: EncryptionConfigEntry[] | undefined; + /** + * \`AWSQS::EKS::Cluster.KubernetesApiAccess\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesApiAccess: any | undefined; + /** + * \`AWSQS::EKS::Cluster.Tags\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly tags: any[] | undefined; + /** + * Attribute \`AWSQS::EKS::Cluster.Arn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.Endpoint\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEndpoint: string; + /** + * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrClusterSecurityGroupId: string; + /** + * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrCertificateAuthorityData: string; + /** + * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEncryptionConfigKeyArn: string; + /** + * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrOIDCIssuerURL: string; + + /** + * Create a new \`AWSQS::EKS::Cluster\`. + * + * @param scope - scope in which this resource is defined + * @param id - scoped id of the resource + * @param props - resource properties + */ + constructor(scope: cdk.Construct, id: string, props: CfnClusterProps) { + super(scope, id, { type: CfnCluster.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnClusterProps(props)! }); + + this.name = props.name; + this.roleArn = props.roleArn; + this.lambdaRoleName = props.lambdaRoleName; + this.version = props.version; + this.kubernetesNetworkConfig = props.kubernetesNetworkConfig; + this.resourcesVpcConfig = props.resourcesVpcConfig; + this.enabledClusterLoggingTypes = props.enabledClusterLoggingTypes; + this.encryptionConfig = props.encryptionConfig; + this.kubernetesApiAccess = props.kubernetesApiAccess; + this.tags = props.tags; + this.attrArn = cdk.Token.asString(this.getAtt('Arn')); + this.attrEndpoint = cdk.Token.asString(this.getAtt('Endpoint')); + this.attrClusterSecurityGroupId = cdk.Token.asString(this.getAtt('ClusterSecurityGroupId')); + this.attrCertificateAuthorityData = cdk.Token.asString(this.getAtt('CertificateAuthorityData')); + this.attrEncryptionConfigKeyArn = cdk.Token.asString(this.getAtt('EncryptionConfigKeyArn')); + this.attrOIDCIssuerURL = cdk.Token.asString(this.getAtt('OIDCIssuerURL')); + } +}", +} +`; diff --git a/test/fixtures/awsqs-eks-cluster/index.ts b/test/fixtures/awsqs-eks-cluster/index.ts new file mode 100644 index 00000000..bc749404 --- /dev/null +++ b/test/fixtures/awsqs-eks-cluster/index.ts @@ -0,0 +1,488 @@ +// Generated by cdk-import +import * as cdk from '@aws-cdk/core'; + +/** + * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters. + * + * @schema CfnClusterProps + */ +export interface CfnClusterProps { + /** + * A unique name for your cluster. + * + * @schema CfnClusterProps#Name + */ + readonly name?: string; + + /** + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * + * @schema CfnClusterProps#RoleArn + */ + readonly roleArn: string; + + /** + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * + * @schema CfnClusterProps#LambdaRoleName + */ + readonly lambdaRoleName?: string; + + /** + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * + * @schema CfnClusterProps#Version + */ + readonly version?: string; + + /** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterProps#KubernetesNetworkConfig + */ + readonly kubernetesNetworkConfig?: CfnClusterPropsKubernetesNetworkConfig; + + /** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterProps#ResourcesVpcConfig + */ + readonly resourcesVpcConfig: CfnClusterPropsResourcesVpcConfig; + + /** + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * + * @schema CfnClusterProps#EnabledClusterLoggingTypes + */ + readonly enabledClusterLoggingTypes?: string[]; + + /** + * Encryption configuration for the cluster. + * + * @schema CfnClusterProps#EncryptionConfig + */ + readonly encryptionConfig?: EncryptionConfigEntry[]; + + /** + * @schema CfnClusterProps#KubernetesApiAccess + */ + readonly kubernetesApiAccess?: CfnClusterPropsKubernetesApiAccess; + + /** + * @schema CfnClusterProps#Tags + */ + readonly tags?: CfnClusterPropsTags[]; + +} + +/** + * Converts an object of type 'CfnClusterProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterProps(obj: CfnClusterProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Name': obj.name, + 'RoleArn': obj.roleArn, + 'LambdaRoleName': obj.lambdaRoleName, + 'Version': obj.version, + 'KubernetesNetworkConfig': toJson_CfnClusterPropsKubernetesNetworkConfig(obj.kubernetesNetworkConfig), + 'ResourcesVpcConfig': toJson_CfnClusterPropsResourcesVpcConfig(obj.resourcesVpcConfig), + 'EnabledClusterLoggingTypes': obj.enabledClusterLoggingTypes?.map(y => y), + 'EncryptionConfig': obj.encryptionConfig?.map(y => toJson_EncryptionConfigEntry(y)), + 'KubernetesApiAccess': toJson_CfnClusterPropsKubernetesApiAccess(obj.kubernetesApiAccess), + 'Tags': obj.tags?.map(y => toJson_CfnClusterPropsTags(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Network configuration for Amazon EKS cluster. + * + * + * + * @schema CfnClusterPropsKubernetesNetworkConfig + */ +export interface CfnClusterPropsKubernetesNetworkConfig { + /** + * Specify the range from which cluster services will receive IPv4 addresses. + * + * @schema CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr + */ + readonly serviceIpv4Cidr?: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesNetworkConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesNetworkConfig(obj: CfnClusterPropsKubernetesNetworkConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'ServiceIpv4Cidr': obj.serviceIpv4Cidr, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * + * @schema CfnClusterPropsResourcesVpcConfig + */ +export interface CfnClusterPropsResourcesVpcConfig { + /** + * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used. + * + * @schema CfnClusterPropsResourcesVpcConfig#SecurityGroupIds + */ + readonly securityGroupIds?: string[]; + + /** + * Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane. + * + * @schema CfnClusterPropsResourcesVpcConfig#SubnetIds + */ + readonly subnetIds: string[]; + + /** + * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess + */ + readonly endpointPublicAccess?: boolean; + + /** + * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods. + * + * @schema CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess + */ + readonly endpointPrivateAccess?: boolean; + + /** + * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. + * + * @schema CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs + */ + readonly publicAccessCidrs?: string[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsResourcesVpcConfig' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsResourcesVpcConfig(obj: CfnClusterPropsResourcesVpcConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecurityGroupIds': obj.securityGroupIds?.map(y => y), + 'SubnetIds': obj.subnetIds?.map(y => y), + 'EndpointPublicAccess': obj.endpointPublicAccess, + 'EndpointPrivateAccess': obj.endpointPrivateAccess, + 'PublicAccessCidrs': obj.publicAccessCidrs?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The encryption configuration for the cluster. + * + * @schema EncryptionConfigEntry + */ +export interface EncryptionConfigEntry { + /** + * Specifies the resources to be encrypted. The only supported value is "secrets". + * + * @schema EncryptionConfigEntry#Resources + */ + readonly resources?: string[]; + + /** + * @schema EncryptionConfigEntry#Provider + */ + readonly provider?: Provider; + +} + +/** + * Converts an object of type 'EncryptionConfigEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EncryptionConfigEntry(obj: EncryptionConfigEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Resources': obj.resources?.map(y => y), + 'Provider': toJson_Provider(obj.provider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsKubernetesApiAccess + */ +export interface CfnClusterPropsKubernetesApiAccess { + /** + * @schema CfnClusterPropsKubernetesApiAccess#Roles + */ + readonly roles?: KubernetesApiAccessEntry[]; + + /** + * @schema CfnClusterPropsKubernetesApiAccess#Users + */ + readonly users?: KubernetesApiAccessEntry[]; + +} + +/** + * Converts an object of type 'CfnClusterPropsKubernetesApiAccess' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsKubernetesApiAccess(obj: CfnClusterPropsKubernetesApiAccess | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Roles': obj.roles?.map(y => toJson_KubernetesApiAccessEntry(y)), + 'Users': obj.users?.map(y => toJson_KubernetesApiAccessEntry(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema CfnClusterPropsTags + */ +export interface CfnClusterPropsTags { + /** + * @schema CfnClusterPropsTags#Value + */ + readonly value: string; + + /** + * @schema CfnClusterPropsTags#Key + */ + readonly key: string; + +} + +/** + * Converts an object of type 'CfnClusterPropsTags' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_CfnClusterPropsTags(obj: CfnClusterPropsTags | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Value': obj.value, + 'Key': obj.key, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used. + * + * @schema Provider + */ +export interface Provider { + /** + * Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK. + * + * @schema Provider#KeyArn + */ + readonly keyArn?: string; + +} + +/** + * Converts an object of type 'Provider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_Provider(obj: Provider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'KeyArn': obj.keyArn, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema KubernetesApiAccessEntry + */ +export interface KubernetesApiAccessEntry { + /** + * @schema KubernetesApiAccessEntry#Arn + */ + readonly arn?: string; + + /** + * @schema KubernetesApiAccessEntry#Username + */ + readonly username?: string; + + /** + * @schema KubernetesApiAccessEntry#Groups + */ + readonly groups?: string[]; + +} + +/** + * Converts an object of type 'KubernetesApiAccessEntry' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubernetesApiAccessEntry(obj: KubernetesApiAccessEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'Arn': obj.arn, + 'Username': obj.username, + 'Groups': obj.groups?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * A CloudFormation `AWSQS::EKS::Cluster` + * + * @cloudformationResource AWSQS::EKS::Cluster + * @stability external + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ +export class CfnCluster extends cdk.CfnResource { + /** + * The CloudFormation resource type name for this resource class. + */ + public static readonly CFN_RESOURCE_TYPE_NAME = 'AWSQS::EKS::Cluster'; + + /** + * `AWSQS::EKS::Cluster.Name` + * A unique name for your cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly name: string | undefined; + /** + * `AWSQS::EKS::Cluster.RoleArn` + * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly roleArn: string; + /** + * `AWSQS::EKS::Cluster.LambdaRoleName` + * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly lambdaRoleName: string | undefined; + /** + * `AWSQS::EKS::Cluster.Version` + * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly version: string | undefined; + /** + * `AWSQS::EKS::Cluster.KubernetesNetworkConfig` + * Network configuration for Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesNetworkConfig: any | undefined; + /** + * `AWSQS::EKS::Cluster.ResourcesVpcConfig` + * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly resourcesVpcConfig: any; + /** + * `AWSQS::EKS::Cluster.EnabledClusterLoggingTypes` + * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly enabledClusterLoggingTypes: string[] | undefined; + /** + * `AWSQS::EKS::Cluster.EncryptionConfig` + * Encryption configuration for the cluster. + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly encryptionConfig: EncryptionConfigEntry[] | undefined; + /** + * `AWSQS::EKS::Cluster.KubernetesApiAccess` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly kubernetesApiAccess: any | undefined; + /** + * `AWSQS::EKS::Cluster.Tags` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly tags: any[] | undefined; + /** + * Attribute `AWSQS::EKS::Cluster.Arn` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrArn: string; + /** + * Attribute `AWSQS::EKS::Cluster.Endpoint` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEndpoint: string; + /** + * Attribute `AWSQS::EKS::Cluster.ClusterSecurityGroupId` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrClusterSecurityGroupId: string; + /** + * Attribute `AWSQS::EKS::Cluster.CertificateAuthorityData` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrCertificateAuthorityData: string; + /** + * Attribute `AWSQS::EKS::Cluster.EncryptionConfigKeyArn` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrEncryptionConfigKeyArn: string; + /** + * Attribute `AWSQS::EKS::Cluster.OIDCIssuerURL` + * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git + */ + public readonly attrOIDCIssuerURL: string; + + /** + * Create a new `AWSQS::EKS::Cluster`. + * + * @param scope - scope in which this resource is defined + * @param id - scoped id of the resource + * @param props - resource properties + */ + constructor(scope: cdk.Construct, id: string, props: CfnClusterProps) { + super(scope, id, { type: CfnCluster.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnClusterProps(props)! }); + + this.name = props.name; + this.roleArn = props.roleArn; + this.lambdaRoleName = props.lambdaRoleName; + this.version = props.version; + this.kubernetesNetworkConfig = props.kubernetesNetworkConfig; + this.resourcesVpcConfig = props.resourcesVpcConfig; + this.enabledClusterLoggingTypes = props.enabledClusterLoggingTypes; + this.encryptionConfig = props.encryptionConfig; + this.kubernetesApiAccess = props.kubernetesApiAccess; + this.tags = props.tags; + this.attrArn = cdk.Token.asString(this.getAtt('Arn')); + this.attrEndpoint = cdk.Token.asString(this.getAtt('Endpoint')); + this.attrClusterSecurityGroupId = cdk.Token.asString(this.getAtt('ClusterSecurityGroupId')); + this.attrCertificateAuthorityData = cdk.Token.asString(this.getAtt('CertificateAuthorityData')); + this.attrEncryptionConfigKeyArn = cdk.Token.asString(this.getAtt('EncryptionConfigKeyArn')); + this.attrOIDCIssuerURL = cdk.Token.asString(this.getAtt('OIDCIssuerURL')); + } +} \ No newline at end of file diff --git a/test/languages.test.ts b/test/languages.test.ts new file mode 100644 index 00000000..ea43d524 --- /dev/null +++ b/test/languages.test.ts @@ -0,0 +1,53 @@ +import * as fs from 'fs/promises'; +import { tmpdir } from 'os'; +import { join } from 'path'; +import { renderCode, SUPPORTED_LANGUAGES } from '../src/languages'; + +jest.setTimeout(5 * 60 * 1000); + +test.each(SUPPORTED_LANGUAGES)('%s', async language => { + const outdir = join(tmpdir(), 'cdk-import-test'); + + await renderCode({ + language: language, + srcdir: join(__dirname, 'fixtures', 'awsqs-eks-cluster'), + typeName: 'AWSQS::EKS::Cluster', + outdir: outdir, + goModule: 'github.com/my/module', + javaPacakge: 'com.my.module', + }); + + const out = await captureDirectory(outdir); + expect(out).toMatchSnapshot(); +}); + +/** + * Creates a map of all the files in a directory and its subdirectories and + * their content so it can be used as a snapshot. + */ +async function captureDirectory(base: string) { + const files = new Map(); + + const walk = async (reldir: string = '.') => { + const entries = await fs.readdir(join(base, reldir)); + for (const entry of entries) { + // skip binary files + if (entry.endsWith('.tar.gz') || entry.endsWith('.zip') || entry.endsWith('.tgz')) { + continue; + } + + const relpath = join(reldir, entry); + const abspath = join(base, relpath); + const stat = await fs.stat(abspath); + if (stat.isDirectory()) { + await walk(relpath); + } else { + files.set(relpath, await fs.readFile(abspath, 'utf-8')); + } + } + }; + + await walk(); + + return files; +} diff --git a/test/util.test.ts b/test/util.test.ts index 245c7969..5c879436 100644 --- a/test/util.test.ts +++ b/test/util.test.ts @@ -6,10 +6,3 @@ test('should sanitize type names correctly', () => { expect(testee.sanitizeTypeName('Vendor::ServiceName')).toBe('Servicename'); expect(testee.sanitizeTypeName('Vendor::ServiceName::Resource')).toBe('Resource'); }); - -test('should sanitize file names correctly', () => { - expect(testee.sanitizeFileName('Vendor::Service')).toBe('vendor-service.ts'); - expect(testee.sanitizeFileName('Vendor::Service::Resource')).toBe('vendor-service-resource.ts'); - expect(testee.sanitizeFileName('Vendor::ServiceName')).toBe('vendor-servicename.ts'); - expect(testee.sanitizeFileName('Vendor::ServiceName::Resource')).toBe('vendor-servicename-resource.ts'); -}); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index bc527a75..6de3483f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -600,6 +600,21 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jsii/check-node@1.35.0": + version "1.35.0" + resolved "https://registry.yarnpkg.com/@jsii/check-node/-/check-node-1.35.0.tgz#988aaeee0aa0b829f3d58534b1faa30f5cc98168" + integrity sha512-fnybJqSJx6qLi5Qk5ji1qGGJNW/UGlxz7PglLMiq6rtTCiFmIsn3DF1Rr2HJq7Wz69wdka8SqQ7n3rxUA45Ulw== + dependencies: + chalk "^4.1.2" + semver "^7.3.5" + +"@jsii/spec@^1.35.0": + version "1.35.0" + resolved "https://registry.yarnpkg.com/@jsii/spec/-/spec-1.35.0.tgz#27ae3f3c6aa05ca5959078437cf574d1540b2bbc" + integrity sha512-zcOdxDKztpe4w/X/aosP3ChPjCsqF82xlk7LyCJwspK333sOIy6ChhIMDOu16ba9iZyQ6DoDy4s1UfFPqZRIlw== + dependencies: + jsonschema "^1.4.0" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -978,6 +993,11 @@ "@typescript-eslint/types" "4.32.0" eslint-visitor-keys "^2.0.0" +"@xmldom/xmldom@^0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d" + integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A== + JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -1243,6 +1263,11 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + aws-sdk-mock@^5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/aws-sdk-mock/-/aws-sdk-mock-5.4.0.tgz#1c7abbcb128972f0a3a475d08eff9c67b82a04a9" @@ -1497,7 +1522,7 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -1512,6 +1537,11 @@ caniuse-lite@^1.0.30001261: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001264.tgz#88f625a60efb6724c7c62ac698bc8dbd9757e55b" integrity sha512-Ftfqqfcs/ePiUmyaySsQ4PUsdcYyXG2rfoBVsk3iY1ahHaJEw65vfb7Suzqm+cEkwwPIv/XWkg27iCpRavH4zA== +case@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" + integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1581,6 +1611,15 @@ cli-table@^0.3.6: dependencies: colors "1.0.3" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -1597,6 +1636,11 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1607,6 +1651,15 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +codemaker@^1.35.0: + version "1.35.0" + resolved "https://registry.yarnpkg.com/codemaker/-/codemaker-1.35.0.tgz#4f486f66f534af79aab29752831b375461aa1968" + integrity sha512-CJTtcTtaHpOl7+N76qF8GIsDJCa8d7xhtMGuL72zdG9X9xvO/aOQc1GA49g4J0qaUSLA8TjIyyL8vgOyUnAlwQ== + dependencies: + camelcase "^6.2.0" + decamelize "^5.0.0" + fs-extra "^9.1.0" + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -1641,6 +1694,11 @@ colors@1.0.3: resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= +colors@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -1653,6 +1711,16 @@ commander@^6.2.1: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commonmark@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.30.0.tgz#38811dc7bbf0f59d277ae09054d4d73a332f2e45" + integrity sha512-j1yoUo4gxPND1JWV9xj5ELih0yMv1iCWDG6eEQIPLSWLxzCXiFoyS7kvB+WwU+tZMf4snwJMMtaubV0laFpiBA== + dependencies: + entities "~2.0" + mdurl "~1.0.1" + minimist ">=1.2.2" + string.prototype.repeat "^0.2.0" + compare-func@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" @@ -1949,6 +2017,16 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +date-format@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf" + integrity sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA== + +date-format@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-3.0.0.tgz#eb8780365c7d2b1511078fb491e6479780f3ad95" + integrity sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w== + dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -1983,7 +2061,7 @@ decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0: +decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1993,6 +2071,11 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decamelize@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.1.tgz#db11a92e58c741ef339fb0a2868d8a06a9a7b1e9" + integrity sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA== + decimal.js@^10.2.1: version "10.3.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" @@ -2010,6 +2093,27 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +deep-equal@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9" + integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw== + dependencies: + call-bind "^1.0.0" + es-get-iterator "^1.1.1" + get-intrinsic "^1.0.1" + is-arguments "^1.0.4" + is-date-object "^1.0.2" + is-regex "^1.1.1" + isarray "^2.0.5" + object-is "^1.1.4" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.3" + which-boxed-primitive "^1.0.1" + which-collection "^1.0.1" + which-typed-array "^1.1.2" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -2062,11 +2166,21 @@ depd@^1.1.2, depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + detect-indent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + detect-newline@^3.0.0, detect-newline@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -2192,6 +2306,11 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" +entities@~2.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -2235,6 +2354,44 @@ es-abstract@^1.18.0-next.2, es-abstract@^1.18.2, es-abstract@^1.19.0: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-abstract@^1.18.5: + version "1.18.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.7.tgz#122daaa523d0a10b0f1be8ed4ce1ee68330c5bb2" + integrity sha512-uFG1gyVX91tZIiDWNmPsL8XNpiCk/6tkB7MZphoSJflS4w+KgWyQ2gjCVDnsPxFAo9WjRXG3eqONNYdfbJjAtw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-string "^1.0.7" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-get-iterator@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" + integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.0" + has-symbols "^1.0.1" + is-arguments "^1.1.0" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.5" + isarray "^2.0.5" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2628,11 +2785,21 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" +flatted@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + flatted@^3.1.0: version "3.2.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -2741,12 +2908,12 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.5: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -3198,6 +3365,14 @@ ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +is-arguments@^1.0.4, is-arguments@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -3244,7 +3419,7 @@ is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.6.0: dependencies: has "^1.0.3" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -3298,6 +3473,11 @@ is-lambda@^1.0.1: resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + is-negative-zero@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" @@ -3340,7 +3520,7 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-regex@^1.1.4: +is-regex@^1.1.1, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -3348,6 +3528,11 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + is-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" @@ -3379,11 +3564,27 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" +is-typed-array@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" + integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^1.0.0" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + is-weakref@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" @@ -3391,6 +3592,11 @@ is-weakref@^1.0.1: dependencies: call-bind "^1.0.0" +is-weakset@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" + integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== + is-yarn-global@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" @@ -3406,6 +3612,11 @@ isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -3974,6 +4185,80 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsii-pacmak@^1.34.0: + version "1.35.0" + resolved "https://registry.yarnpkg.com/jsii-pacmak/-/jsii-pacmak-1.35.0.tgz#2fdd0a6076f788fa61b539f6c2104cae465ca321" + integrity sha512-UF9GSG+FBzk+vpcCsFMrgC8yAtPeWG6jJwmNyYVsDj5byHPl9p8QCfbeNxDRzhKJukIO9K/iUlatjn+PvKXj1A== + dependencies: + "@jsii/check-node" "1.35.0" + "@jsii/spec" "^1.35.0" + clone "^2.1.2" + codemaker "^1.35.0" + commonmark "^0.30.0" + escape-string-regexp "^4.0.0" + fs-extra "^9.1.0" + jsii-reflect "^1.35.0" + jsii-rosetta "^1.35.0" + semver "^7.3.5" + spdx-license-list "^6.4.0" + xmlbuilder "^15.1.1" + yargs "^16.2.0" + +jsii-reflect@^1.35.0: + version "1.35.0" + resolved "https://registry.yarnpkg.com/jsii-reflect/-/jsii-reflect-1.35.0.tgz#ce40b24e5b2ba40ecd6fd5ba82d6583008f6db15" + integrity sha512-DVSAwbhydNpJoU1/Mj5Mnr8vuJnkCoQCHoBBfR5V1+CmswbPshzK/9fbdtIlSCGxjBKRlW83RBZqP0ON6hvPig== + dependencies: + "@jsii/check-node" "1.35.0" + "@jsii/spec" "^1.35.0" + colors "^1.4.0" + fs-extra "^9.1.0" + oo-ascii-tree "^1.35.0" + yargs "^16.2.0" + +jsii-rosetta@^1.35.0: + version "1.35.0" + resolved "https://registry.yarnpkg.com/jsii-rosetta/-/jsii-rosetta-1.35.0.tgz#17c662485d455d30999d55042e9e5c88e5801052" + integrity sha512-AKk7llmUmheKDIQXBRXlmHd5B+BU+Si3jpsfZzFdTpU2qR+yvIZ00XpWWnX+zpyKebOaMwAI+R+5DhsrRZ2GBQ== + dependencies: + "@jsii/check-node" "1.35.0" + "@jsii/spec" "^1.35.0" + "@xmldom/xmldom" "^0.7.5" + commonmark "^0.30.0" + fs-extra "^9.1.0" + typescript "~3.9.10" + yargs "^16.2.0" + +jsii-srcmak@^0.1.357: + version "0.1.357" + resolved "https://registry.yarnpkg.com/jsii-srcmak/-/jsii-srcmak-0.1.357.tgz#52bd1091ac949fce58f84edc36613cf8371a2c5a" + integrity sha512-J7+bWGLFLkUQw9uSKJsuKu7RjkM0FSNJCMiC7j4reKAYuPGtmz+a9FMcnPfW2RJK6MwgM4YfTBhoXqhf4IlsFA== + dependencies: + fs-extra "^9.1.0" + jsii "^1.34.0" + jsii-pacmak "^1.34.0" + ncp "^2.0.0" + yargs "^15.4.1" + +jsii@^1.34.0: + version "1.35.0" + resolved "https://registry.yarnpkg.com/jsii/-/jsii-1.35.0.tgz#f1b393694a3aec5d6a8541d004331669b9f2d4d1" + integrity sha512-uk3lk/8b6q0nmKOUTDp5RKzzPEuES7Im+5GxGbvwPo9TjRzZ0VMfiePNYFPwwkw5BTId80ssumq3VOFelxPJ2Q== + dependencies: + "@jsii/check-node" "1.35.0" + "@jsii/spec" "^1.35.0" + case "^1.6.3" + colors "^1.4.0" + deep-equal "^2.0.5" + fs-extra "^9.1.0" + log4js "^6.3.0" + semver "^7.3.5" + semver-intersect "^1.4.0" + sort-json "^2.0.0" + spdx-license-list "^6.4.0" + typescript "~3.9.10" + yargs "^16.2.0" + json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" @@ -4224,6 +4509,17 @@ lodash@4.x, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.7.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log4js@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.3.0.tgz#10dfafbb434351a3e30277a00b9879446f715bcb" + integrity sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw== + dependencies: + date-format "^3.0.0" + debug "^4.1.1" + flatted "^2.0.1" + rfdc "^1.1.4" + streamroller "^2.2.4" + lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" @@ -4306,6 +4602,11 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +mdurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + meow@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -4384,7 +4685,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: +minimist@>=1.2.2, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -4486,6 +4787,11 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +ncp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= + negotiator@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -4728,6 +5034,14 @@ object-inspect@^1.11.0, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== +object-is@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -4766,6 +5080,11 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +oo-ascii-tree@^1.35.0: + version "1.35.0" + resolved "https://registry.yarnpkg.com/oo-ascii-tree/-/oo-ascii-tree-1.35.0.tgz#d59dc2b4c9670adb047140982e8d35153d8c4c68" + integrity sha512-1cvFhd6oN+ZRC2ZdkBRlO7bYr0C9O5DZOntwCFYX0nS3zG6CmnpwwVdwh8o3rArf6eL5U21/UKSujWQPpSCapw== + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -5330,6 +5649,14 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +regexp.prototype.flags@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + regexpp@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" @@ -5390,6 +5717,11 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -5432,6 +5764,11 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rfdc@^1.1.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -5485,12 +5822,19 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" +semver-intersect@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.4.0.tgz#bdd9c06bedcdd2fedb8cd352c3c43ee8c61321f3" + integrity sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ== + dependencies: + semver "^5.0.0" + semver-utils@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2" integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA== -"semver@2 || 3 || 4 || 5": +"semver@2 || 3 || 4 || 5", semver@^5.0.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -5507,7 +5851,7 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -set-blocking@~2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -5546,7 +5890,7 @@ shx@^0.3.3: minimist "^1.2.3" shelljs "^0.8.4" -side-channel@^1.0.4: +side-channel@^1.0.3, side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== @@ -5630,6 +5974,15 @@ socks@^2.3.3, socks@^2.6.1: ip "^1.1.5" smart-buffer "^4.1.0" +sort-json@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-json/-/sort-json-2.0.0.tgz#a7030d8875adbd4a5ea39a000567ed94c1aa3c50" + integrity sha512-OgXPErPJM/rBK5OhzIJ+etib/BmLQ1JY55Nb/ElhoWUec62pXNF/X6DrecHq3NW5OAGX0KxYD7m0HtgB9dvGeA== + dependencies: + detect-indent "^5.0.0" + detect-newline "^2.1.0" + minimist "^1.2.0" + source-map-support@^0.5.6: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" @@ -5684,6 +6037,11 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== +spdx-license-list@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/spdx-license-list/-/spdx-license-list-6.4.0.tgz#9850c3699c1d35745285607d064d2a5145049d12" + integrity sha512-4BxgJ1IZxTJuX1YxMGu2cRYK46Bk9zJNTK2/R0wNZR0cm+6SVl26/uG7FQmQtxoJQX1uZ0EpTi2L7zvMLboaBA== + split2@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -5758,6 +6116,15 @@ standard-version@^9: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +streamroller@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-2.2.4.tgz#c198ced42db94086a6193608187ce80a5f2b0e53" + integrity sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ== + dependencies: + date-format "^2.1.0" + debug "^4.1.1" + fs-extra "^8.1.0" + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -5792,6 +6159,11 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2 is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.repeat@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" + integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8= + string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" @@ -6195,6 +6567,11 @@ typescript@^4.4.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== +typescript@~3.9.10: + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== + uglify-js@^3.1.4: version "3.14.2" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.2.tgz#d7dd6a46ca57214f54a2d0a43cad0f35db82ac99" @@ -6403,7 +6780,7 @@ whatwg-url@^8.0.0, whatwg-url@^8.5.0: tr46 "^2.1.0" webidl-conversions "^6.1.0" -which-boxed-primitive@^1.0.2: +which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== @@ -6414,6 +6791,33 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which-typed-array@^1.1.2: + version "1.1.7" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" + integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.7" + which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -6445,6 +6849,15 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -6508,6 +6921,11 @@ xmlbuilder2@^2.4.1: "@types/node" "*" js-yaml "3.14.0" +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + xmlbuilder@~9.0.1: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" @@ -6528,6 +6946,11 @@ xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -6553,6 +6976,31 @@ yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^16.0.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"