From 53f21e2d6c5adc2c813d92d8e4456188b8d44c84 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 27 Dec 2024 17:30:38 +0000 Subject: [PATCH 1/8] feat(datasource): add aws-eks datasource Signed-off-by: ivan katliarchuk --- lib/modules/datasource/api.ts | 2 + lib/modules/datasource/aws-eks/index.spec.ts | 137 +++++ lib/modules/datasource/aws-eks/index.ts | 76 +++ lib/modules/datasource/aws-eks/readme.md | 124 ++++ lib/modules/datasource/aws-eks/schema.spec.ts | 21 + lib/modules/datasource/aws-eks/schema.ts | 24 + lib/util/cache/package/types.ts | 1 + package.json | 1 + pnpm-lock.yaml | 541 +++++++++++++++++- 9 files changed, 919 insertions(+), 8 deletions(-) create mode 100644 lib/modules/datasource/aws-eks/index.spec.ts create mode 100644 lib/modules/datasource/aws-eks/index.ts create mode 100644 lib/modules/datasource/aws-eks/readme.md create mode 100644 lib/modules/datasource/aws-eks/schema.spec.ts create mode 100644 lib/modules/datasource/aws-eks/schema.ts diff --git a/lib/modules/datasource/api.ts b/lib/modules/datasource/api.ts index e7284442c0a36b..b9a2cb9ff8af0b 100644 --- a/lib/modules/datasource/api.ts +++ b/lib/modules/datasource/api.ts @@ -1,4 +1,5 @@ import { ArtifactoryDatasource } from './artifactory'; +import { AwsEKSDataSource } from './aws-eks'; import { AwsMachineImageDatasource } from './aws-machine-image'; import { AwsRdsDatasource } from './aws-rds'; import { AzureBicepResourceDatasource } from './azure-bicep-resource'; @@ -70,6 +71,7 @@ const api = new Map(); export default api; api.set(ArtifactoryDatasource.id, new ArtifactoryDatasource()); +api.set(AwsEKSDataSource.id, new AwsEKSDataSource()); api.set(AwsMachineImageDatasource.id, new AwsMachineImageDatasource()); api.set(AwsRdsDatasource.id, new AwsRdsDatasource()); api.set(AzureBicepResourceDatasource.id, new AzureBicepResourceDatasource()); diff --git a/lib/modules/datasource/aws-eks/index.spec.ts b/lib/modules/datasource/aws-eks/index.spec.ts new file mode 100644 index 00000000000000..bb3178b90f579c --- /dev/null +++ b/lib/modules/datasource/aws-eks/index.spec.ts @@ -0,0 +1,137 @@ +import { + DescribeClusterVersionsCommand, + type DescribeClusterVersionsCommandOutput, + EKSClient, +} from '@aws-sdk/client-eks'; +import { mockClient } from 'aws-sdk-client-mock'; +import { logger } from '../../../../test/util'; +import { getPkgReleases } from '../index'; +import { AwsEKSDataSource } from '.'; + +const datasource = AwsEKSDataSource.id; +const eksMock = mockClient(EKSClient); + +describe('modules/datasource/aws-eks/index', () => { + beforeEach(() => { + eksMock.reset(); + }); + + describe('getReleases()', () => { + it('should return releases when the response is valid', async () => { + const mockResponse: DescribeClusterVersionsCommandOutput = { + $metadata: {}, + clusterVersions : [ + { + clusterVersion: '1.21', + releaseDate: new Date(new Date().setMonth(new Date().getMonth() - 24)), + endOfStandardSupportDate: new Date(new Date().setMonth(new Date().getMonth() + 10)), + }, + ], + }; + + eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); + + const result = await getPkgReleases({ datasource, packageName: '{}' }); + + expect(result?.releases).toHaveLength(1) + expect(result).toEqual({ + releases: [ + { + version: '1.21', + }, + ], + }); + + expect(eksMock.calls()).toHaveLength(1); + expect(eksMock.call(0).args[0].input).toEqual({}); + }); + + it('should return null and log an error when the filter is invalid', async () => { + const invalidFilter = '{ invalid json }'; + const actual = await getPkgReleases({ datasource, packageName: invalidFilter }); + expect(actual).toBeNull(); + expect(logger.logger.error).toHaveBeenCalledTimes(1); + }); + + it('should return default cluster only', async () => { + const mockResponse: DescribeClusterVersionsCommandOutput = { + $metadata: {}, + clusterVersions: [ + { + clusterVersion: '1.31', + defaultVersion: true, + status: 'standard-support', + }, + ], + }; + eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); + + const actual = await getPkgReleases( + { datasource, packageName: '{"default":"true", "region":"eu-west-1"}' } + ); + + expect(eksMock.calls()).toHaveLength(1); + expect(eksMock.call(0).args[0].input).toEqual({"defaultOnly": true}); + + expect(actual).toEqual({ + releases: [ + { + version: '1.31', + }, + ], + }); + }); + + it('should return default and non-default cluster when default:false', async () => { + const mockResponse: DescribeClusterVersionsCommandOutput = { + $metadata: {}, + clusterVersions: [ + { + clusterVersion: '1.31', + defaultVersion: true, + }, + { + clusterVersion: '1.30', + defaultVersion: false, + }, + { + clusterVersion: '1.29', + defaultVersion: false, + }, + ], + }; + eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); + + const actual = await getPkgReleases( + { datasource, packageName: '{"default":"false", "region":"eu-west-1", "profile":"admin"}' } + ); + + expect(eksMock.calls()).toHaveLength(1); + expect(eksMock.call(0).args[0].input).toEqual({"defaultOnly": false}); + + expect(actual).toEqual({ + releases: [ + { version: '1.29' }, + { version: '1.30' }, + { version: '1.31' }, + ], + }); + }); + + it('should return empty response', async () => { + const mockResponse: DescribeClusterVersionsCommandOutput = { + $metadata: {}, + clusterVersions: [], + }; + eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); + + const actual = await getPkgReleases( + { datasource, packageName: '{"profile":"not-exist-profile"}' } + ); + + expect(eksMock.calls()).toHaveLength(1); + expect(eksMock.call(0).args[0].input).toEqual({}); + expect(actual).toBeNull(); + }); + }); +}); diff --git a/lib/modules/datasource/aws-eks/index.ts b/lib/modules/datasource/aws-eks/index.ts new file mode 100644 index 00000000000000..1fcfd73a712731 --- /dev/null +++ b/lib/modules/datasource/aws-eks/index.ts @@ -0,0 +1,76 @@ +import { + type ClusterVersionInformation, + DescribeClusterVersionsCommand, + type DescribeClusterVersionsCommandInput, + type DescribeClusterVersionsCommandOutput, + EKSClient, +} from "@aws-sdk/client-eks"; + +import { fromNodeProviderChain } from '@aws-sdk/credential-providers'; +import { logger } from '../../../logger'; +import { cache } from '../../../util/cache/package/decorator'; +import { Datasource } from '../datasource'; +import type { GetReleasesConfig, ReleaseResult } from '../types'; +import { EksFilter } from './schema'; + +export class AwsEKSDataSource extends Datasource { + static readonly id = 'aws-eks'; + + override readonly caching = true; + private readonly clients: Record = {}; + + override readonly releaseTimestampSupport = true; + override readonly releaseTimestampNote = + 'The release timestamp is determined from the `endOfStandardSupportDate` field in the results.'; + + override readonly defaultConfig: Record | undefined = { + commitMessageTopic: '{{{datasource}}}', + commitMessageExtra: '{{{currentVersion}}} to {{{newVersion}}}', + }; + + constructor() { + super(AwsEKSDataSource.id); + } + + @cache({ + namespace: `datasource-${AwsEKSDataSource.id}`, + key: ({ packageName }: GetReleasesConfig) => `getReleases:${packageName}`, + }) + async getReleases({ + packageName: serializedFilter, + }: GetReleasesConfig): Promise { + const res = EksFilter.safeParse(serializedFilter); + if (!res.success) { + logger.error( + { err: res.error, serializedFilter }, + 'Error parsing eks config.', + ); + return null; + } + + const input: DescribeClusterVersionsCommandInput = { + defaultOnly: res.data.default ?? undefined, + }; + const cmd = new DescribeClusterVersionsCommand(input) + const response: DescribeClusterVersionsCommandOutput = await this.getClient(res.data).send(cmd) + const results: ClusterVersionInformation[] = response.clusterVersions ?? []; + return { + releases: results + .filter((el): el is ClusterVersionInformation & { clusterVersion: string } => Boolean(el.clusterVersion)) + .map((el) => ({ + version: el.clusterVersion, + })), + }; + } + + private getClient({ region, profile }: EksFilter): EKSClient { + const cacheKey = `${region ?? 'default'}#${profile ?? 'default'}`; + if (!(cacheKey in this.clients)) { + this.clients[cacheKey] = new EKSClient({ + region: region ?? undefined, + credentials: fromNodeProviderChain(profile ? { profile } : undefined), + }); + } + return this.clients[cacheKey]; + } +} diff --git a/lib/modules/datasource/aws-eks/readme.md b/lib/modules/datasource/aws-eks/readme.md new file mode 100644 index 00000000000000..999e40e18dd52a --- /dev/null +++ b/lib/modules/datasource/aws-eks/readme.md @@ -0,0 +1,124 @@ +The EKS `datasource` is designed to query one or more [AWS EKS](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) via the AWS API. + +**AWS API configuration** + +Since the datasource uses the AWS SDK for JavaScript, you can configure it like other AWS Tools. +You can use common AWS configuration options, for example: + +- Specifies the AWS region where your resources are located. This is crucial for routing requests to the correct endpoint. + - Set the region via the `AWS_REGION` environment variable + - Pass the `region` option to Renovate +- Read credentials from environment variables (e.g., `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`). +- Load credentials from the shared credentials file (~/.aws/credentials). +- Use IAM roles for EC2 instances or Lambda functions. +- A chain of credential providers that the SDK attempts in order. + +The minimal IAM privileges required for this datasource are: + +```json +{ + "Effect": "Allow", + "Action": ["eks:DescribeClusterVersions"], + "Resource": "*" +} +``` + +Read the [AWS EKS IAM reference](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html) for more information. + +**Usage** + +Because Renovate has no manager for the AWS EKS datasource, you need to help Renovate by configuring the custom manager to identify the AWS EKS configuration you want updated. + +Configuration Options + +```yaml +# discover all available eks versions. +renovate: eksFilter={} + +# discover default eks versions +renovate: eksFilter={"default":true} + +# discover all available eks versions in us-east-1 region using environmental AWS credentials. Region is a recommended option. +renovate: eksFilter={"region":"eu-west-1"} + +# discover all available eks versions in us-east-1 region using AWS credentials from `renovate-east` profile. +renovate: eksFilter={"region":"us-east-1","profile":"renovate-east"} +``` + +```json +{ + "packageRules": [ + { + "matchDatasources": ["aws-eks"], + "prBodyColumns": [ + "Package", + "Update", + "Change", + "Sources", + "Changelog" + ], + "prBodyDefinitions": { + "Sources": "[▶️](https://github.com/aws/eks-distro/)", + "Changelog": "[▶️](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-{{{newVersion}}}.md)", + } + } + ], + "customManagers": [ + { + "customType": "regex", + "fileMatch": [".*\\.tf"], + "matchStrings": [ + ".*# renovate: eksFilter=(?.*?)\n.*?[a-zA-Z0-9-_:]*[ ]*?[:|=][ ]*?[\"|']?(?[a-zA-Z0-9-_.]+)[\"|']?.*" + ], + "datasourceTemplate": "aws-eks", + "versioningTemplate": "loose" // aws-eks versioning is not yet supported + } + ] +} +``` + +The configuration above matches every terraform file, and recognizes these lines: + +```hcl +variable "eks_version" { + type = string + description = "EKS vpc-cni add-on version" + # region provided + # renovate: eksFilter={"region":"eu-west-1"} + default = "1.24" +} +``` + +```yml +clusters: + - name: main + # only default version + # renovate: eksFilter={"default":true} + version: 1.24 + - name: tier-1 + # region and where or not only default versions + # renovate: eksFilter={"default":"false", "region":"eu-west-1"} + version: 1.28 +``` + +**Cluster Upgrade** + +- [AWS EKS cluster upgrade best practices](https://docs.aws.amazon.com/eks/latest/best-practices/cluster-upgrades.html) + +At the moment there is no `aws-eks` versioning. The recommended approach is to upgrade to next minor version + +When performing an in-place cluster upgrade, it is important to note that only one minor version upgrade can be executed at a time (e.g., from 1.24 to 1.25). This means that if you need to update multiple versions, a series of sequential upgrades will be required. + +Correct + +```diff +- version: 1.24 ++ version: 1.25 +``` + +Will not work + +```diff +- version: 1.24 ++ version: 1.27 +``` diff --git a/lib/modules/datasource/aws-eks/schema.spec.ts b/lib/modules/datasource/aws-eks/schema.spec.ts new file mode 100644 index 00000000000000..31f1a447c10dbf --- /dev/null +++ b/lib/modules/datasource/aws-eks/schema.spec.ts @@ -0,0 +1,21 @@ +import { EksFilter } from './schema'; + +describe('modules/datasource/aws-eks/schema', () => { + describe('EksFilter', () => { + it.each` + input | expected + ${{ default: 'false' }} | ${true} + ${{ default: 'true' }} | ${true} + ${{ default: false }} | ${true} + ${{ default: true }} | ${true} + ${{}} | ${true} + ${{ default: 'false', region: 'eu-west-1' }} | ${true} + ${{ region: 'us-gov-west-1', profile: 'gov-profile' }} | ${true} + ${{ region: 'us-gov-west-not-exist' }} | ${false} + ${{ default: 'abrakadabra' }} | ${true} + `('EksFilter.safeParse("$input") === $expected', ({ input, expected }) => { + const actual = EksFilter.safeParse(JSON.stringify(input)); + expect(actual.success).toBe(expected); + }); + }); +}); diff --git a/lib/modules/datasource/aws-eks/schema.ts b/lib/modules/datasource/aws-eks/schema.ts new file mode 100644 index 00000000000000..0c6cfe9e7c5ea5 --- /dev/null +++ b/lib/modules/datasource/aws-eks/schema.ts @@ -0,0 +1,24 @@ +import { type ZodEffects, type ZodString, z } from 'zod'; +import { regEx } from '../../../util/regex'; +import { Json } from '../../../util/schema-utils'; + +const stringIsBoolSchema: ZodEffects = z + .string() + .transform((value) => { + if (value === 'true') { + return true; + } else if (value === 'false') { + return false; + } else { + return false; + } + }); + +export const EksFilterSchema = z.object({ + default: z.oboolean().or(stringIsBoolSchema), + region: z.string().regex(regEx('^[a-z0-9][a-z0-9-]*[0-9]$')).optional(), + profile: z.string().optional(), +}); + +export type EksFilter = z.infer; +export const EksFilter = Json.pipe(EksFilterSchema); diff --git a/lib/util/cache/package/types.ts b/lib/util/cache/package/types.ts index d61cafdfe6f32e..073dbbebcb4fad 100644 --- a/lib/util/cache/package/types.ts +++ b/lib/util/cache/package/types.ts @@ -27,6 +27,7 @@ export type PackageCacheNamespace = | 'changelog-gitlab-notes@v2' | 'changelog-gitlab-release' | 'datasource-artifactory' + | 'datasource-aws-eks' | 'datasource-aws-machine-image' | 'datasource-aws-rds' | 'datasource-azure-bicep-resource' diff --git a/package.json b/package.json index 1fccc3d0e24a01..d91d7f1d5b9b9a 100644 --- a/package.json +++ b/package.json @@ -146,6 +146,7 @@ "@aws-sdk/client-codecommit": "3.699.0", "@aws-sdk/client-ec2": "3.701.0", "@aws-sdk/client-ecr": "3.699.0", + "@aws-sdk/client-eks": "3.718.0", "@aws-sdk/client-rds": "3.699.0", "@aws-sdk/client-s3": "3.701.0", "@aws-sdk/credential-providers": "3.699.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c75ce1239cf3c..bfa30a8342d31f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@aws-sdk/client-ecr': specifier: 3.699.0 version: 3.699.0 + '@aws-sdk/client-eks': + specifier: 3.718.0 + version: 3.718.0 '@aws-sdk/client-rds': specifier: 3.699.0 version: 3.699.0 @@ -28,7 +31,7 @@ importers: version: 3.701.0 '@aws-sdk/credential-providers': specifier: 3.699.0 - version: 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)) + version: 3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) '@breejs/later': specifier: 4.2.0 version: 4.2.0 @@ -671,6 +674,10 @@ packages: resolution: {integrity: sha512-hLcz7TZDx7tfxqrpcSm5xgMYitPpPDE4cKPk0BYAsu5RFg2Lo3QfooUnD5iKnaVbzJcY40BBHGChDrv7IhtERg==} engines: {node: '>=16.0.0'} + '@aws-sdk/client-eks@3.718.0': + resolution: {integrity: sha512-P67oNE8NNtlz1lgBHhiM8pNFq90Ba758wxQoceL8ghBGcYEcBBL85iZx/Vkkc8XLPlxwcfpxSZDsyuSUpgEqkQ==} + engines: {node: '>=16.0.0'} + '@aws-sdk/client-rds@3.699.0': resolution: {integrity: sha512-i/S8sxyQDQbafjxaRTZBVP2/S/dCHlawr5ctz/dhK/HgO5LyHxac83JrpIlpLgndiFTC4h75ldRSjBuCcoRSJQ==} engines: {node: '>=16.0.0'} @@ -685,18 +692,36 @@ packages: peerDependencies: '@aws-sdk/client-sts': ^3.699.0 + '@aws-sdk/client-sso-oidc@3.716.0': + resolution: {integrity: sha512-lA4IB9FzR2KjH7EVCo+mHGFKqdViVyeBQEIX9oVratL/l7P0bMS1fMwgfHOc3ACazqNxBxDES7x08ZCp32y6Lw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.716.0 + '@aws-sdk/client-sso@3.696.0': resolution: {integrity: sha512-q5TTkd08JS0DOkHfUL853tuArf7NrPeqoS5UOvqJho8ibV9Ak/a/HO4kNvy9Nj3cib/toHYHsQIEtecUPSUUrQ==} engines: {node: '>=16.0.0'} + '@aws-sdk/client-sso@3.716.0': + resolution: {integrity: sha512-5Nb0jJXce2TclbjG7WVPufwhgV1TRydz1QnsuBtKU0AdViEpr787YrZhPpGnNIM1Dx+R1H/tmAHZnOoohS6D8g==} + engines: {node: '>=16.0.0'} + '@aws-sdk/client-sts@3.699.0': resolution: {integrity: sha512-++lsn4x2YXsZPIzFVwv3fSUVM55ZT0WRFmPeNilYIhZClxHLmVAWKH4I55cY9ry60/aTKYjzOXkWwyBKGsGvQg==} engines: {node: '>=16.0.0'} + '@aws-sdk/client-sts@3.716.0': + resolution: {integrity: sha512-i4SVNsrdXudp8T4bkm7Fi3YWlRnvXCSwvNDqf6nLqSJxqr4CN3VlBELueDyjBK7TAt453/qSif+eNx+bHmwo4Q==} + engines: {node: '>=16.0.0'} + '@aws-sdk/core@3.696.0': resolution: {integrity: sha512-3c9III1k03DgvRZWg8vhVmfIXPG6hAciN9MzQTzqGngzWAELZF/WONRTRQuDFixVtarQatmLHYVw/atGeA2Byw==} engines: {node: '>=16.0.0'} + '@aws-sdk/core@3.716.0': + resolution: {integrity: sha512-5DkUiTrbyzO8/W4g7UFEqRFpuhgizayHI/Zbh0wtFMcot8801nJV+MP/YMhdjimlvAr/OqYB08FbGsPyWppMTw==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-cognito-identity@3.699.0': resolution: {integrity: sha512-iuaTnudaBfEET+o444sDwf71Awe6UiZfH+ipUPmswAi2jZDwdFF1nxMKDEKL8/LV5WpXsdKSfwgS0RQeupURew==} engines: {node: '>=16.0.0'} @@ -705,34 +730,66 @@ packages: resolution: {integrity: sha512-T9iMFnJL7YTlESLpVFT3fg1Lkb1lD+oiaIC8KMpepb01gDUBIpj9+Y+pA/cgRWW0yRxmkDXNazAE2qQTVFGJzA==} engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-env@3.716.0': + resolution: {integrity: sha512-JI2KQUnn2arICwP9F3CnqP1W3nAbm4+meQg/yOhp9X0DMzQiHrHRd4HIrK2vyVgi2/6hGhONY5uLF26yRTA7nQ==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-http@3.696.0': resolution: {integrity: sha512-GV6EbvPi2eq1+WgY/o2RFA3P7HGmnkIzCNmhwtALFlqMroLYWKE7PSeHw66Uh1dFQeVESn0/+hiUNhu1mB0emA==} engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-http@3.716.0': + resolution: {integrity: sha512-CZ04pl2z7igQPysQyH2xKZHM3fLwkemxQbKOlje3TmiS1NwXvcKvERhp9PE/H23kOL7beTM19NMRog/Fka/rlw==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-ini@3.699.0': resolution: {integrity: sha512-dXmCqjJnKmG37Q+nLjPVu22mNkrGHY8hYoOt3Jo9R2zr5MYV7s/NHsCHr+7E+BZ+tfZYLRPeB1wkpTeHiEcdRw==} engines: {node: '>=16.0.0'} peerDependencies: '@aws-sdk/client-sts': ^3.699.0 + '@aws-sdk/credential-provider-ini@3.716.0': + resolution: {integrity: sha512-P37We2GtZvdROxiwP0zrpEL81/HuYK1qlYxp5VCj3uV+G4mG8UQN2gMIU/baYrpOQqa0h81RfyQGRFUjVaDVqw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.716.0 + '@aws-sdk/credential-provider-node@3.699.0': resolution: {integrity: sha512-MmEmNDo1bBtTgRmdNfdQksXu4uXe66s0p1hi1YPrn1h59Q605eq/xiWbGL6/3KdkViH6eGUuABeV2ODld86ylg==} engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-node@3.716.0': + resolution: {integrity: sha512-FGQPK2uKfS53dVvoskN/s/t6m0Po24BGd1PzJdzHBFCOjxbZLM6+8mDMXeyi2hCLVVQOUcuW41kOgmJ0+zMbww==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-process@3.696.0': resolution: {integrity: sha512-mL1RcFDe9sfmyU5K1nuFkO8UiJXXxLX4JO1gVaDIOvPqwStpUAwi3A1BoeZhWZZNQsiKI810RnYGo0E0WB/hUA==} engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-process@3.716.0': + resolution: {integrity: sha512-0spcu2MWVVHSTHH3WE2E//ttUJPwXRM3BCp+WyI41xLzpNu1Fd8zjOrDpEo0SnGUzsSiRTIJWgkuu/tqv9NJ2A==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-sso@3.699.0': resolution: {integrity: sha512-Ekp2cZG4pl9D8+uKWm4qO1xcm8/MeiI8f+dnlZm8aQzizeC+aXYy9GyoclSf6daK8KfRPiRfM7ZHBBL5dAfdMA==} engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-sso@3.716.0': + resolution: {integrity: sha512-J2IA3WuCpRGGoZm6VHZVFCnrxXP+41iUWb9Ct/1spljegTa1XjiaZ5Jf3+Ubj7WKiyvP9/dgz1L0bu2bYEjliw==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-web-identity@3.696.0': resolution: {integrity: sha512-XJ/CVlWChM0VCoc259vWguFUjJDn/QwDqHwbx+K9cg3v6yrqXfK5ai+p/6lx0nQpnk4JzPVeYYxWRpaTsGC9rg==} engines: {node: '>=16.0.0'} peerDependencies: '@aws-sdk/client-sts': ^3.696.0 + '@aws-sdk/credential-provider-web-identity@3.716.0': + resolution: {integrity: sha512-vzgpWKs2gGXZGdbMKRFrMW4PqEFWkGvwWH2T7ZwQv9m+8lQ7P4Dk2uimqu0f37HZAbpn8HFMqRh4CaySjU354A==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.716.0 + '@aws-sdk/credential-providers@3.699.0': resolution: {integrity: sha512-jBjOntl9zN9Nvb0jmbMGRbiTzemDz64ij7W6BDavxBJRZpRoNeN0QCz6RolkCyXnyUJjo5mF2unY2wnv00A+LQ==} engines: {node: '>=16.0.0'} @@ -753,6 +810,10 @@ packages: resolution: {integrity: sha512-zELJp9Ta2zkX7ELggMN9qMCgekqZhFC5V2rOr4hJDEb/Tte7gpfKSObAnw/3AYiVqt36sjHKfdkoTsuwGdEoDg==} engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-host-header@3.714.0': + resolution: {integrity: sha512-6l68kjNrh5QC8FGX3I3geBDavWN5Tg1RLHJ2HLA8ByGBtJyCwnz3hEkKfaxn0bBx0hF9DzbfjEOUF6cDqy2Kjg==} + engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-location-constraint@3.696.0': resolution: {integrity: sha512-FgH12OB0q+DtTrP2aiDBddDKwL4BPOrm7w3VV9BJrSdkqQCNBPz8S1lb0y5eVH4tBG+2j7gKPlOv1wde4jF/iw==} engines: {node: '>=16.0.0'} @@ -761,10 +822,18 @@ packages: resolution: {integrity: sha512-KhkHt+8AjCxcR/5Zp3++YPJPpFQzxpr+jmONiT/Jw2yqnSngZ0Yspm5wGoRx2hS1HJbyZNuaOWEGuJoxLeBKfA==} engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-logger@3.714.0': + resolution: {integrity: sha512-RkqHlMvQWUaRklU1bMfUuBvdWwxgUtEqpADaHXlGVj3vtEY2UgBjy+57CveC4MByqKIunNvVHBBbjrGVtwY7Lg==} + engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-recursion-detection@3.696.0': resolution: {integrity: sha512-si/maV3Z0hH7qa99f9ru2xpS5HlfSVcasRlNUXKSDm611i7jFMWwGNLUOXFAOLhXotPX5G3Z6BLwL34oDeBMug==} engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-recursion-detection@3.714.0': + resolution: {integrity: sha512-AVU5ixnh93nqtsfgNc284oXsXaadyHGPHpql/jwgaaqQfEXjS/1/j3j9E/vpacfTTz2Vzo7hAOjnvrOXSEVDaA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-sdk-ec2@3.696.0': resolution: {integrity: sha512-HVMpblaaTQ1Ysku2nR6+N22aEgT7CDot+vsFutHNJCBPl+eEON5exp7IvsFC7sFCWmSfnMHTHtmmj5YIYHO1gQ==} engines: {node: '>=16.0.0'} @@ -785,10 +854,18 @@ packages: resolution: {integrity: sha512-Lvyj8CTyxrHI6GHd2YVZKIRI5Fmnugt3cpJo0VrKKEgK5zMySwEZ1n4dqPK6czYRWKd5+WnYHYAuU+Wdk6Jsjw==} engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-user-agent@3.716.0': + resolution: {integrity: sha512-FpAtT6nNKrYdkDZndutEraiRMf+TgDzAGvniqRtZ/YTPA+gIsWrsn+TwMKINR81lFC3nQfb9deS5CFtxd021Ew==} + engines: {node: '>=16.0.0'} + '@aws-sdk/region-config-resolver@3.696.0': resolution: {integrity: sha512-7EuH142lBXjI8yH6dVS/CZeiK/WZsmb/8zP6bQbVYpMrppSTgB3MzZZdxVZGzL5r8zPQOU10wLC4kIMy0qdBVQ==} engines: {node: '>=16.0.0'} + '@aws-sdk/region-config-resolver@3.714.0': + resolution: {integrity: sha512-HJzsQxgMOAzZrbf/YIqEx30or4tZK1oNAk6Wm6xecUQx+23JXIaePRu1YFUOLBBERQ4QBPpISFurZWBMZ5ibAw==} + engines: {node: '>=16.0.0'} + '@aws-sdk/signature-v4-multi-region@3.696.0': resolution: {integrity: sha512-ijPkoLjXuPtgxAYlDoYls8UaG/VKigROn9ebbvPL/orEY5umedd3iZTcS9T+uAf4Ur3GELLxMQiERZpfDKaz3g==} engines: {node: '>=16.0.0'} @@ -799,10 +876,20 @@ packages: peerDependencies: '@aws-sdk/client-sso-oidc': ^3.699.0 + '@aws-sdk/token-providers@3.714.0': + resolution: {integrity: sha512-vKN064aLE3kl+Zl16Ony3jltHnMddMBT7JRkP1L+lLywhA0PcAKxpdvComul/sTBWnbnwLnaS5NsDUhcWySH8A==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.714.0 + '@aws-sdk/types@3.696.0': resolution: {integrity: sha512-9rTvUJIAj5d3//U5FDPWGJ1nFJLuWb30vugGOrWk7aNZ6y9tuA3PI7Cc9dP8WEXKVyK1vuuk8rSFP2iqXnlgrw==} engines: {node: '>=16.0.0'} + '@aws-sdk/types@3.714.0': + resolution: {integrity: sha512-ZjpP2gYbSFlxxaUDa1Il5AVvfggvUPbjzzB/l3q0gIE5Thd6xKW+yzEpt2mLZ5s5UaYSABZbF94g8NUOF4CVGA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/util-arn-parser@3.693.0': resolution: {integrity: sha512-WC8x6ca+NRrtpAH64rWu+ryDZI3HuLwlEr8EU6/dbC/pt+r/zC0PBoC15VEygUaBA+isppCikQpGyEDu0Yj7gQ==} engines: {node: '>=16.0.0'} @@ -811,6 +898,10 @@ packages: resolution: {integrity: sha512-T5s0IlBVX+gkb9g/I6CLt4yAZVzMSiGnbUqWihWsHvQR1WOoIcndQy/Oz/IJXT9T2ipoy7a80gzV6a5mglrioA==} engines: {node: '>=16.0.0'} + '@aws-sdk/util-endpoints@3.714.0': + resolution: {integrity: sha512-Xv+Z2lhe7w7ZZRsgBwBMZgGTVmS+dkkj2S13uNHAx9lhB5ovM8PhK5G/j28xYf6vIibeuHkRAbb7/ozdZIGR+A==} + engines: {node: '>=16.0.0'} + '@aws-sdk/util-format-url@3.696.0': resolution: {integrity: sha512-R6yK1LozUD1GdAZRPhNsIow6VNFJUTyyoIar1OCWaknlucBMcq7musF3DN3TlORBwfFMj5buHc2ET9OtMtzvuA==} engines: {node: '>=16.0.0'} @@ -822,6 +913,9 @@ packages: '@aws-sdk/util-user-agent-browser@3.696.0': resolution: {integrity: sha512-Z5rVNDdmPOe6ELoM5AhF/ja5tSjbe6ctSctDPb0JdDf4dT0v2MfwhJKzXju2RzX8Es/77Glh7MlaXLE0kCB9+Q==} + '@aws-sdk/util-user-agent-browser@3.714.0': + resolution: {integrity: sha512-OdJJ03cP9/MgIVToPJPCPUImbpZzTcwdIgbXC0tUQPJhbD7b7cB4LdnkhNHko+MptpOrCq4CPY/33EpOjRdofw==} + '@aws-sdk/util-user-agent-node@3.696.0': resolution: {integrity: sha512-KhKqcfyXIB0SCCt+qsu4eJjsfiOrNzK5dCV7RAW2YIpp+msxGUUX0NdRE9rkzjiv+3EMktgJm3eEIS+yxtlVdQ==} engines: {node: '>=16.0.0'} @@ -831,6 +925,15 @@ packages: aws-crt: optional: true + '@aws-sdk/util-user-agent-node@3.716.0': + resolution: {integrity: sha512-3PqaXmQbxrtHKAsPCdp7kn5FrQktj8j3YyuNsqFZ8rWZeEQ88GWlsvE61PTsr2peYCKzpFqYVddef2x1axHU0w==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + '@aws-sdk/xml-builder@3.696.0': resolution: {integrity: sha512-dn1mX+EeqivoLYnY7p2qLrir0waPnCgS/0YdRCAVU2x14FgfUYCH6Im3w3oi2dMwhxfKY5lYVB5NKvZu7uI9lQ==} engines: {node: '>=16.0.0'} @@ -1187,7 +1290,6 @@ packages: '@ls-lint/ls-lint@2.2.3': resolution: {integrity: sha512-ekM12jNm/7O2I/hsRv9HvYkRdfrHpiV1epVuI2NP+eTIcEgdIdKkKCs9KgQydu/8R5YXTov9aHdOgplmCHLupw==} - cpu: [x64, arm64, s390x] os: [darwin, linux, win32] hasBin: true @@ -6307,7 +6409,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.714.0 '@aws-sdk/util-locate-window': 3.693.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -6315,7 +6417,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.714.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -6519,6 +6621,55 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-eks@3.718.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-node': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.2.0 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-rds@3.699.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -6675,6 +6826,51 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-node': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sso@3.696.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -6718,6 +6914,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso@3.716.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sts@3.699.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -6763,6 +7002,51 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sts@3.716.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-node': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/core@3.696.0': dependencies: '@aws-sdk/types': 3.696.0 @@ -6777,6 +7061,20 @@ snapshots: fast-xml-parser: 4.4.1 tslib: 2.8.1 + '@aws-sdk/core@3.716.0': + dependencies: + '@aws-sdk/types': 3.714.0 + '@smithy/core': 2.5.5 + '@smithy/node-config-provider': 3.1.12 + '@smithy/property-provider': 3.1.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/signature-v4': 4.2.4 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/util-middleware': 3.0.11 + fast-xml-parser: 4.4.1 + tslib: 2.8.1 + '@aws-sdk/credential-provider-cognito-identity@3.699.0': dependencies: '@aws-sdk/client-cognito-identity': 3.699.0 @@ -6795,6 +7093,14 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.716.0': + dependencies: + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.696.0': dependencies: '@aws-sdk/core': 3.696.0 @@ -6808,6 +7114,19 @@ snapshots: '@smithy/util-stream': 3.3.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.716.0': + dependencies: + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/node-http-handler': 3.3.2 + '@smithy/property-provider': 3.1.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/util-stream': 3.3.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0)': dependencies: '@aws-sdk/client-sts': 3.699.0 @@ -6827,6 +7146,44 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt + '@aws-sdk/credential-provider-ini@3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.699.0)': + dependencies: + '@aws-sdk/client-sts': 3.699.0 + '@aws-sdk/core': 3.696.0 + '@aws-sdk/credential-provider-env': 3.696.0 + '@aws-sdk/credential-provider-http': 3.696.0 + '@aws-sdk/credential-provider-process': 3.696.0 + '@aws-sdk/credential-provider-sso': 3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) + '@aws-sdk/credential-provider-web-identity': 3.696.0(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/types': 3.696.0 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-ini@3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.716.0)': + dependencies: + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-env': 3.716.0 + '@aws-sdk/credential-provider-http': 3.716.0 + '@aws-sdk/credential-provider-process': 3.716.0 + '@aws-sdk/credential-provider-sso': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0)) + '@aws-sdk/credential-provider-web-identity': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/types': 3.714.0 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + '@aws-sdk/credential-provider-node@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0)': dependencies: '@aws-sdk/credential-provider-env': 3.696.0 @@ -6846,6 +7203,44 @@ snapshots: - '@aws-sdk/client-sts' - aws-crt + '@aws-sdk/credential-provider-node@3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.699.0)': + dependencies: + '@aws-sdk/credential-provider-env': 3.696.0 + '@aws-sdk/credential-provider-http': 3.696.0 + '@aws-sdk/credential-provider-ini': 3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/credential-provider-process': 3.696.0 + '@aws-sdk/credential-provider-sso': 3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) + '@aws-sdk/credential-provider-web-identity': 3.696.0(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/types': 3.696.0 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + + '@aws-sdk/credential-provider-node@3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.716.0)': + dependencies: + '@aws-sdk/credential-provider-env': 3.716.0 + '@aws-sdk/credential-provider-http': 3.716.0 + '@aws-sdk/credential-provider-ini': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/credential-provider-process': 3.716.0 + '@aws-sdk/credential-provider-sso': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0)) + '@aws-sdk/credential-provider-web-identity': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/types': 3.714.0 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + '@aws-sdk/credential-provider-process@3.696.0': dependencies: '@aws-sdk/core': 3.696.0 @@ -6855,6 +7250,15 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.716.0': + dependencies: + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))': dependencies: '@aws-sdk/client-sso': 3.696.0 @@ -6869,6 +7273,34 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt + '@aws-sdk/credential-provider-sso@3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))': + dependencies: + '@aws-sdk/client-sso': 3.696.0 + '@aws-sdk/core': 3.696.0 + '@aws-sdk/token-providers': 3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) + '@aws-sdk/types': 3.696.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-sso@3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0))': + dependencies: + '@aws-sdk/client-sso': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/token-providers': 3.714.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0)) + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + '@aws-sdk/credential-provider-web-identity@3.696.0(@aws-sdk/client-sts@3.699.0)': dependencies: '@aws-sdk/client-sts': 3.699.0 @@ -6878,7 +7310,16 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/credential-providers@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))': + '@aws-sdk/credential-provider-web-identity@3.716.0(@aws-sdk/client-sts@3.716.0)': + dependencies: + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + + '@aws-sdk/credential-providers@3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))': dependencies: '@aws-sdk/client-cognito-identity': 3.699.0 '@aws-sdk/client-sso': 3.696.0 @@ -6887,10 +7328,10 @@ snapshots: '@aws-sdk/credential-provider-cognito-identity': 3.699.0 '@aws-sdk/credential-provider-env': 3.696.0 '@aws-sdk/credential-provider-http': 3.696.0 - '@aws-sdk/credential-provider-ini': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/credential-provider-ini': 3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.699.0) '@aws-sdk/credential-provider-process': 3.696.0 - '@aws-sdk/credential-provider-sso': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)) + '@aws-sdk/credential-provider-sso': 3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) '@aws-sdk/credential-provider-web-identity': 3.696.0(@aws-sdk/client-sts@3.699.0) '@aws-sdk/types': 3.696.0 '@smithy/credential-provider-imds': 3.2.8 @@ -6941,6 +7382,13 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@aws-sdk/middleware-host-header@3.714.0': + dependencies: + '@aws-sdk/types': 3.714.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + '@aws-sdk/middleware-location-constraint@3.696.0': dependencies: '@aws-sdk/types': 3.696.0 @@ -6953,6 +7401,12 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@aws-sdk/middleware-logger@3.714.0': + dependencies: + '@aws-sdk/types': 3.714.0 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.696.0': dependencies: '@aws-sdk/types': 3.696.0 @@ -6960,6 +7414,13 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.714.0': + dependencies: + '@aws-sdk/types': 3.714.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + '@aws-sdk/middleware-sdk-ec2@3.696.0': dependencies: '@aws-sdk/types': 3.696.0 @@ -7014,6 +7475,16 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.716.0': + dependencies: + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@smithy/core': 2.5.5 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + '@aws-sdk/region-config-resolver@3.696.0': dependencies: '@aws-sdk/types': 3.696.0 @@ -7023,6 +7494,15 @@ snapshots: '@smithy/util-middleware': 3.0.11 tslib: 2.8.1 + '@aws-sdk/region-config-resolver@3.714.0': + dependencies: + '@aws-sdk/types': 3.714.0 + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.11 + tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.696.0': dependencies: '@aws-sdk/middleware-sdk-s3': 3.696.0 @@ -7041,11 +7521,34 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@aws-sdk/token-providers@3.699.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))': + dependencies: + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/types': 3.696.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.714.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.699.0))': + dependencies: + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + '@aws-sdk/types@3.696.0': dependencies: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@aws-sdk/types@3.714.0': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.8.1 + '@aws-sdk/util-arn-parser@3.693.0': dependencies: tslib: 2.8.1 @@ -7057,6 +7560,13 @@ snapshots: '@smithy/util-endpoints': 2.1.7 tslib: 2.8.1 + '@aws-sdk/util-endpoints@3.714.0': + dependencies: + '@aws-sdk/types': 3.714.0 + '@smithy/types': 3.7.2 + '@smithy/util-endpoints': 2.1.7 + tslib: 2.8.1 + '@aws-sdk/util-format-url@3.696.0': dependencies: '@aws-sdk/types': 3.696.0 @@ -7075,6 +7585,13 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 + '@aws-sdk/util-user-agent-browser@3.714.0': + dependencies: + '@aws-sdk/types': 3.714.0 + '@smithy/types': 3.7.2 + bowser: 2.11.0 + tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.696.0': dependencies: '@aws-sdk/middleware-user-agent': 3.696.0 @@ -7083,6 +7600,14 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.716.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.8.1 + '@aws-sdk/xml-builder@3.696.0': dependencies: '@smithy/types': 3.7.2 From 558515fee8114d6a5b05451eb1d7975280a05310 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 27 Dec 2024 17:45:57 +0000 Subject: [PATCH 2/8] feat(datasource): add aws-eks datasource lint fixes Signed-off-by: ivan katliarchuk --- lib/modules/datasource/aws-eks/index.spec.ts | 43 ++++++++++++-------- lib/modules/datasource/aws-eks/index.ts | 13 ++++-- lib/modules/datasource/aws-eks/readme.md | 10 +---- 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/lib/modules/datasource/aws-eks/index.spec.ts b/lib/modules/datasource/aws-eks/index.spec.ts index bb3178b90f579c..3ff2082ebb5df8 100644 --- a/lib/modules/datasource/aws-eks/index.spec.ts +++ b/lib/modules/datasource/aws-eks/index.spec.ts @@ -20,11 +20,15 @@ describe('modules/datasource/aws-eks/index', () => { it('should return releases when the response is valid', async () => { const mockResponse: DescribeClusterVersionsCommandOutput = { $metadata: {}, - clusterVersions : [ + clusterVersions: [ { clusterVersion: '1.21', - releaseDate: new Date(new Date().setMonth(new Date().getMonth() - 24)), - endOfStandardSupportDate: new Date(new Date().setMonth(new Date().getMonth() + 10)), + releaseDate: new Date( + new Date().setMonth(new Date().getMonth() - 24), + ), + endOfStandardSupportDate: new Date( + new Date().setMonth(new Date().getMonth() + 10), + ), }, ], }; @@ -33,7 +37,7 @@ describe('modules/datasource/aws-eks/index', () => { const result = await getPkgReleases({ datasource, packageName: '{}' }); - expect(result?.releases).toHaveLength(1) + expect(result?.releases).toHaveLength(1); expect(result).toEqual({ releases: [ { @@ -48,7 +52,10 @@ describe('modules/datasource/aws-eks/index', () => { it('should return null and log an error when the filter is invalid', async () => { const invalidFilter = '{ invalid json }'; - const actual = await getPkgReleases({ datasource, packageName: invalidFilter }); + const actual = await getPkgReleases({ + datasource, + packageName: invalidFilter, + }); expect(actual).toBeNull(); expect(logger.logger.error).toHaveBeenCalledTimes(1); }); @@ -66,12 +73,13 @@ describe('modules/datasource/aws-eks/index', () => { }; eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); - const actual = await getPkgReleases( - { datasource, packageName: '{"default":"true", "region":"eu-west-1"}' } - ); + const actual = await getPkgReleases({ + datasource, + packageName: '{"default":"true", "region":"eu-west-1"}', + }); expect(eksMock.calls()).toHaveLength(1); - expect(eksMock.call(0).args[0].input).toEqual({"defaultOnly": true}); + expect(eksMock.call(0).args[0].input).toEqual({ defaultOnly: true }); expect(actual).toEqual({ releases: [ @@ -102,12 +110,14 @@ describe('modules/datasource/aws-eks/index', () => { }; eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); - const actual = await getPkgReleases( - { datasource, packageName: '{"default":"false", "region":"eu-west-1", "profile":"admin"}' } - ); + const actual = await getPkgReleases({ + datasource, + packageName: + '{"default":"false", "region":"eu-west-1", "profile":"admin"}', + }); expect(eksMock.calls()).toHaveLength(1); - expect(eksMock.call(0).args[0].input).toEqual({"defaultOnly": false}); + expect(eksMock.call(0).args[0].input).toEqual({ defaultOnly: false }); expect(actual).toEqual({ releases: [ @@ -125,9 +135,10 @@ describe('modules/datasource/aws-eks/index', () => { }; eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); - const actual = await getPkgReleases( - { datasource, packageName: '{"profile":"not-exist-profile"}' } - ); + const actual = await getPkgReleases({ + datasource, + packageName: '{"profile":"not-exist-profile"}', + }); expect(eksMock.calls()).toHaveLength(1); expect(eksMock.call(0).args[0].input).toEqual({}); diff --git a/lib/modules/datasource/aws-eks/index.ts b/lib/modules/datasource/aws-eks/index.ts index 1fcfd73a712731..a8a6cc64b742ec 100644 --- a/lib/modules/datasource/aws-eks/index.ts +++ b/lib/modules/datasource/aws-eks/index.ts @@ -4,7 +4,7 @@ import { type DescribeClusterVersionsCommandInput, type DescribeClusterVersionsCommandOutput, EKSClient, -} from "@aws-sdk/client-eks"; +} from '@aws-sdk/client-eks'; import { fromNodeProviderChain } from '@aws-sdk/credential-providers'; import { logger } from '../../../logger'; @@ -51,12 +51,17 @@ export class AwsEKSDataSource extends Datasource { const input: DescribeClusterVersionsCommandInput = { defaultOnly: res.data.default ?? undefined, }; - const cmd = new DescribeClusterVersionsCommand(input) - const response: DescribeClusterVersionsCommandOutput = await this.getClient(res.data).send(cmd) + const cmd = new DescribeClusterVersionsCommand(input); + const response: DescribeClusterVersionsCommandOutput = await this.getClient( + res.data, + ).send(cmd); const results: ClusterVersionInformation[] = response.clusterVersions ?? []; return { releases: results - .filter((el): el is ClusterVersionInformation & { clusterVersion: string } => Boolean(el.clusterVersion)) + .filter( + (el): el is ClusterVersionInformation & { clusterVersion: string } => + Boolean(el.clusterVersion), + ) .map((el) => ({ version: el.clusterVersion, })), diff --git a/lib/modules/datasource/aws-eks/readme.md b/lib/modules/datasource/aws-eks/readme.md index 999e40e18dd52a..03784b52b44a9e 100644 --- a/lib/modules/datasource/aws-eks/readme.md +++ b/lib/modules/datasource/aws-eks/readme.md @@ -50,16 +50,10 @@ renovate: eksFilter={"region":"us-east-1","profile":"renovate-east"} "packageRules": [ { "matchDatasources": ["aws-eks"], - "prBodyColumns": [ - "Package", - "Update", - "Change", - "Sources", - "Changelog" - ], + "prBodyColumns": ["Package", "Update", "Change", "Sources", "Changelog"], "prBodyDefinitions": { "Sources": "[▶️](https://github.com/aws/eks-distro/)", - "Changelog": "[▶️](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-{{{newVersion}}}.md)", + "Changelog": "[▶️](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-{{{newVersion}}}.md)" } } ], From fa6a245efbc15043ec505bd427733b72d1774999 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 27 Dec 2024 17:49:03 +0000 Subject: [PATCH 3/8] feat(datasource): add aws-eks datasource lint fixes Signed-off-by: ivan katliarchuk --- lib/modules/datasource/aws-eks/readme.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/modules/datasource/aws-eks/readme.md b/lib/modules/datasource/aws-eks/readme.md index 03784b52b44a9e..8ca44178be3aa4 100644 --- a/lib/modules/datasource/aws-eks/readme.md +++ b/lib/modules/datasource/aws-eks/readme.md @@ -45,6 +45,8 @@ renovate: eksFilter={"region":"eu-west-1"} renovate: eksFilter={"region":"us-east-1","profile":"renovate-east"} ``` +Example configuration + ```json { "packageRules": [ @@ -65,7 +67,7 @@ renovate: eksFilter={"region":"us-east-1","profile":"renovate-east"} ".*# renovate: eksFilter=(?.*?)\n.*?[a-zA-Z0-9-_:]*[ ]*?[:|=][ ]*?[\"|']?(?[a-zA-Z0-9-_.]+)[\"|']?.*" ], "datasourceTemplate": "aws-eks", - "versioningTemplate": "loose" // aws-eks versioning is not yet supported + "versioningTemplate": "loose" } ] } From e31bf5a4612964835cbb355aaeba194a61dc62a0 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 27 Dec 2024 17:55:24 +0000 Subject: [PATCH 4/8] feat(datasource): add aws-eks datasource lint fixes Signed-off-by: ivan katliarchuk --- lib/modules/datasource/aws-eks/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/modules/datasource/aws-eks/index.ts b/lib/modules/datasource/aws-eks/index.ts index a8a6cc64b742ec..d9f097f28abd3b 100644 --- a/lib/modules/datasource/aws-eks/index.ts +++ b/lib/modules/datasource/aws-eks/index.ts @@ -26,6 +26,10 @@ export class AwsEKSDataSource extends Datasource { override readonly defaultConfig: Record | undefined = { commitMessageTopic: '{{{datasource}}}', commitMessageExtra: '{{{currentVersion}}} to {{{newVersion}}}', + prBodyColumns: ['Data', 'Update'], + prBodyDefinitions: { + Package: '```{{{datasource}}}```', + }, }; constructor() { From 913ae621969f26bec088162088eccc6a6ee3214e Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 27 Dec 2024 18:00:01 +0000 Subject: [PATCH 5/8] feat(datasource): add aws-eks datasource prbodycolumns not required Signed-off-by: ivan katliarchuk --- lib/modules/datasource/aws-eks/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/modules/datasource/aws-eks/index.ts b/lib/modules/datasource/aws-eks/index.ts index d9f097f28abd3b..ed830d92a65005 100644 --- a/lib/modules/datasource/aws-eks/index.ts +++ b/lib/modules/datasource/aws-eks/index.ts @@ -26,7 +26,6 @@ export class AwsEKSDataSource extends Datasource { override readonly defaultConfig: Record | undefined = { commitMessageTopic: '{{{datasource}}}', commitMessageExtra: '{{{currentVersion}}} to {{{newVersion}}}', - prBodyColumns: ['Data', 'Update'], prBodyDefinitions: { Package: '```{{{datasource}}}```', }, From 58aeb26a005848d3ba0b49214699bbb58618af04 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 27 Dec 2024 18:11:47 +0000 Subject: [PATCH 6/8] feat(datasource): add aws-eks datasource code-coverage improve Signed-off-by: ivan katliarchuk --- lib/modules/datasource/aws-eks/index.spec.ts | 29 +++++++++++++++++--- lib/modules/datasource/aws-eks/index.ts | 2 +- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/modules/datasource/aws-eks/index.spec.ts b/lib/modules/datasource/aws-eks/index.spec.ts index 3ff2082ebb5df8..764cfaac9499b3 100644 --- a/lib/modules/datasource/aws-eks/index.spec.ts +++ b/lib/modules/datasource/aws-eks/index.spec.ts @@ -11,6 +11,10 @@ import { AwsEKSDataSource } from '.'; const datasource = AwsEKSDataSource.id; const eksMock = mockClient(EKSClient); +function mockClusterVersionsResponse(input : DescribeClusterVersionsCommandOutput) { + return eksMock.on(DescribeClusterVersionsCommand).resolves(input); +} + describe('modules/datasource/aws-eks/index', () => { beforeEach(() => { eksMock.reset(); @@ -33,7 +37,7 @@ describe('modules/datasource/aws-eks/index', () => { ], }; - eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); + mockClusterVersionsResponse(mockResponse); const result = await getPkgReleases({ datasource, packageName: '{}' }); @@ -71,7 +75,7 @@ describe('modules/datasource/aws-eks/index', () => { }, ], }; - eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); + mockClusterVersionsResponse(mockResponse); const actual = await getPkgReleases({ datasource, @@ -108,7 +112,7 @@ describe('modules/datasource/aws-eks/index', () => { }, ], }; - eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); + mockClusterVersionsResponse(mockResponse); const actual = await getPkgReleases({ datasource, @@ -133,7 +137,24 @@ describe('modules/datasource/aws-eks/index', () => { $metadata: {}, clusterVersions: [], }; - eksMock.on(DescribeClusterVersionsCommand).resolves(mockResponse); + mockClusterVersionsResponse(mockResponse); + + const actual = await getPkgReleases({ + datasource, + packageName: '{"profile":"not-exist-profile"}', + }); + + expect(eksMock.calls()).toHaveLength(1); + expect(eksMock.call(0).args[0].input).toEqual({}); + expect(actual).toBeNull(); + }); + + it('should return undefined response', async () => { + const mockResponse: DescribeClusterVersionsCommandOutput = { + $metadata: {}, + clusterVersions: undefined, + }; + mockClusterVersionsResponse(mockResponse); const actual = await getPkgReleases({ datasource, diff --git a/lib/modules/datasource/aws-eks/index.ts b/lib/modules/datasource/aws-eks/index.ts index ed830d92a65005..01723140f5010b 100644 --- a/lib/modules/datasource/aws-eks/index.ts +++ b/lib/modules/datasource/aws-eks/index.ts @@ -45,7 +45,7 @@ export class AwsEKSDataSource extends Datasource { const res = EksFilter.safeParse(serializedFilter); if (!res.success) { logger.error( - { err: res.error, serializedFilter }, + { err: res.error.message, serializedFilter }, 'Error parsing eks config.', ); return null; From 99ded298d04b7c0237ba0270e6ff77f0b5410621 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 27 Dec 2024 18:19:11 +0000 Subject: [PATCH 7/8] feat(datasource): add aws-eks datasource code-coverage improve Signed-off-by: ivan katliarchuk --- lib/modules/datasource/aws-eks/index.spec.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/modules/datasource/aws-eks/index.spec.ts b/lib/modules/datasource/aws-eks/index.spec.ts index 764cfaac9499b3..5cdca921d3da43 100644 --- a/lib/modules/datasource/aws-eks/index.spec.ts +++ b/lib/modules/datasource/aws-eks/index.spec.ts @@ -11,7 +11,9 @@ import { AwsEKSDataSource } from '.'; const datasource = AwsEKSDataSource.id; const eksMock = mockClient(EKSClient); -function mockClusterVersionsResponse(input : DescribeClusterVersionsCommandOutput) { +function mockClusterVersionsResponse( + input: DescribeClusterVersionsCommandOutput +) { return eksMock.on(DescribeClusterVersionsCommand).resolves(input); } From 7b30c6b04a9e4a724a73e64e05af20450db23dc8 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 27 Dec 2024 18:25:30 +0000 Subject: [PATCH 8/8] feat(datasource): add aws-eks datasource code-coverage improve Signed-off-by: ivan katliarchuk --- lib/modules/datasource/aws-eks/index.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/modules/datasource/aws-eks/index.spec.ts b/lib/modules/datasource/aws-eks/index.spec.ts index 5cdca921d3da43..e7f992d3c6c285 100644 --- a/lib/modules/datasource/aws-eks/index.spec.ts +++ b/lib/modules/datasource/aws-eks/index.spec.ts @@ -12,7 +12,7 @@ const datasource = AwsEKSDataSource.id; const eksMock = mockClient(EKSClient); function mockClusterVersionsResponse( - input: DescribeClusterVersionsCommandOutput + input: DescribeClusterVersionsCommandOutput, ) { return eksMock.on(DescribeClusterVersionsCommand).resolves(input); }