From 0c15e1154358d0770bc1469443b33b5e6fd87a49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 11:08:57 -0500 Subject: [PATCH 01/87] deps: bump github.com/aws/aws-sdk-go-v2 from 1.33.0 to 1.34.0 (#1273) Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.33.0 to 1.34.0.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2&package-manager=go_modules&previous-version=1.33.0&new-version=1.34.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index f7186de101..0ef9d765ba 100644 --- a/go.mod +++ b/go.mod @@ -60,7 +60,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.33.9 // indirect - github.com/aws/smithy-go v1.22.1 // indirect + github.com/aws/smithy-go v1.22.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -289,7 +289,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0 github.com/Microsoft/hcsshim v0.12.0-rc.3 github.com/Sytten/logrus-zap-hook v0.1.0 - github.com/aws/aws-sdk-go-v2 v1.33.0 + github.com/aws/aws-sdk-go-v2 v1.34.0 github.com/aws/aws-sdk-go-v2/config v1.29.1 github.com/aws/aws-sdk-go-v2/credentials v1.17.54 github.com/aws/aws-sdk-go-v2/service/s3 v1.74.0 diff --git a/go.sum b/go.sum index 0ed4b256df..8146595093 100644 --- a/go.sum +++ b/go.sum @@ -129,8 +129,8 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.33.0 h1:Evgm4DI9imD81V0WwD+TN4DCwjUMdc94TrduMLbgZJs= -github.com/aws/aws-sdk-go-v2 v1.33.0/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= +github.com/aws/aws-sdk-go-v2 v1.34.0 h1:9iyL+cjifckRGEVpRKZP3eIxVlL06Qk1Tk13vreaVQU= +github.com/aws/aws-sdk-go-v2 v1.34.0/go.mod h1:JgstGg0JjWU1KpVJjD5H0y0yyAIpSdKEq556EI6yOOM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 h1:lL7IfaFzngfx0ZwUGOZdsFFnQ5uLvR0hWqqhyE7Q9M8= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7/go.mod h1:QraP0UcVlQJsmHfioCrveWOC1nbiWUl3ej08h4mXWoc= github.com/aws/aws-sdk-go-v2/config v1.29.1 h1:JZhGawAyZ/EuJeBtbQYnaoftczcb2drR2Iq36Wgz4sQ= @@ -163,8 +163,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 h1:l+dgv/64iVlQ3WsBbnn+JSb github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10/go.mod h1:Fzsj6lZEb8AkTE5S68OhcbBqeWPsR8RnGuKPr8Todl8= github.com/aws/aws-sdk-go-v2/service/sts v1.33.9 h1:BRVDbewN6VZcwr+FBOszDKvYeXY1kJ+GGMCcpghlw0U= github.com/aws/aws-sdk-go-v2/service/sts v1.33.9/go.mod h1:f6vjfZER1M17Fokn0IzssOTMT2N8ZSq+7jnNF0tArvw= -github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= -github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= +github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= From 8caacb6f4c841ad716e0908bcfc2fd2fc131b69a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 05:25:57 +0000 Subject: [PATCH 02/87] deps: bump google.golang.org/protobuf from 1.36.3 to 1.36.4 (#1271) Bumps google.golang.org/protobuf from 1.36.3 to 1.36.4. [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/protobuf&package-manager=go_modules&previous-version=1.36.3&new-version=1.36.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0ef9d765ba..6ff263126f 100644 --- a/go.mod +++ b/go.mod @@ -262,7 +262,7 @@ require ( golang.org/x/sync v0.10.0 golang.org/x/sys v0.29.0 golang.org/x/term v0.28.0 // indirect - google.golang.org/protobuf v1.36.3 + google.golang.org/protobuf v1.36.4 gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/api v0.30.3 diff --git a/go.sum b/go.sum index 8146595093..1839d1eb13 100644 --- a/go.sum +++ b/go.sum @@ -1153,8 +1153,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= -google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 32acb04134a5c43c179ef0b2e342b2a2a47bb662 Mon Sep 17 00:00:00 2001 From: Alex Castilio Date: Tue, 28 Jan 2025 09:12:28 +0000 Subject: [PATCH 03/87] test: fix value from inputs.image_namespace (#1277) # Description fix workflow value `inputs.image_namespace` ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Alex Castilio dos Santos --- .github/workflows/scale-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scale-test.yaml b/.github/workflows/scale-test.yaml index 6ce87b25a8..75367fff48 100644 --- a/.github/workflows/scale-test.yaml +++ b/.github/workflows/scale-test.yaml @@ -97,7 +97,7 @@ jobs: NUM_NETPOLS: ${{ inputs.num_netpol }} CLEANUP: ${{ inputs.cleanup }} IMAGE_REGISTRY: ${{ vars.ACR_NAME }} - IMAGE_NAMESPACE: ${{ github.repository }} + IMAGE_NAMESPACE: ${{ inputs.image_namespace == '' && github.repository || inputs.image_namespace }} TAG: ${{ inputs.image_tag }} AZURE_APP_INSIGHTS_KEY: ${{ secrets.AZURE_APP_INSIGHTS_KEY }} shell: bash From 04e674892d2a96b17f40c20002d4b57004122f1d Mon Sep 17 00:00:00 2001 From: Evan Baker Date: Tue, 28 Jan 2025 05:23:12 -0600 Subject: [PATCH 04/87] chore: add exemptions to stale workflow (#1276) # Description Ignores draft PRs and adds a label to preserve PRs so they don't become stale ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Evan Baker --- .github/workflows/stale.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 63bada594c..12eebe7143 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -23,6 +23,8 @@ jobs: days-before-pr-close: 7 days-before-pr-stale: 30 delete-branch: true + exempt-draft-pr: true + exempt-pr-labels: "meta/preserve" stale-issue-label: "meta/waiting-for-author" stale-pr-label: "meta/waiting-for-author" operations-per-run: 100 From 7ba58861565dafcbe289a9997a45a4fe51c5ecd4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 06:23:29 -0500 Subject: [PATCH 05/87] deps: bump sigs.k8s.io/cloud-provider-azure/pkg/azclient from 0.4.12 to 0.4.14 (#1269) Bumps [sigs.k8s.io/cloud-provider-azure/pkg/azclient](https://github.com/kubernetes-sigs/cloud-provider-azure) from 0.4.12 to 0.4.14.
Commits
  • 6c1fcdf only overwrite cloud config when cloud name is azurestack (#8146)
  • 39b4eac Merge pull request #8120 from MartinForReal/shafan/testdep
  • 63e3330 build(deps): bump oss/go/microsoft/golang from 35c83ae to ff1f672 (#8127)
  • 981d49a Fix : Enable system tag support prefix match (#8115)
  • 0983f46 Merge pull request #8130 from kubernetes-sigs/doc/dependabot
  • cf7899b add release-1.28 release-1.29 to supported list.
  • 07acee7 build(deps): bump github.com/go-git/go-git/v5 (#8125)
  • 68817df build(deps): bump github/codeql-action from 3.28.2 to 3.28.4 (#8124)
  • a11aebb remove unused code (#8116)
  • 844bad3 build(deps): bump oss/go/microsoft/golang from beca79e to 35c83ae (#8029)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigs.k8s.io/cloud-provider-azure/pkg/azclient&package-manager=go_modules&previous-version=0.4.12&new-version=0.4.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 6ff263126f..cf462dc33b 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/spf13/cobra v1.8.1 go.uber.org/zap v1.27.0 k8s.io/client-go v0.30.3 - sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.12 + sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.14 sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 ) @@ -337,7 +337,7 @@ require ( ) require ( - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v6 v6.2.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v6 v6.3.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v6 v6.3.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/msi/armmsi v1.2.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6 v6.2.0 // indirect diff --git a/go.sum b/go.sum index 1839d1eb13..1cef0554b5 100644 --- a/go.sum +++ b/go.sum @@ -23,8 +23,8 @@ github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xP github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/authorization/armauthorization/v2 v2.2.0 h1:Hp+EScFOu9HeCbeW8WU2yQPJd4gGwhMgKxWe+G6jNzw= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/authorization/armauthorization/v2 v2.2.0/go.mod h1:/pz8dyNQe+Ey3yBp/XuYz7oqX8YDNWVpPB0hH3XWfbc= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v6 v6.2.0 h1:JAebRMoc3vL+Nd97GBprHYHucO4+wlW+tNbBIumqJlk= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v6 v6.2.0/go.mod h1:zflC9v4VfViJrSvcvplqws/yGXVbUEMZi/iHpZdSPWA= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v6 v6.3.0 h1:Dc9miZr1Mhaqbb3cmJCRokkG16uk8JKkqOADf084zy4= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v6 v6.3.0/go.mod h1:CHo9QYhWEvrKVeXsEMJSl2bpmYYNu6aG12JsSaFBXlY= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerregistry/armcontainerregistry v1.2.0 h1:DWlwvVV5r/Wy1561nZ3wrpI1/vDIBRY/Wd1HWaRBZWA= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerregistry/armcontainerregistry v1.2.0/go.mod h1:E7ltexgRDmeJ0fJWv0D/HLwY2xbDdN+uv+X2uZtOx3w= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 v4.8.0 h1:0nGmzwBv5ougvzfGPCO2ljFRHvun57KpNrVCMrlk0ns= @@ -1220,8 +1220,8 @@ k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 h1:MDF6h2H/h4tbzmtIKTuctcwZmY0tY k8s.io/utils v0.0.0-20240921022957-49e7df575cb6/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.12 h1:eG7vA3gx3qnpE9Epvb2NBs7jlDVZ98r9qZnZd3RgapM= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.12/go.mod h1:Enu6yuhFl7aj28E8mDSpeVoXcpnLwNd4shZKQPrNFhU= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.14 h1:Hjwpu3YiO8lt05MfqyTDU/UMXYcVzKLfGBRFTa+1qnI= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.14/go.mod h1:SUEQT6YJvFcXCQB1DI2uJhAlc7VFrh+SkeUJz0lpk24= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 h1:jeEFfNxq9uJqkkxhd6WaWNsKNjKhJBcVuWTSgJoXXHM= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20/go.mod h1:5evhIg+6KdZLaezvJPN1rMcn/EY+GypQh/7gNZHD97Y= sigs.k8s.io/controller-runtime v0.18.5 h1:nTHio/W+Q4aBlQMgbnC5hZb4IjIidyrizMai9P6n4Rk= From 7895fe8ce6a732daddb5810a4064e1e24e7e5251 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 08:37:20 -0500 Subject: [PATCH 06/87] deps: bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.74.0 to 1.74.1 (#1275) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.74.0 to 1.74.1.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.74.0&new-version=1.74.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 18 +++++++++--------- go.sum | 36 ++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/go.mod b/go.mod index cf462dc33b..fd88196e74 100644 --- a/go.mod +++ b/go.mod @@ -47,16 +47,16 @@ require ( github.com/Microsoft/go-winio v0.6.1 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.29 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.29 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.28 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.9 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.29 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.10 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.33.9 // indirect @@ -292,7 +292,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.34.0 github.com/aws/aws-sdk-go-v2/config v1.29.1 github.com/aws/aws-sdk-go-v2/credentials v1.17.54 - github.com/aws/aws-sdk-go-v2/service/s3 v1.74.0 + github.com/aws/aws-sdk-go-v2/service/s3 v1.74.1 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 diff --git a/go.sum b/go.sum index 1cef0554b5..24dfc77107 100644 --- a/go.sum +++ b/go.sum @@ -131,32 +131,32 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3d github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go-v2 v1.34.0 h1:9iyL+cjifckRGEVpRKZP3eIxVlL06Qk1Tk13vreaVQU= github.com/aws/aws-sdk-go-v2 v1.34.0/go.mod h1:JgstGg0JjWU1KpVJjD5H0y0yyAIpSdKEq556EI6yOOM= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 h1:lL7IfaFzngfx0ZwUGOZdsFFnQ5uLvR0hWqqhyE7Q9M8= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7/go.mod h1:QraP0UcVlQJsmHfioCrveWOC1nbiWUl3ej08h4mXWoc= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCdoiQp2uZ9k1LsZvmAnoTBeZPXom0= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= github.com/aws/aws-sdk-go-v2/config v1.29.1 h1:JZhGawAyZ/EuJeBtbQYnaoftczcb2drR2Iq36Wgz4sQ= github.com/aws/aws-sdk-go-v2/config v1.29.1/go.mod h1:7bR2YD5euaxBhzt2y/oDkt3uNRb6tjFp98GlTFueRwk= github.com/aws/aws-sdk-go-v2/credentials v1.17.54 h1:4UmqeOqJPvdvASZWrKlhzpRahAulBfyTJQUaYy4+hEI= github.com/aws/aws-sdk-go-v2/credentials v1.17.54/go.mod h1:RTdfo0P0hbbTxIhmQrOsC/PquBZGabEPnCaxxKRPSnI= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 h1:5grmdTdMsovn9kPZPI23Hhvp0ZyNm5cRO+IZFIYiAfw= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24/go.mod h1:zqi7TVKTswH3Ozq28PkmBmgzG1tona7mo9G2IJg4Cis= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28 h1:igORFSiH3bfq4lxKFkTSYDhJEUCYo6C8VKiWJjYwQuQ= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28/go.mod h1:3So8EA/aAYm36L7XIvCVwLa0s5N0P7o2b1oqnx/2R4g= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28 h1:1mOW9zAUMhTSrMDssEHS/ajx8JcAj/IcftzcmNlmVLI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28/go.mod h1:kGlXVIWDfvt2Ox5zEaNglmq0hXPHgQFNMix33Tw22jA= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.29 h1:Ej0Rf3GMv50Qh4G4852j2djtoDb7AzQ7MuQeFHa3D70= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.29/go.mod h1:oeNTC7PwJNoM5AznVr23wxhLnuJv0ZDe5v7w0wqIs9M= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.29 h1:6e8a71X+9GfghragVevC5bZqvATtc3mAMgxpSNbgzF0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.29/go.mod h1:c4jkZiQ+BWpNqq7VtrxjwISrLrt/VvPq3XiopkUIolI= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.28 h1:7kpeALOUeThs2kEjlAxlADAVfxKmkYAedlpZ3kdoSJ4= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.28/go.mod h1:pyaOYEdp1MJWgtXLy6q80r3DhsVdOIOZNB9hdTcJIvI= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.2 h1:e6um6+DWYQP1XCa+E9YVtG/9v1qk5lyAOelMOVwSyO8= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.2/go.mod h1:dIW8puxSbYLSPv/ju0d9A3CpwXdtqvJtYKDMVmPLOWE= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9 h1:TQmKDyETFGiXVhZfQ/I0cCFziqqX58pi4tKJGYGFSz0= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9/go.mod h1:HVLPK2iHQBUx7HfZeOQSEu3v2ubZaAY2YPbAm5/WUyY= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.9 h1:2aInXbh02XsbO0KobPGMNXyv2QP73VDKsWPNJARj/+4= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.9/go.mod h1:dgXS1i+HgWnYkPXqNoPIPKeUsUUYHaUbThC90aDnNiE= -github.com/aws/aws-sdk-go-v2/service/s3 v1.74.0 h1:ncCHiFU9Eq4qnKCNlzMZXfFmvb9R8OVNfU8SFOskxdI= -github.com/aws/aws-sdk-go-v2/service/s3 v1.74.0/go.mod h1:jGJ/v7FIi7Ys9t54tmEFnrxuaWeJLpwNgKp2DXAVhOU= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.29 h1:g9OUETuxA8i/Www5Cby0R3WSTe7ppFTZXHVLNskNS4w= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.29/go.mod h1:CQk+koLR1QeY1+vm7lqNfFii07DEderKq6T3F1L2pyc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.3 h1:EP1ITDgYVPM2dL1bBBntJ7AW5yTjuWGz9XO+CZwpALU= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.3/go.mod h1:5lWNWeAgWenJ/BZ/CP9k9DjLbC0pjnM045WjXRPPi14= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.10 h1:hN4yJBGswmFTOVYqmbz1GBs9ZMtQe8SrYxPwrkrlRv8= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.10/go.mod h1:TsxON4fEZXyrKY+D+3d2gSTyJkGORexIYab9PTf56DA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10 h1:fXoWC2gi7tdJYNTPnnlSGzEVwewUchOi8xVq/dkg8Qs= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10/go.mod h1:cvzBApD5dVazHU8C2rbBQzzzsKc8m5+wNJ9mCRZLKPc= +github.com/aws/aws-sdk-go-v2/service/s3 v1.74.1 h1:9LawY3cDJ3HE+v2GMd5SOkNLDwgN4K7TsCjyVBYu/L4= +github.com/aws/aws-sdk-go-v2/service/s3 v1.74.1/go.mod h1:hHnELVnIHltd8EOF3YzahVX6F6y2C6dNqpRj1IMkS5I= github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 h1:kuIyu4fTT38Kj7YCC7ouNbVZSSpqkZ+LzIfhCr6Dg+I= github.com/aws/aws-sdk-go-v2/service/sso v1.24.11/go.mod h1:Ro744S4fKiCCuZECXgOi760TiYylUM8ZBf6OGiZzJtY= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 h1:l+dgv/64iVlQ3WsBbnn+JSbkj01jIi+SM0wYsj3y/hY= From dcf292836eb8f217149a56dfda9a4d0d3195977f Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Tue, 28 Jan 2025 14:17:13 +0000 Subject: [PATCH 07/87] test(mc): initial multicloud IaC boilerplate GKE, AKS, Kind (#1268) # Description Initial work on multi-cloud * create modules for aks, gke, kind and retina * use gcloud, azure, kind and helm providers * create examples on how to use each module * create automated tests in Go Terratest for each module example (only initial work, since we require creds for public clouds) * create integration test retina-kind (this can also be used as an example for AKS, GKE and eventually EKS) * create a Makefile for this subproject * create GH workflow with automated tests ![diagram](https://github.com/user-attachments/assets/38ded8ec-0c31-4e5d-9bd0-8729115cf5b3) ## Related Issue #1267 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed All modules were tested and work as expected. ![Screenshot 2025-01-24 at 12 18 55](https://github.com/user-attachments/assets/2d222a13-2b12-4a11-a001-1b03a254e152) See automated tests here https://github.com/microsoft/retina/actions/runs/12993893617/job/36237118572 ![image](https://github.com/user-attachments/assets/edafa98b-1d5d-44b0-a393-1bf7b7b70bda) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- .github/workflows/test-multicloud.yml | 31 + test/multicloud/.gitignore | 6 + test/multicloud/Makefile | 42 + test/multicloud/README.md | 98 + test/multicloud/diagrams/diagram.excalidraw | 3366 +++++++++++++++++ test/multicloud/diagrams/diagram.svg | 2 + .../examples/aks/.terraform.lock.hcl | 20 + test/multicloud/examples/aks/main.tf | 12 + test/multicloud/examples/aks/providers.tf | 20 + test/multicloud/examples/aks/variables.tf | 33 + .../examples/gke/.terraform.lock.hcl | 20 + test/multicloud/examples/gke/main.tf | 9 + test/multicloud/examples/gke/outputs.tf | 14 + test/multicloud/examples/gke/providers.tf | 15 + test/multicloud/examples/gke/variables.tf | 19 + .../retina-kind/.terraform.lock.hcl | 34 + .../examples/integration/retina-kind/main.tf | 10 + .../integration/retina-kind/outputs.tf | 19 + .../integration/retina-kind/providers.tf | 26 + .../retina-kind/test-integration-kind-config | 3 + .../integration/retina-kind/test-kind-config | 3 + .../integration/retina-kind/variables.tf | 11 + .../examples/kind/.terraform.lock.hcl | 16 + test/multicloud/examples/kind/main.tf | 4 + test/multicloud/examples/kind/outputs.tf | 19 + test/multicloud/examples/kind/providers.tf | 12 + test/multicloud/examples/kind/variables.tf | 4 + .../live/retina-aks/.terraform.lock.hcl | 40 + test/multicloud/live/retina-aks/main.tf | 16 + test/multicloud/live/retina-aks/providers.tf | 34 + test/multicloud/live/retina-aks/variables.tf | 35 + .../live/retina-gke/.terraform.lock.hcl | 40 + test/multicloud/live/retina-gke/main.tf | 12 + test/multicloud/live/retina-gke/outputs.tf | 3 + test/multicloud/live/retina-gke/providers.tf | 30 + test/multicloud/live/retina-gke/variables.tf | 23 + .../live/retina-kind/.terraform.lock.hcl | 36 + test/multicloud/live/retina-kind/main.tf | 9 + test/multicloud/live/retina-kind/providers.tf | 26 + test/multicloud/live/retina-kind/variables.tf | 5 + test/multicloud/modules/aks/main.tf | 47 + test/multicloud/modules/aks/outputs.tf | 24 + test/multicloud/modules/aks/provider.tf | 9 + test/multicloud/modules/aks/variables.tf | 78 + test/multicloud/modules/gke/main.tf | 34 + test/multicloud/modules/gke/output.tf | 14 + test/multicloud/modules/gke/provider.tf | 9 + test/multicloud/modules/gke/variables.tf | 19 + test/multicloud/modules/kind/main.tf | 20 + test/multicloud/modules/kind/output.tf | 24 + test/multicloud/modules/kind/provider.tf | 9 + test/multicloud/modules/kind/variables.tf | 4 + test/multicloud/modules/retina/main.tf | 15 + test/multicloud/modules/retina/provider.tf | 8 + test/multicloud/modules/retina/variables.tf | 27 + test/multicloud/test/example_aks_test.go | 38 + test/multicloud/test/example_gke_test.go | 54 + test/multicloud/test/example_kind_test.go | 43 + test/multicloud/test/go.mod | 73 + test/multicloud/test/go.sum | 192 + .../test/integration_retina_kind_test.go | 49 + test/multicloud/test/testUtils.go | 120 + 62 files changed, 5087 insertions(+) create mode 100644 .github/workflows/test-multicloud.yml create mode 100644 test/multicloud/.gitignore create mode 100644 test/multicloud/Makefile create mode 100644 test/multicloud/README.md create mode 100644 test/multicloud/diagrams/diagram.excalidraw create mode 100644 test/multicloud/diagrams/diagram.svg create mode 100644 test/multicloud/examples/aks/.terraform.lock.hcl create mode 100644 test/multicloud/examples/aks/main.tf create mode 100644 test/multicloud/examples/aks/providers.tf create mode 100644 test/multicloud/examples/aks/variables.tf create mode 100644 test/multicloud/examples/gke/.terraform.lock.hcl create mode 100644 test/multicloud/examples/gke/main.tf create mode 100644 test/multicloud/examples/gke/outputs.tf create mode 100644 test/multicloud/examples/gke/providers.tf create mode 100644 test/multicloud/examples/gke/variables.tf create mode 100644 test/multicloud/examples/integration/retina-kind/.terraform.lock.hcl create mode 100644 test/multicloud/examples/integration/retina-kind/main.tf create mode 100644 test/multicloud/examples/integration/retina-kind/outputs.tf create mode 100644 test/multicloud/examples/integration/retina-kind/providers.tf create mode 100644 test/multicloud/examples/integration/retina-kind/test-integration-kind-config create mode 100644 test/multicloud/examples/integration/retina-kind/test-kind-config create mode 100644 test/multicloud/examples/integration/retina-kind/variables.tf create mode 100644 test/multicloud/examples/kind/.terraform.lock.hcl create mode 100644 test/multicloud/examples/kind/main.tf create mode 100644 test/multicloud/examples/kind/outputs.tf create mode 100644 test/multicloud/examples/kind/providers.tf create mode 100644 test/multicloud/examples/kind/variables.tf create mode 100644 test/multicloud/live/retina-aks/.terraform.lock.hcl create mode 100644 test/multicloud/live/retina-aks/main.tf create mode 100644 test/multicloud/live/retina-aks/providers.tf create mode 100644 test/multicloud/live/retina-aks/variables.tf create mode 100644 test/multicloud/live/retina-gke/.terraform.lock.hcl create mode 100644 test/multicloud/live/retina-gke/main.tf create mode 100644 test/multicloud/live/retina-gke/outputs.tf create mode 100644 test/multicloud/live/retina-gke/providers.tf create mode 100644 test/multicloud/live/retina-gke/variables.tf create mode 100644 test/multicloud/live/retina-kind/.terraform.lock.hcl create mode 100644 test/multicloud/live/retina-kind/main.tf create mode 100644 test/multicloud/live/retina-kind/providers.tf create mode 100644 test/multicloud/live/retina-kind/variables.tf create mode 100644 test/multicloud/modules/aks/main.tf create mode 100644 test/multicloud/modules/aks/outputs.tf create mode 100644 test/multicloud/modules/aks/provider.tf create mode 100644 test/multicloud/modules/aks/variables.tf create mode 100644 test/multicloud/modules/gke/main.tf create mode 100644 test/multicloud/modules/gke/output.tf create mode 100644 test/multicloud/modules/gke/provider.tf create mode 100644 test/multicloud/modules/gke/variables.tf create mode 100644 test/multicloud/modules/kind/main.tf create mode 100644 test/multicloud/modules/kind/output.tf create mode 100644 test/multicloud/modules/kind/provider.tf create mode 100644 test/multicloud/modules/kind/variables.tf create mode 100644 test/multicloud/modules/retina/main.tf create mode 100644 test/multicloud/modules/retina/provider.tf create mode 100644 test/multicloud/modules/retina/variables.tf create mode 100644 test/multicloud/test/example_aks_test.go create mode 100644 test/multicloud/test/example_gke_test.go create mode 100644 test/multicloud/test/example_kind_test.go create mode 100644 test/multicloud/test/go.mod create mode 100644 test/multicloud/test/go.sum create mode 100644 test/multicloud/test/integration_retina_kind_test.go create mode 100644 test/multicloud/test/testUtils.go diff --git a/.github/workflows/test-multicloud.yml b/.github/workflows/test-multicloud.yml new file mode 100644 index 0000000000..6281341efb --- /dev/null +++ b/.github/workflows/test-multicloud.yml @@ -0,0 +1,31 @@ +name: Test Multicloud + +on: + pull_request: + paths: + - 'test/multicloud/**' + +jobs: + multicloud-test: + runs-on: ubuntu-latest + + steps: + - uses: opentofu/setup-opentofu@v1 + with: + tofu_version: 1.8.3 + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: '1.23' + + - name: Install dependencies + run: go mod download + working-directory: test/multicloud/ + + - name: Run tests + run: make test + working-directory: test/multicloud/ \ No newline at end of file diff --git a/test/multicloud/.gitignore b/test/multicloud/.gitignore new file mode 100644 index 0000000000..6f829cf6f9 --- /dev/null +++ b/test/multicloud/.gitignore @@ -0,0 +1,6 @@ +terraform.tfvars +.terraform +terraform.tfstate +*terraform.tfstate.* +service-key.json +*-kind-config diff --git a/test/multicloud/Makefile b/test/multicloud/Makefile new file mode 100644 index 0000000000..715e86ec2f --- /dev/null +++ b/test/multicloud/Makefile @@ -0,0 +1,42 @@ +PREFIX ?= retina +STACK_NAME ?= $(PREFIX)-aks + +.PHONY: init plan apply quick gke aks kind destroy clean kind-kubeconfig test + +plan: + cd live/$(STACK_NAME) && \ + tofu fmt && tofu init && tofu plan + +apply: + cd live/$(STACK_NAME) && \ + tofu apply --auto-approve + +quick: + @make plan + @make apply + +gke: export STACK_NAME=$(PREFIX)-gke +gke: + @make quick + +aks: export STACK_NAME=$(PREFIX)-aks +aks: + @make quick + +kind: export STACK_NAME=$(PREFIX)-kind +kind: + @make quick + +destroy: + cd live/$(STACK_NAME) && \ + tofu destroy --auto-approve + +clean: destroy + @cd live/$(STACK_NAME) && \ + rm -rf .terraform && rm terraform.tfstate && rm terraform.tfstate.backup + +kind-kubeconfig: + @kubectl config set-context live/$(PREFIX)-kind/mc-kind-config + +test: + @cd test && go test -v -count=1 -timeout 30m ./... diff --git a/test/multicloud/README.md b/test/multicloud/README.md new file mode 100644 index 0000000000..f82939a532 --- /dev/null +++ b/test/multicloud/README.md @@ -0,0 +1,98 @@ +# Multi Cloud Retina + +This project leverages [OpenTofu](https://opentofu.org/docs/intro/) Infrastructure as Code (IaC) to create Kubernetes infrastructure on multi-cloud and deploy [microsoft/retina](https://github.com/microsoft/retina) via Helm provider. + +![Architecture Diagram](./diagrams/diagram.svg) + +## Modules available + +* [aks](./modules/aks/) +* [gke](./modules/gke/) +* [kind](./modules/kind/) +* [retina](./modules/retina/) + +## Prerequisites + +* [OpenTofu installation guide](https://opentofu.org/docs/intro/install/) + +* AKS: + + 1. create an Azure account + 2. [Install az](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) + + To deploy an AKS cluster and install retina, create file `live/retina-aks/terraform.tfvars` with the Azure TenantID and SubscriptionID + + ```sh + # example values + subscription_id = "d6050d84-e4dd-463d-afc7-a6ab3dc33ab7" + tenant_id = "ac8a4ccd-35f1-4f95-a688-f68e3d89adfc" + ``` + +* GKE: + + 1. create a gcloud account, project and enable billing + 2. create a service account and service account key + 3. [Enable Kubernetes Engine API](https://console.developers.google.com/apis/api/container.googleapis.com/overview?project=mc-retina) + 4. [Install gcloud](https://cloud.google.com/sdk/docs/install) + + To deploy a GKE cluster export `GOOGLE_APPLICATION_CREDENTIALS` env variable to point to the path where your [service account key](https://cloud.google.com/iam/docs/keys-create-delete) is located. + + ```sh + # example + export GOOGLE_APPLICATION_CREDENTIALS=/Users/srodi/src/retina/test/multicloud/live/retina-gke/service-key.json + ``` + +* Kind: + + 1. Docker installed on the host machine + +## Quickstart + +The following Make targets can be used to manage each stack lifecycle. + +### Create + +Format code, initialize OpenTofu, plan and apply the stack to create infra and deploy retina + +* AKS: + + ```sh + make aks + ``` + +* GKE: + + ```sh + make gke + ``` + +* Kind: + + ```sh + make kind + ``` + +### Clean up + +To destroy the cluster specify the `STACK_NAME` and run `make clean`. + +```sh +# destroy AKS and cleanup local state files +# set a different stack as needed (i.e. retina-gke, retina-kind) +export STACK_NAME=retina-aks +make clean +``` + +### Test + +The test framework is levergaing Go and [Terratest](https://terratest.gruntwork.io/docs/). To run tests: + +```sh +make test +``` + +## Providers references + +* [GKE resource documentation](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster) +* [AKS resource documentation](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster) +* [Kind resource documentation](https://registry.terraform.io/providers/tehcyx/kind/latest/docs/resources/cluster) diff --git a/test/multicloud/diagrams/diagram.excalidraw b/test/multicloud/diagrams/diagram.excalidraw new file mode 100644 index 0000000000..8049513551 --- /dev/null +++ b/test/multicloud/diagrams/diagram.excalidraw @@ -0,0 +1,3366 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "zghIcLCzAMCMHoPa6KCP5", + "type": "rectangle", + "x": 919, + "y": 483, + "width": 286, + "height": 426, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "Zw", + "roundness": { + "type": 3 + }, + "seed": 618936138, + "version": 144, + "versionNonce": 1644653718, + "isDeleted": false, + "boundElements": [ + { + "id": "o_HSEmb0pecqRgBJDEBRp", + "type": "arrow" + }, + { + "id": "RBNxQ4pEgxmBXnHdIaBf9", + "type": "arrow" + }, + { + "id": "xhoCMjoiXLgPLJUmc7WuE", + "type": "arrow" + } + ], + "updated": 1737971092328, + "link": null, + "locked": false + }, + { + "id": "0S628Xmv8YIAFSDx8-05e", + "type": "rectangle", + "x": 1343, + "y": 443, + "width": 311, + "height": 503, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "Zx", + "roundness": { + "type": 3 + }, + "seed": 1054405910, + "version": 48, + "versionNonce": 564948438, + "isDeleted": false, + "boundElements": [ + { + "id": "HYF4G_hkcZFNdgAl0YQNb", + "type": "arrow" + }, + { + "id": "-4dHrHQZE2TDSvs-vgcAo", + "type": "arrow" + }, + { + "id": "o_HSEmb0pecqRgBJDEBRp", + "type": "arrow" + } + ], + "updated": 1737971037967, + "link": null, + "locked": false + }, + { + "id": "uLVKBxcndIG-qzR2NQnMF", + "type": "rectangle", + "x": 1854.5, + "y": 915.5, + "width": 311, + "height": 365.00000000000006, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "Zy", + "roundness": { + "type": 3 + }, + "seed": 1560720842, + "version": 336, + "versionNonce": 747983318, + "isDeleted": false, + "boundElements": [ + { + "id": "-4dHrHQZE2TDSvs-vgcAo", + "type": "arrow" + }, + { + "id": "RBNxQ4pEgxmBXnHdIaBf9", + "type": "arrow" + } + ], + "updated": 1737971057148, + "link": null, + "locked": false + }, + { + "id": "R4AeEioM2INhMP9rnYnHe", + "type": "rectangle", + "x": 1856.5, + "y": 347.5, + "width": 311, + "height": 503, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "Zz", + "roundness": { + "type": 3 + }, + "seed": 719699734, + "version": 234, + "versionNonce": 37331222, + "isDeleted": false, + "boundElements": [ + { + "id": "r_IiMCnJET5n-m5aE4N6J", + "type": "arrow" + }, + { + "id": "HYF4G_hkcZFNdgAl0YQNb", + "type": "arrow" + }, + { + "id": "xhoCMjoiXLgPLJUmc7WuE", + "type": "arrow" + }, + { + "id": "1G4RvWl5j3Eq0orLwRNb1", + "type": "arrow" + }, + { + "id": "JenUnqPQU9n29FUsRjstV", + "type": "arrow" + } + ], + "updated": 1737971550725, + "link": null, + "locked": false + }, + { + "id": "zXqDMrjv50TU6s8f0xi2s", + "type": "rectangle", + "x": 1847.078125, + "y": -36, + "width": 231.859375, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0y", + "roundness": null, + "seed": 886375254, + "version": 125, + "versionNonce": 425608714, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "Eh9WaurLCaoIoY157lFTc" + }, + { + "id": "sSBpGKS5X6pi-Hat4HUBJ", + "type": "arrow" + }, + { + "id": "WlzkJ1a1P1Er7kfA1RP4T", + "type": "arrow" + } + ], + "updated": 1737971176481, + "link": null, + "locked": false + }, + { + "id": "O4E1OnJgXZMVXYZqcHbbf", + "type": "rectangle", + "x": 1881.3203125, + "y": 58, + "width": 163.375, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b0z", + "roundness": null, + "seed": 558246038, + "version": 234, + "versionNonce": 1718596042, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "iafWgom0hD1fD-mok9szu" + }, + { + "id": "sSBpGKS5X6pi-Hat4HUBJ", + "type": "arrow" + }, + { + "id": "TxfM-J3QLXhdIlqgtcSp3", + "type": "arrow" + }, + { + "id": "r_IiMCnJET5n-m5aE4N6J", + "type": "arrow" + }, + { + "id": "J_prQC5yc7ywuZigF71Wh", + "type": "arrow" + } + ], + "updated": 1737971184547, + "link": null, + "locked": false + }, + { + "id": "ysLRakRFsF7DlEwBVIfpv", + "type": "rectangle", + "x": 2444.4140625, + "y": 74, + "width": 225.65625, + "height": 60, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b12", + "roundness": null, + "seed": 1464182870, + "version": 847, + "versionNonce": 1974440970, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "UoF1VeVtOBF-B_pHGbkiD" + }, + { + "id": "WlzkJ1a1P1Er7kfA1RP4T", + "type": "arrow" + }, + { + "id": "EL7fKQS2Z0a_heFdNlDpe", + "type": "arrow" + }, + { + "id": "-FO1qNsJmZSIC7MG10S17", + "type": "arrow" + } + ], + "updated": 1737971476328, + "link": null, + "locked": false + }, + { + "id": "9pGuk9pLc645Jva07NwPP", + "type": "rectangle", + "x": 1417.08984375, + "y": 503, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b13", + "roundness": null, + "seed": 1482304918, + "version": 54, + "versionNonce": 1221402454, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "n6fgzgLn1UV2wrjYVoVDr" + } + ], + "updated": 1737970947812, + "link": null, + "locked": false + }, + { + "id": "nlTAqIR7zMcS6PGUnUiPG", + "type": "rectangle", + "x": 1420.06640625, + "y": 704, + "width": 154.921875, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b14", + "roundness": null, + "seed": 1730939606, + "version": 93, + "versionNonce": 1874844694, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "RK06UCyMyn_5XDjMl8d_D" + } + ], + "updated": 1737970950262, + "link": null, + "locked": false + }, + { + "id": "fz7IX_5gQKgv9w7KWCF9F", + "type": "rectangle", + "x": 1415.05078125, + "y": 796, + "width": 173.296875, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b15", + "roundness": null, + "seed": 307249174, + "version": 137, + "versionNonce": 234210442, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "kgSbIGb4Oi7kNTwp2QkrU" + } + ], + "updated": 1737970951221, + "link": null, + "locked": false + }, + { + "id": "oKOWo7KV9Y8J3AQR1lX-P", + "type": "rectangle", + "x": 989.09765625, + "y": 805, + "width": 153.20312500000003, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1C", + "roundness": null, + "seed": 2062767318, + "version": 226, + "versionNonce": 700710410, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "YBOf_ZI3--rqMICNXDl5o" + } + ], + "updated": 1737970946099, + "link": null, + "locked": false + }, + { + "id": "xPpUhfUnNbsMPlojZlr0W", + "type": "rectangle", + "x": 980.1328125, + "y": 543, + "width": 162.078125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "klCQzqbRxuqhJ44QC9Oku" + ], + "frameId": null, + "index": "b1E", + "roundness": null, + "seed": 1538824022, + "version": 267, + "versionNonce": 763874250, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "03ZfRAoP-dkIsVdwuMcGm" + } + ], + "updated": 1737970941082, + "link": null, + "locked": false + }, + { + "id": "sSBpGKS5X6pi-Hat4HUBJ", + "type": "arrow", + "x": 1963.00803125, + "y": 8.5, + "width": 0, + "height": 43.699999999999996, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1F", + "roundness": { + "type": 2 + }, + "seed": 1318534294, + "version": 467, + "versionNonce": 2147339786, + "isDeleted": false, + "boundElements": [], + "updated": 1737971184547, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 43.699999999999996 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "zXqDMrjv50TU6s8f0xi2s", + "focus": -0.000001886919603150646, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "O4E1OnJgXZMVXYZqcHbbf", + "focus": 0.0000026778882929564303, + "gap": 5.799999999999997, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "Eh9WaurLCaoIoY157lFTc", + "type": "text", + "x": 1869.5478744506836, + "y": -26.5, + "width": 186.9198760986328, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1Z", + "roundness": null, + "seed": 570447254, + "version": 124, + "versionNonce": 1946965270, + "isDeleted": false, + "boundElements": [], + "updated": 1737970467013, + "link": null, + "locked": false, + "text": "Multi-Cloud Project", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "zXqDMrjv50TU6s8f0xi2s", + "originalText": "Multi-Cloud Project", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "iafWgom0hD1fD-mok9szu", + "type": "text", + "x": 1893.917854309082, + "y": 67.5, + "width": 138.17991638183594, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1a", + "roundness": null, + "seed": 1775055574, + "version": 225, + "versionNonce": 1441458314, + "isDeleted": false, + "boundElements": [], + "updated": 1737971184547, + "link": null, + "locked": false, + "text": "OpenTofu IaC", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "O4E1OnJgXZMVXYZqcHbbf", + "originalText": "OpenTofu IaC", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "UoF1VeVtOBF-B_pHGbkiD", + "type": "text", + "x": 2499.9722213745117, + "y": 79, + "width": 114.53993225097656, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1d", + "roundness": null, + "seed": 404085398, + "version": 838, + "versionNonce": 911934358, + "isDeleted": false, + "boundElements": [], + "updated": 1737971223954, + "link": null, + "locked": false, + "text": "GO Testing\nFramework", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ysLRakRFsF7DlEwBVIfpv", + "originalText": "GO Testing Framework", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "n6fgzgLn1UV2wrjYVoVDr", + "type": "text", + "x": 1465.7064208984375, + "y": 512.5, + "width": 46.219970703125, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1e", + "roundness": null, + "seed": 1827280854, + "version": 48, + "versionNonce": 2005438678, + "isDeleted": false, + "boundElements": [], + "updated": 1737970219802, + "link": null, + "locked": false, + "text": "AKS ", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "9pGuk9pLc645Jva07NwPP", + "originalText": "AKS ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "RK06UCyMyn_5XDjMl8d_D", + "type": "text", + "x": 1471.6273498535156, + "y": 713.5, + "width": 51.79998779296875, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1f", + "roundness": null, + "seed": 784641302, + "version": 94, + "versionNonce": 1999275926, + "isDeleted": false, + "boundElements": [], + "updated": 1737970228691, + "link": null, + "locked": false, + "text": "KIND", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "nlTAqIR7zMcS6PGUnUiPG", + "originalText": "KIND", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "kgSbIGb4Oi7kNTwp2QkrU", + "type": "text", + "x": 1469.239242553711, + "y": 805.5, + "width": 64.91995239257812, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1g", + "roundness": null, + "seed": 454728278, + "version": 136, + "versionNonce": 1384911050, + "isDeleted": false, + "boundElements": [], + "updated": 1737970238236, + "link": null, + "locked": false, + "text": "Retina", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "fz7IX_5gQKgv9w7KWCF9F", + "originalText": "Retina", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "YBOf_ZI3--rqMICNXDl5o", + "type": "text", + "x": 1041.7192306518555, + "y": 814.5, + "width": 47.95997619628906, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1n", + "roundness": null, + "seed": 1108719382, + "version": 222, + "versionNonce": 1030092746, + "isDeleted": false, + "boundElements": [], + "updated": 1737970255474, + "link": null, + "locked": false, + "text": "Helm ", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "oKOWo7KV9Y8J3AQR1lX-P", + "originalText": "Helm ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "03ZfRAoP-dkIsVdwuMcGm", + "type": "text", + "x": 1033.291893005371, + "y": 552.5, + "width": 55.75996398925781, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "klCQzqbRxuqhJ44QC9Oku" + ], + "frameId": null, + "index": "b1p", + "roundness": null, + "seed": 2128046486, + "version": 267, + "versionNonce": 1559104842, + "isDeleted": false, + "boundElements": [], + "updated": 1737970255474, + "link": null, + "locked": false, + "text": "Azure", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "xPpUhfUnNbsMPlojZlr0W", + "originalText": "Azure", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "U6X68vlOQPsistV7KGQj7", + "type": "rectangle", + "x": 982.9609375, + "y": 716, + "width": 162.078125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8IJVdH1tDYshWtx-RzqUy" + ], + "frameId": null, + "index": "b1u", + "roundness": null, + "seed": 1066099146, + "version": 321, + "versionNonce": 1510947478, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "n5AzOpyhjDk4cJALwlppo" + } + ], + "updated": 1737970944829, + "link": null, + "locked": false + }, + { + "id": "n5AzOpyhjDk4cJALwlppo", + "type": "text", + "x": 1038.1000061035156, + "y": 725.5, + "width": 51.79998779296875, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8IJVdH1tDYshWtx-RzqUy" + ], + "frameId": null, + "index": "b1v", + "roundness": null, + "seed": 1880135818, + "version": 337, + "versionNonce": 110019274, + "isDeleted": false, + "boundElements": [], + "updated": 1737970255474, + "link": null, + "locked": false, + "text": "KIND", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "U6X68vlOQPsistV7KGQj7", + "originalText": "KIND", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "6vHcegO-bhhAWthKg5DLF", + "type": "rectangle", + "x": 982.9609375, + "y": 632, + "width": 162.078125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "dBEY2fEZd5U8JDWibmeLQ" + ], + "frameId": null, + "index": "b1w", + "roundness": null, + "seed": 2042518742, + "version": 322, + "versionNonce": 2099680970, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "7FCUVEMtLqp4KBg0vB5g0" + } + ], + "updated": 1737970943673, + "link": null, + "locked": false + }, + { + "id": "7FCUVEMtLqp4KBg0vB5g0", + "type": "text", + "x": 1000.5100250244141, + "y": 641.5, + "width": 126.97994995117188, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "dBEY2fEZd5U8JDWibmeLQ" + ], + "frameId": null, + "index": "b1x", + "roundness": null, + "seed": 46682646, + "version": 338, + "versionNonce": 1151342666, + "isDeleted": false, + "boundElements": [], + "updated": 1737970255474, + "link": null, + "locked": false, + "text": "Google Cloud", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "6vHcegO-bhhAWthKg5DLF", + "originalText": "Google Cloud", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "cvMVx90aAz8Snv2pIMyEP", + "type": "rectangle", + "x": 1422.2734375, + "y": 610, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1y", + "roundness": null, + "seed": 504440010, + "version": 148, + "versionNonce": 1612320074, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "7x5KHRGKh6towsi_8LYpB" + } + ], + "updated": 1737970949157, + "link": null, + "locked": false + }, + { + "id": "7x5KHRGKh6towsi_8LYpB", + "type": "text", + "x": 1472.5700073242188, + "y": 619.5, + "width": 42.8599853515625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b1z", + "roundness": null, + "seed": 518388618, + "version": 144, + "versionNonce": 1811483594, + "isDeleted": false, + "boundElements": [], + "updated": 1737970242587, + "link": null, + "locked": false, + "text": "GKE", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cvMVx90aAz8Snv2pIMyEP", + "originalText": "GKE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "w-30O_eesbT44MY2r9VIi", + "type": "text", + "x": 1544, + "y": 455, + "width": 76.61996459960938, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b21", + "roundness": null, + "seed": 274873098, + "version": 33, + "versionNonce": 344674902, + "isDeleted": false, + "boundElements": [ + { + "id": "TxfM-J3QLXhdIlqgtcSp3", + "type": "arrow" + } + ], + "updated": 1737970326763, + "link": null, + "locked": false, + "text": "Modules", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Modules", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "A19y-iFjO8jPxtueSWwhh", + "type": "text", + "x": 1090, + "y": 497, + "width": 92.65994262695312, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b23", + "roundness": null, + "seed": 1289638218, + "version": 41, + "versionNonce": 1506505930, + "isDeleted": false, + "boundElements": null, + "updated": 1737970297494, + "link": null, + "locked": false, + "text": "Providers", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Providers", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "TxfM-J3QLXhdIlqgtcSp3", + "type": "arrow", + "x": 1971.3696285377284, + "y": 103, + "width": 395.36962853772843, + "height": 341, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b28", + "roundness": { + "type": 2 + }, + "seed": 1369408406, + "version": 163, + "versionNonce": 1645571990, + "isDeleted": false, + "boundElements": null, + "updated": 1737971184547, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -395.36962853772843, + 341 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "O4E1OnJgXZMVXYZqcHbbf", + "focus": -0.32677741038380365, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "w-30O_eesbT44MY2r9VIi", + "focus": -0.8955844703788051, + "gap": 11, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "8AUKqnBI6Ff1R4wt0slqa", + "type": "rectangle", + "x": 1930.58984375, + "y": 407.5, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b29", + "roundness": null, + "seed": 1981592854, + "version": 231, + "versionNonce": 1503908374, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "eoIm4zi0FVKJOECWWL7TP" + } + ], + "updated": 1737970947812, + "link": null, + "locked": false + }, + { + "id": "Rg3n2f_ms7-kJ94iZVPrE", + "type": "rectangle", + "x": 1933.56640625, + "y": 608.5, + "width": 154.921875, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2A", + "roundness": null, + "seed": 1244766806, + "version": 270, + "versionNonce": 1096754902, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "k5JMWXVEMnO8AA6zcZaht" + } + ], + "updated": 1737970950262, + "link": null, + "locked": false + }, + { + "id": "cK83p_ezogmd5Hf_eZwz2", + "type": "rectangle", + "x": 1928.55078125, + "y": 700.5, + "width": 173.296875, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2B", + "roundness": null, + "seed": 1068951446, + "version": 314, + "versionNonce": 497421770, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "7ok5BbnOLbhPq6AgN4GYB" + } + ], + "updated": 1737970951221, + "link": null, + "locked": false + }, + { + "id": "eoIm4zi0FVKJOECWWL7TP", + "type": "text", + "x": 1979.2064208984375, + "y": 417, + "width": 46.219970703125, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2C", + "roundness": null, + "seed": 1994491094, + "version": 226, + "versionNonce": 1844995478, + "isDeleted": false, + "boundElements": [], + "updated": 1737970406988, + "link": null, + "locked": false, + "text": "AKS ", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "8AUKqnBI6Ff1R4wt0slqa", + "originalText": "AKS ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "k5JMWXVEMnO8AA6zcZaht", + "type": "text", + "x": 1985.1273498535156, + "y": 618, + "width": 51.79998779296875, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2D", + "roundness": null, + "seed": 1095137814, + "version": 272, + "versionNonce": 543491414, + "isDeleted": false, + "boundElements": [], + "updated": 1737970406988, + "link": null, + "locked": false, + "text": "KIND", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Rg3n2f_ms7-kJ94iZVPrE", + "originalText": "KIND", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "7ok5BbnOLbhPq6AgN4GYB", + "type": "text", + "x": 1982.739242553711, + "y": 710, + "width": 64.91995239257812, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2E", + "roundness": null, + "seed": 1977272150, + "version": 314, + "versionNonce": 1165016342, + "isDeleted": false, + "boundElements": [], + "updated": 1737970406988, + "link": null, + "locked": false, + "text": "Retina", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cK83p_ezogmd5Hf_eZwz2", + "originalText": "Retina", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "BFUrWgvUgo1Tm7uLzxqJb", + "type": "rectangle", + "x": 1935.7734375, + "y": 514.5, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2F", + "roundness": null, + "seed": 1156803734, + "version": 325, + "versionNonce": 987000458, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "q3iv3crLU6YUmmSjnjJ7r" + } + ], + "updated": 1737970949157, + "link": null, + "locked": false + }, + { + "id": "q3iv3crLU6YUmmSjnjJ7r", + "type": "text", + "x": 1986.0700073242188, + "y": 524, + "width": 42.8599853515625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2G", + "roundness": null, + "seed": 205875670, + "version": 322, + "versionNonce": 995265750, + "isDeleted": false, + "boundElements": [], + "updated": 1737970406989, + "link": null, + "locked": false, + "text": "GKE", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "BFUrWgvUgo1Tm7uLzxqJb", + "originalText": "GKE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "0zdoqgDRvg-ebTICP9SFX", + "type": "text", + "x": 2057.5, + "y": 359.5, + "width": 87.31996154785156, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2I", + "roundness": null, + "seed": 1430875222, + "version": 219, + "versionNonce": 1470198934, + "isDeleted": false, + "boundElements": [], + "updated": 1737970406989, + "link": null, + "locked": false, + "text": "Examples", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Examples", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "2YGILj7S2n9PeADdx2TMY", + "type": "rectangle", + "x": 1928.58984375, + "y": 975.5, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2N", + "roundness": null, + "seed": 739942346, + "version": 263, + "versionNonce": 2047805078, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "A_JFPEAqBW9EPietZYM8a" + } + ], + "updated": 1737970455777, + "link": null, + "locked": false + }, + { + "id": "mIlz4x0AjaordLAqI-DWY", + "type": "rectangle", + "x": 1931.56640625, + "y": 1176.5, + "width": 154.921875, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2O", + "roundness": null, + "seed": 1141380746, + "version": 302, + "versionNonce": 761452822, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "uv0MN_ZBtwcWuq7WETscI" + } + ], + "updated": 1737970455778, + "link": null, + "locked": false + }, + { + "id": "A_JFPEAqBW9EPietZYM8a", + "type": "text", + "x": 1944.996452331543, + "y": 985, + "width": 110.63990783691406, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2Q", + "roundness": null, + "seed": 791116810, + "version": 269, + "versionNonce": 249414614, + "isDeleted": false, + "boundElements": [], + "updated": 1737970455778, + "link": null, + "locked": false, + "text": "Retina-AKS", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "2YGILj7S2n9PeADdx2TMY", + "originalText": "Retina-AKS", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "uv0MN_ZBtwcWuq7WETscI", + "type": "text", + "x": 1946.7973861694336, + "y": 1186, + "width": 124.45991516113281, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2R", + "roundness": null, + "seed": 1102015178, + "version": 318, + "versionNonce": 2098415190, + "isDeleted": false, + "boundElements": [], + "updated": 1737970455778, + "link": null, + "locked": false, + "text": "Retina-KIND", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "mIlz4x0AjaordLAqI-DWY", + "originalText": "Retina-KIND", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "y5OM8zL9aH4eV1vQRfRA8", + "type": "rectangle", + "x": 1933.7734375, + "y": 1082.5, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2T", + "roundness": null, + "seed": 1572257866, + "version": 357, + "versionNonce": 1858341782, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "cgV-AqaregAAVrxZQQPP7" + } + ], + "updated": 1737970455778, + "link": null, + "locked": false + }, + { + "id": "cgV-AqaregAAVrxZQQPP7", + "type": "text", + "x": 1948.2400436401367, + "y": 1092, + "width": 114.51991271972656, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2U", + "roundness": null, + "seed": 508307210, + "version": 365, + "versionNonce": 279587030, + "isDeleted": false, + "boundElements": [], + "updated": 1737970455778, + "link": null, + "locked": false, + "text": "Retina-GKE", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "y5OM8zL9aH4eV1vQRfRA8", + "originalText": "Retina-GKE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "CDhoAiwZsuutyGpxSBtr1", + "type": "text", + "x": 2055.5, + "y": 927.5, + "width": 37.23997497558594, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2W", + "roundness": null, + "seed": 1795255434, + "version": 257, + "versionNonce": 80994134, + "isDeleted": false, + "boundElements": [ + { + "id": "J_prQC5yc7ywuZigF71Wh", + "type": "arrow" + } + ], + "updated": 1737970481192, + "link": null, + "locked": false, + "text": "Live", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Live", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "r_IiMCnJET5n-m5aE4N6J", + "type": "arrow", + "x": 1972, + "y": 107, + "width": 6.9854166666666515, + "height": 239.5, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2Y", + "roundness": { + "type": 2 + }, + "seed": 1848447382, + "version": 149, + "versionNonce": 132873418, + "isDeleted": false, + "boundElements": null, + "updated": 1737971184548, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 6.9854166666666515, + 239.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "O4E1OnJgXZMVXYZqcHbbf", + "focus": -0.09965711827521635, + "gap": 5, + "fixedPoint": null + }, + "endBinding": { + "elementId": "R4AeEioM2INhMP9rnYnHe", + "focus": -0.15752101431660293, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "J_prQC5yc7ywuZigF71Wh", + "type": "arrow", + "x": 1973, + "y": 106.99999999999989, + "width": 388, + "height": 812.0000000000001, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2Z", + "roundness": { + "type": 2 + }, + "seed": 26578774, + "version": 401, + "versionNonce": 876832714, + "isDeleted": false, + "boundElements": [], + "updated": 1737971284718, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 388, + 564.0000000000001 + ], + [ + 84, + 812.0000000000001 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "O4E1OnJgXZMVXYZqcHbbf", + "focus": 0.0886395475001259, + "gap": 5, + "fixedPoint": null + }, + "endBinding": { + "elementId": "CDhoAiwZsuutyGpxSBtr1", + "focus": -1.262777842966161, + "gap": 8.5, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "HYF4G_hkcZFNdgAl0YQNb", + "type": "arrow", + "x": 1858, + "y": 607, + "width": 207, + "height": 5, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2a", + "roundness": { + "type": 2 + }, + "seed": 1979137814, + "version": 57, + "versionNonce": 1112572054, + "isDeleted": false, + "boundElements": null, + "updated": 1737971124821, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -207, + 5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "R4AeEioM2INhMP9rnYnHe", + "focus": -0.01676823498239903, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "0S628Xmv8YIAFSDx8-05e", + "focus": -0.3087739884174268, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "nm5O_cFaqDOe1J9pTEhmu", + "type": "text", + "x": 1708, + "y": 574, + "width": 125.63990783691406, + "height": 25, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2b", + "roundness": null, + "seed": 183796746, + "version": 85, + "versionNonce": 62722378, + "isDeleted": false, + "boundElements": null, + "updated": 1737971128309, + "link": null, + "locked": false, + "text": "Instantiates", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Instantiates", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "VBZOWyP-GhRCxXcLTHwB_", + "type": "text", + "x": 1657.180046081543, + "y": 1047.5, + "width": 125.63990783691406, + "height": 25, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2c", + "roundness": null, + "seed": 739676554, + "version": 124, + "versionNonce": 2038259082, + "isDeleted": false, + "boundElements": [], + "updated": 1737971132189, + "link": null, + "locked": false, + "text": "Instantiates", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Instantiates", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "-4dHrHQZE2TDSvs-vgcAo", + "type": "arrow", + "x": 1853, + "y": 1104, + "width": 200, + "height": 187, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2d", + "roundness": { + "type": 2 + }, + "seed": 471021322, + "version": 35, + "versionNonce": 2134311690, + "isDeleted": false, + "boundElements": null, + "updated": 1737971136385, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -200, + -187 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "uLVKBxcndIG-qzR2NQnMF", + "focus": -0.4659911403889994, + "gap": 1.5, + "fixedPoint": null + }, + "endBinding": { + "elementId": "0S628Xmv8YIAFSDx8-05e", + "focus": 0.19663384921609758, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "o_HSEmb0pecqRgBJDEBRp", + "type": "arrow", + "x": 1343, + "y": 673, + "width": 136, + "height": 4, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2e", + "roundness": { + "type": 2 + }, + "seed": 144078154, + "version": 29, + "versionNonce": 1175139926, + "isDeleted": false, + "boundElements": null, + "updated": 1737971114288, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -136, + 4 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "0S628Xmv8YIAFSDx8-05e", + "focus": 0.10182047895250676, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "zghIcLCzAMCMHoPa6KCP5", + "focus": -0.06784021665538253, + "gap": 2, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "13azSEVgK_dcdndesOJU4", + "type": "text", + "x": 1271, + "y": 644, + "width": 47.19996643066406, + "height": 25, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2f", + "roundness": null, + "seed": 1546120586, + "version": 7, + "versionNonce": 591726474, + "isDeleted": false, + "boundElements": null, + "updated": 1737971117472, + "link": null, + "locked": false, + "text": "Uses", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Uses", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "JMh5UJvRSjgcfPdc_YCR7", + "type": "text", + "x": 1597.400016784668, + "y": 1134.5, + "width": 47.19996643066406, + "height": 25, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2g", + "roundness": null, + "seed": 1271206422, + "version": 3, + "versionNonce": 1160150, + "isDeleted": false, + "boundElements": null, + "updated": 1737971110710, + "link": null, + "locked": false, + "text": "Uses", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Uses", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "RBNxQ4pEgxmBXnHdIaBf9", + "type": "arrow", + "x": 1854, + "y": 1110, + "width": 758, + "height": 242, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2h", + "roundness": { + "type": 2 + }, + "seed": 2027055370, + "version": 185, + "versionNonce": 450718806, + "isDeleted": false, + "boundElements": null, + "updated": 1737971102355, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -326, + 51 + ], + [ + -758, + -191 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "uLVKBxcndIG-qzR2NQnMF", + "focus": 0.05997730828840719, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "zghIcLCzAMCMHoPa6KCP5", + "focus": 0.6958348470250035, + "gap": 10, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "k-K-sqJPwGdOAbF7FgGcz", + "type": "text", + "x": 1512.400016784668, + "y": 262.5, + "width": 47.19996643066406, + "height": 25, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2i", + "roundness": null, + "seed": 1588338186, + "version": 3, + "versionNonce": 1246659606, + "isDeleted": false, + "boundElements": null, + "updated": 1737971106415, + "link": null, + "locked": false, + "text": "Uses", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Uses", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "xhoCMjoiXLgPLJUmc7WuE", + "type": "arrow", + "x": 1858, + "y": 605, + "width": 795, + "height": 311, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "#a5d8ff", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2j", + "roundness": { + "type": 2 + }, + "seed": 1794620630, + "version": 236, + "versionNonce": 489375370, + "isDeleted": false, + "boundElements": null, + "updated": 1737971095964, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -277, + -311 + ], + [ + -795, + -122 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "R4AeEioM2INhMP9rnYnHe", + "focus": -0.4198735871757071, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "zghIcLCzAMCMHoPa6KCP5", + "focus": -0.8018651582326861, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "WlzkJ1a1P1Er7kfA1RP4T", + "type": "arrow", + "x": 1964, + "y": 9, + "width": 474, + "height": 84.63600506869611, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2k", + "roundness": { + "type": 2 + }, + "seed": 217245642, + "version": 192, + "versionNonce": 227064650, + "isDeleted": false, + "boundElements": null, + "updated": 1737971481423, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 249, + 24 + ], + [ + 474, + 84.63600506869611 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "zXqDMrjv50TU6s8f0xi2s", + "focus": 0.6904324140279195, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "ysLRakRFsF7DlEwBVIfpv", + "focus": -0.3604083592296213, + "gap": 6.4140625, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "0jJYOpQUuReGklXS3eCHd", + "type": "rectangle", + "x": 2433.5, + "y": 357.5, + "width": 311, + "height": 503, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2p", + "roundness": { + "type": 3 + }, + "seed": 507557578, + "version": 387, + "versionNonce": 1340323542, + "isDeleted": false, + "boundElements": [ + { + "id": "EL7fKQS2Z0a_heFdNlDpe", + "type": "arrow" + }, + { + "id": "1G4RvWl5j3Eq0orLwRNb1", + "type": "arrow" + } + ], + "updated": 1737971510934, + "link": null, + "locked": false + }, + { + "id": "yXs1C5HAV_quiAwVGmj9-", + "type": "rectangle", + "x": 2507.58984375, + "y": 417.5, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2q", + "roundness": null, + "seed": 1465077130, + "version": 383, + "versionNonce": 1531846538, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "c-HWcR62JO098FZH-Exyy" + } + ], + "updated": 1737971303713, + "link": null, + "locked": false + }, + { + "id": "XKA3gCRYDhwXJMOPsnTYe", + "type": "rectangle", + "x": 2510.56640625, + "y": 618.5, + "width": 154.921875, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2r", + "roundness": null, + "seed": 1734675530, + "version": 422, + "versionNonce": 289359114, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "UPzd8AvyIY1ANthQMQL-2" + } + ], + "updated": 1737971303713, + "link": null, + "locked": false + }, + { + "id": "sVoinvy16hzPyLe8OLqLD", + "type": "rectangle", + "x": 2505.55078125, + "y": 710.5, + "width": 173.296875, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2s", + "roundness": null, + "seed": 1951462154, + "version": 466, + "versionNonce": 1984236170, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "r_UUPiappL6TFrgWoMu3T" + } + ], + "updated": 1737971303713, + "link": null, + "locked": false + }, + { + "id": "c-HWcR62JO098FZH-Exyy", + "type": "text", + "x": 2556.2064208984375, + "y": 427, + "width": 46.219970703125, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2t", + "roundness": null, + "seed": 814875082, + "version": 378, + "versionNonce": 137731658, + "isDeleted": false, + "boundElements": [], + "updated": 1737971303713, + "link": null, + "locked": false, + "text": "AKS ", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "yXs1C5HAV_quiAwVGmj9-", + "originalText": "AKS ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "UPzd8AvyIY1ANthQMQL-2", + "type": "text", + "x": 2562.1273498535156, + "y": 628, + "width": 51.79998779296875, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2u", + "roundness": null, + "seed": 1195587722, + "version": 424, + "versionNonce": 2145784778, + "isDeleted": false, + "boundElements": [], + "updated": 1737971303713, + "link": null, + "locked": false, + "text": "KIND", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "XKA3gCRYDhwXJMOPsnTYe", + "originalText": "KIND", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "r_UUPiappL6TFrgWoMu3T", + "type": "text", + "x": 2559.739242553711, + "y": 720, + "width": 64.91995239257812, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2v", + "roundness": null, + "seed": 1210029898, + "version": 466, + "versionNonce": 454502730, + "isDeleted": false, + "boundElements": [], + "updated": 1737971303713, + "link": null, + "locked": false, + "text": "Retina", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "sVoinvy16hzPyLe8OLqLD", + "originalText": "Retina", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "DTsWo6ztMP02RFmBj6e-D", + "type": "rectangle", + "x": 2512.7734375, + "y": 524.5, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2w", + "roundness": null, + "seed": 327294474, + "version": 477, + "versionNonce": 95907850, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "pRnKaRijr0r7prQVxvfOw" + } + ], + "updated": 1737971303713, + "link": null, + "locked": false + }, + { + "id": "pRnKaRijr0r7prQVxvfOw", + "type": "text", + "x": 2563.0700073242188, + "y": 534, + "width": 42.8599853515625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2x", + "roundness": null, + "seed": 1181076682, + "version": 474, + "versionNonce": 706797258, + "isDeleted": false, + "boundElements": [], + "updated": 1737971303713, + "link": null, + "locked": false, + "text": "GKE", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "DTsWo6ztMP02RFmBj6e-D", + "originalText": "GKE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "K11qeT79l6Z6nKat1Vns3", + "type": "text", + "x": 2663.5, + "y": 371.5, + "width": 41.059967041015625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2y", + "roundness": null, + "seed": 644195210, + "version": 430, + "versionNonce": 347405066, + "isDeleted": false, + "boundElements": [], + "updated": 1737971373887, + "link": null, + "locked": false, + "text": "Unit", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Unit", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "GdXv0Fvpyz0tdxI9bskx0", + "type": "rectangle", + "x": 2830.5, + "y": 429.5, + "width": 311, + "height": 350, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b2z", + "roundness": { + "type": 3 + }, + "seed": 1407292694, + "version": 536, + "versionNonce": 1282920086, + "isDeleted": false, + "boundElements": [ + { + "id": "JenUnqPQU9n29FUsRjstV", + "type": "arrow" + } + ], + "updated": 1737971550724, + "link": null, + "locked": false + }, + { + "id": "45JovtXM2WCeBgd46-RNa", + "type": "rectangle", + "x": 2904.58984375, + "y": 489.5, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b30", + "roundness": null, + "seed": 1549435478, + "version": 516, + "versionNonce": 1433501270, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "KK9wBCN7chtrFnhnHDCnN" + } + ], + "updated": 1737971415407, + "link": null, + "locked": false + }, + { + "id": "1UpFRPtuqe5oDMaRyOIOy", + "type": "rectangle", + "x": 2907.56640625, + "y": 690.5, + "width": 154.921875, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b31", + "roundness": null, + "seed": 1506002838, + "version": 555, + "versionNonce": 551182550, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "EebjZsSTiA0RgmiXs7pw-" + } + ], + "updated": 1737971415407, + "link": null, + "locked": false + }, + { + "id": "KK9wBCN7chtrFnhnHDCnN", + "type": "text", + "x": 2917.7764587402344, + "y": 499, + "width": 117.07989501953125, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b33", + "roundness": null, + "seed": 630938134, + "version": 548, + "versionNonce": 245056406, + "isDeleted": false, + "boundElements": [], + "updated": 1737971415407, + "link": null, + "locked": false, + "text": "Retina-AKS ", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "45JovtXM2WCeBgd46-RNa", + "originalText": "Retina-AKS ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "EebjZsSTiA0RgmiXs7pw-", + "type": "text", + "x": 2922.7973861694336, + "y": 700, + "width": 124.45991516113281, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b34", + "roundness": null, + "seed": 1016309590, + "version": 594, + "versionNonce": 1875105302, + "isDeleted": false, + "boundElements": [], + "updated": 1737971415407, + "link": null, + "locked": false, + "text": "Retina-KIND", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "1UpFRPtuqe5oDMaRyOIOy", + "originalText": "Retina-KIND", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "fnS2X4EuJY-tTrtQBIe8A", + "type": "rectangle", + "x": 2909.7734375, + "y": 596.5, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b36", + "roundness": null, + "seed": 1648773590, + "version": 610, + "versionNonce": 609002326, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "82dXVu6Pnfd0kT49q4C9w" + } + ], + "updated": 1737971415407, + "link": null, + "locked": false + }, + { + "id": "82dXVu6Pnfd0kT49q4C9w", + "type": "text", + "x": 2924.2400436401367, + "y": 606, + "width": 114.51991271972656, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b37", + "roundness": null, + "seed": 1305124630, + "version": 644, + "versionNonce": 13224086, + "isDeleted": false, + "boundElements": [], + "updated": 1737971415407, + "link": null, + "locked": false, + "text": "Retina-GKE", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "fnS2X4EuJY-tTrtQBIe8A", + "originalText": "Retina-GKE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "0xZrHBzEv0Ezz_B9ggGOG", + "type": "text", + "x": 3006.5, + "y": 443.5, + "width": 111.73991394042969, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b38", + "roundness": null, + "seed": 143805526, + "version": 578, + "versionNonce": 674077066, + "isDeleted": false, + "boundElements": [ + { + "id": "-FO1qNsJmZSIC7MG10S17", + "type": "arrow" + } + ], + "updated": 1737971476328, + "link": null, + "locked": false, + "text": "Integration", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Integration", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "EL7fKQS2Z0a_heFdNlDpe", + "type": "arrow", + "x": 2560, + "y": 138, + "width": 0, + "height": 217, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b39", + "roundness": { + "type": 2 + }, + "seed": 328428886, + "version": 28, + "versionNonce": 1900773450, + "isDeleted": false, + "boundElements": null, + "updated": 1737971470062, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 217 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "ysLRakRFsF7DlEwBVIfpv", + "focus": -0.024442597978119374, + "gap": 4, + "fixedPoint": null + }, + "endBinding": { + "elementId": "0jJYOpQUuReGklXS3eCHd", + "focus": -0.1864951768488746, + "gap": 2.5, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "-FO1qNsJmZSIC7MG10S17", + "type": "arrow", + "x": 2562, + "y": 135, + "width": 443, + "height": 297, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3A", + "roundness": { + "type": 2 + }, + "seed": 634268810, + "version": 62, + "versionNonce": 1354947210, + "isDeleted": false, + "boundElements": null, + "updated": 1737971477960, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 318, + 94 + ], + [ + 443, + 297 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "ysLRakRFsF7DlEwBVIfpv", + "focus": 0.46713186808073004, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "0xZrHBzEv0Ezz_B9ggGOG", + "focus": -0.6700273879929672, + "gap": 11.5, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "1G4RvWl5j3Eq0orLwRNb1", + "type": "arrow", + "x": 2429, + "y": 587, + "width": 262, + "height": 17, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3B", + "roundness": { + "type": 2 + }, + "seed": 383119562, + "version": 49, + "versionNonce": 607055690, + "isDeleted": false, + "boundElements": null, + "updated": 1737971531455, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -262, + 17 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "0jJYOpQUuReGklXS3eCHd", + "focus": 0.12378805454028145, + "gap": 4.5, + "fixedPoint": null + }, + "endBinding": { + "elementId": "R4AeEioM2INhMP9rnYnHe", + "focus": 0.0575605699153006, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "ia3p_InHfk6eqkomGTQVy", + "type": "text", + "x": 2352, + "y": 558, + "width": 47.19996643066406, + "height": 25, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3C", + "roundness": null, + "seed": 1107965066, + "version": 79, + "versionNonce": 1846142166, + "isDeleted": false, + "boundElements": null, + "updated": 1737971535976, + "link": null, + "locked": false, + "text": "Uses", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Uses", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "RYcoP2a7h3PmEmilpAoEr", + "type": "text", + "x": 2890.400016784668, + "y": 971.5, + "width": 47.19996643066406, + "height": 25, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3D", + "roundness": null, + "seed": 422145994, + "version": 82, + "versionNonce": 1186784906, + "isDeleted": false, + "boundElements": [], + "updated": 1737971541173, + "link": null, + "locked": false, + "text": "Uses", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Uses", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "JenUnqPQU9n29FUsRjstV", + "type": "arrow", + "x": 2993, + "y": 780, + "width": 828, + "height": 228, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3E", + "roundness": { + "type": 2 + }, + "seed": 1211336010, + "version": 277, + "versionNonce": 439205910, + "isDeleted": false, + "boundElements": null, + "updated": 1737971555301, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -77, + 228 + ], + [ + -828, + 6 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "GdXv0Fvpyz0tdxI9bskx0", + "focus": -0.3088045944123118, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "R4AeEioM2INhMP9rnYnHe", + "focus": 0.4765988876330307, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + } + ], + "appState": { + "gridSize": 20, + "gridStep": 5, + "gridModeEnabled": false, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/test/multicloud/diagrams/diagram.svg b/test/multicloud/diagrams/diagram.svg new file mode 100644 index 0000000000..afa9a3c21b --- /dev/null +++ b/test/multicloud/diagrams/diagram.svg @@ -0,0 +1,2 @@ +Multi-Cloud ProjectOpenTofu IaCGO TestingFrameworkAKS KINDRetinaHelm AzureKINDGoogle CloudGKEModulesProvidersAKS KINDRetinaGKEExamplesRetina-AKSRetina-KINDRetina-GKELiveInstantiatesInstantiatesUsesUsesUsesAKS KINDRetinaGKEUnitRetina-AKS Retina-KINDRetina-GKEIntegrationUsesUses \ No newline at end of file diff --git a/test/multicloud/examples/aks/.terraform.lock.hcl b/test/multicloud/examples/aks/.terraform.lock.hcl new file mode 100644 index 0000000000..3d7443dac3 --- /dev/null +++ b/test/multicloud/examples/aks/.terraform.lock.hcl @@ -0,0 +1,20 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/azurerm" { + version = "4.15.0" + constraints = "4.15.0" + hashes = [ + "h1:xE74Yb3iZZF2F1hQy4B8YVCk0gLAp99pJgZX4eIXYMg=", + "zh:0a104acfc45de410d9786bdbf540009dbb7db5632fe7c6846fdb5f865007d0b4", + "zh:186f20452ca913e84de0fc9b2dc7872c6480813afe11ea076bd60c45aa2d66d0", + "zh:2d540a98254188f17d64c02847e4d178b49979871a2a05283f78d336f3f25d45", + "zh:34fdffad86800af74dd2f4c9b3a32fb4f1463ba453bb0f634a9389f503869bc6", + "zh:38751b0bb8d03c34acb63dbddf6ebe01d99e6b75a9d94ae3b3fb1c60bf43c45a", + "zh:4234e0e56e87983d387d7323d8bb49838054c5cebeb121dbb5aa4dd3255f211f", + "zh:4ead322049485495d07afe2334d82a47997fc7638b9e39512000d4499dc3a782", + "zh:74e8a9fdfbe0bb91c6542176dc14d3e95be2c3c77cca10ae57aa67116b5a6b95", + "zh:9f03e13551cd68d2f7cd2d46f74ffc33f0656e0aa8c9095ed259385aaeaf4957", + "zh:f86fce72cbdf72f52412b9099023115bece67c5df55970c4429ef0f1bdc3c473", + ] +} diff --git a/test/multicloud/examples/aks/main.tf b/test/multicloud/examples/aks/main.tf new file mode 100644 index 0000000000..c926605307 --- /dev/null +++ b/test/multicloud/examples/aks/main.tf @@ -0,0 +1,12 @@ +module "aks" { + source = "../../modules/aks" + location = var.location + resource_group_name = var.resource_group_name + prefix = var.prefix + labels = var.labels +} + +output "kubeconfig" { + value = module.aks.azure_get_kubeconfig + sensitive = true +} diff --git a/test/multicloud/examples/aks/providers.tf b/test/multicloud/examples/aks/providers.tf new file mode 100644 index 0000000000..8ec4828f25 --- /dev/null +++ b/test/multicloud/examples/aks/providers.tf @@ -0,0 +1,20 @@ +terraform { + required_version = "1.8.3" + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = "4.15.0" + } + } +} + +# Initialize the Azure provider +provider "azurerm" { + features { + resource_group { + prevent_deletion_if_contains_resources = false + } + } + subscription_id = var.subscription_id + tenant_id = var.tenant_id +} diff --git a/test/multicloud/examples/aks/variables.tf b/test/multicloud/examples/aks/variables.tf new file mode 100644 index 0000000000..ec3e945824 --- /dev/null +++ b/test/multicloud/examples/aks/variables.tf @@ -0,0 +1,33 @@ +variable "subscription_id" { + description = "The subscription ID for the Azure account." + type = string +} + +variable "tenant_id" { + description = "The tenant ID for the Azure account." + type = string +} + +variable "location" { + description = "The Azure Cloud location where AKS will be deployed to." + type = string + default = "UK South" +} + +variable "resource_group_name" { + description = "The name of the resource group." + type = string + default = "example-rg" +} + +variable "prefix" { + description = "A prefix to add to all resources." + type = string + default = "example-mc" +} + +variable "labels" { + description = "A map of labels to add to all resources." + type = map(string) + default = {} +} diff --git a/test/multicloud/examples/gke/.terraform.lock.hcl b/test/multicloud/examples/gke/.terraform.lock.hcl new file mode 100644 index 0000000000..f110175d5e --- /dev/null +++ b/test/multicloud/examples/gke/.terraform.lock.hcl @@ -0,0 +1,20 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/google" { + version = "6.17.0" + constraints = "6.17.0" + hashes = [ + "h1:aZkLSXbqbNThCCLAX1x0g8KTJANQAIosYq3xpy8JhFQ=", + "zh:0614cc52deb5914795253aecf19b4cbb5aa7e8a186839a33907ce5c35e23d537", + "zh:0b28ea31ec3b119aafc4c37a5992c29266c876db288dfc5bbfbde36631a533f1", + "zh:1b2c5df40ac55ec7c3db2b7c556ace7545fca4ccfacf605b7588a4e2be564ba8", + "zh:1db9a278cfddcaa7d9119acf231164438df07932bdabce95931a68bd3689cd39", + "zh:3729b7a9936f5ad545f7d06d11d05ce78b4bbe9941e77bf004a2b798e6a0866c", + "zh:3b7e35183a8d7980207ae7d082c490d7c2270f907e5de9e8393c6c4c32b07b3c", + "zh:581e14963dfef608285af0c08ccb5da4bdb8ae049366418d4863a4fd9fa55b74", + "zh:89d29f2d1269a30c6149bbaaae3cbe8fe0c6ed13874b77bf784ea6bbd73aee58", + "zh:c7c690c1f9fe0cbc69d4eb21727f2cf4b7ba016385184d27527d570832c393be", + "zh:dc1536fc325a0561bf0f606a38bed29e8dd2f4bec6d6e8a5301696d89c1c8079", + ] +} diff --git a/test/multicloud/examples/gke/main.tf b/test/multicloud/examples/gke/main.tf new file mode 100644 index 0000000000..daf79438c6 --- /dev/null +++ b/test/multicloud/examples/gke/main.tf @@ -0,0 +1,9 @@ +module "gke" { + source = "../../modules/gke" + location = var.location + prefix = var.prefix + project = var.project + machine_type = var.machine_type +} + +data "google_client_config" "current" {} \ No newline at end of file diff --git a/test/multicloud/examples/gke/outputs.tf b/test/multicloud/examples/gke/outputs.tf new file mode 100644 index 0000000000..1d146ecf0f --- /dev/null +++ b/test/multicloud/examples/gke/outputs.tf @@ -0,0 +1,14 @@ +output "host" { + value = module.gke.host + sensitive = true +} + +output "cluster_ca_certificate" { + value = module.gke.cluster_ca_certificate + sensitive = true +} + +output "access_token" { + value = data.google_client_config.current.access_token + sensitive = true +} \ No newline at end of file diff --git a/test/multicloud/examples/gke/providers.tf b/test/multicloud/examples/gke/providers.tf new file mode 100644 index 0000000000..f1423d15d9 --- /dev/null +++ b/test/multicloud/examples/gke/providers.tf @@ -0,0 +1,15 @@ +terraform { + required_version = "1.8.3" + required_providers { + google = { + source = "hashicorp/google" + version = "6.17.0" + } + } +} + +# Initialize the Google provider +provider "google" { + project = var.project + region = var.location +} diff --git a/test/multicloud/examples/gke/variables.tf b/test/multicloud/examples/gke/variables.tf new file mode 100644 index 0000000000..2e2da23167 --- /dev/null +++ b/test/multicloud/examples/gke/variables.tf @@ -0,0 +1,19 @@ +variable "project" { + description = "The Google Cloud project where resources will be deployed." + type = string +} + +variable "location" { + description = "The Google Cloud location where GKE will be deployed to." + type = string +} + +variable "prefix" { + description = "A prefix to add to all resources." + type = string +} + +variable "machine_type" { + description = "The machine type to use for the GKE nodes." + type = string +} diff --git a/test/multicloud/examples/integration/retina-kind/.terraform.lock.hcl b/test/multicloud/examples/integration/retina-kind/.terraform.lock.hcl new file mode 100644 index 0000000000..a641109262 --- /dev/null +++ b/test/multicloud/examples/integration/retina-kind/.terraform.lock.hcl @@ -0,0 +1,34 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/helm" { + version = "2.17.0" + constraints = "2.17.0" + hashes = [ + "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", + "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", + "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", + "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", + "zh:3976400ceba6dda4636e1d297e3097e1831de5628afa534a166de98a70d1dcbe", + "zh:54440ef14f342b41d75c1aded7487bfcc3f76322b75894235b47b7e89ac4bfa4", + "zh:6512e2ab9f2fa31cbb90d9249647b5c5798f62eb1215ec44da2cdaa24e38ad25", + "zh:795f327ca0b8c5368af0ed03d5d4f6da7260692b4b3ca0bd004ed542e683464d", + "zh:ba659e1d94f224bc3f1fd34cbb9d2663e3a8e734108e5a58eb49eda84b140978", + "zh:c5c8575c4458835c2acbc3d1ed5570589b14baa2525d8fbd04295c097caf41eb", + "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", + ] +} + +provider "registry.opentofu.org/tehcyx/kind" { + version = "0.7.0" + constraints = "0.7.0" + hashes = [ + "h1:nFhFHmE5+dCd9S9dEMwnMNWzyxoVipYobkhXYoDbhgA=", + "zh:171a2fb0137bfbdebd56cd65afd2e0e2167315fe4cb6a07a218db40cb17339c3", + "zh:3260b078b7997ddfd03845326ffaeed7f678eeaaf7918430356f22e299e36f22", + "zh:4066ab3feb482a0dd1bfff6590d89a0ec30478f63c9d8253cfdadb4b8db2234d", + "zh:537af73261d53f4840d1f89d8e5835c52ddb97102e6314f6aea9b8e49c43d610", + "zh:d63e94d828ba0339600d992b0a6695cff939b0aaac1c39b31d38e3c4f3823674", + "zh:f971c617bf6b37d07a5042f13a9ab02b42d0ceb14934174eecc81abeec233c40", + ] +} diff --git a/test/multicloud/examples/integration/retina-kind/main.tf b/test/multicloud/examples/integration/retina-kind/main.tf new file mode 100644 index 0000000000..8bd5749095 --- /dev/null +++ b/test/multicloud/examples/integration/retina-kind/main.tf @@ -0,0 +1,10 @@ +module "kind" { + source = "../../../modules/kind" + prefix = var.prefix +} + +module "retina" { + depends_on = [module.kind] + source = "../../../modules/retina" + retina_version = var.retina_version +} diff --git a/test/multicloud/examples/integration/retina-kind/outputs.tf b/test/multicloud/examples/integration/retina-kind/outputs.tf new file mode 100644 index 0000000000..cdc064fec7 --- /dev/null +++ b/test/multicloud/examples/integration/retina-kind/outputs.tf @@ -0,0 +1,19 @@ +output "host" { + value = module.kind.host + sensitive = true +} + +output "cluster_ca_certificate" { + value = module.kind.cluster_ca_certificate + sensitive = true +} + +output "client_certificate" { + value = module.kind.client_certificate + sensitive = true +} + +output "client_key" { + value = module.kind.client_key + sensitive = true +} diff --git a/test/multicloud/examples/integration/retina-kind/providers.tf b/test/multicloud/examples/integration/retina-kind/providers.tf new file mode 100644 index 0000000000..7b8baf2518 --- /dev/null +++ b/test/multicloud/examples/integration/retina-kind/providers.tf @@ -0,0 +1,26 @@ +terraform { + required_version = "1.8.3" + required_providers { + kind = { + source = "tehcyx/kind" + version = "0.7.0" + } + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + } +} + +# Initialize the kind provider +provider "kind" {} + +# Initialize the Helm provider +provider "helm" { + kubernetes { + host = module.kind.host + client_certificate = module.kind.client_certificate + client_key = module.kind.client_key + cluster_ca_certificate = module.kind.cluster_ca_certificate + } +} \ No newline at end of file diff --git a/test/multicloud/examples/integration/retina-kind/test-integration-kind-config b/test/multicloud/examples/integration/retina-kind/test-integration-kind-config new file mode 100644 index 0000000000..2ebf5e0ed5 --- /dev/null +++ b/test/multicloud/examples/integration/retina-kind/test-integration-kind-config @@ -0,0 +1,3 @@ +apiVersion: v1 +kind: Config +preferences: {} diff --git a/test/multicloud/examples/integration/retina-kind/test-kind-config b/test/multicloud/examples/integration/retina-kind/test-kind-config new file mode 100644 index 0000000000..2ebf5e0ed5 --- /dev/null +++ b/test/multicloud/examples/integration/retina-kind/test-kind-config @@ -0,0 +1,3 @@ +apiVersion: v1 +kind: Config +preferences: {} diff --git a/test/multicloud/examples/integration/retina-kind/variables.tf b/test/multicloud/examples/integration/retina-kind/variables.tf new file mode 100644 index 0000000000..e9d9024233 --- /dev/null +++ b/test/multicloud/examples/integration/retina-kind/variables.tf @@ -0,0 +1,11 @@ +variable "prefix" { + description = "A prefix to add to all resources." + type = string + default = "mc" +} + +variable "retina_version" { + description = "The tag to apply to all resources." + type = string + default = "v0.0.23" +} \ No newline at end of file diff --git a/test/multicloud/examples/kind/.terraform.lock.hcl b/test/multicloud/examples/kind/.terraform.lock.hcl new file mode 100644 index 0000000000..b610e36285 --- /dev/null +++ b/test/multicloud/examples/kind/.terraform.lock.hcl @@ -0,0 +1,16 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/tehcyx/kind" { + version = "0.7.0" + constraints = "0.7.0" + hashes = [ + "h1:nFhFHmE5+dCd9S9dEMwnMNWzyxoVipYobkhXYoDbhgA=", + "zh:171a2fb0137bfbdebd56cd65afd2e0e2167315fe4cb6a07a218db40cb17339c3", + "zh:3260b078b7997ddfd03845326ffaeed7f678eeaaf7918430356f22e299e36f22", + "zh:4066ab3feb482a0dd1bfff6590d89a0ec30478f63c9d8253cfdadb4b8db2234d", + "zh:537af73261d53f4840d1f89d8e5835c52ddb97102e6314f6aea9b8e49c43d610", + "zh:d63e94d828ba0339600d992b0a6695cff939b0aaac1c39b31d38e3c4f3823674", + "zh:f971c617bf6b37d07a5042f13a9ab02b42d0ceb14934174eecc81abeec233c40", + ] +} diff --git a/test/multicloud/examples/kind/main.tf b/test/multicloud/examples/kind/main.tf new file mode 100644 index 0000000000..c2484af1cb --- /dev/null +++ b/test/multicloud/examples/kind/main.tf @@ -0,0 +1,4 @@ +module "kind" { + source = "../../modules/kind" + prefix = var.prefix +} \ No newline at end of file diff --git a/test/multicloud/examples/kind/outputs.tf b/test/multicloud/examples/kind/outputs.tf new file mode 100644 index 0000000000..cdc064fec7 --- /dev/null +++ b/test/multicloud/examples/kind/outputs.tf @@ -0,0 +1,19 @@ +output "host" { + value = module.kind.host + sensitive = true +} + +output "cluster_ca_certificate" { + value = module.kind.cluster_ca_certificate + sensitive = true +} + +output "client_certificate" { + value = module.kind.client_certificate + sensitive = true +} + +output "client_key" { + value = module.kind.client_key + sensitive = true +} diff --git a/test/multicloud/examples/kind/providers.tf b/test/multicloud/examples/kind/providers.tf new file mode 100644 index 0000000000..23178d677b --- /dev/null +++ b/test/multicloud/examples/kind/providers.tf @@ -0,0 +1,12 @@ +terraform { + required_version = "1.8.3" + required_providers { + kind = { + source = "tehcyx/kind" + version = "0.7.0" + } + } +} + +# Initialize the kind provider +provider "kind" {} diff --git a/test/multicloud/examples/kind/variables.tf b/test/multicloud/examples/kind/variables.tf new file mode 100644 index 0000000000..2dd9eaf4b0 --- /dev/null +++ b/test/multicloud/examples/kind/variables.tf @@ -0,0 +1,4 @@ +variable "prefix" { + description = "A prefix to add to all resources." + type = string +} \ No newline at end of file diff --git a/test/multicloud/live/retina-aks/.terraform.lock.hcl b/test/multicloud/live/retina-aks/.terraform.lock.hcl new file mode 100644 index 0000000000..5c20d26e2a --- /dev/null +++ b/test/multicloud/live/retina-aks/.terraform.lock.hcl @@ -0,0 +1,40 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/azurerm" { + version = "4.15.0" + constraints = ">= 2.0.0" + hashes = [ + "h1:0YxkmS5jTUl1LIG+71sgKg/YdlgAoHNr3wyyZjJO8vY=", + "h1:xE74Yb3iZZF2F1hQy4B8YVCk0gLAp99pJgZX4eIXYMg=", + "zh:0a104acfc45de410d9786bdbf540009dbb7db5632fe7c6846fdb5f865007d0b4", + "zh:186f20452ca913e84de0fc9b2dc7872c6480813afe11ea076bd60c45aa2d66d0", + "zh:2d540a98254188f17d64c02847e4d178b49979871a2a05283f78d336f3f25d45", + "zh:34fdffad86800af74dd2f4c9b3a32fb4f1463ba453bb0f634a9389f503869bc6", + "zh:38751b0bb8d03c34acb63dbddf6ebe01d99e6b75a9d94ae3b3fb1c60bf43c45a", + "zh:4234e0e56e87983d387d7323d8bb49838054c5cebeb121dbb5aa4dd3255f211f", + "zh:4ead322049485495d07afe2334d82a47997fc7638b9e39512000d4499dc3a782", + "zh:74e8a9fdfbe0bb91c6542176dc14d3e95be2c3c77cca10ae57aa67116b5a6b95", + "zh:9f03e13551cd68d2f7cd2d46f74ffc33f0656e0aa8c9095ed259385aaeaf4957", + "zh:f86fce72cbdf72f52412b9099023115bece67c5df55970c4429ef0f1bdc3c473", + ] +} + +provider "registry.opentofu.org/hashicorp/helm" { + version = "2.17.0" + constraints = "2.17.0" + hashes = [ + "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", + "h1:ShIag7wqd5Rs+zYpVMpjAh+T0ozr4XGYfSTKWqceQBY=", + "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", + "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", + "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", + "zh:3976400ceba6dda4636e1d297e3097e1831de5628afa534a166de98a70d1dcbe", + "zh:54440ef14f342b41d75c1aded7487bfcc3f76322b75894235b47b7e89ac4bfa4", + "zh:6512e2ab9f2fa31cbb90d9249647b5c5798f62eb1215ec44da2cdaa24e38ad25", + "zh:795f327ca0b8c5368af0ed03d5d4f6da7260692b4b3ca0bd004ed542e683464d", + "zh:ba659e1d94f224bc3f1fd34cbb9d2663e3a8e734108e5a58eb49eda84b140978", + "zh:c5c8575c4458835c2acbc3d1ed5570589b14baa2525d8fbd04295c097caf41eb", + "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", + ] +} diff --git a/test/multicloud/live/retina-aks/main.tf b/test/multicloud/live/retina-aks/main.tf new file mode 100644 index 0000000000..237471fe09 --- /dev/null +++ b/test/multicloud/live/retina-aks/main.tf @@ -0,0 +1,16 @@ +module "aks" { + source = "../../modules/aks" + location = var.location + resource_group_name = var.resource_group_name + prefix = var.prefix + labels = var.labels +} + +module "retina" { + depends_on = [module.aks] + source = "../../modules/retina" +} + +output "kubeconfig_command" { + value = module.aks.azure_get_kubeconfig +} diff --git a/test/multicloud/live/retina-aks/providers.tf b/test/multicloud/live/retina-aks/providers.tf new file mode 100644 index 0000000000..264d724c95 --- /dev/null +++ b/test/multicloud/live/retina-aks/providers.tf @@ -0,0 +1,34 @@ +terraform { + required_version = "1.8.3" + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = "4.15.0" + } + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + } +} + +# Initialize the Azure provider +provider "azurerm" { + features { + resource_group { + prevent_deletion_if_contains_resources = false + } + } + subscription_id = var.subscription_id + tenant_id = var.tenant_id +} + +# Initialize the Helm provider +provider "helm" { + kubernetes { + host = module.aks.host + client_certificate = base64decode(module.aks.client_certificate) + client_key = base64decode(module.aks.client_key) + cluster_ca_certificate = base64decode(module.aks.cluster_ca_certificate) + } +} diff --git a/test/multicloud/live/retina-aks/variables.tf b/test/multicloud/live/retina-aks/variables.tf new file mode 100644 index 0000000000..886aacc47e --- /dev/null +++ b/test/multicloud/live/retina-aks/variables.tf @@ -0,0 +1,35 @@ +variable "subscription_id" { + description = "The subscription ID for the Azure account." + type = string +} + +variable "tenant_id" { + description = "The tenant ID for the Azure account." + type = string +} + +variable "location" { + description = "The Azure Cloud location where AKS will be deployed to." + type = string + default = "uksouth" +} + +variable "resource_group_name" { + description = "The name of the resource group." + type = string + default = "mc-rg" +} + +variable "prefix" { + description = "A prefix to add to all resources." + type = string + default = "mc" +} + +variable "labels" { + description = "A map of labels to add to all resources." + type = map(string) + default = { + "env" = "test" + } +} diff --git a/test/multicloud/live/retina-gke/.terraform.lock.hcl b/test/multicloud/live/retina-gke/.terraform.lock.hcl new file mode 100644 index 0000000000..ed3aacfe1c --- /dev/null +++ b/test/multicloud/live/retina-gke/.terraform.lock.hcl @@ -0,0 +1,40 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/google" { + version = "6.17.0" + constraints = ">= 6.17.0" + hashes = [ + "h1:7m+L8x7ClWUFAd4uJJENXp9O4K8HtpL50434jPR9pqs=", + "h1:aZkLSXbqbNThCCLAX1x0g8KTJANQAIosYq3xpy8JhFQ=", + "zh:0614cc52deb5914795253aecf19b4cbb5aa7e8a186839a33907ce5c35e23d537", + "zh:0b28ea31ec3b119aafc4c37a5992c29266c876db288dfc5bbfbde36631a533f1", + "zh:1b2c5df40ac55ec7c3db2b7c556ace7545fca4ccfacf605b7588a4e2be564ba8", + "zh:1db9a278cfddcaa7d9119acf231164438df07932bdabce95931a68bd3689cd39", + "zh:3729b7a9936f5ad545f7d06d11d05ce78b4bbe9941e77bf004a2b798e6a0866c", + "zh:3b7e35183a8d7980207ae7d082c490d7c2270f907e5de9e8393c6c4c32b07b3c", + "zh:581e14963dfef608285af0c08ccb5da4bdb8ae049366418d4863a4fd9fa55b74", + "zh:89d29f2d1269a30c6149bbaaae3cbe8fe0c6ed13874b77bf784ea6bbd73aee58", + "zh:c7c690c1f9fe0cbc69d4eb21727f2cf4b7ba016385184d27527d570832c393be", + "zh:dc1536fc325a0561bf0f606a38bed29e8dd2f4bec6d6e8a5301696d89c1c8079", + ] +} + +provider "registry.opentofu.org/hashicorp/helm" { + version = "2.17.0" + constraints = "2.17.0" + hashes = [ + "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", + "h1:ShIag7wqd5Rs+zYpVMpjAh+T0ozr4XGYfSTKWqceQBY=", + "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", + "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", + "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", + "zh:3976400ceba6dda4636e1d297e3097e1831de5628afa534a166de98a70d1dcbe", + "zh:54440ef14f342b41d75c1aded7487bfcc3f76322b75894235b47b7e89ac4bfa4", + "zh:6512e2ab9f2fa31cbb90d9249647b5c5798f62eb1215ec44da2cdaa24e38ad25", + "zh:795f327ca0b8c5368af0ed03d5d4f6da7260692b4b3ca0bd004ed542e683464d", + "zh:ba659e1d94f224bc3f1fd34cbb9d2663e3a8e734108e5a58eb49eda84b140978", + "zh:c5c8575c4458835c2acbc3d1ed5570589b14baa2525d8fbd04295c097caf41eb", + "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", + ] +} diff --git a/test/multicloud/live/retina-gke/main.tf b/test/multicloud/live/retina-gke/main.tf new file mode 100644 index 0000000000..de30d24493 --- /dev/null +++ b/test/multicloud/live/retina-gke/main.tf @@ -0,0 +1,12 @@ +module "gke" { + source = "../../modules/gke" + location = var.location + prefix = var.prefix + project = var.project + machine_type = var.machine_type +} + +module "retina" { + depends_on = [module.gke] + source = "../../modules/retina" +} diff --git a/test/multicloud/live/retina-gke/outputs.tf b/test/multicloud/live/retina-gke/outputs.tf new file mode 100644 index 0000000000..1954916e98 --- /dev/null +++ b/test/multicloud/live/retina-gke/outputs.tf @@ -0,0 +1,3 @@ +output "kubeconfig_command" { + value = module.gke.gcloud_get_kubeconfig +} diff --git a/test/multicloud/live/retina-gke/providers.tf b/test/multicloud/live/retina-gke/providers.tf new file mode 100644 index 0000000000..ac23c59c0e --- /dev/null +++ b/test/multicloud/live/retina-gke/providers.tf @@ -0,0 +1,30 @@ +terraform { + required_version = "1.8.3" + required_providers { + google = { + source = "hashicorp/google" + version = "6.17.0" + } + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + } +} + +# Initialize the Google provider +provider "google" { + project = var.project + region = var.location +} + +data "google_client_config" "current" {} + +# Initialize the Helm provider +provider "helm" { + kubernetes { + token = data.google_client_config.current.access_token + host = module.gke.host + cluster_ca_certificate = base64decode(module.gke.cluster_ca_certificate) + } +} \ No newline at end of file diff --git a/test/multicloud/live/retina-gke/variables.tf b/test/multicloud/live/retina-gke/variables.tf new file mode 100644 index 0000000000..9e00f0f537 --- /dev/null +++ b/test/multicloud/live/retina-gke/variables.tf @@ -0,0 +1,23 @@ +variable "project" { + description = "The Google Cloud project where resources will be deployed." + type = string + default = "mc-retina" +} + +variable "location" { + description = "The Google Cloud location where GKE will be deployed to." + type = string + default = "eu-central1" +} + +variable "prefix" { + description = "A prefix to add to all resources." + type = string + default = "mc" +} + +variable "machine_type" { + description = "The machine type to use for the GKE nodes." + type = string + default = "e2-standard-4" +} diff --git a/test/multicloud/live/retina-kind/.terraform.lock.hcl b/test/multicloud/live/retina-kind/.terraform.lock.hcl new file mode 100644 index 0000000000..afc28ace1d --- /dev/null +++ b/test/multicloud/live/retina-kind/.terraform.lock.hcl @@ -0,0 +1,36 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/helm" { + version = "2.17.0" + constraints = "2.17.0" + hashes = [ + "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", + "h1:ShIag7wqd5Rs+zYpVMpjAh+T0ozr4XGYfSTKWqceQBY=", + "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", + "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", + "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", + "zh:3976400ceba6dda4636e1d297e3097e1831de5628afa534a166de98a70d1dcbe", + "zh:54440ef14f342b41d75c1aded7487bfcc3f76322b75894235b47b7e89ac4bfa4", + "zh:6512e2ab9f2fa31cbb90d9249647b5c5798f62eb1215ec44da2cdaa24e38ad25", + "zh:795f327ca0b8c5368af0ed03d5d4f6da7260692b4b3ca0bd004ed542e683464d", + "zh:ba659e1d94f224bc3f1fd34cbb9d2663e3a8e734108e5a58eb49eda84b140978", + "zh:c5c8575c4458835c2acbc3d1ed5570589b14baa2525d8fbd04295c097caf41eb", + "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", + ] +} + +provider "registry.opentofu.org/tehcyx/kind" { + version = "0.7.0" + constraints = "0.7.0" + hashes = [ + "h1:9ci1+3JBxvMRZ0pnzoVNmw7NrBCAfzqOPyhm+I8Rxag=", + "h1:nFhFHmE5+dCd9S9dEMwnMNWzyxoVipYobkhXYoDbhgA=", + "zh:171a2fb0137bfbdebd56cd65afd2e0e2167315fe4cb6a07a218db40cb17339c3", + "zh:3260b078b7997ddfd03845326ffaeed7f678eeaaf7918430356f22e299e36f22", + "zh:4066ab3feb482a0dd1bfff6590d89a0ec30478f63c9d8253cfdadb4b8db2234d", + "zh:537af73261d53f4840d1f89d8e5835c52ddb97102e6314f6aea9b8e49c43d610", + "zh:d63e94d828ba0339600d992b0a6695cff939b0aaac1c39b31d38e3c4f3823674", + "zh:f971c617bf6b37d07a5042f13a9ab02b42d0ceb14934174eecc81abeec233c40", + ] +} diff --git a/test/multicloud/live/retina-kind/main.tf b/test/multicloud/live/retina-kind/main.tf new file mode 100644 index 0000000000..6f71163ccf --- /dev/null +++ b/test/multicloud/live/retina-kind/main.tf @@ -0,0 +1,9 @@ +module "kind" { + source = "../../modules/kind" + prefix = var.prefix +} + +module "retina" { + depends_on = [module.kind] + source = "../../modules/retina" +} diff --git a/test/multicloud/live/retina-kind/providers.tf b/test/multicloud/live/retina-kind/providers.tf new file mode 100644 index 0000000000..7b8baf2518 --- /dev/null +++ b/test/multicloud/live/retina-kind/providers.tf @@ -0,0 +1,26 @@ +terraform { + required_version = "1.8.3" + required_providers { + kind = { + source = "tehcyx/kind" + version = "0.7.0" + } + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + } +} + +# Initialize the kind provider +provider "kind" {} + +# Initialize the Helm provider +provider "helm" { + kubernetes { + host = module.kind.host + client_certificate = module.kind.client_certificate + client_key = module.kind.client_key + cluster_ca_certificate = module.kind.cluster_ca_certificate + } +} \ No newline at end of file diff --git a/test/multicloud/live/retina-kind/variables.tf b/test/multicloud/live/retina-kind/variables.tf new file mode 100644 index 0000000000..347514bd40 --- /dev/null +++ b/test/multicloud/live/retina-kind/variables.tf @@ -0,0 +1,5 @@ +variable "prefix" { + description = "A prefix to add to all resources." + type = string + default = "mc" +} \ No newline at end of file diff --git a/test/multicloud/modules/aks/main.tf b/test/multicloud/modules/aks/main.tf new file mode 100644 index 0000000000..a7352bd589 --- /dev/null +++ b/test/multicloud/modules/aks/main.tf @@ -0,0 +1,47 @@ +resource "azurerm_resource_group" "aks_rg" { + name = var.resource_group_name + location = var.location +} + +resource "azurerm_kubernetes_cluster" "aks" { + name = "${var.prefix}-aks" + location = azurerm_resource_group.aks_rg.location + resource_group_name = azurerm_resource_group.aks_rg.name + dns_prefix = "${var.prefix}-aks-dns" + kubernetes_version = var.kubernetes_version + + dynamic "default_node_pool" { + for_each = [var.default_node_pool] + content { + name = default_node_pool.value.name + node_count = default_node_pool.value.node_count + vm_size = default_node_pool.value.vm_size + os_disk_size_gb = default_node_pool.value.os_disk_size_gb + os_disk_type = default_node_pool.value.os_disk_type + max_pods = default_node_pool.value.max_pods + type = default_node_pool.value.type + node_labels = default_node_pool.value.node_labels + } + } + + identity { + type = "SystemAssigned" + } + + dynamic "network_profile" { + for_each = [var.network_profile] + content { + network_plugin = network_profile.value.network_plugin + network_plugin_mode = network_profile.value.network_plugin_mode + load_balancer_profile { + managed_outbound_ip_count = network_profile.value.load_balancer_profile.managed_outbound_ip_count + } + pod_cidr = network_profile.value.pod_cidr + service_cidr = network_profile.value.service_cidr + dns_service_ip = network_profile.value.dns_service_ip + outbound_type = network_profile.value.outbound_type + } + } + + tags = var.labels +} diff --git a/test/multicloud/modules/aks/outputs.tf b/test/multicloud/modules/aks/outputs.tf new file mode 100644 index 0000000000..e71ca414ff --- /dev/null +++ b/test/multicloud/modules/aks/outputs.tf @@ -0,0 +1,24 @@ +output "azure_get_kubeconfig" { + value = "az aks get-credentials --resource-group ${azurerm_resource_group.aks_rg.name} --name ${azurerm_kubernetes_cluster.aks.name} --admin" + description = "Run this command to fetch the kubeconfig for your AKS cluster" +} + +output "host" { + value = azurerm_kubernetes_cluster.aks.kube_config.0.host + sensitive = true +} + +output "client_certificate" { + value = azurerm_kubernetes_cluster.aks.kube_config.0.client_certificate + sensitive = true +} + +output "client_key" { + value = azurerm_kubernetes_cluster.aks.kube_config.0.client_key + sensitive = true +} + +output "cluster_ca_certificate" { + value = azurerm_kubernetes_cluster.aks.kube_config.0.cluster_ca_certificate + sensitive = true +} diff --git a/test/multicloud/modules/aks/provider.tf b/test/multicloud/modules/aks/provider.tf new file mode 100644 index 0000000000..33705925cf --- /dev/null +++ b/test/multicloud/modules/aks/provider.tf @@ -0,0 +1,9 @@ +terraform { + required_version = "1.8.3" + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = "4.15.0" + } + } +} diff --git a/test/multicloud/modules/aks/variables.tf b/test/multicloud/modules/aks/variables.tf new file mode 100644 index 0000000000..d5a5ebb597 --- /dev/null +++ b/test/multicloud/modules/aks/variables.tf @@ -0,0 +1,78 @@ +variable "location" { + description = "The VM location." + type = string + default = "UK South" +} + +variable "resource_group_name" { + description = "The name of the resource group." + type = string +} + +variable "prefix" { + description = "A prefix to add to all resources." + type = string + default = "example-vm" +} + +variable "labels" { + description = "A map of labels to add to all resources." + type = map(string) + default = {} +} + +variable "network_profile" { + description = "Network profile configuration" + type = object({ + network_plugin = string + network_plugin_mode = string + load_balancer_profile = object({ + managed_outbound_ip_count = number + }) + pod_cidr = string + service_cidr = string + dns_service_ip = string + outbound_type = string + }) + default = { + network_plugin = "azure" + network_plugin_mode = "overlay" + load_balancer_profile = { + managed_outbound_ip_count = 1 + } + pod_cidr = "10.244.0.0/16" + service_cidr = "10.0.0.0/16" + dns_service_ip = "10.0.0.10" + outbound_type = "loadBalancer" + } +} + +variable "default_node_pool" { + description = "Default node pool configuration" + type = object({ + name = string + node_count = number + vm_size = string + os_disk_size_gb = number + os_disk_type = string + max_pods = number + type = string + node_labels = map(string) + }) + default = { + name = "agentpool" + node_count = 2 + vm_size = "Standard_D4ds_v5" + os_disk_size_gb = 128 + os_disk_type = "Ephemeral" + max_pods = 110 + type = "VirtualMachineScaleSets" + node_labels = {} + } +} + +variable "kubernetes_version" { + description = "The version of Kubernetes to use for the AKS cluster." + type = string + default = "1.29.8" +} diff --git a/test/multicloud/modules/gke/main.tf b/test/multicloud/modules/gke/main.tf new file mode 100644 index 0000000000..c4615b7858 --- /dev/null +++ b/test/multicloud/modules/gke/main.tf @@ -0,0 +1,34 @@ +resource "google_service_account" "default" { + account_id = "${var.prefix}-gke-service-account" + display_name = "GKE Service Account for ${var.project}" +} + +resource "google_container_cluster" "gke" { + name = "${var.prefix}-gke-cluster" + location = var.location + + # We can't create a cluster with no node pool defined, but we want to only use + # separately managed node pools. So we create the smallest possible default + # node pool and immediately delete it. + remove_default_node_pool = true + initial_node_count = 1 + deletion_protection = false +} + +resource "google_container_node_pool" "gke_preemptible_nodes" { + name = "${var.prefix}-node-pool" + location = var.location + cluster = google_container_cluster.gke.name + node_count = 1 + + node_config { + preemptible = true + machine_type = var.machine_type + + # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles. + service_account = google_service_account.default.email + oauth_scopes = [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } +} \ No newline at end of file diff --git a/test/multicloud/modules/gke/output.tf b/test/multicloud/modules/gke/output.tf new file mode 100644 index 0000000000..692cb7eddf --- /dev/null +++ b/test/multicloud/modules/gke/output.tf @@ -0,0 +1,14 @@ +output "gcloud_get_kubeconfig" { + value = "gcloud container clusters get-credentials ${google_container_cluster.gke.name} --region ${google_container_cluster.gke.location} --project ${google_container_cluster.gke.project}" + description = "Run this command to fetch the kubeconfig for your GKE cluster" +} + +output "host" { + value = "https://${google_container_cluster.gke.endpoint}" + sensitive = true +} + +output "cluster_ca_certificate" { + value = google_container_cluster.gke.master_auth.0.cluster_ca_certificate + sensitive = true +} \ No newline at end of file diff --git a/test/multicloud/modules/gke/provider.tf b/test/multicloud/modules/gke/provider.tf new file mode 100644 index 0000000000..dbf7e91ddc --- /dev/null +++ b/test/multicloud/modules/gke/provider.tf @@ -0,0 +1,9 @@ +terraform { + required_version = "1.8.3" + required_providers { + google = { + source = "hashicorp/google" + version = "6.17.0" + } + } +} \ No newline at end of file diff --git a/test/multicloud/modules/gke/variables.tf b/test/multicloud/modules/gke/variables.tf new file mode 100644 index 0000000000..9971acce00 --- /dev/null +++ b/test/multicloud/modules/gke/variables.tf @@ -0,0 +1,19 @@ +variable "project" { + description = "The Google Cloud project where resources will be deployed." + type = string +} + +variable "location" { + description = "The Google Cloud location where GKE will be deployed to." + type = string +} + +variable "prefix" { + description = "A prefix to add to all resources." + type = string +} + +variable "machine_type" { + description = "The machine type to use for the GKE nodes." + type = string +} \ No newline at end of file diff --git a/test/multicloud/modules/kind/main.tf b/test/multicloud/modules/kind/main.tf new file mode 100644 index 0000000000..42b66b4b7b --- /dev/null +++ b/test/multicloud/modules/kind/main.tf @@ -0,0 +1,20 @@ +resource "kind_cluster" "kind" { + name = "${var.prefix}-kind" + wait_for_ready = true + kind_config { + kind = "Cluster" + api_version = "kind.x-k8s.io/v1alpha4" + + node { + role = "control-plane" + } + + node { + role = "worker" + } + + node { + role = "worker" + } + } +} \ No newline at end of file diff --git a/test/multicloud/modules/kind/output.tf b/test/multicloud/modules/kind/output.tf new file mode 100644 index 0000000000..1b5b5f3698 --- /dev/null +++ b/test/multicloud/modules/kind/output.tf @@ -0,0 +1,24 @@ +output "kubeconfig" { + value = kind_cluster.kind.kubeconfig + sensitive = true +} + +output "host" { + value = kind_cluster.kind.endpoint + sensitive = true +} + +output "client_certificate" { + value = kind_cluster.kind.client_certificate + sensitive = true +} + +output "client_key" { + value = kind_cluster.kind.client_key + sensitive = true +} + +output "cluster_ca_certificate" { + value = kind_cluster.kind.cluster_ca_certificate + sensitive = true +} \ No newline at end of file diff --git a/test/multicloud/modules/kind/provider.tf b/test/multicloud/modules/kind/provider.tf new file mode 100644 index 0000000000..9a655cac22 --- /dev/null +++ b/test/multicloud/modules/kind/provider.tf @@ -0,0 +1,9 @@ +terraform { + required_version = "1.8.3" + required_providers { + kind = { + source = "tehcyx/kind" + version = "0.7.0" + } + } +} \ No newline at end of file diff --git a/test/multicloud/modules/kind/variables.tf b/test/multicloud/modules/kind/variables.tf new file mode 100644 index 0000000000..2dd9eaf4b0 --- /dev/null +++ b/test/multicloud/modules/kind/variables.tf @@ -0,0 +1,4 @@ +variable "prefix" { + description = "A prefix to add to all resources." + type = string +} \ No newline at end of file diff --git a/test/multicloud/modules/retina/main.tf b/test/multicloud/modules/retina/main.tf new file mode 100644 index 0000000000..3d0d0f3400 --- /dev/null +++ b/test/multicloud/modules/retina/main.tf @@ -0,0 +1,15 @@ +resource "helm_release" "retina" { + name = "retina" + repository = "oci://ghcr.io/microsoft/retina/charts" + chart = "retina" + version = var.retina_version + namespace = "kube-system" + + dynamic "set" { + for_each = var.values + content { + name = set.value.name + value = set.value.value + } + } +} diff --git a/test/multicloud/modules/retina/provider.tf b/test/multicloud/modules/retina/provider.tf new file mode 100644 index 0000000000..83de5829ac --- /dev/null +++ b/test/multicloud/modules/retina/provider.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + } +} diff --git a/test/multicloud/modules/retina/variables.tf b/test/multicloud/modules/retina/variables.tf new file mode 100644 index 0000000000..daaa2b717e --- /dev/null +++ b/test/multicloud/modules/retina/variables.tf @@ -0,0 +1,27 @@ +variable "retina_version" { + description = "The tag to apply to all resources." + type = string + default = "v0.0.23" +} + +variable "values" { + description = "Configuration for set blocks, this corresponds to Helm values.yaml" + type = list(object({ + name = string + value = string + })) + default = [ + { + name = "image.tag" + value = "v0.0.23" + }, + { + name = "operator.tag" + value = "v0.0.23" + }, + { + name = "logLevel" + value = "info" + } + ] +} diff --git a/test/multicloud/test/example_aks_test.go b/test/multicloud/test/example_aks_test.go new file mode 100644 index 0000000000..7bbdf6fa4d --- /dev/null +++ b/test/multicloud/test/example_aks_test.go @@ -0,0 +1,38 @@ +package test + +import ( + "testing" + + "github.com/gruntwork-io/terratest/modules/terraform" +) + +func TestAKSExample(t *testing.T) { + t.Parallel() + + opts := &terraform.Options{ + TerraformDir: "../examples/aks", + + Vars: map[string]interface{}{ + "prefix": "test", + "location": "uksouth", + "subscription_id": "d6050d84-e4dd-463d-afc7-a6ab3dc33ab7", // TODO: replace with actual project once we get azure "public" access + "tenant_id": "ac8a4ccd-35f1-4f95-a688-f68e3d89adfc", + "resource_group_name": "test", + "labels": map[string]string{ + "environment": "test", + "owner": "test", + "project": "test", + }, + }, + } + + // clean up at the end of the test + defer terraform.Destroy(t, opts) + + terraform.Init(t, opts) + + // TODO: uncomment once we get creds for azure "public" + // terraform.Apply(t, opts) + + // TODO: add actual tests here +} diff --git a/test/multicloud/test/example_gke_test.go b/test/multicloud/test/example_gke_test.go new file mode 100644 index 0000000000..2f9980d0e8 --- /dev/null +++ b/test/multicloud/test/example_gke_test.go @@ -0,0 +1,54 @@ +package test + +import ( + "testing" + + "github.com/gruntwork-io/terratest/modules/terraform" +) + +func TestGKEExample(t *testing.T) { + t.Parallel() + + opts := &terraform.Options{ + TerraformDir: "../examples/gke", + + Vars: map[string]interface{}{ + "prefix": "test", + "location": "europe-west2", // London + "project": "mc-retina", // TODO: replace with actual project once we get gcloud access + "machine_type": "e2-standard-4", + }, + } + + // clean up at the end of the test + defer terraform.Destroy(t, opts) + + terraform.Init(t, opts) + + // TODO: uncomment once we get creds for gcloud + // terraform.Apply(t, opts) + + // // get outputs + // caCert := terraform.Output(t, opts, "cluster_ca_certificate") + // host := terraform.Output(t, opts, "host") + // token := terraform.Output(t, opts, "access_token") + + // caCertString, err := decodeBase64(caCert) + // if err != nil { + // t.Fatalf("Failed to decode ca cert: %v", err) + // } + + // // build the REST config + // restConfig := createRESTConfigWithBearer(caCertString, token, host) + + // // create a Kubernetes clientset + // clientSet, err := buildClientSet(restConfig) + // if err != nil { + // t.Fatalf("Failed to create Kubernetes clientset: %v", err) + // } + + // // test the cluster is accessible + // testClusterAccess(t, clientSet) + + // // TODO: add more tests here +} diff --git a/test/multicloud/test/example_kind_test.go b/test/multicloud/test/example_kind_test.go new file mode 100644 index 0000000000..f16affa4dd --- /dev/null +++ b/test/multicloud/test/example_kind_test.go @@ -0,0 +1,43 @@ +package test + +import ( + "testing" + + "github.com/gruntwork-io/terratest/modules/terraform" +) + +func TestKindExample(t *testing.T) { + t.Parallel() + + opts := &terraform.Options{ + TerraformDir: "../examples/kind", + + Vars: map[string]interface{}{ + "prefix": "test", + }, + } + + // clean up at the end of the test + defer terraform.Destroy(t, opts) + + terraform.Init(t, opts) + terraform.Apply(t, opts) + + // get outputs + caCert := terraform.Output(t, opts, "cluster_ca_certificate") + clientCert := terraform.Output(t, opts, "client_certificate") + clientKey := terraform.Output(t, opts, "client_key") + host := terraform.Output(t, opts, "host") + + // build the REST config + restConfig := createRESTConfigWithClientCert(caCert, clientCert, clientKey, host) + + // create a Kubernetes clientset + clientSet, err := buildClientSet(restConfig) + if err != nil { + t.Fatalf("Failed to create Kubernetes clientset: %v", err) + } + + // test the cluster is accessible + testClusterAccess(t, clientSet) +} diff --git a/test/multicloud/test/go.mod b/test/multicloud/test/go.mod new file mode 100644 index 0000000000..e768135864 --- /dev/null +++ b/test/multicloud/test/go.mod @@ -0,0 +1,73 @@ +module github.com/microsoft/retina/test/multicloud/test + +go 1.23.4 + +require ( + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gruntwork-io/terratest v0.48.1 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter/v2 v2.2.3 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/hcl/v2 v2.22.0 // indirect + github.com/hashicorp/terraform-json v0.23.0 // indirect + github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.16.5 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/stretchr/testify v1.9.0 // indirect + github.com/tmccombs/hcl2json v0.6.4 // indirect + github.com/ulikunitz/xz v0.5.10 // indirect + github.com/x448/float16 v0.8.4 // indirect + github.com/zclconf/go-cty v1.15.0 // indirect + golang.org/x/crypto v0.29.0 // indirect + golang.org/x/mod v0.21.0 // indirect + golang.org/x/net v0.31.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.9.0 // indirect + golang.org/x/sys v0.27.0 // indirect + golang.org/x/term v0.26.0 // indirect + golang.org/x/text v0.20.0 // indirect + golang.org/x/time v0.8.0 // indirect + golang.org/x/tools v0.26.0 // indirect + google.golang.org/protobuf v1.35.1 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/api v0.32.1 // indirect + k8s.io/apimachinery v0.32.1 // indirect + k8s.io/client-go v0.32.1 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) diff --git a/test/multicloud/test/go.sum b/test/multicloud/test/go.sum new file mode 100644 index 0000000000..9990bc6862 --- /dev/null +++ b/test/multicloud/test/go.sum @@ -0,0 +1,192 @@ +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gruntwork-io/terratest v0.48.1 h1:pnydDjkWbZCUYXvQkr24y21fBo8PfJC5hRGdwbl1eXM= +github.com/gruntwork-io/terratest v0.48.1/go.mod h1:U2EQW4Odlz75XJUH16Kqkr9c93p+ZZtkpVez7GkZFa4= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter/v2 v2.2.3 h1:6CVzhT0KJQHqd9b0pK3xSP0CM/Cv+bVhk+jcaRJ2pGk= +github.com/hashicorp/go-getter/v2 v2.2.3/go.mod h1:hp5Yy0GMQvwWVUmwLs3ygivz1JSLI323hdIE9J9m7TY= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= +github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= +github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= +github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a h1:zPPuIq2jAWWPTrGt70eK/BSch+gFAGrNzecsoENgu2o= +github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= +github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326 h1:ofNAzWCcyTALn2Zv40+8XitdzCgXY6e9qvXwN9W0YXg= +github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tmccombs/hcl2json v0.6.4 h1:/FWnzS9JCuyZ4MNwrG4vMrFrzRgsWEOVi+1AyYUVLGw= +github.com/tmccombs/hcl2json v0.6.4/go.mod h1:+ppKlIW3H5nsAsZddXPy2iMyvld3SHxyjswOZhavRDk= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= +github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= +golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= +golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc= +k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k= +k8s.io/apimachinery v0.32.1 h1:683ENpaCBjma4CYqsmZyhEzrGz6cjn1MY/X2jB2hkZs= +k8s.io/apimachinery v0.32.1/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.1 h1:otM0AxdhdBIaQh7l1Q0jQpmo7WOFIk5FFa4bg6YMdUU= +k8s.io/client-go v0.32.1/go.mod h1:aTTKZY7MdxUaJ/KiUs8D+GssR9zJZi77ZqtzcGXIiDg= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/test/multicloud/test/integration_retina_kind_test.go b/test/multicloud/test/integration_retina_kind_test.go new file mode 100644 index 0000000000..110f6dc191 --- /dev/null +++ b/test/multicloud/test/integration_retina_kind_test.go @@ -0,0 +1,49 @@ +package test + +import ( + "testing" + + "github.com/gruntwork-io/terratest/modules/terraform" +) + +func TestRetinaKindIntegration(t *testing.T) { + t.Parallel() + + opts := &terraform.Options{ + TerraformDir: "../examples/integration/retina-kind", + + Vars: map[string]interface{}{ + "prefix": "test-integration", + "retina_version": "v0.0.24", + }, + } + + // clean up at the end of the test + defer terraform.Destroy(t, opts) + + terraform.Init(t, opts) + terraform.Apply(t, opts) + + // get outputs + caCert := terraform.Output(t, opts, "cluster_ca_certificate") + clientCert := terraform.Output(t, opts, "client_certificate") + clientKey := terraform.Output(t, opts, "client_key") + host := terraform.Output(t, opts, "host") + + // build the REST config + restConfig := createRESTConfigWithClientCert(caCert, clientCert, clientKey, host) + + // create a Kubernetes clientset + clientSet, err := buildClientSet(restConfig) + if err != nil { + t.Fatalf("Failed to create Kubernetes clientset: %v", err) + } + + // test the cluster is accessible + testClusterAccess(t, clientSet) + + // check the retina pods logs for errors + checkRetinaLogs(t, clientSet) + + // TODO: add more tests here +} diff --git a/test/multicloud/test/testUtils.go b/test/multicloud/test/testUtils.go new file mode 100644 index 0000000000..dd1e24924e --- /dev/null +++ b/test/multicloud/test/testUtils.go @@ -0,0 +1,120 @@ +package test + +import ( + "bufio" + "context" + "encoding/base64" + "fmt" + "io" + "strings" + "testing" + + v1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/rest" +) + +func buildClientSet(config *rest.Config) (*kubernetes.Clientset, error) { + // Create a Kubernetes client + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + return nil, err + } + return clientset, nil +} + +// Create a Bearer token REST config +func createRESTConfigWithBearer(caCert, bearerToken, host string) *rest.Config { + config := &rest.Config{ + Host: host, + BearerToken: bearerToken, + TLSClientConfig: rest.TLSClientConfig{ + CAData: []byte(caCert), + }, + } + return config +} + +// Create REST config with client cert and key +func createRESTConfigWithClientCert(caCert, clientCert, clientKey, host string) *rest.Config { + config := &rest.Config{ + Host: host, + TLSClientConfig: rest.TLSClientConfig{ + CAData: []byte(caCert), + CertData: []byte(clientCert), + KeyData: []byte(clientKey), + }, + } + return config +} + +func testClusterAccess(t *testing.T, clientset *kubernetes.Clientset) { + // Test the cluster is accessible by listing nodes + _, err := clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{}) + if err != nil { + t.Fatalf("Failed to list nodes: %v", err) + } + // Test the cluster is accessible by listing namespaces + _, err = clientset.CoreV1().Namespaces().List(context.TODO(), metav1.ListOptions{}) + if err != nil { + t.Fatalf("Failed to list namespaces: %v", err) + } +} + +func checkLogsForErrors(logs io.ReadCloser) error { + scanner := bufio.NewScanner(logs) + for scanner.Scan() { + line := scanner.Text() + // print a debug line + fmt.Printf("Log line: %s\n", line) + // Check if the line contains the word "error" + if strings.Contains(strings.ToLower(line), "error") { + // create a new error with the log line + return fmt.Errorf("Error found in logs: %s", line) + } + } + // Check for any scanner errors + if err := scanner.Err(); err != nil { + return err + } + return nil +} + +func checkRetinaLogs(t *testing.T, clientset *kubernetes.Clientset) { + // Get the logs for the retina pods + pods, err := clientset.CoreV1().Pods("kube-system").List(context.TODO(), metav1.ListOptions{ + LabelSelector: "k8s-app=retina", + }) + if err != nil { + t.Fatalf("Failed to list pods: %v", err) + } + // Stream the logs for each pod + for _, pod := range pods.Items { + // Get the logs for the pod + req := clientset.CoreV1().Pods("kube-system").GetLogs(pod.Name, &v1.PodLogOptions{}) + // Stream the logs + logs, err := req.Stream(context.Background()) + if err != nil { + t.Fatalf("Failed to get logs for pod %s: %v", pod.Name, err) + } + // Check the logs for errors + err = checkLogsForErrors(logs) + if err != nil { + t.Fatalf("Failed to check logs for errors: %v", err) + } + // Close the logs stream + logs.Close() + } +} + +// function to convert base64 encoded string to plain text +func decodeBase64(encoded string) (string, error) { + // decode the base64 encoded string + decoded, err := base64.StdEncoding.DecodeString(encoded) + if err != nil { + return "", err + } + // return the decoded string + return string(decoded), nil +} From ca5f3623a39dbbf1261eba606e4e1a208d7dad84 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 10:30:42 +0000 Subject: [PATCH 08/87] build(deps): bump the go_modules group across 1 directory with 2 updates (#1279) Bumps the go_modules group with 2 updates in the /test/multicloud/test directory: [golang.org/x/crypto](https://github.com/golang/crypto) and [golang.org/x/net](https://github.com/golang/net). Updates `golang.org/x/crypto` from 0.29.0 to 0.31.0
Commits
  • b4f1988 ssh: make the public key cache a 1-entry FIFO cache
  • 7042ebc openpgp/clearsign: just use rand.Reader in tests
  • 3e90321 go.mod: update golang.org/x dependencies
  • 8c4e668 x509roots/fallback: update bundle
  • See full diff in compare view

Updates `golang.org/x/net` from 0.31.0 to 0.33.0
Commits
  • dfc720d go.mod: update golang.org/x dependencies
  • 8e66b04 html: use strings.EqualFold instead of lowering ourselves
  • b935f7b html: avoid endless loop on error token
  • 9af49ef route: remove unused sizeof* consts
  • 6705db9 quic: clean up crypto streams when dropping packet protection keys
  • 4ef7588 quic: handle ACK frame in packet which drops number space
  • 552d8ac Revert "route: change from syscall to x/sys/unix"
  • 13a7c01 Revert "route: remove unused sizeof* consts on freebsd"
  • 285e1cf go.mod: update golang.org/x dependencies
  • d0a1049 route: remove unused sizeof* consts on freebsd
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/retina/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- test/multicloud/test/go.mod | 23 +++++++++-------- test/multicloud/test/go.sum | 50 ++++++++++++++++++++++++------------- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/test/multicloud/test/go.mod b/test/multicloud/test/go.mod index e768135864..e6c1f26850 100644 --- a/test/multicloud/test/go.mod +++ b/test/multicloud/test/go.mod @@ -2,6 +2,13 @@ module github.com/microsoft/retina/test/multicloud/test go 1.23.4 +require ( + github.com/gruntwork-io/terratest v0.48.1 + k8s.io/api v0.32.1 + k8s.io/apimachinery v0.32.1 + k8s.io/client-go v0.32.1 +) + require ( github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect @@ -19,7 +26,6 @@ require ( github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/gruntwork-io/terratest v0.48.1 // indirect github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter/v2 v2.2.3 // indirect @@ -47,23 +53,20 @@ require ( github.com/ulikunitz/xz v0.5.10 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/zclconf/go-cty v1.15.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/mod v0.21.0 // indirect - golang.org/x/net v0.31.0 // indirect + golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.26.0 // indirect google.golang.org/protobuf v1.35.1 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.1 // indirect - k8s.io/apimachinery v0.32.1 // indirect - k8s.io/client-go v0.32.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect diff --git a/test/multicloud/test/go.sum b/test/multicloud/test/go.sum index 9990bc6862..0506d6d8ef 100644 --- a/test/multicloud/test/go.sum +++ b/test/multicloud/test/go.sum @@ -6,7 +6,6 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1U github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -24,6 +23,10 @@ github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= +github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= @@ -36,6 +39,8 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gruntwork-io/terratest v0.48.1 h1:pnydDjkWbZCUYXvQkr24y21fBo8PfJC5hRGdwbl1eXM= @@ -67,8 +72,11 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= @@ -87,12 +95,19 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -112,49 +127,47 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -164,6 +177,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= From 55f2a4a6030fcd1092fef63ab6c3994b5975f956 Mon Sep 17 00:00:00 2001 From: Jacques I Massa Date: Thu, 30 Jan 2025 08:32:18 -0500 Subject: [PATCH 09/87] fix(version-upgrade): Upgrade Hubble Version to 1.16.6 (#1284) # Description Please provide a brief description of the changes made in this pull request. Upgrade Hubble version to 1.16.6 to remediate vulnerability. ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed ![image](https://github.com/user-attachments/assets/69d6fc80-cf1c-4af1-802f-da78f30eb9d5) Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- Makefile | 2 +- controller/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index ec885bcfac..088dec0cba 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ PLATFORM ?= $(OS)/$(ARCH) PLATFORMS ?= linux/amd64 linux/arm64 windows/amd64 OS_VERSION ?= ltsc2019 -HUBBLE_VERSION ?= v1.16.5 # This may be modified via the update-hubble GitHub Action +HUBBLE_VERSION ?= v1.16.6 # This may be modified via the update-hubble GitHub Action CONTAINER_BUILDER ?= docker CONTAINER_RUNTIME ?= docker diff --git a/controller/Dockerfile b/controller/Dockerfile index a8ae7f8e6e..6b7d78041f 100644 --- a/controller/Dockerfile +++ b/controller/Dockerfile @@ -99,7 +99,7 @@ RUN arr="clang tcpdump ip ss iptables-legacy iptables-legacy-save iptables-nft i ARG GOARCH=amd64 ENV HUBBLE_ARCH=${GOARCH} # ARG HUBBLE_VERSION may be modified via the update-hubble GitHub Action -ARG HUBBLE_VERSION=v1.16.5 +ARG HUBBLE_VERSION=v1.16.6 ENV HUBBLE_VERSION=${HUBBLE_VERSION} RUN echo "Hubble version: $HUBBLE_VERSION" && \ wget --no-check-certificate https://github.com/cilium/hubble/releases/download/$HUBBLE_VERSION/hubble-linux-${HUBBLE_ARCH}.tar.gz && \ From 20d1efdf316384cf24f6c4c81703d64063f62da9 Mon Sep 17 00:00:00 2001 From: Ritwik Ranjan Date: Thu, 30 Jan 2025 05:35:18 -0800 Subject: [PATCH 10/87] feat: add advanced retina performance test workflows (#1264) # Description This pull request includes changes to the GitHub Actions workflows to add a new advanced performance test and rename the existing performance test to basic performance test. The changes affect both the `.github/workflows/images.yaml` and `.github/workflows/perf.yaml` files. The most important changes include: ### Workflow updates: * [`.github/workflows/images.yaml`](diffhunk://#diff-d0a3d6684c78a148cbf0725d5fe8b5aab6431da05b698a82c9e015516f3020baL335-R337): Renamed the `perf` job to `perf-basic` and updated the test command to include `-retina-mode=basic` argument. [[1]](diffhunk://#diff-d0a3d6684c78a148cbf0725d5fe8b5aab6431da05b698a82c9e015516f3020baL335-R337) [[2]](diffhunk://#diff-d0a3d6684c78a148cbf0725d5fe8b5aab6431da05b698a82c9e015516f3020baL367-R401) * [`.github/workflows/images.yaml`](diffhunk://#diff-d0a3d6684c78a148cbf0725d5fe8b5aab6431da05b698a82c9e015516f3020baL367-R401): Added a new job `perf-advanced` for running the advanced performance tests with `-retina-mode=advanced` argument. * [`.github/workflows/perf.yaml`](diffhunk://#diff-1aa140a875fcb7cae6b4ada7e6e973c4d55179ad046f56465f9f0ec592f283caL18-R19): Renamed the `perf_test` job to `perf_test-basic` and updated the test command to include `-retina-mode=basic` argument. [[1]](diffhunk://#diff-1aa140a875fcb7cae6b4ada7e6e973c4d55179ad046f56465f9f0ec592f283caL18-R19) [[2]](diffhunk://#diff-1aa140a875fcb7cae6b4ada7e6e973c4d55179ad046f56465f9f0ec592f283caL52-R88) * [`.github/workflows/perf.yaml`](diffhunk://#diff-1aa140a875fcb7cae6b4ada7e6e973c4d55179ad046f56465f9f0ec592f283caL52-R88): Added a new job `perf_test-advanced` for running the advanced performance tests with `-retina-mode=advanced` argument. ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- .github/workflows/images.yaml | 42 +++++++++++++++++++++++++++++---- .github/workflows/perf.yaml | 44 +++++++++++++++++++++++++++++++---- 2 files changed, 78 insertions(+), 8 deletions(-) diff --git a/.github/workflows/images.yaml b/.github/workflows/images.yaml index 915cc09698..fa60c49d45 100644 --- a/.github/workflows/images.yaml +++ b/.github/workflows/images.yaml @@ -332,9 +332,9 @@ jobs: set -euo pipefail go test -v ./test/e2e/. -timeout 60m -tags=e2e -count=1 -args -image-tag=$(make version) -image-registry=${{ vars.ACR_NAME }} -image-namespace=${{ github.repository}} - perf: + perf-basic: if: ${{ github.event_name == 'merge_group' && success('manifests')}} - name: Retina Performance Test + name: Retina Basic Performance Test runs-on: ubuntu-latest needs: [manifests] @@ -345,7 +345,41 @@ jobs: - name: Setup go uses: actions/setup-go@v5 with: - go-version-file: go.mod + go-version: 1.23 + - run: go version + + - name: Az CLI login + uses: azure/login@v2 + if: ${{ github.event_name == 'merge_group' }} + with: + client-id: ${{ secrets.AZURE_CLIENT_ID }} + tenant-id: ${{ secrets.AZURE_TENANT_ID }} + subscription-id: ${{ secrets.AZURE_SUBSCRIPTION }} + + - name: Run Perf Tests + env: + AZURE_APP_INSIGHTS_KEY: ${{ secrets.AZURE_APP_INSIGHTS_KEY }} + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION }} + AZURE_LOCATION: ${{ vars.AZURE_LOCATION }} + shell: bash + run: | + set -euo pipefail + go test -v ./test/e2e/. -timeout 2h -tags=perf -count=1 -args -image-tag=$(make version) -image-registry=${{ vars.ACR_NAME }} -image-namespace=${{ github.repository }} -retina-mode=basic + + perf-advanced: + if: ${{ github.event_name == 'merge_group' && success('manifests')}} + name: Retina Advanced Performance Test + runs-on: ubuntu-latest + needs: [manifests] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup go + uses: actions/setup-go@v5 + with: + go-version: 1.23 - run: go version - name: Az CLI login @@ -364,4 +398,4 @@ jobs: shell: bash run: | set -euo pipefail - go test -v ./test/e2e/. -timeout 2h -tags=perf -count=1 -args -image-tag=$(make version) -image-registry=${{ vars.ACR_NAME }} -image-namespace=${{ github.repository }} + go test -v ./test/e2e/. -timeout 2h -tags=perf -count=1 -args -image-tag=$(make version) -image-registry=${{ vars.ACR_NAME }} -image-namespace=${{ github.repository }} -retina-mode=advanced diff --git a/.github/workflows/perf.yaml b/.github/workflows/perf.yaml index dcbe96f7bf..11d71cf47e 100644 --- a/.github/workflows/perf.yaml +++ b/.github/workflows/perf.yaml @@ -15,8 +15,8 @@ permissions: id-token: write jobs: - perf_test: - name: Retina Performance Test + perf-test-basic: + name: Retina Basic Performance Test runs-on: ubuntu-latest steps: @@ -26,7 +26,7 @@ jobs: - name: Setup go uses: actions/setup-go@v5 with: - go-version-file: go.mod + go-version: 1.23 - run: go version - name: Az CLI login @@ -49,4 +49,40 @@ jobs: else TAG=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r .tag_name) fi - go test -v ./test/e2e/. -timeout 2h -tags=perf -count=1 -args -image-tag=$TAG -image-registry=ghcr.io -image-namespace=${{ github.repository }} + go test -v ./test/e2e/. -timeout 2h -tags=perf -count=1 -args -image-tag=$TAG -image-registry=ghcr.io -image-namespace=${{ github.repository }} -retina-mode=basic + + perf-test-advanced: + name: Retina Advanced Performance Test + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup go + uses: actions/setup-go@v5 + with: + go-version: 1.23 + - run: go version + + - name: Az CLI login + uses: azure/login@v2 + with: + client-id: ${{ secrets.AZURE_CLIENT_ID }} + tenant-id: ${{ secrets.AZURE_TENANT_ID }} + subscription-id: ${{ secrets.AZURE_SUBSCRIPTION }} + + - name: Run performance measurement for Retina + env: + AZURE_APP_INSIGHTS_KEY: ${{ secrets.AZURE_APP_INSIGHTS_KEY }} + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION }} + AZURE_LOCATION: ${{ vars.AZURE_LOCATION }} + shell: bash + run: | + set -euo pipefail + if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + TAG=${{ github.event.inputs.tag }} + else + TAG=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r .tag_name) + fi + go test -v ./test/e2e/. -timeout 2h -tags=perf -count=1 -args -image-tag=$TAG -image-registry=ghcr.io -image-namespace=${{ github.repository }} -retina-mode=advanced From ce0672aaf142fba24d412eb94a74a38d3ccdf223 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:12:57 +0000 Subject: [PATCH 11/87] deps: bump github.com/spf13/pflag from 1.0.5 to 1.0.6 (#1288) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/spf13/pflag](https://github.com/spf13/pflag) from 1.0.5 to 1.0.6.
Release notes

Sourced from github.com/spf13/pflag's releases.

v1.0.6

What's Changed

New Contributors

Full Changelog: https://github.com/spf13/pflag/compare/v1.0.5...v1.0.6

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/spf13/pflag&package-manager=go_modules&previous-version=1.0.5&new-version=1.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index fd88196e74..56a00bd6a4 100644 --- a/go.mod +++ b/go.mod @@ -254,7 +254,7 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/spf13/pflag v1.0.5 + github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.34.0 // indirect diff --git a/go.sum b/go.sum index 24dfc77107..ced282a22c 100644 --- a/go.sum +++ b/go.sum @@ -821,8 +821,9 @@ github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/spiffe/go-spiffe/v2 v2.1.7 h1:VUkM1yIyg/x8X7u1uXqSRVRCdMdfRIEdFBzpqoeASGk= From ae716a5c63d8128d4bc7d1b6b5b9ae0cfeeb864a Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:19:57 +0000 Subject: [PATCH 12/87] test(mc): Add function to override logger for sensitive outputs (#1286) # Description * add fetchSensitiveOutputs function to override default logger to prevent sensitive outputs from being logged * add checkRetinaPodsRunning function to check if Retina pods are running * add make target for formatting both OpenTofu and go code * modify make test target to run test ONLY for TestRetinaKindIntegration till we get cloud creds * refactor tests to use new func ## Related Issue #1267 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed ![image](https://github.com/user-attachments/assets/fd711fa8-4064-4c57-87cc-2a7acc088f6f) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- test/multicloud/Makefile | 12 +++++- test/multicloud/examples/aks/outputs.tf | 19 +++++++++ test/multicloud/live/retina-aks/outputs.tf | 19 +++++++++ test/multicloud/modules/aks/outputs.tf | 8 ++-- test/multicloud/modules/gke/output.tf | 4 +- test/multicloud/modules/kind/output.tf | 10 ++--- test/multicloud/test/example_aks_test.go | 35 +++++++++++----- test/multicloud/test/example_gke_test.go | 40 +++++++----------- test/multicloud/test/example_kind_test.go | 12 +++--- .../test/integration_retina_kind_test.go | 15 +++---- test/multicloud/test/testUtils.go | 42 +++++++++++++++++-- 11 files changed, 152 insertions(+), 64 deletions(-) create mode 100644 test/multicloud/examples/aks/outputs.tf create mode 100644 test/multicloud/live/retina-aks/outputs.tf diff --git a/test/multicloud/Makefile b/test/multicloud/Makefile index 715e86ec2f..fac2583b44 100644 --- a/test/multicloud/Makefile +++ b/test/multicloud/Makefile @@ -5,7 +5,7 @@ STACK_NAME ?= $(PREFIX)-aks plan: cd live/$(STACK_NAME) && \ - tofu fmt && tofu init && tofu plan + tofu init && tofu plan apply: cd live/$(STACK_NAME) && \ @@ -38,5 +38,13 @@ clean: destroy kind-kubeconfig: @kubectl config set-context live/$(PREFIX)-kind/mc-kind-config +# For now we only want to run the retina-kind integration +# since we do not have credentials for the other cloud providers +# Once we do this targets will be updated to +# @cd test && go test -v -count=1 -timeout 30m ./... test: - @cd test && go test -v -count=1 -timeout 30m ./... + @cd test && go test -run TestRetinaKindIntegration -count=1 -timeout 10m + +fmt: + @tofu fmt -recursive + @cd test && go fmt ./... diff --git a/test/multicloud/examples/aks/outputs.tf b/test/multicloud/examples/aks/outputs.tf new file mode 100644 index 0000000000..154ce0721b --- /dev/null +++ b/test/multicloud/examples/aks/outputs.tf @@ -0,0 +1,19 @@ +output "host" { + value = module.aks.host + sensitive = true +} + +output "client_certificate" { + value = module.aks.client_certificate + sensitive = true +} + +output "client_key" { + value = module.aks.client_key + sensitive = true +} + +output "cluster_ca_certificate" { + value = module.aks.cluster_ca_certificate + sensitive = true +} \ No newline at end of file diff --git a/test/multicloud/live/retina-aks/outputs.tf b/test/multicloud/live/retina-aks/outputs.tf new file mode 100644 index 0000000000..154ce0721b --- /dev/null +++ b/test/multicloud/live/retina-aks/outputs.tf @@ -0,0 +1,19 @@ +output "host" { + value = module.aks.host + sensitive = true +} + +output "client_certificate" { + value = module.aks.client_certificate + sensitive = true +} + +output "client_key" { + value = module.aks.client_key + sensitive = true +} + +output "cluster_ca_certificate" { + value = module.aks.cluster_ca_certificate + sensitive = true +} \ No newline at end of file diff --git a/test/multicloud/modules/aks/outputs.tf b/test/multicloud/modules/aks/outputs.tf index e71ca414ff..c2b7e548ad 100644 --- a/test/multicloud/modules/aks/outputs.tf +++ b/test/multicloud/modules/aks/outputs.tf @@ -4,21 +4,21 @@ output "azure_get_kubeconfig" { } output "host" { - value = azurerm_kubernetes_cluster.aks.kube_config.0.host + value = azurerm_kubernetes_cluster.aks.kube_config.0.host sensitive = true } output "client_certificate" { - value = azurerm_kubernetes_cluster.aks.kube_config.0.client_certificate + value = azurerm_kubernetes_cluster.aks.kube_config.0.client_certificate sensitive = true } output "client_key" { - value = azurerm_kubernetes_cluster.aks.kube_config.0.client_key + value = azurerm_kubernetes_cluster.aks.kube_config.0.client_key sensitive = true } output "cluster_ca_certificate" { - value = azurerm_kubernetes_cluster.aks.kube_config.0.cluster_ca_certificate + value = azurerm_kubernetes_cluster.aks.kube_config.0.cluster_ca_certificate sensitive = true } diff --git a/test/multicloud/modules/gke/output.tf b/test/multicloud/modules/gke/output.tf index 692cb7eddf..25af8af7e6 100644 --- a/test/multicloud/modules/gke/output.tf +++ b/test/multicloud/modules/gke/output.tf @@ -4,11 +4,11 @@ output "gcloud_get_kubeconfig" { } output "host" { - value = "https://${google_container_cluster.gke.endpoint}" + value = "https://${google_container_cluster.gke.endpoint}" sensitive = true } output "cluster_ca_certificate" { - value = google_container_cluster.gke.master_auth.0.cluster_ca_certificate + value = google_container_cluster.gke.master_auth.0.cluster_ca_certificate sensitive = true } \ No newline at end of file diff --git a/test/multicloud/modules/kind/output.tf b/test/multicloud/modules/kind/output.tf index 1b5b5f3698..7cacd76d32 100644 --- a/test/multicloud/modules/kind/output.tf +++ b/test/multicloud/modules/kind/output.tf @@ -1,24 +1,24 @@ output "kubeconfig" { - value = kind_cluster.kind.kubeconfig + value = kind_cluster.kind.kubeconfig sensitive = true } output "host" { - value = kind_cluster.kind.endpoint + value = kind_cluster.kind.endpoint sensitive = true } output "client_certificate" { - value = kind_cluster.kind.client_certificate + value = kind_cluster.kind.client_certificate sensitive = true } output "client_key" { - value = kind_cluster.kind.client_key + value = kind_cluster.kind.client_key sensitive = true } output "cluster_ca_certificate" { - value = kind_cluster.kind.cluster_ca_certificate + value = kind_cluster.kind.cluster_ca_certificate sensitive = true } \ No newline at end of file diff --git a/test/multicloud/test/example_aks_test.go b/test/multicloud/test/example_aks_test.go index 7bbdf6fa4d..f0ddcdcc69 100644 --- a/test/multicloud/test/example_aks_test.go +++ b/test/multicloud/test/example_aks_test.go @@ -13,11 +13,9 @@ func TestAKSExample(t *testing.T) { TerraformDir: "../examples/aks", Vars: map[string]interface{}{ - "prefix": "test", + "prefix": "test-mc", "location": "uksouth", - "subscription_id": "d6050d84-e4dd-463d-afc7-a6ab3dc33ab7", // TODO: replace with actual project once we get azure "public" access - "tenant_id": "ac8a4ccd-35f1-4f95-a688-f68e3d89adfc", - "resource_group_name": "test", + "resource_group_name": "test-mc", "labels": map[string]string{ "environment": "test", "owner": "test", @@ -28,11 +26,28 @@ func TestAKSExample(t *testing.T) { // clean up at the end of the test defer terraform.Destroy(t, opts) + terraform.InitAndApply(t, opts) + + // get outputs + caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") + clientCert := fetchSensitiveOutput(t, opts, "client_certificate") + clientKey := fetchSensitiveOutput(t, opts, "client_key") + host := fetchSensitiveOutput(t, opts, "host") + + // decode the base64 encoded strings + caCertDecoded := decodeBase64(t, caCert) + clientCertDecoded := decodeBase64(t, clientCert) + clientKeyDecoded := decodeBase64(t, clientKey) + + // build the REST config + restConfig := createRESTConfigWithClientCert(caCertDecoded, clientCertDecoded, clientKeyDecoded, host) + + // create a Kubernetes clientset + clientSet, err := buildClientSet(restConfig) + if err != nil { + t.Fatalf("Failed to create Kubernetes clientset: %v", err) + } - terraform.Init(t, opts) - - // TODO: uncomment once we get creds for azure "public" - // terraform.Apply(t, opts) - - // TODO: add actual tests here + // test the cluster is accessible + testClusterAccess(t, clientSet) } diff --git a/test/multicloud/test/example_gke_test.go b/test/multicloud/test/example_gke_test.go index 2f9980d0e8..3d05eca1dd 100644 --- a/test/multicloud/test/example_gke_test.go +++ b/test/multicloud/test/example_gke_test.go @@ -22,33 +22,25 @@ func TestGKEExample(t *testing.T) { // clean up at the end of the test defer terraform.Destroy(t, opts) + terraform.InitAndApply(t, opts) - terraform.Init(t, opts) + // get outputs + caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") + host := fetchSensitiveOutput(t, opts, "host") + token := fetchSensitiveOutput(t, opts, "access_token") - // TODO: uncomment once we get creds for gcloud - // terraform.Apply(t, opts) + // decode the base64 encoded cert + caCertString := decodeBase64(t, caCert) - // // get outputs - // caCert := terraform.Output(t, opts, "cluster_ca_certificate") - // host := terraform.Output(t, opts, "host") - // token := terraform.Output(t, opts, "access_token") + // build the REST config + restConfig := createRESTConfigWithBearer(caCertString, token, host) - // caCertString, err := decodeBase64(caCert) - // if err != nil { - // t.Fatalf("Failed to decode ca cert: %v", err) - // } - - // // build the REST config - // restConfig := createRESTConfigWithBearer(caCertString, token, host) - - // // create a Kubernetes clientset - // clientSet, err := buildClientSet(restConfig) - // if err != nil { - // t.Fatalf("Failed to create Kubernetes clientset: %v", err) - // } - - // // test the cluster is accessible - // testClusterAccess(t, clientSet) + // create a Kubernetes clientset + clientSet, err := buildClientSet(restConfig) + if err != nil { + t.Fatalf("Failed to create Kubernetes clientset: %v", err) + } - // // TODO: add more tests here + // test the cluster is accessible + testClusterAccess(t, clientSet) } diff --git a/test/multicloud/test/example_kind_test.go b/test/multicloud/test/example_kind_test.go index f16affa4dd..5534d73d11 100644 --- a/test/multicloud/test/example_kind_test.go +++ b/test/multicloud/test/example_kind_test.go @@ -19,15 +19,13 @@ func TestKindExample(t *testing.T) { // clean up at the end of the test defer terraform.Destroy(t, opts) - - terraform.Init(t, opts) - terraform.Apply(t, opts) + terraform.InitAndApply(t, opts) // get outputs - caCert := terraform.Output(t, opts, "cluster_ca_certificate") - clientCert := terraform.Output(t, opts, "client_certificate") - clientKey := terraform.Output(t, opts, "client_key") - host := terraform.Output(t, opts, "host") + caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") + clientCert := fetchSensitiveOutput(t, opts, "client_certificate") + clientKey := fetchSensitiveOutput(t, opts, "client_key") + host := fetchSensitiveOutput(t, opts, "host") // build the REST config restConfig := createRESTConfigWithClientCert(caCert, clientCert, clientKey, host) diff --git a/test/multicloud/test/integration_retina_kind_test.go b/test/multicloud/test/integration_retina_kind_test.go index 110f6dc191..f7767b7937 100644 --- a/test/multicloud/test/integration_retina_kind_test.go +++ b/test/multicloud/test/integration_retina_kind_test.go @@ -20,15 +20,13 @@ func TestRetinaKindIntegration(t *testing.T) { // clean up at the end of the test defer terraform.Destroy(t, opts) - - terraform.Init(t, opts) - terraform.Apply(t, opts) + terraform.InitAndApply(t, opts) // get outputs - caCert := terraform.Output(t, opts, "cluster_ca_certificate") - clientCert := terraform.Output(t, opts, "client_certificate") - clientKey := terraform.Output(t, opts, "client_key") - host := terraform.Output(t, opts, "host") + caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") + clientCert := fetchSensitiveOutput(t, opts, "client_certificate") + clientKey := fetchSensitiveOutput(t, opts, "client_key") + host := fetchSensitiveOutput(t, opts, "host") // build the REST config restConfig := createRESTConfigWithClientCert(caCert, clientCert, clientKey, host) @@ -39,6 +37,9 @@ func TestRetinaKindIntegration(t *testing.T) { t.Fatalf("Failed to create Kubernetes clientset: %v", err) } + // check the retina pods are running + checkRetinaPodsRunning(t, clientSet) + // test the cluster is accessible testClusterAccess(t, clientSet) diff --git a/test/multicloud/test/testUtils.go b/test/multicloud/test/testUtils.go index dd1e24924e..9c119bf7d1 100644 --- a/test/multicloud/test/testUtils.go +++ b/test/multicloud/test/testUtils.go @@ -8,9 +8,13 @@ import ( "io" "strings" "testing" + "time" + "github.com/gruntwork-io/terratest/modules/logger" + "github.com/gruntwork-io/terratest/modules/terraform" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" ) @@ -109,12 +113,44 @@ func checkRetinaLogs(t *testing.T, clientset *kubernetes.Clientset) { } // function to convert base64 encoded string to plain text -func decodeBase64(encoded string) (string, error) { +func decodeBase64(t *testing.T, encoded string) string { // decode the base64 encoded string decoded, err := base64.StdEncoding.DecodeString(encoded) if err != nil { - return "", err + t.Fatalf("Failed to decode base64 string %v:", err) } // return the decoded string - return string(decoded), nil + return string(decoded) +} + +// fetch the sensitive output from OpenTofu +func fetchSensitiveOutput(t *testing.T, options *terraform.Options, name string) string { + defer func() { + options.Logger = nil + }() + options.Logger = logger.Discard + return terraform.Output(t, options, name) +} + +func checkRetinaPodsRunning(t *testing.T, clientset *kubernetes.Clientset) { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) + defer cancel() + + err := wait.PollUntilContextTimeout(ctx, 3*time.Second, 2*time.Minute, true, func(ctx context.Context) (bool, error) { + pods, err := clientset.CoreV1().Pods("kube-system").List(ctx, metav1.ListOptions{ + LabelSelector: "k8s-app=retina", + }) + if err != nil { + return false, err + } + for _, pod := range pods.Items { + if pod.Status.Phase != v1.PodRunning { + return false, nil + } + } + return true, nil + }) + if err != nil { + t.Fatalf("Retina pods did not start in time: %v\n", err) + } } From c17d5ea930f060f7fe08ac2617dffed2ab35341f Mon Sep 17 00:00:00 2001 From: Jacques I Massa Date: Thu, 30 Jan 2025 12:04:46 -0500 Subject: [PATCH 13/87] fix(version-upgrade): Update go std lib from v1.23.4 -> 1.23.5 (#1289) # Description Please provide a brief description of the changes made in this pull request. Upgrade go stdlib version to fix vulnerabilities. ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed CVE no longer present, only from hubble. ![image](https://github.com/user-attachments/assets/74117803-5180-421d-9a7a-6ea1c215804e) Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- cli/Dockerfile | 4 ++-- controller/Dockerfile | 4 ++-- controller/Dockerfile.gogen | 4 ++-- controller/Dockerfile.proto | 4 ++-- controller/Dockerfile.windows-2022 | 4 ++-- controller/Dockerfile.windows-cgo | 4 ++-- controller/Dockerfile.windows-native | 4 ++-- operator/Dockerfile | 4 ++-- operator/Dockerfile.windows-2019 | 4 ++-- operator/Dockerfile.windows-2022 | 4 ++-- test/image/Dockerfile | 4 ++-- 11 files changed, 22 insertions(+), 22 deletions(-) diff --git a/cli/Dockerfile b/cli/Dockerfile index bba2d3b872..12812e608c 100644 --- a/cli/Dockerfile +++ b/cli/Dockerfile @@ -1,5 +1,5 @@ -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-cbl-mariner2.0 -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:88225e171f29fe5f1f6ffca8eb659535b19b253354e43e1f4fc8a9bc67615ca1 AS builder +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-cbl-mariner2.0 +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:ef39e430a97a61bec3395adb673a7c5611d2212f14abe40da21cbfd11a9d6e9d AS builder ARG VERSION diff --git a/controller/Dockerfile b/controller/Dockerfile index 6b7d78041f..03489b0216 100644 --- a/controller/Dockerfile +++ b/controller/Dockerfile @@ -2,8 +2,8 @@ ARG OS_VERSION # pinned base images -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-cbl-mariner2.0 -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:88225e171f29fe5f1f6ffca8eb659535b19b253354e43e1f4fc8a9bc67615ca1 AS golang +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-cbl-mariner2.0 +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:ef39e430a97a61bec3395adb673a7c5611d2212f14abe40da21cbfd11a9d6e9d AS golang # mcr.microsoft.com/cbl-mariner/base/core:2.0 FROM --platform=$TARGETPLATFORM mcr.microsoft.com/cbl-mariner/base/core@sha256:77651116f2e83cf50fddd8a0316945499f8ce6521ff8e94e67539180d1e5975a AS mariner-core diff --git a/controller/Dockerfile.gogen b/controller/Dockerfile.gogen index 9455b7b9be..75505c95f7 100644 --- a/controller/Dockerfile.gogen +++ b/controller/Dockerfile.gogen @@ -1,5 +1,5 @@ -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-cbl-mariner2.0 -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:88225e171f29fe5f1f6ffca8eb659535b19b253354e43e1f4fc8a9bc67615ca1 +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-cbl-mariner2.0 +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:ef39e430a97a61bec3395adb673a7c5611d2212f14abe40da21cbfd11a9d6e9d # Default linux/architecture. diff --git a/controller/Dockerfile.proto b/controller/Dockerfile.proto index 94c2da033b..8719874a24 100644 --- a/controller/Dockerfile.proto +++ b/controller/Dockerfile.proto @@ -1,5 +1,5 @@ -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-cbl-mariner2.0 -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:88225e171f29fe5f1f6ffca8eb659535b19b253354e43e1f4fc8a9bc67615ca1 +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-cbl-mariner2.0 +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:ef39e430a97a61bec3395adb673a7c5611d2212f14abe40da21cbfd11a9d6e9d LABEL Name=retina-builder Version=0.0.1 diff --git a/controller/Dockerfile.windows-2022 b/controller/Dockerfile.windows-2022 index 3869abaac7..55929090bd 100644 --- a/controller/Dockerfile.windows-2022 +++ b/controller/Dockerfile.windows-2022 @@ -1,5 +1,5 @@ -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-cbl-mariner2.0 -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:88225e171f29fe5f1f6ffca8eb659535b19b253354e43e1f4fc8a9bc67615ca1 AS builder +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-cbl-mariner2.0 +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:ef39e430a97a61bec3395adb673a7c5611d2212f14abe40da21cbfd11a9d6e9d AS builder # Build args ARG VERSION diff --git a/controller/Dockerfile.windows-cgo b/controller/Dockerfile.windows-cgo index 08126c53fd..5d90eaab2c 100644 --- a/controller/Dockerfile.windows-cgo +++ b/controller/Dockerfile.windows-cgo @@ -1,5 +1,5 @@ -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-windowsservercore-ltsc2022 -FROM --platform=windows/amd64 mcr.microsoft.com/oss/go/microsoft/golang@sha256:e423369b45d4144324e61d6d64ce7a6d0e2bdf7f181c74d8ed25346891b8aacd AS cgo +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-windowsservercore-ltsc2022 +FROM --platform=windows/amd64 mcr.microsoft.com/oss/go/microsoft/golang@sha256:f88b5ef1afd628c18196e98c3d1c6081617768f4ad316433dd29b19a257a46eb AS cgo SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] diff --git a/controller/Dockerfile.windows-native b/controller/Dockerfile.windows-native index f177985908..8df903e71b 100644 --- a/controller/Dockerfile.windows-native +++ b/controller/Dockerfile.windows-native @@ -3,8 +3,8 @@ # buildx targets, and this one requires legacy build. # Maybe one day: https://github.com/moby/buildkit/issues/616 ARG BUILDER_IMAGE -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-windowsservercore-ltsc2022 -FROM --platform=windows/amd64 mcr.microsoft.com/oss/go/microsoft/golang@sha256:e423369b45d4144324e61d6d64ce7a6d0e2bdf7f181c74d8ed25346891b8aacd AS builder +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-windowsservercore-ltsc2022 +FROM --platform=windows/amd64 mcr.microsoft.com/oss/go/microsoft/golang@sha256:f88b5ef1afd628c18196e98c3d1c6081617768f4ad316433dd29b19a257a46eb AS builder WORKDIR C:\\retina COPY go.mod . COPY go.sum . diff --git a/operator/Dockerfile b/operator/Dockerfile index 79a0db3575..8b4c232474 100644 --- a/operator/Dockerfile +++ b/operator/Dockerfile @@ -1,5 +1,5 @@ -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-cbl-mariner2.0 -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:88225e171f29fe5f1f6ffca8eb659535b19b253354e43e1f4fc8a9bc67615ca1 AS builder +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-cbl-mariner2.0 +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:ef39e430a97a61bec3395adb673a7c5611d2212f14abe40da21cbfd11a9d6e9d AS builder ARG VERSION ARG APP_INSIGHTS_ID diff --git a/operator/Dockerfile.windows-2019 b/operator/Dockerfile.windows-2019 index 9e8108e80c..b4bbe00a09 100644 --- a/operator/Dockerfile.windows-2019 +++ b/operator/Dockerfile.windows-2019 @@ -1,5 +1,5 @@ -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-cbl-mariner2.0 -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:88225e171f29fe5f1f6ffca8eb659535b19b253354e43e1f4fc8a9bc67615ca1 AS builder +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-cbl-mariner2.0 +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:ef39e430a97a61bec3395adb673a7c5611d2212f14abe40da21cbfd11a9d6e9d AS builder # Build args ARG VERSION diff --git a/operator/Dockerfile.windows-2022 b/operator/Dockerfile.windows-2022 index b845ae409d..bf6961c053 100644 --- a/operator/Dockerfile.windows-2022 +++ b/operator/Dockerfile.windows-2022 @@ -1,5 +1,5 @@ -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-cbl-mariner2.0 -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:88225e171f29fe5f1f6ffca8eb659535b19b253354e43e1f4fc8a9bc67615ca1 AS builder +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-cbl-mariner2.0 +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/oss/go/microsoft/golang@sha256:ef39e430a97a61bec3395adb673a7c5611d2212f14abe40da21cbfd11a9d6e9d AS builder # Build args ARG VERSION diff --git a/test/image/Dockerfile b/test/image/Dockerfile index 9d5dd44627..7506ff104d 100644 --- a/test/image/Dockerfile +++ b/test/image/Dockerfile @@ -1,6 +1,6 @@ # build stage -# mcr.microsoft.com/oss/go/microsoft/golang:1.23.4-cbl-mariner2.0 -FROM mcr.microsoft.com/oss/go/microsoft/golang@sha256:88225e171f29fe5f1f6ffca8eb659535b19b253354e43e1f4fc8a9bc67615ca1 AS builder +# mcr.microsoft.com/oss/go/microsoft/golang:1.23.5-cbl-mariner2.0 +FROM mcr.microsoft.com/oss/go/microsoft/golang@sha256:ef39e430a97a61bec3395adb673a7c5611d2212f14abe40da21cbfd11a9d6e9d AS builder ENV CGO_ENABLED=0 COPY . /go/src/github.com/microsoft/retina WORKDIR /go/src/github.com/microsoft/retina From f677008745fbeb5c7378f58533d63bfa5865852f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2025 21:28:24 -0500 Subject: [PATCH 14/87] deps: bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.74.1 to 1.75.0 (#1287) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.74.1 to 1.75.0.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.74.1&new-version=1.75.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 56a00bd6a4..d818c52949 100644 --- a/go.mod +++ b/go.mod @@ -292,7 +292,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.34.0 github.com/aws/aws-sdk-go-v2/config v1.29.1 github.com/aws/aws-sdk-go-v2/credentials v1.17.54 - github.com/aws/aws-sdk-go-v2/service/s3 v1.74.1 + github.com/aws/aws-sdk-go-v2/service/s3 v1.75.0 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 diff --git a/go.sum b/go.sum index ced282a22c..5131e340e0 100644 --- a/go.sum +++ b/go.sum @@ -155,8 +155,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.10 h1:hN4yJBGs github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.10/go.mod h1:TsxON4fEZXyrKY+D+3d2gSTyJkGORexIYab9PTf56DA= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10 h1:fXoWC2gi7tdJYNTPnnlSGzEVwewUchOi8xVq/dkg8Qs= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10/go.mod h1:cvzBApD5dVazHU8C2rbBQzzzsKc8m5+wNJ9mCRZLKPc= -github.com/aws/aws-sdk-go-v2/service/s3 v1.74.1 h1:9LawY3cDJ3HE+v2GMd5SOkNLDwgN4K7TsCjyVBYu/L4= -github.com/aws/aws-sdk-go-v2/service/s3 v1.74.1/go.mod h1:hHnELVnIHltd8EOF3YzahVX6F6y2C6dNqpRj1IMkS5I= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.0 h1:UPQJDyqUXICUt60X4PwbiEf+2QQ4VfXUhDk8OEiGtik= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.0/go.mod h1:hHnELVnIHltd8EOF3YzahVX6F6y2C6dNqpRj1IMkS5I= github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 h1:kuIyu4fTT38Kj7YCC7ouNbVZSSpqkZ+LzIfhCr6Dg+I= github.com/aws/aws-sdk-go-v2/service/sso v1.24.11/go.mod h1:Ro744S4fKiCCuZECXgOi760TiYylUM8ZBf6OGiZzJtY= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 h1:l+dgv/64iVlQ3WsBbnn+JSbkj01jIi+SM0wYsj3y/hY= From bfcb063dadc3a7c2199f28cbc9fb499a32d439ad Mon Sep 17 00:00:00 2001 From: Alex Castilio Date: Fri, 31 Jan 2025 04:04:55 +0000 Subject: [PATCH 15/87] fix(test): fix test cleanup (#1290) # Description When there's a failure in infra creation, `t.Cleanup` function is not called because it is registered after job's `Run` method is called. ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Alex Castilio dos Santos --- test/e2e/infra/azure_temp_infra_setup.go | 5 +++-- test/e2e/scale_test.go | 8 ++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/test/e2e/infra/azure_temp_infra_setup.go b/test/e2e/infra/azure_temp_infra_setup.go index 52bf32b8a6..6bd806742a 100644 --- a/test/e2e/infra/azure_temp_infra_setup.go +++ b/test/e2e/infra/azure_temp_infra_setup.go @@ -37,13 +37,14 @@ func CreateAzureTempK8sInfra(ctx context.Context, t *testing.T, rootDir string) // CreateTestInfra createTestInfra := types.NewRunner(t, jobs.CreateTestInfra(subID, rg, clusterName, location, kubeConfigFilePath, *common.CreateInfra)) - createTestInfra.Run(ctx) - t.Cleanup(func() { err := jobs.DeleteTestInfra(subID, rg, location, *common.DeleteInfra).Run() if err != nil { t.Logf("Failed to delete test infrastructure: %v", err) } }) + + createTestInfra.Run(ctx) + return kubeConfigFilePath } diff --git a/test/e2e/scale_test.go b/test/e2e/scale_test.go index c5af899b1a..e8ca228767 100644 --- a/test/e2e/scale_test.go +++ b/test/e2e/scale_test.go @@ -91,12 +91,12 @@ func TestE2ERetina_Scale(t *testing.T) { // CreateTestInfra createTestInfra := types.NewRunner(t, jobs.CreateTestInfra(subID, rg, clusterName, location, common.KubeConfigFilePath(rootDir), *common.CreateInfra)) - createTestInfra.Run(ctx) - t.Cleanup(func() { _ = jobs.DeleteTestInfra(subID, rg, location, *common.DeleteInfra).Run() }) + createTestInfra.Run(ctx) + fqdn, err := azure.GetFqdnFn(subID, rg, clusterName) require.NoError(t, err) opt.AdditionalTelemetryProperty["clusterFqdn"] = fqdn @@ -105,10 +105,6 @@ func TestE2ERetina_Scale(t *testing.T) { installRetina := types.NewRunner(t, jobs.InstallRetina(common.KubeConfigFilePath(rootDir), common.RetinaChartPath(rootDir))) installRetina.Run(ctx) - t.Cleanup(func() { - _ = jobs.UninstallRetina(common.KubeConfigFilePath(rootDir), common.RetinaChartPath(rootDir)).Run() - }) - scale := types.NewRunner(t, jobs.ScaleTest(&opt)) scale.Run(ctx) } From 6ad3ead5b2b4e2f5fc0ac80eb6988c68ce043ff0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2025 23:05:22 -0500 Subject: [PATCH 16/87] deps: bump github.com/aws/aws-sdk-go-v2/config from 1.29.1 to 1.29.3 (#1291) Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.1 to 1.29.3.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/config&package-manager=go_modules&previous-version=1.29.1&new-version=1.29.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 22 +++++++++++----------- go.sum | 44 ++++++++++++++++++++++---------------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/go.mod b/go.mod index d818c52949..b9d81d60d5 100644 --- a/go.mod +++ b/go.mod @@ -48,18 +48,18 @@ require ( github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.29 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.29 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.30 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.29 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.10 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.9 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.13 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.11 // indirect github.com/aws/smithy-go v1.22.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect @@ -289,9 +289,9 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0 github.com/Microsoft/hcsshim v0.12.0-rc.3 github.com/Sytten/logrus-zap-hook v0.1.0 - github.com/aws/aws-sdk-go-v2 v1.34.0 - github.com/aws/aws-sdk-go-v2/config v1.29.1 - github.com/aws/aws-sdk-go-v2/credentials v1.17.54 + github.com/aws/aws-sdk-go-v2 v1.35.0 + github.com/aws/aws-sdk-go-v2/config v1.29.3 + github.com/aws/aws-sdk-go-v2/credentials v1.17.56 github.com/aws/aws-sdk-go-v2/service/s3 v1.75.0 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb diff --git a/go.sum b/go.sum index 5131e340e0..16a42b18cb 100644 --- a/go.sum +++ b/go.sum @@ -129,40 +129,40 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.34.0 h1:9iyL+cjifckRGEVpRKZP3eIxVlL06Qk1Tk13vreaVQU= -github.com/aws/aws-sdk-go-v2 v1.34.0/go.mod h1:JgstGg0JjWU1KpVJjD5H0y0yyAIpSdKEq556EI6yOOM= +github.com/aws/aws-sdk-go-v2 v1.35.0 h1:jTPxEJyzjSuuz0wB+302hr8Eu9KUI+Zv8zlujMGJpVI= +github.com/aws/aws-sdk-go-v2 v1.35.0/go.mod h1:JgstGg0JjWU1KpVJjD5H0y0yyAIpSdKEq556EI6yOOM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCdoiQp2uZ9k1LsZvmAnoTBeZPXom0= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= -github.com/aws/aws-sdk-go-v2/config v1.29.1 h1:JZhGawAyZ/EuJeBtbQYnaoftczcb2drR2Iq36Wgz4sQ= -github.com/aws/aws-sdk-go-v2/config v1.29.1/go.mod h1:7bR2YD5euaxBhzt2y/oDkt3uNRb6tjFp98GlTFueRwk= -github.com/aws/aws-sdk-go-v2/credentials v1.17.54 h1:4UmqeOqJPvdvASZWrKlhzpRahAulBfyTJQUaYy4+hEI= -github.com/aws/aws-sdk-go-v2/credentials v1.17.54/go.mod h1:RTdfo0P0hbbTxIhmQrOsC/PquBZGabEPnCaxxKRPSnI= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 h1:5grmdTdMsovn9kPZPI23Hhvp0ZyNm5cRO+IZFIYiAfw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24/go.mod h1:zqi7TVKTswH3Ozq28PkmBmgzG1tona7mo9G2IJg4Cis= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.29 h1:Ej0Rf3GMv50Qh4G4852j2djtoDb7AzQ7MuQeFHa3D70= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.29/go.mod h1:oeNTC7PwJNoM5AznVr23wxhLnuJv0ZDe5v7w0wqIs9M= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.29 h1:6e8a71X+9GfghragVevC5bZqvATtc3mAMgxpSNbgzF0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.29/go.mod h1:c4jkZiQ+BWpNqq7VtrxjwISrLrt/VvPq3XiopkUIolI= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= +github.com/aws/aws-sdk-go-v2/config v1.29.3 h1:a5Ucjxe6iV+LHEBmYA9w40rT5aGxWybx/4l/O/fvJlE= +github.com/aws/aws-sdk-go-v2/config v1.29.3/go.mod h1:pt9z1x12zDiDb4iFLrxoeAKLVCU/Gp9DL/5BnwlY77o= +github.com/aws/aws-sdk-go-v2/credentials v1.17.56 h1:JKMBreKudV+ozx6rZJLvEtiexv48aEdhdC7mXUw9MLs= +github.com/aws/aws-sdk-go-v2/credentials v1.17.56/go.mod h1:S3xRjIHD8HHFgMTz4L56q/7IldfNtGL9JjH/vP3U6DA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26 h1:XMBqBEuZLf8yxtH+mU/uUDyQbN4iD/xv9h6he2+lzhw= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26/go.mod h1:d0+wQ/3CYGPuHEfBTPpQdfUX7gjk0/Lxs5Q6KzdEGY8= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.30 h1:+7AzSGNhHoY53di13lvztf9Dyd/9ofzoYGBllkWp3a0= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.30/go.mod h1:Jxd/FrCny99yURiQiMywgXvBhd7tmgdv6KdlUTNzMSo= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30 h1:Ex06eY6I5rO7IX0HalGfa5nGjpBoOsS1Qm3xfjkuszs= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30/go.mod h1:AvyEMA9QcX59kFhVizBpIBpEMThUTXssuJe+emBdcGM= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.29 h1:g9OUETuxA8i/Www5Cby0R3WSTe7ppFTZXHVLNskNS4w= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.29/go.mod h1:CQk+koLR1QeY1+vm7lqNfFii07DEderKq6T3F1L2pyc= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.3 h1:EP1ITDgYVPM2dL1bBBntJ7AW5yTjuWGz9XO+CZwpALU= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.3/go.mod h1:5lWNWeAgWenJ/BZ/CP9k9DjLbC0pjnM045WjXRPPi14= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.10 h1:hN4yJBGswmFTOVYqmbz1GBs9ZMtQe8SrYxPwrkrlRv8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.10/go.mod h1:TsxON4fEZXyrKY+D+3d2gSTyJkGORexIYab9PTf56DA= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11 h1:5JKQ2J3BBW4ovy6A/5Lwx9SpA6IzgH8jB3bquGZ1NUw= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11/go.mod h1:VShCk7rfCzK/b9U1aSkzLwcOoaDlYna16482QqEavis= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10 h1:fXoWC2gi7tdJYNTPnnlSGzEVwewUchOi8xVq/dkg8Qs= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10/go.mod h1:cvzBApD5dVazHU8C2rbBQzzzsKc8m5+wNJ9mCRZLKPc= github.com/aws/aws-sdk-go-v2/service/s3 v1.75.0 h1:UPQJDyqUXICUt60X4PwbiEf+2QQ4VfXUhDk8OEiGtik= github.com/aws/aws-sdk-go-v2/service/s3 v1.75.0/go.mod h1:hHnELVnIHltd8EOF3YzahVX6F6y2C6dNqpRj1IMkS5I= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.11 h1:kuIyu4fTT38Kj7YCC7ouNbVZSSpqkZ+LzIfhCr6Dg+I= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.11/go.mod h1:Ro744S4fKiCCuZECXgOi760TiYylUM8ZBf6OGiZzJtY= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10 h1:l+dgv/64iVlQ3WsBbnn+JSbkj01jIi+SM0wYsj3y/hY= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.10/go.mod h1:Fzsj6lZEb8AkTE5S68OhcbBqeWPsR8RnGuKPr8Todl8= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.9 h1:BRVDbewN6VZcwr+FBOszDKvYeXY1kJ+GGMCcpghlw0U= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.9/go.mod h1:f6vjfZER1M17Fokn0IzssOTMT2N8ZSq+7jnNF0tArvw= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.13 h1:q4pOAKxypbFoUJzOpgo939bF50qb4DgYshiDfcsdN0M= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.13/go.mod h1:G/0PTg7+vQT42ictQGjJhixzTcVZtHFvrN/OeTXrRfQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12 h1:4sGSGshSSfO1vrcXruPick3ioSf8nhhD6nuB2ni37P4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12/go.mod h1:NHpu/pLOelViA4qxkAFH10VLqh+XeLhZfXDaFyMVgSs= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.11 h1:RIXOjp7Dp4siCYJRwBHUcBdVgOWflSJGlq4ZhMI5Ta0= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.11/go.mod h1:ZR17k9bPKPR8u0IkyA6xVsjr56doNQ4ZB1fs7abYBfE= github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= From 89a07678db8f53d03b4460511e06959659271c60 Mon Sep 17 00:00:00 2001 From: Alex Castilio Date: Fri, 31 Jan 2025 14:52:42 +0000 Subject: [PATCH 17/87] fix(heartbeat): add nil check in heartbeat's metricscardinality (#1293) # Description * add nil check in heartbeat's metricscardinality * add tests for metricscardinality ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Alex Castilio dos Santos --- pkg/telemetry/telemetry.go | 43 ++++++-- pkg/telemetry/telemetry_test.go | 171 ++++++++++++++++++++++++++++++++ 2 files changed, 207 insertions(+), 7 deletions(-) diff --git a/pkg/telemetry/telemetry.go b/pkg/telemetry/telemetry.go index b680728784..0c91f32e67 100644 --- a/pkg/telemetry/telemetry.go +++ b/pkg/telemetry/telemetry.go @@ -5,6 +5,7 @@ package telemetry import ( "context" + "errors" "fmt" "maps" "os" @@ -18,6 +19,7 @@ import ( "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/retina/pkg/exporter" "github.com/microsoft/retina/pkg/log" + "github.com/prometheus/client_golang/prometheus" io_prometheus_client "github.com/prometheus/client_model/go" ) @@ -26,6 +28,8 @@ var ( version string mbShift uint64 = 20 + ErrorNilCombinedGatherer = errors.New("exporter.CombinedGatherer is nil") + // property keys kernelversion = "kernelversion" sysmem = "sysmem" @@ -178,7 +182,7 @@ func (t *TelemetryClient) heartbeat(ctx context.Context) { t.trackWarning(err, "failed to get cpu usage") } - metricscardinality, err := metricsCardinality() + metricscardinality, err := metricsCardinality(exporter.CombinedGatherer) if err != nil { t.trackWarning(err, "failed to get metrics cardinality") } @@ -189,8 +193,12 @@ func (t *TelemetryClient) heartbeat(ctx context.Context) { maps.Copy(props, t.profile.GetMemoryUsage()) t.TrackEvent("heartbeat", props) } -func metricsCardinality() (int, error) { - metricFamilies, err := exporter.CombinedGatherer.Gather() +func metricsCardinality(gatherer prometheus.Gatherer) (int, error) { + if gatherer == nil { + return 0, fmt.Errorf("failed to get metrics Gatherer: %w", ErrorNilCombinedGatherer) + } + + metricFamilies, err := gatherer.Gather() if err != nil { return 0, fmt.Errorf("failed to gather metrics: %w", err) } @@ -203,23 +211,44 @@ func metricsCardinality() (int, error) { case io_prometheus_client.MetricType_HISTOGRAM: metrics := mf.GetMetric() for _, m := range metrics { - metricscardinality += len(m.GetHistogram().GetBucket()) + 3 // +3 for le="+Inf", _sum and _count + histogram := m.GetHistogram() + if histogram != nil { + buckets := histogram.GetBucket() + if buckets != nil { + metricscardinality += len(buckets) + 3 // +3 for le="+Inf", _sum and _count + } + } } case io_prometheus_client.MetricType_GAUGE_HISTOGRAM: metrics := mf.GetMetric() for _, m := range metrics { - metricscardinality += len(m.GetHistogram().GetBucket()) + 3 // +3 for le="+Inf", _sum and _count + histogram := m.GetHistogram() + if histogram != nil { + buckets := histogram.GetBucket() + if buckets != nil { + metricscardinality += len(buckets) + 3 // +3 for le="+Inf", _sum and _count + } + } } case io_prometheus_client.MetricType_SUMMARY: metrics := mf.GetMetric() for _, m := range metrics { - metricscardinality += len(m.GetSummary().GetQuantile()) + 2 // +2 for _sum and _count + summary := m.GetSummary() + if summary != nil { + quantiles := summary.GetQuantile() + if quantiles != nil { + metricscardinality += len(quantiles) + 2 // +2 for _sum and _count + } + } } default: - metricscardinality += len(mf.GetMetric()) + metrics := mf.GetMetric() + if metrics != nil { + metricscardinality += len(metrics) + } } } diff --git a/pkg/telemetry/telemetry_test.go b/pkg/telemetry/telemetry_test.go index ae8c050dd9..6dfae581db 100644 --- a/pkg/telemetry/telemetry_test.go +++ b/pkg/telemetry/telemetry_test.go @@ -11,6 +11,8 @@ import ( "sync" "testing" + "github.com/prometheus/client_golang/prometheus" + io_prometheus_client "github.com/prometheus/client_model/go" "github.com/stretchr/testify/require" ) @@ -97,6 +99,175 @@ func TestHeartbeat(t *testing.T) { } } +func TestMetricsCardinality_nilCombinedGatherer(t *testing.T) { + var gatherer prometheus.Gatherer + + t.Run("Combined Gatherer is nil", func(t *testing.T) { + m, err := metricsCardinality(gatherer) + require.Error(t, err) + require.Equal(t, 0, m) + }) +} + +type tGatherer struct { + mf []*io_prometheus_client.MetricFamily +} + +func (t *tGatherer) Gather() ([]*io_prometheus_client.MetricFamily, error) { + return t.mf, nil +} + +func TestMetricsCardinality(t *testing.T) { + counterType := io_prometheus_client.MetricType_COUNTER + histogramType := io_prometheus_client.MetricType_HISTOGRAM + gaugeHistogramType := io_prometheus_client.MetricType_GAUGE_HISTOGRAM + summaryType := io_prometheus_client.MetricType_SUMMARY + + simpleCounter := prometheus.NewCounter(prometheus.CounterOpts{ //nolint:promlinter // its a test + Name: "test_counter", + Help: "test counter", + }) + + histogram3buckets := prometheus.NewHistogram(prometheus.HistogramOpts{ //nolint:promlinter // its a test + Name: "3buckets_histogram", + Help: "test histogram", + Buckets: []float64{1, 2, 3}, + }) + + histogram5buckets := prometheus.NewHistogram(prometheus.HistogramOpts{ //nolint:promlinter // its a test + Name: "5buckets_histogram", + Help: "test histogram", + Buckets: []float64{1, 2, 3, 4, 5}, + }) + summary := prometheus.NewSummary(prometheus.SummaryOpts{ //nolint:promlinter // its a test + Name: "test_summary", + Help: "test summary", + Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}, + }) + + outputCounter := io_prometheus_client.Metric{} + err := simpleCounter.Write(&outputCounter) + require.NoError(t, err) + testCounter := io_prometheus_client.MetricFamily{ + Type: &counterType, + Metric: []*io_prometheus_client.Metric{ + &outputCounter, + }, + } + + outputHistogram3Buckets := io_prometheus_client.Metric{} + err = histogram3buckets.Write(&outputHistogram3Buckets) + require.NoError(t, err) + test3BucketsHistogram := io_prometheus_client.MetricFamily{ + Type: &histogramType, + Metric: []*io_prometheus_client.Metric{ + &outputHistogram3Buckets, + }, + } + + outputHistogram5Buckets := io_prometheus_client.Metric{} + err = histogram5buckets.Write(&outputHistogram5Buckets) + require.NoError(t, err) + test5BucketsGaugeHistogram := io_prometheus_client.MetricFamily{ + Type: &gaugeHistogramType, + Metric: []*io_prometheus_client.Metric{ + &outputHistogram5Buckets, + }, + } + + outputSummary := io_prometheus_client.Metric{} + err = summary.Write(&outputSummary) + require.NoError(t, err) + testSummary := io_prometheus_client.MetricFamily{ + Type: &summaryType, + Metric: []*io_prometheus_client.Metric{ + &outputSummary, + }, + } + + testcases := []struct { + name string + mf []*io_prometheus_client.MetricFamily + expectedCardinality int + }{ + { + "Simple Counter", + []*io_prometheus_client.MetricFamily{&testCounter}, + 1, + }, + { + "3 Buckets Histogram", + []*io_prometheus_client.MetricFamily{&test3BucketsHistogram}, + 6, + }, + { + "5 Buckets Gauge Histogram", + []*io_prometheus_client.MetricFamily{&test5BucketsGaugeHistogram}, + 8, + }, + { + "Summary", + []*io_prometheus_client.MetricFamily{&testSummary}, + 5, + }, + } + for _, tc := range testcases { + t.Run(tc.name, func(t *testing.T) { + testGatherer := tGatherer{ + mf: tc.mf, + } + gotCardinality, err := metricsCardinality(&testGatherer) + require.NoError(t, err) + require.Equal(t, tc.expectedCardinality, gotCardinality) + }) + } +} + +func TestMetricsCardinality_NilHistogram(t *testing.T) { + histogramType := io_prometheus_client.MetricType_HISTOGRAM + gaugeHistogramType := io_prometheus_client.MetricType_GAUGE_HISTOGRAM + summaryType := io_prometheus_client.MetricType_SUMMARY + + nilHistogram := io_prometheus_client.MetricFamily{ + Type: &histogramType, + Metric: []*io_prometheus_client.Metric{ + { + Histogram: nil, + }, + }, + } + nilGaugeHistogram := io_prometheus_client.MetricFamily{ + Type: &gaugeHistogramType, + Metric: []*io_prometheus_client.Metric{ + { + Histogram: nil, + }, + }, + } + nilSummary := io_prometheus_client.MetricFamily{ + Type: &summaryType, + Metric: []*io_prometheus_client.Metric{ + { + Summary: nil, + }, + }, + } + + testGatherer := tGatherer{ + mf: []*io_prometheus_client.MetricFamily{ + &nilHistogram, + &nilGaugeHistogram, + &nilSummary, + }, + } + + t.Run("Nil Histogram", func(t *testing.T) { + m, err := metricsCardinality(&testGatherer) + require.NoError(t, err) + require.Equal(t, 0, m) + }) +} + func TestTelemetryClient_StopPerf(t *testing.T) { type fields struct { properties map[string]string From 8543b7b4eee00eed5d47710b3712ea1d917746bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 11:30:15 -0500 Subject: [PATCH 18/87] deps: bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.75.0 to 1.75.1 (#1295) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.75.0 to 1.75.1.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.75.0&new-version=1.75.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index b9d81d60d5..93b46342f7 100644 --- a/go.mod +++ b/go.mod @@ -52,11 +52,11 @@ require ( github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.30 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.29 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.30 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.4 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.11 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.24.13 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.33.11 // indirect @@ -292,7 +292,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.35.0 github.com/aws/aws-sdk-go-v2/config v1.29.3 github.com/aws/aws-sdk-go-v2/credentials v1.17.56 - github.com/aws/aws-sdk-go-v2/service/s3 v1.75.0 + github.com/aws/aws-sdk-go-v2/service/s3 v1.75.1 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 diff --git a/go.sum b/go.sum index 16a42b18cb..e20715753d 100644 --- a/go.sum +++ b/go.sum @@ -145,18 +145,18 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30 h1:Ex06eY6I5rO7IX0Hal github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30/go.mod h1:AvyEMA9QcX59kFhVizBpIBpEMThUTXssuJe+emBdcGM= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.29 h1:g9OUETuxA8i/Www5Cby0R3WSTe7ppFTZXHVLNskNS4w= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.29/go.mod h1:CQk+koLR1QeY1+vm7lqNfFii07DEderKq6T3F1L2pyc= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.30 h1:yQSv0NQ4CRHoki6AcV/Ldoa4/QCMJauZkF23qznBCPQ= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.30/go.mod h1:jH3z32wDrsducaYX26xnl41ksYFWqjHphIciwIANZkc= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.3 h1:EP1ITDgYVPM2dL1bBBntJ7AW5yTjuWGz9XO+CZwpALU= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.3/go.mod h1:5lWNWeAgWenJ/BZ/CP9k9DjLbC0pjnM045WjXRPPi14= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.4 h1:iwk7v5+lUtA0cIQcQM6EyCXtQJZ9MGIWWaf0JKud5UE= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.4/go.mod h1:o9mSr0x1NwImSmP9q38aTUhjYwcDm277YUURBjXcC2I= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11 h1:5JKQ2J3BBW4ovy6A/5Lwx9SpA6IzgH8jB3bquGZ1NUw= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11/go.mod h1:VShCk7rfCzK/b9U1aSkzLwcOoaDlYna16482QqEavis= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10 h1:fXoWC2gi7tdJYNTPnnlSGzEVwewUchOi8xVq/dkg8Qs= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.10/go.mod h1:cvzBApD5dVazHU8C2rbBQzzzsKc8m5+wNJ9mCRZLKPc= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.0 h1:UPQJDyqUXICUt60X4PwbiEf+2QQ4VfXUhDk8OEiGtik= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.0/go.mod h1:hHnELVnIHltd8EOF3YzahVX6F6y2C6dNqpRj1IMkS5I= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.11 h1:P8qJcYGVDswlMkVFhMi7SJmlf0jNA0JRbvE/q2PuXD8= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.11/go.mod h1:9yp5x5vYwyhnZZ9cKLBxZmrJTGv99C9iVmG7AKeUvdc= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.1 h1:hbTWOPUgAnPpk5+G1jZjYnq4eKCAePwRJEqLN1Tj7Bg= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.1/go.mod h1:Mo2xdnRzOyZQkGHEbhOgooG0eIV+GqS/g8LU4B5iftI= github.com/aws/aws-sdk-go-v2/service/sso v1.24.13 h1:q4pOAKxypbFoUJzOpgo939bF50qb4DgYshiDfcsdN0M= github.com/aws/aws-sdk-go-v2/service/sso v1.24.13/go.mod h1:G/0PTg7+vQT42ictQGjJhixzTcVZtHFvrN/OeTXrRfQ= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12 h1:4sGSGshSSfO1vrcXruPick3ioSf8nhhD6nuB2ni37P4= From e2e762323ecfeb46e04954751e7bb9ae2f2b463d Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Fri, 31 Jan 2025 18:29:33 +0000 Subject: [PATCH 19/87] test(mc): Add module for Prometheus, refactor, add tests (#1294) # Description * add module for Prometheus deployment * add example and test for Prometheus module * add tests for each testUtils.go functions * refactor ## Related Issue #1267 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- test/multicloud/Makefile | 8 +- .../prometheus-kind/.terraform.lock.hcl | 34 +++ .../integration/prometheus-kind/main.tf | 9 + .../integration/prometheus-kind/outputs.tf | 19 ++ .../integration/prometheus-kind/providers.tf | 26 ++ .../integration/prometheus-kind/variables.tf | 5 + .../retina-kind/test-integration-kind-config | 3 - .../integration/retina-kind/test-kind-config | 3 - test/multicloud/modules/prometheus/main.tf | 14 + .../multicloud/modules/prometheus/provider.tf | 8 + .../modules/prometheus/variables.tf | 23 ++ test/multicloud/modules/retina/variables.tf | 2 +- test/multicloud/test/example_aks_test.go | 2 +- test/multicloud/test/example_gke_test.go | 2 +- test/multicloud/test/example_kind_test.go | 2 +- .../test/integration_prometheus_kind_test.go | 60 ++++ .../test/integration_retina_kind_test.go | 21 +- test/multicloud/test/types.go | 9 + .../test/{testUtils.go => utils.go} | 35 ++- test/multicloud/test/utils_test.go | 278 ++++++++++++++++++ 20 files changed, 533 insertions(+), 30 deletions(-) create mode 100644 test/multicloud/examples/integration/prometheus-kind/.terraform.lock.hcl create mode 100644 test/multicloud/examples/integration/prometheus-kind/main.tf create mode 100644 test/multicloud/examples/integration/prometheus-kind/outputs.tf create mode 100644 test/multicloud/examples/integration/prometheus-kind/providers.tf create mode 100644 test/multicloud/examples/integration/prometheus-kind/variables.tf delete mode 100644 test/multicloud/examples/integration/retina-kind/test-integration-kind-config delete mode 100644 test/multicloud/examples/integration/retina-kind/test-kind-config create mode 100644 test/multicloud/modules/prometheus/main.tf create mode 100644 test/multicloud/modules/prometheus/provider.tf create mode 100644 test/multicloud/modules/prometheus/variables.tf create mode 100644 test/multicloud/test/integration_prometheus_kind_test.go create mode 100644 test/multicloud/test/types.go rename test/multicloud/test/{testUtils.go => utils.go} (72%) create mode 100644 test/multicloud/test/utils_test.go diff --git a/test/multicloud/Makefile b/test/multicloud/Makefile index fac2583b44..9f5db6ad5c 100644 --- a/test/multicloud/Makefile +++ b/test/multicloud/Makefile @@ -31,9 +31,11 @@ destroy: cd live/$(STACK_NAME) && \ tofu destroy --auto-approve -clean: destroy - @cd live/$(STACK_NAME) && \ - rm -rf .terraform && rm terraform.tfstate && rm terraform.tfstate.backup +# !! DANGER remove state, backup, kubeconfig files and .terraform directories +clean: + @find . -name '*.tfstate*' -delete + @find . -name '*-kind-config*' -delete + @find . -name '*.terraform' -type d -exec rm -rf {} + kind-kubeconfig: @kubectl config set-context live/$(PREFIX)-kind/mc-kind-config diff --git a/test/multicloud/examples/integration/prometheus-kind/.terraform.lock.hcl b/test/multicloud/examples/integration/prometheus-kind/.terraform.lock.hcl new file mode 100644 index 0000000000..a641109262 --- /dev/null +++ b/test/multicloud/examples/integration/prometheus-kind/.terraform.lock.hcl @@ -0,0 +1,34 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/helm" { + version = "2.17.0" + constraints = "2.17.0" + hashes = [ + "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", + "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", + "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", + "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", + "zh:3976400ceba6dda4636e1d297e3097e1831de5628afa534a166de98a70d1dcbe", + "zh:54440ef14f342b41d75c1aded7487bfcc3f76322b75894235b47b7e89ac4bfa4", + "zh:6512e2ab9f2fa31cbb90d9249647b5c5798f62eb1215ec44da2cdaa24e38ad25", + "zh:795f327ca0b8c5368af0ed03d5d4f6da7260692b4b3ca0bd004ed542e683464d", + "zh:ba659e1d94f224bc3f1fd34cbb9d2663e3a8e734108e5a58eb49eda84b140978", + "zh:c5c8575c4458835c2acbc3d1ed5570589b14baa2525d8fbd04295c097caf41eb", + "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", + ] +} + +provider "registry.opentofu.org/tehcyx/kind" { + version = "0.7.0" + constraints = "0.7.0" + hashes = [ + "h1:nFhFHmE5+dCd9S9dEMwnMNWzyxoVipYobkhXYoDbhgA=", + "zh:171a2fb0137bfbdebd56cd65afd2e0e2167315fe4cb6a07a218db40cb17339c3", + "zh:3260b078b7997ddfd03845326ffaeed7f678eeaaf7918430356f22e299e36f22", + "zh:4066ab3feb482a0dd1bfff6590d89a0ec30478f63c9d8253cfdadb4b8db2234d", + "zh:537af73261d53f4840d1f89d8e5835c52ddb97102e6314f6aea9b8e49c43d610", + "zh:d63e94d828ba0339600d992b0a6695cff939b0aaac1c39b31d38e3c4f3823674", + "zh:f971c617bf6b37d07a5042f13a9ab02b42d0ceb14934174eecc81abeec233c40", + ] +} diff --git a/test/multicloud/examples/integration/prometheus-kind/main.tf b/test/multicloud/examples/integration/prometheus-kind/main.tf new file mode 100644 index 0000000000..b2c0abf8c7 --- /dev/null +++ b/test/multicloud/examples/integration/prometheus-kind/main.tf @@ -0,0 +1,9 @@ +module "kind" { + source = "../../../modules/kind" + prefix = var.prefix +} + +module "prometheus" { + depends_on = [module.kind] + source = "../../../modules/prometheus" +} diff --git a/test/multicloud/examples/integration/prometheus-kind/outputs.tf b/test/multicloud/examples/integration/prometheus-kind/outputs.tf new file mode 100644 index 0000000000..cdc064fec7 --- /dev/null +++ b/test/multicloud/examples/integration/prometheus-kind/outputs.tf @@ -0,0 +1,19 @@ +output "host" { + value = module.kind.host + sensitive = true +} + +output "cluster_ca_certificate" { + value = module.kind.cluster_ca_certificate + sensitive = true +} + +output "client_certificate" { + value = module.kind.client_certificate + sensitive = true +} + +output "client_key" { + value = module.kind.client_key + sensitive = true +} diff --git a/test/multicloud/examples/integration/prometheus-kind/providers.tf b/test/multicloud/examples/integration/prometheus-kind/providers.tf new file mode 100644 index 0000000000..7b8baf2518 --- /dev/null +++ b/test/multicloud/examples/integration/prometheus-kind/providers.tf @@ -0,0 +1,26 @@ +terraform { + required_version = "1.8.3" + required_providers { + kind = { + source = "tehcyx/kind" + version = "0.7.0" + } + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + } +} + +# Initialize the kind provider +provider "kind" {} + +# Initialize the Helm provider +provider "helm" { + kubernetes { + host = module.kind.host + client_certificate = module.kind.client_certificate + client_key = module.kind.client_key + cluster_ca_certificate = module.kind.cluster_ca_certificate + } +} \ No newline at end of file diff --git a/test/multicloud/examples/integration/prometheus-kind/variables.tf b/test/multicloud/examples/integration/prometheus-kind/variables.tf new file mode 100644 index 0000000000..c5bb0bd041 --- /dev/null +++ b/test/multicloud/examples/integration/prometheus-kind/variables.tf @@ -0,0 +1,5 @@ +variable "prefix" { + description = "A prefix to add to all resources." + type = string + default = "mc" +} diff --git a/test/multicloud/examples/integration/retina-kind/test-integration-kind-config b/test/multicloud/examples/integration/retina-kind/test-integration-kind-config deleted file mode 100644 index 2ebf5e0ed5..0000000000 --- a/test/multicloud/examples/integration/retina-kind/test-integration-kind-config +++ /dev/null @@ -1,3 +0,0 @@ -apiVersion: v1 -kind: Config -preferences: {} diff --git a/test/multicloud/examples/integration/retina-kind/test-kind-config b/test/multicloud/examples/integration/retina-kind/test-kind-config deleted file mode 100644 index 2ebf5e0ed5..0000000000 --- a/test/multicloud/examples/integration/retina-kind/test-kind-config +++ /dev/null @@ -1,3 +0,0 @@ -apiVersion: v1 -kind: Config -preferences: {} diff --git a/test/multicloud/modules/prometheus/main.tf b/test/multicloud/modules/prometheus/main.tf new file mode 100644 index 0000000000..2e244f7c18 --- /dev/null +++ b/test/multicloud/modules/prometheus/main.tf @@ -0,0 +1,14 @@ +resource "helm_release" "prometheus" { + name = "prometheus" + repository = "https://prometheus-community.github.io/helm-charts" + chart = "kube-prometheus-stack" + version = var.prometheus_version + + dynamic "set" { + for_each = var.values + content { + name = set.value.name + value = set.value.value + } + } +} \ No newline at end of file diff --git a/test/multicloud/modules/prometheus/provider.tf b/test/multicloud/modules/prometheus/provider.tf new file mode 100644 index 0000000000..83de5829ac --- /dev/null +++ b/test/multicloud/modules/prometheus/provider.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + } +} diff --git a/test/multicloud/modules/prometheus/variables.tf b/test/multicloud/modules/prometheus/variables.tf new file mode 100644 index 0000000000..9970f3a0c1 --- /dev/null +++ b/test/multicloud/modules/prometheus/variables.tf @@ -0,0 +1,23 @@ +variable "prometheus_version" { + description = "The Prometheus version to install." + type = string + default = "68.4.3" +} + +variable "values" { + description = "Configuration for set blocks, this corresponds to Helm values.yaml" + type = list(object({ + name = string + value = string + })) + default = [ + { + name = "global.prometheus.enabled" + value = "true" + }, + { + name = "global.grafana.enabled" + value = "true" + } + ] +} diff --git a/test/multicloud/modules/retina/variables.tf b/test/multicloud/modules/retina/variables.tf index daaa2b717e..9109fddf9f 100644 --- a/test/multicloud/modules/retina/variables.tf +++ b/test/multicloud/modules/retina/variables.tf @@ -1,5 +1,5 @@ variable "retina_version" { - description = "The tag to apply to all resources." + description = "The Retina version to install." type = string default = "v0.0.23" } diff --git a/test/multicloud/test/example_aks_test.go b/test/multicloud/test/example_aks_test.go index f0ddcdcc69..dbd4bd77a0 100644 --- a/test/multicloud/test/example_aks_test.go +++ b/test/multicloud/test/example_aks_test.go @@ -10,7 +10,7 @@ func TestAKSExample(t *testing.T) { t.Parallel() opts := &terraform.Options{ - TerraformDir: "../examples/aks", + TerraformDir: examplesPath + "aks", Vars: map[string]interface{}{ "prefix": "test-mc", diff --git a/test/multicloud/test/example_gke_test.go b/test/multicloud/test/example_gke_test.go index 3d05eca1dd..b2443ea1cb 100644 --- a/test/multicloud/test/example_gke_test.go +++ b/test/multicloud/test/example_gke_test.go @@ -10,7 +10,7 @@ func TestGKEExample(t *testing.T) { t.Parallel() opts := &terraform.Options{ - TerraformDir: "../examples/gke", + TerraformDir: examplesPath + "gke", Vars: map[string]interface{}{ "prefix": "test", diff --git a/test/multicloud/test/example_kind_test.go b/test/multicloud/test/example_kind_test.go index 5534d73d11..9382ae4263 100644 --- a/test/multicloud/test/example_kind_test.go +++ b/test/multicloud/test/example_kind_test.go @@ -10,7 +10,7 @@ func TestKindExample(t *testing.T) { t.Parallel() opts := &terraform.Options{ - TerraformDir: "../examples/kind", + TerraformDir: examplesPath + "kind", Vars: map[string]interface{}{ "prefix": "test", diff --git a/test/multicloud/test/integration_prometheus_kind_test.go b/test/multicloud/test/integration_prometheus_kind_test.go new file mode 100644 index 0000000000..7c7f1f2f50 --- /dev/null +++ b/test/multicloud/test/integration_prometheus_kind_test.go @@ -0,0 +1,60 @@ +package test + +import ( + "testing" + "time" + + "github.com/gruntwork-io/terratest/modules/terraform" +) + +func TestPrometheusKindIntegration(t *testing.T) { + t.Parallel() + + opts := &terraform.Options{ + TerraformDir: examplesPath + "integration/prometheus-kind", + + Vars: map[string]interface{}{ + "prefix": "test-integration", + }, + } + + // clean up at the end of the test + defer terraform.Destroy(t, opts) + terraform.InitAndApply(t, opts) + + // get outputs + caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") + clientCert := fetchSensitiveOutput(t, opts, "client_certificate") + clientKey := fetchSensitiveOutput(t, opts, "client_key") + host := fetchSensitiveOutput(t, opts, "host") + + // build the REST config + restConfig := createRESTConfigWithClientCert(caCert, clientCert, clientKey, host) + + // create a Kubernetes clientset + clientSet, err := buildClientSet(restConfig) + if err != nil { + t.Fatalf("Failed to create Kubernetes clientset: %v", err) + } + + // test the cluster is accessible + testClusterAccess(t, clientSet) + + podSelector := PodSelector{ + Namespace: "default", + LabelSelector: "app.kubernetes.io/instance=prometheus-kube-prometheus-prometheus", + ContainerName: "prometheus", + } + + timeOut := time.Duration(60) * time.Second + // check the prometheus pods are running + result, err := arePodsRunning(clientSet, podSelector, timeOut) + if !result { + t.Fatalf("Prometheus pods did not start in time: %v\n", err) + } + + // check the retina pods logs for errors + checkPodLogs(t, clientSet, podSelector) + + // TODO: add more tests here +} diff --git a/test/multicloud/test/integration_retina_kind_test.go b/test/multicloud/test/integration_retina_kind_test.go index f7767b7937..1deae01805 100644 --- a/test/multicloud/test/integration_retina_kind_test.go +++ b/test/multicloud/test/integration_retina_kind_test.go @@ -2,6 +2,7 @@ package test import ( "testing" + "time" "github.com/gruntwork-io/terratest/modules/terraform" ) @@ -10,7 +11,7 @@ func TestRetinaKindIntegration(t *testing.T) { t.Parallel() opts := &terraform.Options{ - TerraformDir: "../examples/integration/retina-kind", + TerraformDir: examplesPath + "integration/retina-kind", Vars: map[string]interface{}{ "prefix": "test-integration", @@ -37,14 +38,24 @@ func TestRetinaKindIntegration(t *testing.T) { t.Fatalf("Failed to create Kubernetes clientset: %v", err) } - // check the retina pods are running - checkRetinaPodsRunning(t, clientSet) - // test the cluster is accessible testClusterAccess(t, clientSet) + retinaPodSelector := PodSelector{ + Namespace: "kube-system", + LabelSelector: "k8s-app=retina", + ContainerName: "retina", + } + + timeOut := time.Duration(90) * time.Second + // check the retina pods are running + result, err := arePodsRunning(clientSet, retinaPodSelector, timeOut) + if !result { + t.Fatalf("Retina pods did not start in time: %v\n", err) + } + // check the retina pods logs for errors - checkRetinaLogs(t, clientSet) + checkPodLogs(t, clientSet, retinaPodSelector) // TODO: add more tests here } diff --git a/test/multicloud/test/types.go b/test/multicloud/test/types.go new file mode 100644 index 0000000000..97ab948a47 --- /dev/null +++ b/test/multicloud/test/types.go @@ -0,0 +1,9 @@ +package test + +const examplesPath = "../examples/" + +type PodSelector struct { + Namespace string + LabelSelector string + ContainerName string +} diff --git a/test/multicloud/test/testUtils.go b/test/multicloud/test/utils.go similarity index 72% rename from test/multicloud/test/testUtils.go rename to test/multicloud/test/utils.go index 9c119bf7d1..70cddcc359 100644 --- a/test/multicloud/test/testUtils.go +++ b/test/multicloud/test/utils.go @@ -53,7 +53,7 @@ func createRESTConfigWithClientCert(caCert, clientCert, clientKey, host string) return config } -func testClusterAccess(t *testing.T, clientset *kubernetes.Clientset) { +func testClusterAccess(t *testing.T, clientset kubernetes.Interface) { // Test the cluster is accessible by listing nodes _, err := clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{}) if err != nil { @@ -73,7 +73,7 @@ func checkLogsForErrors(logs io.ReadCloser) error { // print a debug line fmt.Printf("Log line: %s\n", line) // Check if the line contains the word "error" - if strings.Contains(strings.ToLower(line), "error") { + if strings.Contains(strings.ToLower(line), "level=err") { // create a new error with the log line return fmt.Errorf("Error found in logs: %s", line) } @@ -85,10 +85,10 @@ func checkLogsForErrors(logs io.ReadCloser) error { return nil } -func checkRetinaLogs(t *testing.T, clientset *kubernetes.Clientset) { +func checkPodLogs(t *testing.T, clientset kubernetes.Interface, podSelector PodSelector) { // Get the logs for the retina pods - pods, err := clientset.CoreV1().Pods("kube-system").List(context.TODO(), metav1.ListOptions{ - LabelSelector: "k8s-app=retina", + pods, err := clientset.CoreV1().Pods(podSelector.Namespace).List(context.TODO(), metav1.ListOptions{ + LabelSelector: podSelector.LabelSelector, }) if err != nil { t.Fatalf("Failed to list pods: %v", err) @@ -96,7 +96,9 @@ func checkRetinaLogs(t *testing.T, clientset *kubernetes.Clientset) { // Stream the logs for each pod for _, pod := range pods.Items { // Get the logs for the pod - req := clientset.CoreV1().Pods("kube-system").GetLogs(pod.Name, &v1.PodLogOptions{}) + req := clientset.CoreV1().Pods(podSelector.Namespace).GetLogs(pod.Name, &v1.PodLogOptions{ + Container: podSelector.ContainerName, + }) // Stream the logs logs, err := req.Stream(context.Background()) if err != nil { @@ -132,13 +134,15 @@ func fetchSensitiveOutput(t *testing.T, options *terraform.Options, name string) return terraform.Output(t, options, name) } -func checkRetinaPodsRunning(t *testing.T, clientset *kubernetes.Clientset) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) +func arePodsRunning(clientset kubernetes.Interface, podSelector PodSelector, timeout time.Duration) (bool, error) { + ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err := wait.PollUntilContextTimeout(ctx, 3*time.Second, 2*time.Minute, true, func(ctx context.Context) (bool, error) { - pods, err := clientset.CoreV1().Pods("kube-system").List(ctx, metav1.ListOptions{ - LabelSelector: "k8s-app=retina", + // Poll until the pods are running + err := wait.PollUntilContextTimeout(ctx, 3*time.Second, timeout, true, func(ctx context.Context) (bool, error) { + // List the pods with the label selector + pods, err := clientset.CoreV1().Pods(podSelector.Namespace).List(ctx, metav1.ListOptions{ + LabelSelector: podSelector.LabelSelector, }) if err != nil { return false, err @@ -147,10 +151,17 @@ func checkRetinaPodsRunning(t *testing.T, clientset *kubernetes.Clientset) { if pod.Status.Phase != v1.PodRunning { return false, nil } + // make sure all containers are running + for _, containerStatus := range pod.Status.ContainerStatuses { + if !containerStatus.Ready { + return false, nil + } + } } return true, nil }) if err != nil { - t.Fatalf("Retina pods did not start in time: %v\n", err) + return false, fmt.Errorf("Pods did not start in time: %v", err) } + return true, nil } diff --git a/test/multicloud/test/utils_test.go b/test/multicloud/test/utils_test.go new file mode 100644 index 0000000000..d4f7a6600e --- /dev/null +++ b/test/multicloud/test/utils_test.go @@ -0,0 +1,278 @@ +package test + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "io" + "os" + "testing" + "time" + + "github.com/gruntwork-io/terratest/modules/terraform" + v1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/fake" + "k8s.io/client-go/rest" +) + +func TestBuildClientSet(t *testing.T) { + config := &rest.Config{} + clientset, err := buildClientSet(config) + if err != nil { + t.Fatalf("Failed to build clientset: %v", err) + } + if clientset == nil { + t.Fatalf("Expected clientset to be non-nil") + } +} + +func TestCreateRESTConfigWithBearer(t *testing.T) { + config := createRESTConfigWithBearer("caCert", "bearerToken", "host") + if config.BearerToken != "bearerToken" { + t.Fatalf("Expected BearerToken to be 'bearerToken'") + } +} + +func TestCreateRESTConfigWithClientCert(t *testing.T) { + config := createRESTConfigWithClientCert("caCert", "clientCert", "clientKey", "host") + if config.TLSClientConfig.CAData == nil || string(config.TLSClientConfig.CAData) != "caCert" { + t.Fatalf("Expected CAData to be 'caCert'") + } + if config.TLSClientConfig.CertData == nil || string(config.TLSClientConfig.CertData) != "clientCert" { + t.Fatalf("Expected CertData to be 'clientCert'") + } + if config.TLSClientConfig.KeyData == nil || string(config.TLSClientConfig.KeyData) != "clientKey" { + t.Fatalf("Expected KeyData to be 'clientKey'") + } + if config.Host != "host" { + t.Fatalf("Expected Host to be 'host'") + } +} + +func TestTestClusterAccess(t *testing.T) { + clientset := fake.NewSimpleClientset() + testClusterAccess(t, clientset) + + // Simulate a failure scenario + clientset = nil + defer func() { + if r := recover(); r == nil { + t.Fatalf("Expected panic due to nil clientset, but code did not panic") + } + }() + testClusterAccess(t, clientset) +} + +func TestCheckLogsForErrors(t *testing.T) { + testCases := []struct { + name string + logData string + expected bool + }{ + { + name: "Log contains error", + logData: "error: something went wrong", + expected: false, + }, + { + name: "Log contains level=ERR", + logData: "level=ERR: something went wrong", + expected: true, + }, + { + name: "Log contains level=error", + logData: "level=error: something went wrong", + expected: true, + }, + { + name: "Log does not contain error", + logData: "info: all systems operational", + expected: false, + }, + { + name: "Empty log", + logData: "", + expected: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + logs := io.NopCloser(bytes.NewReader([]byte(tc.logData))) + err := checkLogsForErrors(logs) + if (err != nil) != tc.expected { + t.Fatalf("Expected error: %v, got: %v", tc.expected, err != nil) + } + }) + } +} + +func TestCheckPodLogs(t *testing.T) { + clientset := fake.NewSimpleClientset(&v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-pod", + Namespace: "default", + Labels: map[string]string{ + "app": "test", + }, + }, + }) + podSelector := PodSelector{ + Namespace: "default", + LabelSelector: "app=test", + ContainerName: "test-container", + } + checkPodLogs(t, clientset, podSelector) +} + +func TestDecodeBase64(t *testing.T) { + encoded := base64.StdEncoding.EncodeToString([]byte("test")) + decoded := decodeBase64(t, encoded) + if decoded != "test" { + t.Fatalf("Expected 'test', got '%s'", decoded) + } +} + +func TestFetchSensitiveOutput(t *testing.T) { + // Create a temporary directory for the mock state file + tempDir, err := os.MkdirTemp("", "terraform") + if err != nil { + t.Fatalf("Failed to create temp dir: %v", err) + } + defer os.RemoveAll(tempDir) + + // Create a mock state file with the sensitive output + stateFilePath := tempDir + "/terraform.tfstate" + mockState := map[string]interface{}{ + "version": 4, + "outputs": map[string]interface{}{ + "test-output": map[string]interface{}{ + "value": "sensitive-value", + "type": "string", + "sensitive": true, + }, + }, + } + stateData, err := json.Marshal(mockState) + if err != nil { + t.Fatalf("Failed to marshal mock state: %v", err) + } + if err := os.WriteFile(stateFilePath, stateData, 0644); err != nil { + t.Fatalf("Failed to write mock state file: %v", err) + } + + // Set up terraform options to use the mock state file + opts := &terraform.Options{ + TerraformDir: tempDir, + } + + // Fetch the sensitive output + output := fetchSensitiveOutput(t, opts, "test-output") + if output != "sensitive-value" { + t.Fatalf("Expected 'sensitive-value', got '%s'", output) + } +} + +func TestCheckPodsRunning(t *testing.T) { + testCases := []struct { + name string + pods []v1.Pod + expected bool + }{ + { + name: "All pods running", + pods: []v1.Pod{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "test-pod-1", + Namespace: "default", + Labels: map[string]string{ + "app": "test", + }, + }, + Status: v1.PodStatus{ + Phase: v1.PodRunning, + ContainerStatuses: []v1.ContainerStatus{ + { + Ready: true, + }, + }, + }, + }, + { + ObjectMeta: metav1.ObjectMeta{ + Name: "test-pod-2", + Namespace: "default", + Labels: map[string]string{ + "app": "test", + }, + }, + Status: v1.PodStatus{ + Phase: v1.PodRunning, + ContainerStatuses: []v1.ContainerStatus{ + { + Ready: true, + }, + }, + }, + }, + }, + expected: true, + }, + { + name: "Some pods not running", + pods: []v1.Pod{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "test-pod-1", + Namespace: "default", + Labels: map[string]string{ + "app": "test", + }, + }, + Status: v1.PodStatus{ + Phase: v1.PodRunning, + ContainerStatuses: []v1.ContainerStatus{ + { + Ready: true, + }, + }, + }, + }, + { + ObjectMeta: metav1.ObjectMeta{ + Name: "test-pod-2", + Namespace: "default", + Labels: map[string]string{ + "app": "test", + }, + }, + Status: v1.PodStatus{ + Phase: v1.PodPending, + }, + }, + }, + expected: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + var objects []runtime.Object + for _, pod := range tc.pods { + objects = append(objects, pod.DeepCopyObject()) + } + clientset := fake.NewSimpleClientset(objects...) + podSelector := PodSelector{ + Namespace: "default", + LabelSelector: "app=test", + } + result, err := arePodsRunning(clientset, podSelector, time.Duration(1)*time.Second) + if result != tc.expected { + t.Fatalf("Expected %v, got %v with error: %v", tc.expected, result, err) + } + }) + } +} From 389a9e95a5350542c8e2b75339b3c5a8ce062577 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 17:55:49 -0500 Subject: [PATCH 20/87] deps: bump github.com/aws/aws-sdk-go-v2 from 1.35.0 to 1.36.0 (#1297) Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.35.0 to 1.36.0.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2&package-manager=go_modules&previous-version=1.35.0&new-version=1.36.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 93b46342f7..e267cb2850 100644 --- a/go.mod +++ b/go.mod @@ -289,7 +289,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0 github.com/Microsoft/hcsshim v0.12.0-rc.3 github.com/Sytten/logrus-zap-hook v0.1.0 - github.com/aws/aws-sdk-go-v2 v1.35.0 + github.com/aws/aws-sdk-go-v2 v1.36.0 github.com/aws/aws-sdk-go-v2/config v1.29.3 github.com/aws/aws-sdk-go-v2/credentials v1.17.56 github.com/aws/aws-sdk-go-v2/service/s3 v1.75.1 diff --git a/go.sum b/go.sum index e20715753d..0e19701979 100644 --- a/go.sum +++ b/go.sum @@ -129,8 +129,8 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.35.0 h1:jTPxEJyzjSuuz0wB+302hr8Eu9KUI+Zv8zlujMGJpVI= -github.com/aws/aws-sdk-go-v2 v1.35.0/go.mod h1:JgstGg0JjWU1KpVJjD5H0y0yyAIpSdKEq556EI6yOOM= +github.com/aws/aws-sdk-go-v2 v1.36.0 h1:b1wM5CcE65Ujwn565qcwgtOTT1aT4ADOHHgglKjG7fk= +github.com/aws/aws-sdk-go-v2 v1.36.0/go.mod h1:5PMILGVKiW32oDzjj6RU52yrNrDPUHcbZQYr1sM7qmM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCdoiQp2uZ9k1LsZvmAnoTBeZPXom0= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= github.com/aws/aws-sdk-go-v2/config v1.29.3 h1:a5Ucjxe6iV+LHEBmYA9w40rT5aGxWybx/4l/O/fvJlE= From bb09ecdd8bd0f05076f3872618bcb6a512f464d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 21:32:57 -0500 Subject: [PATCH 21/87] deps: bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.75.1 to 1.75.2 (#1300) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.75.1 to 1.75.2.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.75.1&new-version=1.75.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 +++++++------- go.sum | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index e267cb2850..305c4ce3b9 100644 --- a/go.mod +++ b/go.mod @@ -49,14 +49,14 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.30 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.30 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.11 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.24.13 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.33.11 // indirect @@ -292,7 +292,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.36.0 github.com/aws/aws-sdk-go-v2/config v1.29.3 github.com/aws/aws-sdk-go-v2/credentials v1.17.56 - github.com/aws/aws-sdk-go-v2/service/s3 v1.75.1 + github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 diff --git a/go.sum b/go.sum index 0e19701979..5e3b6cc274 100644 --- a/go.sum +++ b/go.sum @@ -139,24 +139,24 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.56 h1:JKMBreKudV+ozx6rZJLvEtiexv4 github.com/aws/aws-sdk-go-v2/credentials v1.17.56/go.mod h1:S3xRjIHD8HHFgMTz4L56q/7IldfNtGL9JjH/vP3U6DA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26 h1:XMBqBEuZLf8yxtH+mU/uUDyQbN4iD/xv9h6he2+lzhw= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26/go.mod h1:d0+wQ/3CYGPuHEfBTPpQdfUX7gjk0/Lxs5Q6KzdEGY8= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.30 h1:+7AzSGNhHoY53di13lvztf9Dyd/9ofzoYGBllkWp3a0= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.30/go.mod h1:Jxd/FrCny99yURiQiMywgXvBhd7tmgdv6KdlUTNzMSo= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30 h1:Ex06eY6I5rO7IX0HalGfa5nGjpBoOsS1Qm3xfjkuszs= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30/go.mod h1:AvyEMA9QcX59kFhVizBpIBpEMThUTXssuJe+emBdcGM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 h1:lWm9ucLSRFiI4dQQafLrEOmEDGry3Swrz0BIRdiHJqQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31/go.mod h1:Huu6GG0YTfbPphQkDSo4dEGmQRTKb9k9G7RdtyQWxuI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31 h1:ACxDklUKKXb48+eg5ROZXi1vDgfMyfIA/WyvqHcHI0o= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31/go.mod h1:yadnfsDwqXeVaohbGc/RaD287PuyRw2wugkh5ZL2J6k= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.30 h1:yQSv0NQ4CRHoki6AcV/Ldoa4/QCMJauZkF23qznBCPQ= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.30/go.mod h1:jH3z32wDrsducaYX26xnl41ksYFWqjHphIciwIANZkc= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31 h1:8IwBjuLdqIO1dGB+dZ9zJEl8wzY3bVYxcs0Xyu/Lsc0= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31/go.mod h1:8tMBcuVjL4kP/ECEIWTCWtwV2kj6+ouEKl4cqR4iWLw= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.4 h1:iwk7v5+lUtA0cIQcQM6EyCXtQJZ9MGIWWaf0JKud5UE= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.4/go.mod h1:o9mSr0x1NwImSmP9q38aTUhjYwcDm277YUURBjXcC2I= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11 h1:5JKQ2J3BBW4ovy6A/5Lwx9SpA6IzgH8jB3bquGZ1NUw= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11/go.mod h1:VShCk7rfCzK/b9U1aSkzLwcOoaDlYna16482QqEavis= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.11 h1:P8qJcYGVDswlMkVFhMi7SJmlf0jNA0JRbvE/q2PuXD8= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.11/go.mod h1:9yp5x5vYwyhnZZ9cKLBxZmrJTGv99C9iVmG7AKeUvdc= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.1 h1:hbTWOPUgAnPpk5+G1jZjYnq4eKCAePwRJEqLN1Tj7Bg= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.1/go.mod h1:Mo2xdnRzOyZQkGHEbhOgooG0eIV+GqS/g8LU4B5iftI= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5 h1:siiQ+jummya9OLPDEyHVb2dLW4aOMe22FGDd0sAfuSw= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5/go.mod h1:iHVx2J9pWzITdP5MJY6qWfG34TfD9EA+Qi3eV6qQCXw= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12 h1:O+8vD2rGjfihBewr5bT+QUfYUHIxCVgG61LHoT59shM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12/go.mod h1:usVdWJaosa66NMvmCrr08NcWDBRv4E6+YFG2pUdw1Lk= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 h1:tkVNm99nkJnFo1H9IIQb5QkCiPcvCDn3Pos+IeTbGRA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12/go.mod h1:dIVlquSPUMqEJtx2/W17SM2SuESRaVEhEV9alcMqxjw= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2 h1:dyC+iA2+Yc7iDMDh0R4eT6fi8TgBduc+BOWCy6Br0/o= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2/go.mod h1:FHSHmyEUkzRbaFFqqm6bkLAOQHgqhsLmfCahvCBMiyA= github.com/aws/aws-sdk-go-v2/service/sso v1.24.13 h1:q4pOAKxypbFoUJzOpgo939bF50qb4DgYshiDfcsdN0M= github.com/aws/aws-sdk-go-v2/service/sso v1.24.13/go.mod h1:G/0PTg7+vQT42ictQGjJhixzTcVZtHFvrN/OeTXrRfQ= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12 h1:4sGSGshSSfO1vrcXruPick3ioSf8nhhD6nuB2ni37P4= From b00fa5157911c594ee8b617e78da53aea58c6d3a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 22:21:00 -0500 Subject: [PATCH 22/87] deps: bump github.com/aws/aws-sdk-go-v2/credentials from 1.17.56 to 1.17.57 (#1298) Bumps [github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2) from 1.17.56 to 1.17.57.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/credentials&package-manager=go_modules&previous-version=1.17.56&new-version=1.17.57)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 305c4ce3b9..e7ba32368e 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect @@ -57,9 +57,9 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.24.13 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.11 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.12 // indirect github.com/aws/smithy-go v1.22.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect @@ -291,7 +291,7 @@ require ( github.com/Sytten/logrus-zap-hook v0.1.0 github.com/aws/aws-sdk-go-v2 v1.36.0 github.com/aws/aws-sdk-go-v2/config v1.29.3 - github.com/aws/aws-sdk-go-v2/credentials v1.17.56 + github.com/aws/aws-sdk-go-v2/credentials v1.17.57 github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb diff --git a/go.sum b/go.sum index 5e3b6cc274..cba3c6c8f9 100644 --- a/go.sum +++ b/go.sum @@ -135,10 +135,10 @@ github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCd github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= github.com/aws/aws-sdk-go-v2/config v1.29.3 h1:a5Ucjxe6iV+LHEBmYA9w40rT5aGxWybx/4l/O/fvJlE= github.com/aws/aws-sdk-go-v2/config v1.29.3/go.mod h1:pt9z1x12zDiDb4iFLrxoeAKLVCU/Gp9DL/5BnwlY77o= -github.com/aws/aws-sdk-go-v2/credentials v1.17.56 h1:JKMBreKudV+ozx6rZJLvEtiexv48aEdhdC7mXUw9MLs= -github.com/aws/aws-sdk-go-v2/credentials v1.17.56/go.mod h1:S3xRjIHD8HHFgMTz4L56q/7IldfNtGL9JjH/vP3U6DA= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26 h1:XMBqBEuZLf8yxtH+mU/uUDyQbN4iD/xv9h6he2+lzhw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26/go.mod h1:d0+wQ/3CYGPuHEfBTPpQdfUX7gjk0/Lxs5Q6KzdEGY8= +github.com/aws/aws-sdk-go-v2/credentials v1.17.57 h1:kFQDsbdBAR3GZsB8xA+51ptEnq9TIj3tS4MuP5b+TcQ= +github.com/aws/aws-sdk-go-v2/credentials v1.17.57/go.mod h1:2kerxPUUbTagAr/kkaHiqvj/bcYHzi2qiJS/ZinllU0= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27 h1:7lOW8NUwE9UZekS1DYoiPdVAqZ6A+LheHWb+mHbNOq8= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27/go.mod h1:w1BASFIPOPUae7AgaH4SbjNbfdkxuggLyGfNFTn8ITY= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 h1:lWm9ucLSRFiI4dQQafLrEOmEDGry3Swrz0BIRdiHJqQ= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31/go.mod h1:Huu6GG0YTfbPphQkDSo4dEGmQRTKb9k9G7RdtyQWxuI= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31 h1:ACxDklUKKXb48+eg5ROZXi1vDgfMyfIA/WyvqHcHI0o= @@ -157,12 +157,12 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 h1:tkVNm99nkJnFo github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12/go.mod h1:dIVlquSPUMqEJtx2/W17SM2SuESRaVEhEV9alcMqxjw= github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2 h1:dyC+iA2+Yc7iDMDh0R4eT6fi8TgBduc+BOWCy6Br0/o= github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2/go.mod h1:FHSHmyEUkzRbaFFqqm6bkLAOQHgqhsLmfCahvCBMiyA= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.13 h1:q4pOAKxypbFoUJzOpgo939bF50qb4DgYshiDfcsdN0M= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.13/go.mod h1:G/0PTg7+vQT42ictQGjJhixzTcVZtHFvrN/OeTXrRfQ= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12 h1:4sGSGshSSfO1vrcXruPick3ioSf8nhhD6nuB2ni37P4= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12/go.mod h1:NHpu/pLOelViA4qxkAFH10VLqh+XeLhZfXDaFyMVgSs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.11 h1:RIXOjp7Dp4siCYJRwBHUcBdVgOWflSJGlq4ZhMI5Ta0= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.11/go.mod h1:ZR17k9bPKPR8u0IkyA6xVsjr56doNQ4ZB1fs7abYBfE= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 h1:c5WJ3iHz7rLIgArznb3JCSQT3uUMiz9DLZhIX+1G8ok= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.14/go.mod h1:+JJQTxB6N4niArC14YNtxcQtwEqzS3o9Z32n7q33Rfs= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 h1:f1L/JtUkVODD+k1+IiSJUUv8A++2qVr+Xvb3xWXETMU= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13/go.mod h1:tvqlFoja8/s0o+UruA1Nrezo/df0PzdunMDDurUfg6U= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.12 h1:fqg6c1KVrc3SYWma/egWue5rKI4G2+M4wMQN2JosNAA= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.12/go.mod h1:7Yn+p66q/jt38qMoVfNvjbm3D89mGBnkwDcijgtih8w= github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= From f1382c1727306ff18ff99a16fec683ffacbd8063 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 23:21:11 -0500 Subject: [PATCH 23/87] deps: bump github.com/aws/aws-sdk-go-v2/config from 1.29.3 to 1.29.4 (#1299) Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.3 to 1.29.4.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/config&package-manager=go_modules&previous-version=1.29.3&new-version=1.29.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e7ba32368e..be81ec5d4b 100644 --- a/go.mod +++ b/go.mod @@ -290,7 +290,7 @@ require ( github.com/Microsoft/hcsshim v0.12.0-rc.3 github.com/Sytten/logrus-zap-hook v0.1.0 github.com/aws/aws-sdk-go-v2 v1.36.0 - github.com/aws/aws-sdk-go-v2/config v1.29.3 + github.com/aws/aws-sdk-go-v2/config v1.29.4 github.com/aws/aws-sdk-go-v2/credentials v1.17.57 github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 diff --git a/go.sum b/go.sum index cba3c6c8f9..2dcfc937ed 100644 --- a/go.sum +++ b/go.sum @@ -133,8 +133,8 @@ github.com/aws/aws-sdk-go-v2 v1.36.0 h1:b1wM5CcE65Ujwn565qcwgtOTT1aT4ADOHHgglKjG github.com/aws/aws-sdk-go-v2 v1.36.0/go.mod h1:5PMILGVKiW32oDzjj6RU52yrNrDPUHcbZQYr1sM7qmM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCdoiQp2uZ9k1LsZvmAnoTBeZPXom0= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= -github.com/aws/aws-sdk-go-v2/config v1.29.3 h1:a5Ucjxe6iV+LHEBmYA9w40rT5aGxWybx/4l/O/fvJlE= -github.com/aws/aws-sdk-go-v2/config v1.29.3/go.mod h1:pt9z1x12zDiDb4iFLrxoeAKLVCU/Gp9DL/5BnwlY77o= +github.com/aws/aws-sdk-go-v2/config v1.29.4 h1:ObNqKsDYFGr2WxnoXKOhCvTlf3HhwtoGgc+KmZ4H5yg= +github.com/aws/aws-sdk-go-v2/config v1.29.4/go.mod h1:j2/AF7j/qxVmsNIChw1tWfsVKOayJoGRDjg1Tgq7NPk= github.com/aws/aws-sdk-go-v2/credentials v1.17.57 h1:kFQDsbdBAR3GZsB8xA+51ptEnq9TIj3tS4MuP5b+TcQ= github.com/aws/aws-sdk-go-v2/credentials v1.17.57/go.mod h1:2kerxPUUbTagAr/kkaHiqvj/bcYHzi2qiJS/ZinllU0= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27 h1:7lOW8NUwE9UZekS1DYoiPdVAqZ6A+LheHWb+mHbNOq8= From 04fe95ae90cebd081d45dd4839504a98e84f5062 Mon Sep 17 00:00:00 2001 From: Alex Castilio Date: Tue, 4 Feb 2025 10:12:46 +0000 Subject: [PATCH 24/87] chore: add APP_INSIGHTS_ID to image build (#1266) # Description * Add APP_INSIGHTS_ID to image build to allow monitoring through heartbeat during test execution. * Add test to configuration packages (for both operator and daemonset) * Make heartbeat interval configurable * New keys in `deploy/standard/manifests/controller/helm/retina/values.yaml` ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Manual test was also done to validate that the configuration was propagated from helm chart `values.yaml` file to both operator and agent. Value set was printed to log: ![image](https://github.com/user-attachments/assets/e2e80968-8874-4b31-a2d5-61eb2d3c39a7) ![image](https://github.com/user-attachments/assets/662b175a-072f-4806-a91b-864bd758b12d) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --------- Signed-off-by: Alex Castilio dos Santos --- .github/workflows/images.yaml | 3 ++ cmd/standard/daemon.go | 6 +-- .../helm/retina/templates/configmap.yaml | 2 + .../helm/retina/templates/operator.yaml | 1 + .../controller/helm/retina/values.yaml | 2 + operator/cmd/standard/deployment.go | 5 +-- operator/config/config.go | 22 +++++++++- operator/config/config_test.go | 43 +++++++++++++++++++ .../config-small-telemetry-interval.yaml | 9 ++++ .../config-without-telemetry-interval.yaml | 8 ++++ operator/config/testwith/config.yaml | 9 ++++ pkg/config/config.go | 16 +++++++ pkg/config/config_test.go | 21 ++++++++- .../config-small-telemetry-interval.yaml | 12 ++++++ .../config-without-telemetry-interval.yaml | 11 +++++ pkg/config/testwith/config.yaml | 1 + 16 files changed, 160 insertions(+), 11 deletions(-) create mode 100644 operator/config/config_test.go create mode 100644 operator/config/testwith/config-small-telemetry-interval.yaml create mode 100644 operator/config/testwith/config-without-telemetry-interval.yaml create mode 100644 operator/config/testwith/config.yaml create mode 100644 pkg/config/testwith/config-small-telemetry-interval.yaml create mode 100644 pkg/config/testwith/config-without-telemetry-interval.yaml diff --git a/.github/workflows/images.yaml b/.github/workflows/images.yaml index fa60c49d45..3ac8488b58 100644 --- a/.github/workflows/images.yaml +++ b/.github/workflows/images.yaml @@ -52,6 +52,7 @@ jobs: IMAGE_NAMESPACE=${{ github.repository }} \ PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ IMAGE_REGISTRY=${{ vars.ACR_NAME }} \ + APP_INSIGHTS_ID=${{ secrets.AZURE_APP_INSIGHTS_ID }} \ BUILDX_ACTION=--push else make retina-image \ @@ -102,6 +103,7 @@ jobs: IMAGE_NAMESPACE=${{ github.repository }} \ PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ IMAGE_REGISTRY=${{ vars.ACR_NAME }} \ + APP_INSIGHTS_ID=${{ secrets.AZURE_APP_INSIGHTS_ID }} \ WINDOWS_YEARS=${{ matrix.year }} \ BUILDX_ACTION=--push else @@ -153,6 +155,7 @@ jobs: IMAGE_NAMESPACE=${{ github.repository }} \ PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ IMAGE_REGISTRY=${{ vars.ACR_NAME }} \ + APP_INSIGHTS_ID=${{ secrets.AZURE_APP_INSIGHTS_ID }} \ BUILDX_ACTION=--push else make retina-operator-image \ diff --git a/cmd/standard/daemon.go b/cmd/standard/daemon.go index 00655444bc..121bf70645 100644 --- a/cmd/standard/daemon.go +++ b/cmd/standard/daemon.go @@ -6,7 +6,6 @@ import ( "fmt" "os" "strings" - "time" "go.uber.org/zap" corev1 "k8s.io/api/core/v1" @@ -48,8 +47,7 @@ import ( ) const ( - logFileName = "retina.log" - heartbeatInterval = 15 * time.Minute + logFileName = "retina.log" nodeNameEnvKey = "NODE_NAME" nodeIPEnvKey = "NODE_IP" @@ -309,7 +307,7 @@ func (d *Daemon) Start() error { defer controllerMgr.Stop(ctx) // start heartbeat goroutine for application insights - go tel.Heartbeat(ctx, heartbeatInterval) + go tel.Heartbeat(ctx, daemonConfig.TelemetryInterval) // Start controller manager, which will start http server and plugin manager. go controllerMgr.Start(ctx) diff --git a/deploy/standard/manifests/controller/helm/retina/templates/configmap.yaml b/deploy/standard/manifests/controller/helm/retina/templates/configmap.yaml index a53b8537a6..65075bc424 100644 --- a/deploy/standard/manifests/controller/helm/retina/templates/configmap.yaml +++ b/deploy/standard/manifests/controller/helm/retina/templates/configmap.yaml @@ -24,6 +24,7 @@ data: enableAnnotations: {{ .Values.enableAnnotations }} bypassLookupIPOfInterest: {{ .Values.bypassLookupIPOfInterest }} dataAggregationLevel: {{ .Values.dataAggregationLevel }} + telemetryInterval: {{ .Values.daemonset.telemetryInterval }} {{- end}} --- {{- if .Values.os.windows}} @@ -48,6 +49,7 @@ data: enableTelemetry: {{ .Values.enableTelemetry }} enablePodLevel: {{ .Values.enablePodLevel }} remoteContext: {{ .Values.remoteContext }} + telemetryInterval: {{ .Values.daemonset.telemetryInterval }} {{- end}} diff --git a/deploy/standard/manifests/controller/helm/retina/templates/operator.yaml b/deploy/standard/manifests/controller/helm/retina/templates/operator.yaml index 60cce2e458..61712b09a8 100644 --- a/deploy/standard/manifests/controller/helm/retina/templates/operator.yaml +++ b/deploy/standard/manifests/controller/helm/retina/templates/operator.yaml @@ -307,6 +307,7 @@ data: captureDebug: {{ .Values.capture.debug }} captureJobNumLimit: {{ .Values.capture.jobNumLimit }} enableManagedStorageAccount: {{ .Values.capture.enableManagedStorageAccount }} + telemetryInterval: {{ .Values.operator.telemetryInterval }} {{- if .Values.capture.enableManagedStorageAccount }} azureCredentialConfig: /etc/cloud-config/azure.json {{- end }} diff --git a/deploy/standard/manifests/controller/helm/retina/values.yaml b/deploy/standard/manifests/controller/helm/retina/values.yaml index 7dee8c519e..1f0298a6f7 100644 --- a/deploy/standard/manifests/controller/helm/retina/values.yaml +++ b/deploy/standard/manifests/controller/helm/retina/values.yaml @@ -27,6 +27,7 @@ operator: args: - "--config" - "/retina/operator-config.yaml" + telemetryInterval: "5m" image: repository: ghcr.io/microsoft/retina/retina-agent @@ -87,6 +88,7 @@ daemonset: metricsBindAddress: ":18080" ports: containerPort: 10093 + telemetryInterval: "15m" # volume mounts with name and mountPath volumeMounts: diff --git a/operator/cmd/standard/deployment.go b/operator/cmd/standard/deployment.go index 1371643d4e..f297aa622f 100644 --- a/operator/cmd/standard/deployment.go +++ b/operator/cmd/standard/deployment.go @@ -9,7 +9,6 @@ import ( "net/http" "net/http/pprof" "os" - "time" "go.uber.org/zap/zapcore" @@ -55,8 +54,6 @@ var ( MaxFileSizeMB = 100 MaxBackups = 3 MaxAgeDays = 30 - - HeartbeatFrequency = 5 * time.Minute ) func init() { @@ -255,7 +252,7 @@ func (o *Operator) Start() { } // start heartbeat goroutine for application insights - go tel.Heartbeat(ctx, HeartbeatFrequency) + go tel.Heartbeat(ctx, oconfig.TelemetryInterval) } func EnablePProf() { diff --git a/operator/config/config.go b/operator/config/config.go index ade4c9ab2f..1c460ac878 100644 --- a/operator/config/config.go +++ b/operator/config/config.go @@ -2,11 +2,20 @@ package config import ( "fmt" + "log" + "time" "github.com/microsoft/retina/pkg/config" "github.com/spf13/viper" ) +const MinTelemetryInterval time.Duration = 2 * time.Minute + +var ( + DefaultTelemetryInterval = 5 * time.Minute + ErrorTelemetryIntervalTooSmall = fmt.Errorf("telemetryInterval smaller than %v is not allowed", MinTelemetryInterval) +) + type OperatorConfig struct { config.CaptureConfig `mapstructure:",squash"` @@ -14,8 +23,9 @@ type OperatorConfig struct { EnableTelemetry bool `yaml:"enableTelemetry"` LogLevel string `yaml:"logLevel"` // EnableRetinaEndpoint indicates whether to enable RetinaEndpoint - EnableRetinaEndpoint bool `yaml:"enableRetinaEndpoint"` - RemoteContext bool `yaml:"remoteContext"` + EnableRetinaEndpoint bool `yaml:"enableRetinaEndpoint"` + RemoteContext bool `yaml:"remoteContext"` + TelemetryInterval time.Duration `yaml:"telemetryInterval"` } func GetConfig(cfgFileName string) (*OperatorConfig, error) { @@ -35,5 +45,13 @@ func GetConfig(cfgFileName string) (*OperatorConfig, error) { return nil, fmt.Errorf("error unmarshalling config: %w", err) } + // If unset, default telemetry interval to 5 minutes. + if cfg.TelemetryInterval == 0 { + log.Printf("telemetryInterval is not set, defaulting to %v", DefaultTelemetryInterval) + cfg.TelemetryInterval = DefaultTelemetryInterval + } else if cfg.TelemetryInterval < MinTelemetryInterval { + return nil, ErrorTelemetryIntervalTooSmall + } + return &cfg, nil } diff --git a/operator/config/config_test.go b/operator/config/config_test.go new file mode 100644 index 0000000000..62a8e91520 --- /dev/null +++ b/operator/config/config_test.go @@ -0,0 +1,43 @@ +package config_test + +import ( + "errors" + "testing" + "time" + + "github.com/microsoft/retina/operator/config" +) + +func TestGetConfig(t *testing.T) { + c, err := config.GetConfig("./testwith/config.yaml") + if err != nil { + t.Errorf("Expected no error, instead got %+v", err) + } + + if !c.InstallCRDs || + !c.EnableTelemetry || + c.LogLevel != "info" || + !c.EnableRetinaEndpoint || + !c.RemoteContext || + c.TelemetryInterval != 15*time.Minute { + t.Errorf("Expeted config should be same as ./testwith/config.yaml; instead got %+v", c) + } +} + +func TestGetConfig_DefaultTelemetryInterval(t *testing.T) { + c, err := config.GetConfig("./testwith/config-without-telemetry-interval.yaml") + if err != nil { + t.Errorf("Expected no error, instead got %+v", err) + } + + if c.TelemetryInterval != config.DefaultTelemetryInterval { + t.Errorf("Expected telemetry interval to be %v, instead got %v", config.DefaultTelemetryInterval, c.TelemetryInterval) + } +} + +func TestGetConfig_SmallTelemetryInterval(t *testing.T) { + _, err := config.GetConfig("./testwith/config-small-telemetry-interval.yaml") + if !errors.Is(err, config.ErrorTelemetryIntervalTooSmall) { + t.Errorf("Expected error %s, instead got %s", config.ErrorTelemetryIntervalTooSmall, err) + } +} diff --git a/operator/config/testwith/config-small-telemetry-interval.yaml b/operator/config/testwith/config-small-telemetry-interval.yaml new file mode 100644 index 0000000000..8a020886e4 --- /dev/null +++ b/operator/config/testwith/config-small-telemetry-interval.yaml @@ -0,0 +1,9 @@ +apiServer: + host: "0.0.0.0" + port: 10093 +installCRDs: true +enableTelemetry: true +logLevel: info +enableRetinaEndpoint: true +remoteContext: true +telemetryInterval: "10s" diff --git a/operator/config/testwith/config-without-telemetry-interval.yaml b/operator/config/testwith/config-without-telemetry-interval.yaml new file mode 100644 index 0000000000..d3b45837c0 --- /dev/null +++ b/operator/config/testwith/config-without-telemetry-interval.yaml @@ -0,0 +1,8 @@ +apiServer: + host: "0.0.0.0" + port: 10093 +installCRDs: true +enableTelemetry: true +logLevel: info +enableRetinaEndpoint: true +remoteContext: true diff --git a/operator/config/testwith/config.yaml b/operator/config/testwith/config.yaml new file mode 100644 index 0000000000..d3ac432670 --- /dev/null +++ b/operator/config/testwith/config.yaml @@ -0,0 +1,9 @@ +apiServer: + host: "0.0.0.0" + port: 10093 +installCRDs: true +enableTelemetry: true +logLevel: info +enableRetinaEndpoint: true +remoteContext: true +telemetryInterval: "15m" diff --git a/pkg/config/config.go b/pkg/config/config.go index 5a5098456e..4b41310c2d 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -16,11 +16,18 @@ import ( // Level defines the level of monitor aggregation. type Level int +const MinTelemetryInterval time.Duration = 2 * time.Minute + const ( Low Level = iota High ) +var ( + ErrorTelemetryIntervalTooSmall = fmt.Errorf("telemetryInterval smaller than %v is not allowed", MinTelemetryInterval) + DefaultTelemetryInterval = 15 * time.Minute +) + func (l *Level) UnmarshalText(text []byte) error { s := strings.ToLower(string(text)) switch s { @@ -67,6 +74,7 @@ type Config struct { BypassLookupIPOfInterest bool `yaml:"bypassLookupIPOfInterest"` DataAggregationLevel Level `yaml:"dataAggregationLevel"` MonitorSockPath string `yaml:"monitorSockPath"` + TelemetryInterval time.Duration `yaml:"telemetryInterval"` } func GetConfig(cfgFilename string) (*Config, error) { @@ -107,6 +115,14 @@ func GetConfig(cfgFilename string) (*Config, error) { log.Print("metricsInterval is deprecated, please use metricsIntervalDuration instead") } + // If unset, default telemetry interval to 15 minutes. + if config.TelemetryInterval == 0 { + log.Printf("telemetryInterval is not set, defaulting to %v", DefaultTelemetryInterval) + config.TelemetryInterval = DefaultTelemetryInterval + } else if config.TelemetryInterval < MinTelemetryInterval { + return nil, ErrorTelemetryIntervalTooSmall + } + return &config, nil } diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 203be5912b..2d6ca3b92f 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -4,6 +4,7 @@ package config import ( + "errors" "reflect" "testing" "time" @@ -26,8 +27,26 @@ func TestGetConfig(t *testing.T) { !c.EnableRetinaEndpoint || c.RemoteContext || c.EnableAnnotations || + c.TelemetryInterval != 15*time.Minute || c.DataAggregationLevel != Low { - t.Fatalf("Expeted config should be same as ./testwith/config.yaml; instead got %+v", c) + t.Errorf("Expeted config should be same as ./testwith/config.yaml; instead got %+v", c) + } +} + +func TestGetConfig_SmallTelemetryInterval(t *testing.T) { + _, err := GetConfig("./testwith/config-small-telemetry-interval.yaml") + if !errors.Is(err, ErrorTelemetryIntervalTooSmall) { + t.Errorf("Expected error %s, instead got %s", ErrorTelemetryIntervalTooSmall, err) + } +} + +func TestGetConfig_DefaultTelemetryInterval(t *testing.T) { + c, err := GetConfig("./testwith/config-without-telemetry-interval.yaml") + if err != nil { + t.Errorf("Expected no error, instead got %+v", err) + } + if c.TelemetryInterval != DefaultTelemetryInterval { + t.Errorf("Expected telemetry interval to be %v, instead got %v", DefaultTelemetryInterval, c.TelemetryInterval) } } diff --git a/pkg/config/testwith/config-small-telemetry-interval.yaml b/pkg/config/testwith/config-small-telemetry-interval.yaml new file mode 100644 index 0000000000..a4f16d2e1f --- /dev/null +++ b/pkg/config/testwith/config-small-telemetry-interval.yaml @@ -0,0 +1,12 @@ +apiServer: + host: "0.0.0.0" + port: 10093 +# Supported - debug, info, error, warn, panic, fatal. +logLevel: info +enabledPlugin: ["dropreason", "packetforward", "linuxutil"] +# Interval, in seconds, to scrape/publish metrics. +metricsIntervalDuration: "10s" +# used to export telemetry to AppInsights +telemetryEnabled: true +dataAggregationLevel: "low" +telemetryInterval: "10s" diff --git a/pkg/config/testwith/config-without-telemetry-interval.yaml b/pkg/config/testwith/config-without-telemetry-interval.yaml new file mode 100644 index 0000000000..08b1d0f0f9 --- /dev/null +++ b/pkg/config/testwith/config-without-telemetry-interval.yaml @@ -0,0 +1,11 @@ +apiServer: + host: "0.0.0.0" + port: 10093 +# Supported - debug, info, error, warn, panic, fatal. +logLevel: info +enabledPlugin: ["dropreason", "packetforward", "linuxutil"] +# Interval, in seconds, to scrape/publish metrics. +metricsIntervalDuration: "10s" +# used to export telemetry to AppInsights +telemetryEnabled: true +dataAggregationLevel: "low" diff --git a/pkg/config/testwith/config.yaml b/pkg/config/testwith/config.yaml index 08b1d0f0f9..edcb5d685a 100644 --- a/pkg/config/testwith/config.yaml +++ b/pkg/config/testwith/config.yaml @@ -9,3 +9,4 @@ metricsIntervalDuration: "10s" # used to export telemetry to AppInsights telemetryEnabled: true dataAggregationLevel: "low" +telemetryInterval: "15m" From a1beefdd3a0c40e635473aa2ec4f8dfed03eb5d4 Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:10:09 +0000 Subject: [PATCH 25/87] test(mc): Add integration test for Retina-GKE, refactor test dir (#1301) # Description * add integration test for Retina on GKE * add package utils and refactor test directory ## Related Issue #1267 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed ![image](https://github.com/user-attachments/assets/d80045e7-8342-47f0-89a4-950f4d3b9a4d) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- test/multicloud/Makefile | 2 +- test/multicloud/README.md | 15 ++++ .../retina-gke/.terraform.lock.hcl | 38 +++++++++ .../examples/integration/retina-gke/main.tf | 14 ++++ .../integration/retina-gke/outputs.tf | 14 ++++ .../integration/retina-gke/providers.tf | 30 +++++++ .../integration/retina-gke/variables.tf | 36 +++++++++ test/multicloud/modules/gke/main.tf | 1 + test/multicloud/test/example_kind_test.go | 41 ---------- .../prometheus_kind_test.go} | 23 +++--- .../test/integration/retina_gke_test.go | 81 +++++++++++++++++++ .../retina_kind_test.go} | 25 +++--- .../{example_aks_test.go => unit/aks_test.go} | 23 +++--- .../{example_gke_test.go => unit/gke_test.go} | 17 ++-- test/multicloud/test/unit/kind_test.go | 42 ++++++++++ test/multicloud/test/{ => utils}/types.go | 7 +- test/multicloud/test/{ => utils}/utils.go | 18 ++--- .../multicloud/test/{ => utils}/utils_test.go | 20 ++--- 18 files changed, 342 insertions(+), 105 deletions(-) create mode 100644 test/multicloud/examples/integration/retina-gke/.terraform.lock.hcl create mode 100644 test/multicloud/examples/integration/retina-gke/main.tf create mode 100644 test/multicloud/examples/integration/retina-gke/outputs.tf create mode 100644 test/multicloud/examples/integration/retina-gke/providers.tf create mode 100644 test/multicloud/examples/integration/retina-gke/variables.tf delete mode 100644 test/multicloud/test/example_kind_test.go rename test/multicloud/test/{integration_prometheus_kind_test.go => integration/prometheus_kind_test.go} (57%) create mode 100644 test/multicloud/test/integration/retina_gke_test.go rename test/multicloud/test/{integration_retina_kind_test.go => integration/retina_kind_test.go} (53%) rename test/multicloud/test/{example_aks_test.go => unit/aks_test.go} (52%) rename test/multicloud/test/{example_gke_test.go => unit/gke_test.go} (60%) create mode 100644 test/multicloud/test/unit/kind_test.go rename test/multicloud/test/{ => utils}/types.go (52%) rename test/multicloud/test/{ => utils}/utils.go (89%) rename test/multicloud/test/{ => utils}/utils_test.go (93%) diff --git a/test/multicloud/Makefile b/test/multicloud/Makefile index 9f5db6ad5c..64a5e25a10 100644 --- a/test/multicloud/Makefile +++ b/test/multicloud/Makefile @@ -45,7 +45,7 @@ kind-kubeconfig: # Once we do this targets will be updated to # @cd test && go test -v -count=1 -timeout 30m ./... test: - @cd test && go test -run TestRetinaKindIntegration -count=1 -timeout 10m + @cd test/integration && go test -run TestRetinaKindIntegration -count=1 -timeout 20m fmt: @tofu fmt -recursive diff --git a/test/multicloud/README.md b/test/multicloud/README.md index f82939a532..dc7bd0c230 100644 --- a/test/multicloud/README.md +++ b/test/multicloud/README.md @@ -96,3 +96,18 @@ make test * [GKE resource documentation](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster) * [AKS resource documentation](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster) * [Kind resource documentation](https://registry.terraform.io/providers/tehcyx/kind/latest/docs/resources/cluster) + +## Troubleshooting + +In case the test fails due to timeout, validate the resource was created by the provider, and if it is, you can import into OpenTofu state. + +Here is an example on how to import resources for `modules/gke` + +```sh +# move to the stack directory +# i.e. examples/gke +tofu import module.gke.google_container_cluster.gke europe-west2/test-gke-cluster +tofu import module.gke.google_service_account.default projects/mc-retina/serviceAccounts/test-gke-service-account@mc-retina.iam.gserviceaccount.com +``` + +>Note: each resource documentation contains a section on how to import resources into the State. [Example for google_container_cluster resource](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster#import) diff --git a/test/multicloud/examples/integration/retina-gke/.terraform.lock.hcl b/test/multicloud/examples/integration/retina-gke/.terraform.lock.hcl new file mode 100644 index 0000000000..b74b1a1ec9 --- /dev/null +++ b/test/multicloud/examples/integration/retina-gke/.terraform.lock.hcl @@ -0,0 +1,38 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/google" { + version = "6.17.0" + constraints = "6.17.0" + hashes = [ + "h1:aZkLSXbqbNThCCLAX1x0g8KTJANQAIosYq3xpy8JhFQ=", + "zh:0614cc52deb5914795253aecf19b4cbb5aa7e8a186839a33907ce5c35e23d537", + "zh:0b28ea31ec3b119aafc4c37a5992c29266c876db288dfc5bbfbde36631a533f1", + "zh:1b2c5df40ac55ec7c3db2b7c556ace7545fca4ccfacf605b7588a4e2be564ba8", + "zh:1db9a278cfddcaa7d9119acf231164438df07932bdabce95931a68bd3689cd39", + "zh:3729b7a9936f5ad545f7d06d11d05ce78b4bbe9941e77bf004a2b798e6a0866c", + "zh:3b7e35183a8d7980207ae7d082c490d7c2270f907e5de9e8393c6c4c32b07b3c", + "zh:581e14963dfef608285af0c08ccb5da4bdb8ae049366418d4863a4fd9fa55b74", + "zh:89d29f2d1269a30c6149bbaaae3cbe8fe0c6ed13874b77bf784ea6bbd73aee58", + "zh:c7c690c1f9fe0cbc69d4eb21727f2cf4b7ba016385184d27527d570832c393be", + "zh:dc1536fc325a0561bf0f606a38bed29e8dd2f4bec6d6e8a5301696d89c1c8079", + ] +} + +provider "registry.opentofu.org/hashicorp/helm" { + version = "2.17.0" + constraints = "2.17.0" + hashes = [ + "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", + "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", + "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", + "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", + "zh:3976400ceba6dda4636e1d297e3097e1831de5628afa534a166de98a70d1dcbe", + "zh:54440ef14f342b41d75c1aded7487bfcc3f76322b75894235b47b7e89ac4bfa4", + "zh:6512e2ab9f2fa31cbb90d9249647b5c5798f62eb1215ec44da2cdaa24e38ad25", + "zh:795f327ca0b8c5368af0ed03d5d4f6da7260692b4b3ca0bd004ed542e683464d", + "zh:ba659e1d94f224bc3f1fd34cbb9d2663e3a8e734108e5a58eb49eda84b140978", + "zh:c5c8575c4458835c2acbc3d1ed5570589b14baa2525d8fbd04295c097caf41eb", + "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", + ] +} diff --git a/test/multicloud/examples/integration/retina-gke/main.tf b/test/multicloud/examples/integration/retina-gke/main.tf new file mode 100644 index 0000000000..5229b21294 --- /dev/null +++ b/test/multicloud/examples/integration/retina-gke/main.tf @@ -0,0 +1,14 @@ +module "gke" { + source = "../../../modules/gke" + location = var.location + prefix = var.prefix + project = var.project + machine_type = var.machine_type +} + +module "retina" { + depends_on = [module.gke] + source = "../../../modules/retina" + retina_version = var.retina_version + values = var.values +} diff --git a/test/multicloud/examples/integration/retina-gke/outputs.tf b/test/multicloud/examples/integration/retina-gke/outputs.tf new file mode 100644 index 0000000000..7586d8324e --- /dev/null +++ b/test/multicloud/examples/integration/retina-gke/outputs.tf @@ -0,0 +1,14 @@ +output "host" { + value = module.gke.host + sensitive = true +} + +output "cluster_ca_certificate" { + value = module.gke.cluster_ca_certificate + sensitive = true +} + +output "access_token" { + value = data.google_client_config.current.access_token + sensitive = true +} diff --git a/test/multicloud/examples/integration/retina-gke/providers.tf b/test/multicloud/examples/integration/retina-gke/providers.tf new file mode 100644 index 0000000000..ac23c59c0e --- /dev/null +++ b/test/multicloud/examples/integration/retina-gke/providers.tf @@ -0,0 +1,30 @@ +terraform { + required_version = "1.8.3" + required_providers { + google = { + source = "hashicorp/google" + version = "6.17.0" + } + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + } +} + +# Initialize the Google provider +provider "google" { + project = var.project + region = var.location +} + +data "google_client_config" "current" {} + +# Initialize the Helm provider +provider "helm" { + kubernetes { + token = data.google_client_config.current.access_token + host = module.gke.host + cluster_ca_certificate = base64decode(module.gke.cluster_ca_certificate) + } +} \ No newline at end of file diff --git a/test/multicloud/examples/integration/retina-gke/variables.tf b/test/multicloud/examples/integration/retina-gke/variables.tf new file mode 100644 index 0000000000..b588e97454 --- /dev/null +++ b/test/multicloud/examples/integration/retina-gke/variables.tf @@ -0,0 +1,36 @@ +variable "project" { + description = "The Google Cloud project where resources will be deployed." + type = string + default = "mc-retina" +} + +variable "location" { + description = "The Google Cloud location where GKE will be deployed to." + type = string + default = "eu-west2" +} + +variable "prefix" { + description = "A prefix to add to all resources." + type = string + default = "mc" +} + +variable "machine_type" { + description = "The machine type to use for the GKE nodes." + type = string + default = "e2-standard-4" +} + +variable "retina_version" { + description = "The tag to apply to all resources." + type = string +} + +variable "values" { + description = "Configuration for set blocks, this corresponds to Helm values.yaml" + type = list(object({ + name = string + value = string + })) +} diff --git a/test/multicloud/modules/gke/main.tf b/test/multicloud/modules/gke/main.tf index c4615b7858..8de256d40e 100644 --- a/test/multicloud/modules/gke/main.tf +++ b/test/multicloud/modules/gke/main.tf @@ -3,6 +3,7 @@ resource "google_service_account" "default" { display_name = "GKE Service Account for ${var.project}" } +// https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview resource "google_container_cluster" "gke" { name = "${var.prefix}-gke-cluster" location = var.location diff --git a/test/multicloud/test/example_kind_test.go b/test/multicloud/test/example_kind_test.go deleted file mode 100644 index 9382ae4263..0000000000 --- a/test/multicloud/test/example_kind_test.go +++ /dev/null @@ -1,41 +0,0 @@ -package test - -import ( - "testing" - - "github.com/gruntwork-io/terratest/modules/terraform" -) - -func TestKindExample(t *testing.T) { - t.Parallel() - - opts := &terraform.Options{ - TerraformDir: examplesPath + "kind", - - Vars: map[string]interface{}{ - "prefix": "test", - }, - } - - // clean up at the end of the test - defer terraform.Destroy(t, opts) - terraform.InitAndApply(t, opts) - - // get outputs - caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") - clientCert := fetchSensitiveOutput(t, opts, "client_certificate") - clientKey := fetchSensitiveOutput(t, opts, "client_key") - host := fetchSensitiveOutput(t, opts, "host") - - // build the REST config - restConfig := createRESTConfigWithClientCert(caCert, clientCert, clientKey, host) - - // create a Kubernetes clientset - clientSet, err := buildClientSet(restConfig) - if err != nil { - t.Fatalf("Failed to create Kubernetes clientset: %v", err) - } - - // test the cluster is accessible - testClusterAccess(t, clientSet) -} diff --git a/test/multicloud/test/integration_prometheus_kind_test.go b/test/multicloud/test/integration/prometheus_kind_test.go similarity index 57% rename from test/multicloud/test/integration_prometheus_kind_test.go rename to test/multicloud/test/integration/prometheus_kind_test.go index 7c7f1f2f50..12071bfb5c 100644 --- a/test/multicloud/test/integration_prometheus_kind_test.go +++ b/test/multicloud/test/integration/prometheus_kind_test.go @@ -5,13 +5,14 @@ import ( "time" "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/microsoft/retina/test/multicloud/test/utils" ) func TestPrometheusKindIntegration(t *testing.T) { t.Parallel() opts := &terraform.Options{ - TerraformDir: examplesPath + "integration/prometheus-kind", + TerraformDir: utils.ExamplesPath + "integration/prometheus-kind", Vars: map[string]interface{}{ "prefix": "test-integration", @@ -23,24 +24,24 @@ func TestPrometheusKindIntegration(t *testing.T) { terraform.InitAndApply(t, opts) // get outputs - caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") - clientCert := fetchSensitiveOutput(t, opts, "client_certificate") - clientKey := fetchSensitiveOutput(t, opts, "client_key") - host := fetchSensitiveOutput(t, opts, "host") + caCert := utils.FetchSensitiveOutput(t, opts, "cluster_ca_certificate") + clientCert := utils.FetchSensitiveOutput(t, opts, "client_certificate") + clientKey := utils.FetchSensitiveOutput(t, opts, "client_key") + host := utils.FetchSensitiveOutput(t, opts, "host") // build the REST config - restConfig := createRESTConfigWithClientCert(caCert, clientCert, clientKey, host) + restConfig := utils.CreateRESTConfigWithClientCert(caCert, clientCert, clientKey, host) // create a Kubernetes clientset - clientSet, err := buildClientSet(restConfig) + clientSet, err := utils.BuildClientSet(restConfig) if err != nil { t.Fatalf("Failed to create Kubernetes clientset: %v", err) } // test the cluster is accessible - testClusterAccess(t, clientSet) + utils.TestClusterAccess(t, clientSet) - podSelector := PodSelector{ + podSelector := utils.PodSelector{ Namespace: "default", LabelSelector: "app.kubernetes.io/instance=prometheus-kube-prometheus-prometheus", ContainerName: "prometheus", @@ -48,13 +49,13 @@ func TestPrometheusKindIntegration(t *testing.T) { timeOut := time.Duration(60) * time.Second // check the prometheus pods are running - result, err := arePodsRunning(clientSet, podSelector, timeOut) + result, err := utils.ArePodsRunning(clientSet, podSelector, timeOut) if !result { t.Fatalf("Prometheus pods did not start in time: %v\n", err) } // check the retina pods logs for errors - checkPodLogs(t, clientSet, podSelector) + utils.CheckPodLogs(t, clientSet, podSelector) // TODO: add more tests here } diff --git a/test/multicloud/test/integration/retina_gke_test.go b/test/multicloud/test/integration/retina_gke_test.go new file mode 100644 index 0000000000..75b1af90a2 --- /dev/null +++ b/test/multicloud/test/integration/retina_gke_test.go @@ -0,0 +1,81 @@ +package test + +import ( + "testing" + "time" + + "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/microsoft/retina/test/multicloud/test/utils" +) + +func TestRetinaGKEIntegration(t *testing.T) { + t.Parallel() + + opts := &terraform.Options{ + TerraformDir: utils.ExamplesPath + "integration/retina-gke", + + Vars: map[string]interface{}{ + "prefix": "test", + "location": "europe-west2", // London + "project": "mc-retina", // TODO: replace with actual project once we get gcloud access + "machine_type": "e2-standard-4", + "retina_version": utils.RetinaVersion, + "values": []map[string]interface{}{ + { + "name": "logLevel", + "value": "info", + }, + { + "name": "operator.tag", + "value": utils.RetinaVersion, + }, + { + "name": "image.tag", + "value": utils.RetinaVersion, + }, + }, + }, + } + + // clean up at the end of the test + defer terraform.Destroy(t, opts) + terraform.InitAndApply(t, opts) + + // get outputs + caCert := utils.FetchSensitiveOutput(t, opts, "cluster_ca_certificate") + host := utils.FetchSensitiveOutput(t, opts, "host") + token := utils.FetchSensitiveOutput(t, opts, "access_token") + + // decode the base64 encoded cert + caCertString := utils.DecodeBase64(t, caCert) + + // build the REST config + restConfig := utils.CreateRESTConfigWithBearer(caCertString, token, host) + + // create a Kubernetes clientset + clientSet, err := utils.BuildClientSet(restConfig) + if err != nil { + t.Fatalf("Failed to create Kubernetes clientset: %v", err) + } + + // test the cluster is accessible + utils.TestClusterAccess(t, clientSet) + + retinaPodSelector := utils.PodSelector{ + Namespace: "kube-system", + LabelSelector: "k8s-app=retina", + ContainerName: "retina", + } + + timeOut := time.Duration(90) * time.Second + // check the retina pods are running + result, err := utils.ArePodsRunning(clientSet, retinaPodSelector, timeOut) + if !result { + t.Fatalf("Retina pods did not start in time: %v\n", err) + } + + // check the retina pods logs for errors + utils.CheckPodLogs(t, clientSet, retinaPodSelector) + + // TODO: add more tests here +} diff --git a/test/multicloud/test/integration_retina_kind_test.go b/test/multicloud/test/integration/retina_kind_test.go similarity index 53% rename from test/multicloud/test/integration_retina_kind_test.go rename to test/multicloud/test/integration/retina_kind_test.go index 1deae01805..28db20f721 100644 --- a/test/multicloud/test/integration_retina_kind_test.go +++ b/test/multicloud/test/integration/retina_kind_test.go @@ -5,17 +5,18 @@ import ( "time" "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/microsoft/retina/test/multicloud/test/utils" ) func TestRetinaKindIntegration(t *testing.T) { t.Parallel() opts := &terraform.Options{ - TerraformDir: examplesPath + "integration/retina-kind", + TerraformDir: utils.ExamplesPath + "integration/retina-kind", Vars: map[string]interface{}{ "prefix": "test-integration", - "retina_version": "v0.0.24", + "retina_version": utils.RetinaVersion, }, } @@ -24,24 +25,24 @@ func TestRetinaKindIntegration(t *testing.T) { terraform.InitAndApply(t, opts) // get outputs - caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") - clientCert := fetchSensitiveOutput(t, opts, "client_certificate") - clientKey := fetchSensitiveOutput(t, opts, "client_key") - host := fetchSensitiveOutput(t, opts, "host") + caCert := utils.FetchSensitiveOutput(t, opts, "cluster_ca_certificate") + clientCert := utils.FetchSensitiveOutput(t, opts, "client_certificate") + clientKey := utils.FetchSensitiveOutput(t, opts, "client_key") + host := utils.FetchSensitiveOutput(t, opts, "host") // build the REST config - restConfig := createRESTConfigWithClientCert(caCert, clientCert, clientKey, host) + restConfig := utils.CreateRESTConfigWithClientCert(caCert, clientCert, clientKey, host) // create a Kubernetes clientset - clientSet, err := buildClientSet(restConfig) + clientSet, err := utils.BuildClientSet(restConfig) if err != nil { t.Fatalf("Failed to create Kubernetes clientset: %v", err) } // test the cluster is accessible - testClusterAccess(t, clientSet) + utils.TestClusterAccess(t, clientSet) - retinaPodSelector := PodSelector{ + retinaPodSelector := utils.PodSelector{ Namespace: "kube-system", LabelSelector: "k8s-app=retina", ContainerName: "retina", @@ -49,13 +50,13 @@ func TestRetinaKindIntegration(t *testing.T) { timeOut := time.Duration(90) * time.Second // check the retina pods are running - result, err := arePodsRunning(clientSet, retinaPodSelector, timeOut) + result, err := utils.ArePodsRunning(clientSet, retinaPodSelector, timeOut) if !result { t.Fatalf("Retina pods did not start in time: %v\n", err) } // check the retina pods logs for errors - checkPodLogs(t, clientSet, retinaPodSelector) + utils.CheckPodLogs(t, clientSet, retinaPodSelector) // TODO: add more tests here } diff --git a/test/multicloud/test/example_aks_test.go b/test/multicloud/test/unit/aks_test.go similarity index 52% rename from test/multicloud/test/example_aks_test.go rename to test/multicloud/test/unit/aks_test.go index dbd4bd77a0..c379a094d0 100644 --- a/test/multicloud/test/example_aks_test.go +++ b/test/multicloud/test/unit/aks_test.go @@ -4,13 +4,14 @@ import ( "testing" "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/microsoft/retina/test/multicloud/test/utils" ) func TestAKSExample(t *testing.T) { t.Parallel() opts := &terraform.Options{ - TerraformDir: examplesPath + "aks", + TerraformDir: utils.ExamplesPath + "aks", Vars: map[string]interface{}{ "prefix": "test-mc", @@ -29,25 +30,25 @@ func TestAKSExample(t *testing.T) { terraform.InitAndApply(t, opts) // get outputs - caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") - clientCert := fetchSensitiveOutput(t, opts, "client_certificate") - clientKey := fetchSensitiveOutput(t, opts, "client_key") - host := fetchSensitiveOutput(t, opts, "host") + caCert := utils.FetchSensitiveOutput(t, opts, "cluster_ca_certificate") + clientCert := utils.FetchSensitiveOutput(t, opts, "client_certificate") + clientKey := utils.FetchSensitiveOutput(t, opts, "client_key") + host := utils.FetchSensitiveOutput(t, opts, "host") // decode the base64 encoded strings - caCertDecoded := decodeBase64(t, caCert) - clientCertDecoded := decodeBase64(t, clientCert) - clientKeyDecoded := decodeBase64(t, clientKey) + caCertDecoded := utils.DecodeBase64(t, caCert) + clientCertDecoded := utils.DecodeBase64(t, clientCert) + clientKeyDecoded := utils.DecodeBase64(t, clientKey) // build the REST config - restConfig := createRESTConfigWithClientCert(caCertDecoded, clientCertDecoded, clientKeyDecoded, host) + restConfig := utils.CreateRESTConfigWithClientCert(caCertDecoded, clientCertDecoded, clientKeyDecoded, host) // create a Kubernetes clientset - clientSet, err := buildClientSet(restConfig) + clientSet, err := utils.BuildClientSet(restConfig) if err != nil { t.Fatalf("Failed to create Kubernetes clientset: %v", err) } // test the cluster is accessible - testClusterAccess(t, clientSet) + utils.TestClusterAccess(t, clientSet) } diff --git a/test/multicloud/test/example_gke_test.go b/test/multicloud/test/unit/gke_test.go similarity index 60% rename from test/multicloud/test/example_gke_test.go rename to test/multicloud/test/unit/gke_test.go index b2443ea1cb..2629d61a94 100644 --- a/test/multicloud/test/example_gke_test.go +++ b/test/multicloud/test/unit/gke_test.go @@ -4,13 +4,14 @@ import ( "testing" "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/microsoft/retina/test/multicloud/test/utils" ) func TestGKEExample(t *testing.T) { t.Parallel() opts := &terraform.Options{ - TerraformDir: examplesPath + "gke", + TerraformDir: utils.ExamplesPath + "gke", Vars: map[string]interface{}{ "prefix": "test", @@ -25,22 +26,22 @@ func TestGKEExample(t *testing.T) { terraform.InitAndApply(t, opts) // get outputs - caCert := fetchSensitiveOutput(t, opts, "cluster_ca_certificate") - host := fetchSensitiveOutput(t, opts, "host") - token := fetchSensitiveOutput(t, opts, "access_token") + caCert := utils.FetchSensitiveOutput(t, opts, "cluster_ca_certificate") + host := utils.FetchSensitiveOutput(t, opts, "host") + token := utils.FetchSensitiveOutput(t, opts, "access_token") // decode the base64 encoded cert - caCertString := decodeBase64(t, caCert) + caCertString := utils.DecodeBase64(t, caCert) // build the REST config - restConfig := createRESTConfigWithBearer(caCertString, token, host) + restConfig := utils.CreateRESTConfigWithBearer(caCertString, token, host) // create a Kubernetes clientset - clientSet, err := buildClientSet(restConfig) + clientSet, err := utils.BuildClientSet(restConfig) if err != nil { t.Fatalf("Failed to create Kubernetes clientset: %v", err) } // test the cluster is accessible - testClusterAccess(t, clientSet) + utils.TestClusterAccess(t, clientSet) } diff --git a/test/multicloud/test/unit/kind_test.go b/test/multicloud/test/unit/kind_test.go new file mode 100644 index 0000000000..f08f5d17f0 --- /dev/null +++ b/test/multicloud/test/unit/kind_test.go @@ -0,0 +1,42 @@ +package test + +import ( + "testing" + + "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/microsoft/retina/test/multicloud/test/utils" +) + +func TestKindExample(t *testing.T) { + t.Parallel() + + opts := &terraform.Options{ + TerraformDir: utils.ExamplesPath + "kind", + + Vars: map[string]interface{}{ + "prefix": "test", + }, + } + + // clean up at the end of the test + defer terraform.Destroy(t, opts) + terraform.InitAndApply(t, opts) + + // get outputs + caCert := utils.FetchSensitiveOutput(t, opts, "cluster_ca_certificate") + clientCert := utils.FetchSensitiveOutput(t, opts, "client_certificate") + clientKey := utils.FetchSensitiveOutput(t, opts, "client_key") + host := utils.FetchSensitiveOutput(t, opts, "host") + + // build the REST config + restConfig := utils.CreateRESTConfigWithClientCert(caCert, clientCert, clientKey, host) + + // create a Kubernetes clientset + clientSet, err := utils.BuildClientSet(restConfig) + if err != nil { + t.Fatalf("Failed to create Kubernetes clientset: %v", err) + } + + // test the cluster is accessible + utils.TestClusterAccess(t, clientSet) +} diff --git a/test/multicloud/test/types.go b/test/multicloud/test/utils/types.go similarity index 52% rename from test/multicloud/test/types.go rename to test/multicloud/test/utils/types.go index 97ab948a47..dc07ee8608 100644 --- a/test/multicloud/test/types.go +++ b/test/multicloud/test/utils/types.go @@ -1,6 +1,9 @@ -package test +package utils -const examplesPath = "../examples/" +const ( + ExamplesPath = "../../examples/" + RetinaVersion = "v0.0.24" +) type PodSelector struct { Namespace string diff --git a/test/multicloud/test/utils.go b/test/multicloud/test/utils/utils.go similarity index 89% rename from test/multicloud/test/utils.go rename to test/multicloud/test/utils/utils.go index 70cddcc359..ab03fec485 100644 --- a/test/multicloud/test/utils.go +++ b/test/multicloud/test/utils/utils.go @@ -1,4 +1,4 @@ -package test +package utils import ( "bufio" @@ -19,7 +19,7 @@ import ( "k8s.io/client-go/rest" ) -func buildClientSet(config *rest.Config) (*kubernetes.Clientset, error) { +func BuildClientSet(config *rest.Config) (*kubernetes.Clientset, error) { // Create a Kubernetes client clientset, err := kubernetes.NewForConfig(config) if err != nil { @@ -29,7 +29,7 @@ func buildClientSet(config *rest.Config) (*kubernetes.Clientset, error) { } // Create a Bearer token REST config -func createRESTConfigWithBearer(caCert, bearerToken, host string) *rest.Config { +func CreateRESTConfigWithBearer(caCert, bearerToken, host string) *rest.Config { config := &rest.Config{ Host: host, BearerToken: bearerToken, @@ -41,7 +41,7 @@ func createRESTConfigWithBearer(caCert, bearerToken, host string) *rest.Config { } // Create REST config with client cert and key -func createRESTConfigWithClientCert(caCert, clientCert, clientKey, host string) *rest.Config { +func CreateRESTConfigWithClientCert(caCert, clientCert, clientKey, host string) *rest.Config { config := &rest.Config{ Host: host, TLSClientConfig: rest.TLSClientConfig{ @@ -53,7 +53,7 @@ func createRESTConfigWithClientCert(caCert, clientCert, clientKey, host string) return config } -func testClusterAccess(t *testing.T, clientset kubernetes.Interface) { +func TestClusterAccess(t *testing.T, clientset kubernetes.Interface) { // Test the cluster is accessible by listing nodes _, err := clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{}) if err != nil { @@ -85,7 +85,7 @@ func checkLogsForErrors(logs io.ReadCloser) error { return nil } -func checkPodLogs(t *testing.T, clientset kubernetes.Interface, podSelector PodSelector) { +func CheckPodLogs(t *testing.T, clientset kubernetes.Interface, podSelector PodSelector) { // Get the logs for the retina pods pods, err := clientset.CoreV1().Pods(podSelector.Namespace).List(context.TODO(), metav1.ListOptions{ LabelSelector: podSelector.LabelSelector, @@ -115,7 +115,7 @@ func checkPodLogs(t *testing.T, clientset kubernetes.Interface, podSelector PodS } // function to convert base64 encoded string to plain text -func decodeBase64(t *testing.T, encoded string) string { +func DecodeBase64(t *testing.T, encoded string) string { // decode the base64 encoded string decoded, err := base64.StdEncoding.DecodeString(encoded) if err != nil { @@ -126,7 +126,7 @@ func decodeBase64(t *testing.T, encoded string) string { } // fetch the sensitive output from OpenTofu -func fetchSensitiveOutput(t *testing.T, options *terraform.Options, name string) string { +func FetchSensitiveOutput(t *testing.T, options *terraform.Options, name string) string { defer func() { options.Logger = nil }() @@ -134,7 +134,7 @@ func fetchSensitiveOutput(t *testing.T, options *terraform.Options, name string) return terraform.Output(t, options, name) } -func arePodsRunning(clientset kubernetes.Interface, podSelector PodSelector, timeout time.Duration) (bool, error) { +func ArePodsRunning(clientset kubernetes.Interface, podSelector PodSelector, timeout time.Duration) (bool, error) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() diff --git a/test/multicloud/test/utils_test.go b/test/multicloud/test/utils/utils_test.go similarity index 93% rename from test/multicloud/test/utils_test.go rename to test/multicloud/test/utils/utils_test.go index d4f7a6600e..1a5df25e8a 100644 --- a/test/multicloud/test/utils_test.go +++ b/test/multicloud/test/utils/utils_test.go @@ -1,4 +1,4 @@ -package test +package utils import ( "bytes" @@ -19,7 +19,7 @@ import ( func TestBuildClientSet(t *testing.T) { config := &rest.Config{} - clientset, err := buildClientSet(config) + clientset, err := BuildClientSet(config) if err != nil { t.Fatalf("Failed to build clientset: %v", err) } @@ -29,14 +29,14 @@ func TestBuildClientSet(t *testing.T) { } func TestCreateRESTConfigWithBearer(t *testing.T) { - config := createRESTConfigWithBearer("caCert", "bearerToken", "host") + config := CreateRESTConfigWithBearer("caCert", "bearerToken", "host") if config.BearerToken != "bearerToken" { t.Fatalf("Expected BearerToken to be 'bearerToken'") } } func TestCreateRESTConfigWithClientCert(t *testing.T) { - config := createRESTConfigWithClientCert("caCert", "clientCert", "clientKey", "host") + config := CreateRESTConfigWithClientCert("caCert", "clientCert", "clientKey", "host") if config.TLSClientConfig.CAData == nil || string(config.TLSClientConfig.CAData) != "caCert" { t.Fatalf("Expected CAData to be 'caCert'") } @@ -53,7 +53,7 @@ func TestCreateRESTConfigWithClientCert(t *testing.T) { func TestTestClusterAccess(t *testing.T) { clientset := fake.NewSimpleClientset() - testClusterAccess(t, clientset) + TestClusterAccess(t, clientset) // Simulate a failure scenario clientset = nil @@ -62,7 +62,7 @@ func TestTestClusterAccess(t *testing.T) { t.Fatalf("Expected panic due to nil clientset, but code did not panic") } }() - testClusterAccess(t, clientset) + TestClusterAccess(t, clientset) } func TestCheckLogsForErrors(t *testing.T) { @@ -124,12 +124,12 @@ func TestCheckPodLogs(t *testing.T) { LabelSelector: "app=test", ContainerName: "test-container", } - checkPodLogs(t, clientset, podSelector) + CheckPodLogs(t, clientset, podSelector) } func TestDecodeBase64(t *testing.T) { encoded := base64.StdEncoding.EncodeToString([]byte("test")) - decoded := decodeBase64(t, encoded) + decoded := DecodeBase64(t, encoded) if decoded != "test" { t.Fatalf("Expected 'test', got '%s'", decoded) } @@ -169,7 +169,7 @@ func TestFetchSensitiveOutput(t *testing.T) { } // Fetch the sensitive output - output := fetchSensitiveOutput(t, opts, "test-output") + output := FetchSensitiveOutput(t, opts, "test-output") if output != "sensitive-value" { t.Fatalf("Expected 'sensitive-value', got '%s'", output) } @@ -269,7 +269,7 @@ func TestCheckPodsRunning(t *testing.T) { Namespace: "default", LabelSelector: "app=test", } - result, err := arePodsRunning(clientset, podSelector, time.Duration(1)*time.Second) + result, err := ArePodsRunning(clientset, podSelector, time.Duration(1)*time.Second) if result != tc.expected { t.Fatalf("Expected %v, got %v with error: %v", tc.expected, result, err) } From dec4e39da56fe265802c2f7391e3cde03ffec208 Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Wed, 5 Feb 2025 09:25:11 +0000 Subject: [PATCH 26/87] test(mc): Create helm-release module (#1303) # Description * create helm-release module * delete retina and prometheus modules * refactor integration tests as needed ## Related Issue #1267 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed ![Screenshot 2025-02-04 093852](https://github.com/user-attachments/assets/d8c806cc-307a-4956-bdea-c12caf33315c) ![Screenshot 2025-02-04 114057](https://github.com/user-attachments/assets/fb46b254-0623-4fa8-9a96-f5abf67c56c0) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- .../integration/prometheus-kind/main.tf | 9 +++- .../integration/prometheus-kind/variables.tf | 42 ++++++++++++++++ .../examples/integration/retina-gke/main.tf | 11 ++-- .../integration/retina-gke/variables.tf | 39 +++++++++++++-- .../examples/integration/retina-kind/main.tf | 8 ++- .../integration/retina-kind/variables.tf | 46 +++++++++++++++-- test/multicloud/live/retina-aks/main.tf | 9 +++- test/multicloud/live/retina-aks/variables.tf | 50 +++++++++++++++++-- test/multicloud/live/retina-gke/main.tf | 9 +++- test/multicloud/live/retina-gke/variables.tf | 46 +++++++++++++++++ test/multicloud/live/retina-kind/main.tf | 9 +++- test/multicloud/live/retina-kind/variables.tf | 48 +++++++++++++++++- test/multicloud/modules/helm-release/main.tf | 14 ++++++ .../{prometheus => helm-release}/provider.tf | 0 .../modules/helm-release/variables.tf | 27 ++++++++++ test/multicloud/modules/prometheus/main.tf | 14 ------ .../modules/prometheus/variables.tf | 23 --------- test/multicloud/modules/retina/main.tf | 15 ------ test/multicloud/modules/retina/provider.tf | 8 --- test/multicloud/modules/retina/variables.tf | 27 ---------- .../test/integration/retina_gke_test.go | 22 +++++--- .../test/integration/retina_kind_test.go | 4 +- 22 files changed, 359 insertions(+), 121 deletions(-) create mode 100644 test/multicloud/modules/helm-release/main.tf rename test/multicloud/modules/{prometheus => helm-release}/provider.tf (100%) create mode 100644 test/multicloud/modules/helm-release/variables.tf delete mode 100644 test/multicloud/modules/prometheus/main.tf delete mode 100644 test/multicloud/modules/prometheus/variables.tf delete mode 100644 test/multicloud/modules/retina/main.tf delete mode 100644 test/multicloud/modules/retina/provider.tf delete mode 100644 test/multicloud/modules/retina/variables.tf diff --git a/test/multicloud/examples/integration/prometheus-kind/main.tf b/test/multicloud/examples/integration/prometheus-kind/main.tf index b2c0abf8c7..41dd85efd9 100644 --- a/test/multicloud/examples/integration/prometheus-kind/main.tf +++ b/test/multicloud/examples/integration/prometheus-kind/main.tf @@ -4,6 +4,11 @@ module "kind" { } module "prometheus" { - depends_on = [module.kind] - source = "../../../modules/prometheus" + depends_on = [module.kind] + source = "../../../modules/helm-release" + release_name = var.prometheus_release_name + repository_url = var.prometheus_repository_url + chart_version = var.prometheus_chart_version + chart_name = var.prometheus_chart_name + values = var.prometheus_values } diff --git a/test/multicloud/examples/integration/prometheus-kind/variables.tf b/test/multicloud/examples/integration/prometheus-kind/variables.tf index c5bb0bd041..887d5d925d 100644 --- a/test/multicloud/examples/integration/prometheus-kind/variables.tf +++ b/test/multicloud/examples/integration/prometheus-kind/variables.tf @@ -3,3 +3,45 @@ variable "prefix" { type = string default = "mc" } + +variable "prometheus_release_name" { + description = "The name of the Helm release." + type = string + default = "prometheus" +} + +variable "prometheus_repository_url" { + description = "The URL of the Helm repository." + type = string + default = "https://prometheus-community.github.io/helm-charts" +} + +variable "prometheus_chart_version" { + description = "The version of the Helm chart to install." + type = string + default = "68.4.3" +} + +variable "prometheus_chart_name" { + description = "The name of the Helm chart to install." + type = string + default = "kube-prometheus-stack" +} + +variable "prometheus_values" { + description = "Configuration for set blocks, this corresponds to Helm values.yaml" + type = list(object({ + name = string + value = string + })) + default = [ + { + name = "global.prometheus.enabled" + value = "true" + }, + { + name = "global.grafana.enabled" + value = "true" + } + ] +} \ No newline at end of file diff --git a/test/multicloud/examples/integration/retina-gke/main.tf b/test/multicloud/examples/integration/retina-gke/main.tf index 5229b21294..40e00f8f77 100644 --- a/test/multicloud/examples/integration/retina-gke/main.tf +++ b/test/multicloud/examples/integration/retina-gke/main.tf @@ -7,8 +7,11 @@ module "gke" { } module "retina" { - depends_on = [module.gke] - source = "../../../modules/retina" - retina_version = var.retina_version - values = var.values + depends_on = [module.gke] + source = "../../../modules/helm-release" + release_name = var.retina_release_name + repository_url = var.retina_repository_url + chart_version = var.retina_chart_version + chart_name = var.retina_chart_name + values = var.retina_values } diff --git a/test/multicloud/examples/integration/retina-gke/variables.tf b/test/multicloud/examples/integration/retina-gke/variables.tf index b588e97454..04f390204e 100644 --- a/test/multicloud/examples/integration/retina-gke/variables.tf +++ b/test/multicloud/examples/integration/retina-gke/variables.tf @@ -22,15 +22,48 @@ variable "machine_type" { default = "e2-standard-4" } -variable "retina_version" { - description = "The tag to apply to all resources." +variable "retina_release_name" { + description = "The name of the Helm release." type = string + default = "retina" } -variable "values" { +variable "retina_repository_url" { + description = "The URL of the Helm repository." + type = string + default = "oci://ghcr.io/microsoft/retina/charts" +} + +variable "retina_chart_version" { + description = "The version of the Helm chart to install." + type = string + default = "v0.0.24" +} + +variable "retina_chart_name" { + description = "The name of the Helm chart to install." + type = string + default = "retina" +} + +variable "retina_values" { description = "Configuration for set blocks, this corresponds to Helm values.yaml" type = list(object({ name = string value = string })) + default = [ + { + name = "image.tag" + value = "v0.0.24" + }, + { + name = "operator.tag" + value = "v0.0.24" + }, + { + name = "logLevel" + value = "info" + } + ] } diff --git a/test/multicloud/examples/integration/retina-kind/main.tf b/test/multicloud/examples/integration/retina-kind/main.tf index 8bd5749095..946d1aaa08 100644 --- a/test/multicloud/examples/integration/retina-kind/main.tf +++ b/test/multicloud/examples/integration/retina-kind/main.tf @@ -5,6 +5,10 @@ module "kind" { module "retina" { depends_on = [module.kind] - source = "../../../modules/retina" - retina_version = var.retina_version + source = "../../../modules/helm-release" + release_name = var.retina_release_name + repository_url = var.retina_repository_url + chart_version = var.retina_chart_version + chart_name = var.retina_chart_name + values = var.retina_values } diff --git a/test/multicloud/examples/integration/retina-kind/variables.tf b/test/multicloud/examples/integration/retina-kind/variables.tf index e9d9024233..3735666a6e 100644 --- a/test/multicloud/examples/integration/retina-kind/variables.tf +++ b/test/multicloud/examples/integration/retina-kind/variables.tf @@ -4,8 +4,48 @@ variable "prefix" { default = "mc" } -variable "retina_version" { - description = "The tag to apply to all resources." +variable "retina_release_name" { + description = "The name of the Helm release." type = string - default = "v0.0.23" + default = "retina" +} + +variable "retina_repository_url" { + description = "The URL of the Helm repository." + type = string + default = "oci://ghcr.io/microsoft/retina/charts" +} + +variable "retina_chart_version" { + description = "The version of the Helm chart to install." + type = string + default = "v0.0.24" +} + +variable "retina_chart_name" { + description = "The name of the Helm chart to install." + type = string + default = "retina" +} + +variable "retina_values" { + description = "Configuration for set blocks, this corresponds to Helm values.yaml" + type = list(object({ + name = string + value = string + })) + default = [ + { + name = "image.tag" + value = "v0.0.24" + }, + { + name = "operator.tag" + value = "v0.0.24" + }, + { + name = "logLevel" + value = "info" + } + ] } \ No newline at end of file diff --git a/test/multicloud/live/retina-aks/main.tf b/test/multicloud/live/retina-aks/main.tf index 237471fe09..60a7200e6c 100644 --- a/test/multicloud/live/retina-aks/main.tf +++ b/test/multicloud/live/retina-aks/main.tf @@ -7,8 +7,13 @@ module "aks" { } module "retina" { - depends_on = [module.aks] - source = "../../modules/retina" + depends_on = [module.aks] + source = "../../modules/helm-release" + release_name = var.retina_release_name + repository_url = var.retina_repository_url + chart_version = var.retina_chart_version + chart_name = var.retina_chart_name + values = var.retina_values } output "kubeconfig_command" { diff --git a/test/multicloud/live/retina-aks/variables.tf b/test/multicloud/live/retina-aks/variables.tf index 886aacc47e..901734c889 100644 --- a/test/multicloud/live/retina-aks/variables.tf +++ b/test/multicloud/live/retina-aks/variables.tf @@ -29,7 +29,51 @@ variable "prefix" { variable "labels" { description = "A map of labels to add to all resources." type = map(string) - default = { - "env" = "test" - } + default = {} +} + +variable "retina_release_name" { + description = "The name of the Helm release." + type = string + default = "retina" +} + +variable "retina_repository_url" { + description = "The URL of the Helm repository." + type = string + default = "oci://ghcr.io/microsoft/retina/charts" +} + +variable "retina_chart_version" { + description = "The version of the Helm chart to install." + type = string + default = "v0.0.24" +} + +variable "retina_chart_name" { + description = "The name of the Helm chart to install." + type = string + default = "retina" +} + +variable "retina_values" { + description = "Configuration for set blocks, this corresponds to Helm values.yaml" + type = list(object({ + name = string + value = string + })) + default = [ + { + name = "image.tag" + value = "v0.0.24" + }, + { + name = "operator.tag" + value = "v0.0.24" + }, + { + name = "logLevel" + value = "info" + } + ] } diff --git a/test/multicloud/live/retina-gke/main.tf b/test/multicloud/live/retina-gke/main.tf index de30d24493..3862ba858d 100644 --- a/test/multicloud/live/retina-gke/main.tf +++ b/test/multicloud/live/retina-gke/main.tf @@ -7,6 +7,11 @@ module "gke" { } module "retina" { - depends_on = [module.gke] - source = "../../modules/retina" + depends_on = [module.gke] + source = "../../modules/helm-release" + release_name = var.retina_release_name + repository_url = var.retina_repository_url + chart_version = var.retina_chart_version + chart_name = var.retina_chart_name + values = var.retina_values } diff --git a/test/multicloud/live/retina-gke/variables.tf b/test/multicloud/live/retina-gke/variables.tf index 9e00f0f537..c9299aa6ba 100644 --- a/test/multicloud/live/retina-gke/variables.tf +++ b/test/multicloud/live/retina-gke/variables.tf @@ -21,3 +21,49 @@ variable "machine_type" { type = string default = "e2-standard-4" } + +variable "retina_release_name" { + description = "The name of the Helm release." + type = string + default = "retina" +} + +variable "retina_repository_url" { + description = "The URL of the Helm repository." + type = string + default = "oci://ghcr.io/microsoft/retina/charts" +} + +variable "retina_chart_version" { + description = "The version of the Helm chart to install." + type = string + default = "v0.0.24" +} + +variable "retina_chart_name" { + description = "The name of the Helm chart to install." + type = string + default = "retina" +} + +variable "retina_values" { + description = "Configuration for set blocks, this corresponds to Helm values.yaml" + type = list(object({ + name = string + value = string + })) + default = [ + { + name = "image.tag" + value = "v0.0.24" + }, + { + name = "operator.tag" + value = "v0.0.24" + }, + { + name = "logLevel" + value = "info" + } + ] +} diff --git a/test/multicloud/live/retina-kind/main.tf b/test/multicloud/live/retina-kind/main.tf index 6f71163ccf..256374b30c 100644 --- a/test/multicloud/live/retina-kind/main.tf +++ b/test/multicloud/live/retina-kind/main.tf @@ -4,6 +4,11 @@ module "kind" { } module "retina" { - depends_on = [module.kind] - source = "../../modules/retina" + depends_on = [module.kind] + source = "../../modules/helm-release" + release_name = var.retina_release_name + repository_url = var.retina_repository_url + chart_version = var.retina_chart_version + chart_name = var.retina_chart_name + values = var.retina_values } diff --git a/test/multicloud/live/retina-kind/variables.tf b/test/multicloud/live/retina-kind/variables.tf index 347514bd40..06b49ab3ab 100644 --- a/test/multicloud/live/retina-kind/variables.tf +++ b/test/multicloud/live/retina-kind/variables.tf @@ -2,4 +2,50 @@ variable "prefix" { description = "A prefix to add to all resources." type = string default = "mc" -} \ No newline at end of file +} + +variable "retina_release_name" { + description = "The name of the Helm release." + type = string + default = "retina" +} + +variable "retina_repository_url" { + description = "The URL of the Helm repository." + type = string + default = "oci://ghcr.io/microsoft/retina/charts" +} + +variable "retina_chart_version" { + description = "The version of the Helm chart to install." + type = string + default = "v0.0.24" +} + +variable "retina_chart_name" { + description = "The name of the Helm chart to install." + type = string + default = "retina" +} + +variable "retina_values" { + description = "Configuration for set blocks, this corresponds to Helm values.yaml" + type = list(object({ + name = string + value = string + })) + default = [ + { + name = "image.tag" + value = "v0.0.24" + }, + { + name = "operator.tag" + value = "v0.0.24" + }, + { + name = "logLevel" + value = "info" + } + ] +} diff --git a/test/multicloud/modules/helm-release/main.tf b/test/multicloud/modules/helm-release/main.tf new file mode 100644 index 0000000000..26d03457b7 --- /dev/null +++ b/test/multicloud/modules/helm-release/main.tf @@ -0,0 +1,14 @@ +resource "helm_release" "release" { + name = var.release_name + repository = var.repository_url + chart = var.chart_name + version = var.chart_version + + dynamic "set" { + for_each = var.values + content { + name = set.value.name + value = set.value.value + } + } +} \ No newline at end of file diff --git a/test/multicloud/modules/prometheus/provider.tf b/test/multicloud/modules/helm-release/provider.tf similarity index 100% rename from test/multicloud/modules/prometheus/provider.tf rename to test/multicloud/modules/helm-release/provider.tf diff --git a/test/multicloud/modules/helm-release/variables.tf b/test/multicloud/modules/helm-release/variables.tf new file mode 100644 index 0000000000..d2c9caa3aa --- /dev/null +++ b/test/multicloud/modules/helm-release/variables.tf @@ -0,0 +1,27 @@ +variable "release_name" { + description = "The name of the Helm release." + type = string +} + +variable "repository_url" { + description = "The URL of the Helm repository." + type = string +} + +variable "chart_version" { + description = "The version of the Helm chart to install." + type = string +} + +variable "chart_name" { + description = "The name of the Helm chart to install." + type = string +} + +variable "values" { + description = "Configuration for set blocks, this corresponds to Helm values.yaml" + type = list(object({ + name = string + value = string + })) +} diff --git a/test/multicloud/modules/prometheus/main.tf b/test/multicloud/modules/prometheus/main.tf deleted file mode 100644 index 2e244f7c18..0000000000 --- a/test/multicloud/modules/prometheus/main.tf +++ /dev/null @@ -1,14 +0,0 @@ -resource "helm_release" "prometheus" { - name = "prometheus" - repository = "https://prometheus-community.github.io/helm-charts" - chart = "kube-prometheus-stack" - version = var.prometheus_version - - dynamic "set" { - for_each = var.values - content { - name = set.value.name - value = set.value.value - } - } -} \ No newline at end of file diff --git a/test/multicloud/modules/prometheus/variables.tf b/test/multicloud/modules/prometheus/variables.tf deleted file mode 100644 index 9970f3a0c1..0000000000 --- a/test/multicloud/modules/prometheus/variables.tf +++ /dev/null @@ -1,23 +0,0 @@ -variable "prometheus_version" { - description = "The Prometheus version to install." - type = string - default = "68.4.3" -} - -variable "values" { - description = "Configuration for set blocks, this corresponds to Helm values.yaml" - type = list(object({ - name = string - value = string - })) - default = [ - { - name = "global.prometheus.enabled" - value = "true" - }, - { - name = "global.grafana.enabled" - value = "true" - } - ] -} diff --git a/test/multicloud/modules/retina/main.tf b/test/multicloud/modules/retina/main.tf deleted file mode 100644 index 3d0d0f3400..0000000000 --- a/test/multicloud/modules/retina/main.tf +++ /dev/null @@ -1,15 +0,0 @@ -resource "helm_release" "retina" { - name = "retina" - repository = "oci://ghcr.io/microsoft/retina/charts" - chart = "retina" - version = var.retina_version - namespace = "kube-system" - - dynamic "set" { - for_each = var.values - content { - name = set.value.name - value = set.value.value - } - } -} diff --git a/test/multicloud/modules/retina/provider.tf b/test/multicloud/modules/retina/provider.tf deleted file mode 100644 index 83de5829ac..0000000000 --- a/test/multicloud/modules/retina/provider.tf +++ /dev/null @@ -1,8 +0,0 @@ -terraform { - required_providers { - helm = { - source = "hashicorp/helm" - version = "2.17.0" - } - } -} diff --git a/test/multicloud/modules/retina/variables.tf b/test/multicloud/modules/retina/variables.tf deleted file mode 100644 index 9109fddf9f..0000000000 --- a/test/multicloud/modules/retina/variables.tf +++ /dev/null @@ -1,27 +0,0 @@ -variable "retina_version" { - description = "The Retina version to install." - type = string - default = "v0.0.23" -} - -variable "values" { - description = "Configuration for set blocks, this corresponds to Helm values.yaml" - type = list(object({ - name = string - value = string - })) - default = [ - { - name = "image.tag" - value = "v0.0.23" - }, - { - name = "operator.tag" - value = "v0.0.23" - }, - { - name = "logLevel" - value = "info" - } - ] -} diff --git a/test/multicloud/test/integration/retina_gke_test.go b/test/multicloud/test/integration/retina_gke_test.go index 75b1af90a2..b2fd0c1ea9 100644 --- a/test/multicloud/test/integration/retina_gke_test.go +++ b/test/multicloud/test/integration/retina_gke_test.go @@ -15,12 +15,12 @@ func TestRetinaGKEIntegration(t *testing.T) { TerraformDir: utils.ExamplesPath + "integration/retina-gke", Vars: map[string]interface{}{ - "prefix": "test", - "location": "europe-west2", // London - "project": "mc-retina", // TODO: replace with actual project once we get gcloud access - "machine_type": "e2-standard-4", - "retina_version": utils.RetinaVersion, - "values": []map[string]interface{}{ + "prefix": "test", + "location": "europe-west2", // London + "project": "mc-retina", // TODO: replace with actual project once we get gcloud access + "machine_type": "e2-standard-4", + "retina_chart_version": utils.RetinaVersion, + "retina_values": []map[string]interface{}{ { "name": "logLevel", "value": "info", @@ -29,9 +29,14 @@ func TestRetinaGKEIntegration(t *testing.T) { "name": "operator.tag", "value": utils.RetinaVersion, }, + // Example using a public image built during testing + { + "name": "image.repository", + "value": "acnpublic.azurecr.io/xiaozhiche320/retina/retina-agent", + }, { "name": "image.tag", - "value": utils.RetinaVersion, + "value": "c17d5ea-linux-amd64", }, }, }, @@ -74,8 +79,9 @@ func TestRetinaGKEIntegration(t *testing.T) { t.Fatalf("Retina pods did not start in time: %v\n", err) } + // TODO: uncomment once the log level for "iface not supported" is changed to WARN // check the retina pods logs for errors - utils.CheckPodLogs(t, clientSet, retinaPodSelector) + // utils.CheckPodLogs(t, clientSet, retinaPodSelector) // TODO: add more tests here } diff --git a/test/multicloud/test/integration/retina_kind_test.go b/test/multicloud/test/integration/retina_kind_test.go index 28db20f721..8afc5a3ccd 100644 --- a/test/multicloud/test/integration/retina_kind_test.go +++ b/test/multicloud/test/integration/retina_kind_test.go @@ -15,8 +15,8 @@ func TestRetinaKindIntegration(t *testing.T) { TerraformDir: utils.ExamplesPath + "integration/retina-kind", Vars: map[string]interface{}{ - "prefix": "test-integration", - "retina_version": utils.RetinaVersion, + "prefix": "test-integration", + "retina_chart_version": utils.RetinaVersion, }, } From 9aa763cb2b5c2bcb3dc0e24d2267260e6dfebe44 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 09:20:18 -0500 Subject: [PATCH 27/87] deps: bump github.com/go-chi/chi/v5 from 5.2.0 to 5.2.1 (#1302) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/go-chi/chi/v5](https://github.com/go-chi/chi) from 5.2.0 to 5.2.1.
Release notes

Sourced from github.com/go-chi/chi/v5's releases.

v5.2.1

⚠️ Chi supports Go 1.20+

Starting this release, we will now support the four most recent major versions of Go. See go-chi/chi#963 for related discussion.

What's Changed

Full Changelog: https://github.com/go-chi/chi/compare/v5.2.0...v5.2.1

Commits

Most Recent Ignore Conditions Applied to This Pull Request | Dependency Name | Ignore Conditions | | --- | --- | | github.com/go-chi/chi/v5 | [< 5.1, > 5.0.11] |
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-chi/chi/v5&package-manager=go_modules&previous-version=5.2.0&new-version=5.2.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index be81ec5d4b..3a08c6b582 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/microsoft/retina go 1.23.4 require ( - github.com/go-chi/chi/v5 v5.2.0 + github.com/go-chi/chi/v5 v5.2.1 github.com/google/uuid v1.6.0 github.com/prometheus/client_golang v1.20.5 github.com/spf13/cobra v1.8.1 diff --git a/go.sum b/go.sum index 2dcfc937ed..4e2bc283be 100644 --- a/go.sum +++ b/go.sum @@ -327,8 +327,8 @@ github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui72 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-chi/chi/v5 v5.2.0 h1:Aj1EtB0qR2Rdo2dG4O94RIU35w2lvQSj6BRA4+qwFL0= -github.com/go-chi/chi/v5 v5.2.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.2.1 h1:KOIHODQj58PmL80G2Eak4WdvUzjSJSm0vG72crDCqb8= +github.com/go-chi/chi/v5 v5.2.1/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= From 408f23a8d8372267556bdcca1a1c815eaf754380 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 10:29:13 -0500 Subject: [PATCH 28/87] deps: bump golang.org/x/sync from 0.10.0 to 0.11.0 (#1311) Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.10.0 to 0.11.0.
Commits
  • fe3591b sync/errgroup: improve documentation for semaphore limit behavior
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/sync&package-manager=go_modules&previous-version=0.10.0&new-version=0.11.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3a08c6b582..9c971ec439 100644 --- a/go.mod +++ b/go.mod @@ -259,7 +259,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect - golang.org/x/sync v0.10.0 + golang.org/x/sync v0.11.0 golang.org/x/sys v0.29.0 golang.org/x/term v0.28.0 // indirect google.golang.org/protobuf v1.36.4 diff --git a/go.sum b/go.sum index 4e2bc283be..afad0d2c7e 100644 --- a/go.sum +++ b/go.sum @@ -1008,8 +1008,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From 7721a0b6a94ae83719565ddaee7815048c569131 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 10:29:32 -0500 Subject: [PATCH 29/87] deps: bump sigstore/cosign-installer from 3.7.0 to 3.8.0 (#1308) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.7.0 to 3.8.0.
Release notes

Sourced from sigstore/cosign-installer's releases.

v3.8.0

What's Changed

Full Changelog: https://github.com/sigstore/cosign-installer/compare/v3...v3.8.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigstore/cosign-installer&package-manager=github_actions&previous-version=3.7.0&new-version=3.8.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release-charts.yaml | 2 +- .github/workflows/release-images.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release-charts.yaml b/.github/workflows/release-charts.yaml index 730721f595..385918b24e 100644 --- a/.github/workflows/release-charts.yaml +++ b/.github/workflows/release-charts.yaml @@ -27,7 +27,7 @@ jobs: id: install - name: Install Cosign - uses: sigstore/cosign-installer@v3.7.0 + uses: sigstore/cosign-installer@v3.8.0 - name: Log in to registry (Helm for pushing chart, Docker for signing and push signature) run: | diff --git a/.github/workflows/release-images.yaml b/.github/workflows/release-images.yaml index 1af1ceb4bf..9f35594184 100644 --- a/.github/workflows/release-images.yaml +++ b/.github/workflows/release-images.yaml @@ -32,7 +32,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.7.0 + uses: sigstore/cosign-installer@v3.8.0 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -78,7 +78,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.7.0 + uses: sigstore/cosign-installer@v3.8.0 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -124,7 +124,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.7.0 + uses: sigstore/cosign-installer@v3.8.0 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -169,7 +169,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.7.0 + uses: sigstore/cosign-installer@v3.8.0 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -212,7 +212,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.7.0 + uses: sigstore/cosign-installer@v3.8.0 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -260,7 +260,7 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Install Cosign - uses: sigstore/cosign-installer@v3.7.0 + uses: sigstore/cosign-installer@v3.8.0 - name: Log in to registry run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin From 378b0b4b7b94e3d5a5f683c763684f99d97d2bca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:25:02 -0500 Subject: [PATCH 30/87] deps: bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.75.2 to 1.75.3 (#1309) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.75.2 to 1.75.3.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.75.2&new-version=1.75.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9c971ec439..792b662879 100644 --- a/go.mod +++ b/go.mod @@ -292,7 +292,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.36.0 github.com/aws/aws-sdk-go-v2/config v1.29.4 github.com/aws/aws-sdk-go-v2/credentials v1.17.57 - github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2 + github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 diff --git a/go.sum b/go.sum index afad0d2c7e..9a5cfda631 100644 --- a/go.sum +++ b/go.sum @@ -155,8 +155,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12 h1:O+8vD2rG github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12/go.mod h1:usVdWJaosa66NMvmCrr08NcWDBRv4E6+YFG2pUdw1Lk= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 h1:tkVNm99nkJnFo1H9IIQb5QkCiPcvCDn3Pos+IeTbGRA= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12/go.mod h1:dIVlquSPUMqEJtx2/W17SM2SuESRaVEhEV9alcMqxjw= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2 h1:dyC+iA2+Yc7iDMDh0R4eT6fi8TgBduc+BOWCy6Br0/o= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2/go.mod h1:FHSHmyEUkzRbaFFqqm6bkLAOQHgqhsLmfCahvCBMiyA= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3 h1:JBod0SnNqcWQ0+uAyzeRFG1zCHotW8DukumYYyNy0zo= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3/go.mod h1:FHSHmyEUkzRbaFFqqm6bkLAOQHgqhsLmfCahvCBMiyA= github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 h1:c5WJ3iHz7rLIgArznb3JCSQT3uUMiz9DLZhIX+1G8ok= github.com/aws/aws-sdk-go-v2/service/sso v1.24.14/go.mod h1:+JJQTxB6N4niArC14YNtxcQtwEqzS3o9Z32n7q33Rfs= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 h1:f1L/JtUkVODD+k1+IiSJUUv8A++2qVr+Xvb3xWXETMU= From d1378d10c3bc20599475cd505ce3b970ccc4160c Mon Sep 17 00:00:00 2001 From: byte-msft <163155971+byte-msft@users.noreply.github.com> Date: Wed, 5 Feb 2025 18:13:19 +0000 Subject: [PATCH 31/87] fix: Clean up interfaceLockMap entries on endpoint deletion (#1249) # Description The packetParser was creating entries in interfaceLockMap for each new interface but failing to remove them when interfaces were deleted. In environments with high pod counts and frequent churn, this caused a memory leak as the map grew indefinitely. ## Related Issue [Potential memory leak in packetparser's interfaceLockMap #1236](https://github.com/microsoft/retina/issues/1236) ## Checklist - [X] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [X] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [X] I have correctly attributed the author(s) of the code. - [X] I have tested the changes locally. - [X] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [X] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes ### Solution - Added cleanup of interfaceLockMap entries in the EndpointDeleted case - Improved mutex handling logic to prevent resource leaks - Updated test cases to verify proper cleanup of both tcMap and interfaceLockMap ### Testing - Added comprehensive test coverage for interface deletion scenario - Verified cleanup of both maps in test cases - Tested with high pod churn scenarios ### Impact This fix prevents memory leaks in environments with frequent pod creation/deletion, improving the overall stability and resource usage of the system. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --------- Signed-off-by: Yerlan Baiturinov --- pkg/plugin/packetparser/packetparser_linux.go | 2 ++ .../packetparser/packetparser_linux_test.go | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/pkg/plugin/packetparser/packetparser_linux.go b/pkg/plugin/packetparser/packetparser_linux.go index fb54c8bb5e..c11ef9cef9 100644 --- a/pkg/plugin/packetparser/packetparser_linux.go +++ b/pkg/plugin/packetparser/packetparser_linux.go @@ -400,6 +400,8 @@ func (p *packetParser) endpointWatcherCallbackFn(obj interface{}) { // Delete from map. p.tcMap.Delete(ifaceKey) } + // Delete from lock map. + p.interfaceLockMap.Delete(ifaceKey) default: // Unknown. p.l.Debug("Unknown event", zap.String("type", event.Type.String())) diff --git a/pkg/plugin/packetparser/packetparser_linux_test.go b/pkg/plugin/packetparser/packetparser_linux_test.go index aa27cfa356..50903852a1 100644 --- a/pkg/plugin/packetparser/packetparser_linux_test.go +++ b/pkg/plugin/packetparser/packetparser_linux_test.go @@ -162,18 +162,24 @@ func TestEndpointWatcherCallbackFn_EndpointDeleted(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() + // Initialize packetParser with both maps. p := &packetParser{ cfg: cfgPodLevelEnabled, l: log.Logger().Named("test"), interfaceLockMap: &sync.Map{}, + tcMap: &sync.Map{}, } - p.tcMap = &sync.Map{} + + // Create test interface attributes. linkAttr := netlink.LinkAttrs{ Name: "test", HardwareAddr: []byte("test"), NetNsID: 1, } key := ifaceToKey(linkAttr) + + // Pre-populate both maps to simulate existing interface + p.interfaceLockMap.Store(key, &sync.Mutex{}) p.tcMap.Store(key, &tcValue{nil, &tc.Object{}}) // Create EndpointDeleted event. @@ -182,10 +188,16 @@ func TestEndpointWatcherCallbackFn_EndpointDeleted(t *testing.T) { Obj: linkAttr, } + // Execute the callback. p.endpointWatcherCallbackFn(e) - _, ok := p.tcMap.Load(key) - assert.False(t, ok) + // Verify both maps are cleaned up. + _, tcMapExists := p.tcMap.Load(key) + _, lockMapExists := p.interfaceLockMap.Load(key) + + // Assert both maps are cleaned up + assert.False(t, tcMapExists, "tcMap entry should be deleted") + assert.False(t, lockMapExists, "interfaceLockMap entry should be deleted") } func TestCreateQdiscAndAttach(t *testing.T) { From 2f7f1e48d616a52421259953ae9d3f30a8f1f559 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 19:24:12 -0500 Subject: [PATCH 32/87] deps: bump github.com/aws/aws-sdk-go-v2/credentials from 1.17.57 to 1.17.58 (#1310) Bumps [github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2) from 1.17.57 to 1.17.58.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/credentials&package-manager=go_modules&previous-version=1.17.57&new-version=1.17.58)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 792b662879..fb72abfa3c 100644 --- a/go.mod +++ b/go.mod @@ -59,7 +59,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.12 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.13 // indirect github.com/aws/smithy-go v1.22.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect @@ -291,7 +291,7 @@ require ( github.com/Sytten/logrus-zap-hook v0.1.0 github.com/aws/aws-sdk-go-v2 v1.36.0 github.com/aws/aws-sdk-go-v2/config v1.29.4 - github.com/aws/aws-sdk-go-v2/credentials v1.17.57 + github.com/aws/aws-sdk-go-v2/credentials v1.17.58 github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb diff --git a/go.sum b/go.sum index 9a5cfda631..ec791371eb 100644 --- a/go.sum +++ b/go.sum @@ -135,8 +135,8 @@ github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCd github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= github.com/aws/aws-sdk-go-v2/config v1.29.4 h1:ObNqKsDYFGr2WxnoXKOhCvTlf3HhwtoGgc+KmZ4H5yg= github.com/aws/aws-sdk-go-v2/config v1.29.4/go.mod h1:j2/AF7j/qxVmsNIChw1tWfsVKOayJoGRDjg1Tgq7NPk= -github.com/aws/aws-sdk-go-v2/credentials v1.17.57 h1:kFQDsbdBAR3GZsB8xA+51ptEnq9TIj3tS4MuP5b+TcQ= -github.com/aws/aws-sdk-go-v2/credentials v1.17.57/go.mod h1:2kerxPUUbTagAr/kkaHiqvj/bcYHzi2qiJS/ZinllU0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.58 h1:/d7FUpAPU8Lf2KUdjniQvfNdlMID0Sd9pS23FJ3SS9Y= +github.com/aws/aws-sdk-go-v2/credentials v1.17.58/go.mod h1:aVYW33Ow10CyMQGFgC0ptMRIqJWvJ4nxZb0sUiuQT/A= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27 h1:7lOW8NUwE9UZekS1DYoiPdVAqZ6A+LheHWb+mHbNOq8= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27/go.mod h1:w1BASFIPOPUae7AgaH4SbjNbfdkxuggLyGfNFTn8ITY= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 h1:lWm9ucLSRFiI4dQQafLrEOmEDGry3Swrz0BIRdiHJqQ= @@ -161,8 +161,8 @@ github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 h1:c5WJ3iHz7rLIgArznb3JCSQT3uU github.com/aws/aws-sdk-go-v2/service/sso v1.24.14/go.mod h1:+JJQTxB6N4niArC14YNtxcQtwEqzS3o9Z32n7q33Rfs= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 h1:f1L/JtUkVODD+k1+IiSJUUv8A++2qVr+Xvb3xWXETMU= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13/go.mod h1:tvqlFoja8/s0o+UruA1Nrezo/df0PzdunMDDurUfg6U= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.12 h1:fqg6c1KVrc3SYWma/egWue5rKI4G2+M4wMQN2JosNAA= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.12/go.mod h1:7Yn+p66q/jt38qMoVfNvjbm3D89mGBnkwDcijgtih8w= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.13 h1:3LXNnmtH3TURctC23hnC0p/39Q5gre3FI7BNOiDcVWc= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.13/go.mod h1:7Yn+p66q/jt38qMoVfNvjbm3D89mGBnkwDcijgtih8w= github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= From 3f85a15dc5279ee0238559e7b74dc19d2cee2ec3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 01:10:13 +0000 Subject: [PATCH 33/87] deps: bump github.com/aws/aws-sdk-go-v2/config from 1.29.4 to 1.29.6 (#1315) Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.4 to 1.29.6.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/config&package-manager=go_modules&previous-version=1.29.4&new-version=1.29.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 20 ++++++++++---------- go.sum | 40 ++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index fb72abfa3c..5d5e272b31 100644 --- a/go.mod +++ b/go.mod @@ -48,18 +48,18 @@ require ( github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.28 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.13 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.14 // indirect github.com/aws/smithy-go v1.22.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect @@ -289,9 +289,9 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0 github.com/Microsoft/hcsshim v0.12.0-rc.3 github.com/Sytten/logrus-zap-hook v0.1.0 - github.com/aws/aws-sdk-go-v2 v1.36.0 - github.com/aws/aws-sdk-go-v2/config v1.29.4 - github.com/aws/aws-sdk-go-v2/credentials v1.17.58 + github.com/aws/aws-sdk-go-v2 v1.36.1 + github.com/aws/aws-sdk-go-v2/config v1.29.6 + github.com/aws/aws-sdk-go-v2/credentials v1.17.59 github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb diff --git a/go.sum b/go.sum index ec791371eb..a152f94938 100644 --- a/go.sum +++ b/go.sum @@ -129,20 +129,20 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.36.0 h1:b1wM5CcE65Ujwn565qcwgtOTT1aT4ADOHHgglKjG7fk= -github.com/aws/aws-sdk-go-v2 v1.36.0/go.mod h1:5PMILGVKiW32oDzjj6RU52yrNrDPUHcbZQYr1sM7qmM= +github.com/aws/aws-sdk-go-v2 v1.36.1 h1:iTDl5U6oAhkNPba0e1t1hrwAo02ZMqbrGq4k5JBWM5E= +github.com/aws/aws-sdk-go-v2 v1.36.1/go.mod h1:5PMILGVKiW32oDzjj6RU52yrNrDPUHcbZQYr1sM7qmM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCdoiQp2uZ9k1LsZvmAnoTBeZPXom0= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= -github.com/aws/aws-sdk-go-v2/config v1.29.4 h1:ObNqKsDYFGr2WxnoXKOhCvTlf3HhwtoGgc+KmZ4H5yg= -github.com/aws/aws-sdk-go-v2/config v1.29.4/go.mod h1:j2/AF7j/qxVmsNIChw1tWfsVKOayJoGRDjg1Tgq7NPk= -github.com/aws/aws-sdk-go-v2/credentials v1.17.58 h1:/d7FUpAPU8Lf2KUdjniQvfNdlMID0Sd9pS23FJ3SS9Y= -github.com/aws/aws-sdk-go-v2/credentials v1.17.58/go.mod h1:aVYW33Ow10CyMQGFgC0ptMRIqJWvJ4nxZb0sUiuQT/A= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27 h1:7lOW8NUwE9UZekS1DYoiPdVAqZ6A+LheHWb+mHbNOq8= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27/go.mod h1:w1BASFIPOPUae7AgaH4SbjNbfdkxuggLyGfNFTn8ITY= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 h1:lWm9ucLSRFiI4dQQafLrEOmEDGry3Swrz0BIRdiHJqQ= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31/go.mod h1:Huu6GG0YTfbPphQkDSo4dEGmQRTKb9k9G7RdtyQWxuI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31 h1:ACxDklUKKXb48+eg5ROZXi1vDgfMyfIA/WyvqHcHI0o= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31/go.mod h1:yadnfsDwqXeVaohbGc/RaD287PuyRw2wugkh5ZL2J6k= +github.com/aws/aws-sdk-go-v2/config v1.29.6 h1:fqgqEKK5HaZVWLQoLiC9Q+xDlSp+1LYidp6ybGE2OGg= +github.com/aws/aws-sdk-go-v2/config v1.29.6/go.mod h1:Ft+WLODzDQmCTHDvqAH1JfC2xxbZ0MxpZAcJqmE1LTQ= +github.com/aws/aws-sdk-go-v2/credentials v1.17.59 h1:9btwmrt//Q6JcSdgJOLI98sdr5p7tssS9yAsGe8aKP4= +github.com/aws/aws-sdk-go-v2/credentials v1.17.59/go.mod h1:NM8fM6ovI3zak23UISdWidyZuI1ghNe2xjzUZAyT+08= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.28 h1:KwsodFKVQTlI5EyhRSugALzsV6mG/SGrdjlMXSZSdso= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.28/go.mod h1:EY3APf9MzygVhKuPXAc5H+MkGb8k/DOSQjWS0LgkKqI= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32 h1:BjUcr3X3K0wZPGFg2bxOWW3VPN8rkE3/61zhP+IHviA= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32/go.mod h1:80+OGC/bgzzFFTUmcuwD0lb4YutwQeKLFpmt6hoWapU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32 h1:m1GeXHVMJsRsUAqG6HjZWx9dj7F5TR+cF1bjyfYyBd4= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32/go.mod h1:IitoQxGfaKdVLNg0hD8/DXmAqNy0H4K2H2Sf91ti8sI= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31 h1:8IwBjuLdqIO1dGB+dZ9zJEl8wzY3bVYxcs0Xyu/Lsc0= @@ -151,18 +151,18 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/C github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5 h1:siiQ+jummya9OLPDEyHVb2dLW4aOMe22FGDd0sAfuSw= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5/go.mod h1:iHVx2J9pWzITdP5MJY6qWfG34TfD9EA+Qi3eV6qQCXw= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12 h1:O+8vD2rGjfihBewr5bT+QUfYUHIxCVgG61LHoT59shM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12/go.mod h1:usVdWJaosa66NMvmCrr08NcWDBRv4E6+YFG2pUdw1Lk= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 h1:SYVGSFQHlchIcy6e7x12bsrxClCXSP5et8cqVhL8cuw= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13/go.mod h1:kizuDaLX37bG5WZaoxGPQR/LNFXpxp0vsUnqfkWXfNE= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 h1:tkVNm99nkJnFo1H9IIQb5QkCiPcvCDn3Pos+IeTbGRA= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12/go.mod h1:dIVlquSPUMqEJtx2/W17SM2SuESRaVEhEV9alcMqxjw= github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3 h1:JBod0SnNqcWQ0+uAyzeRFG1zCHotW8DukumYYyNy0zo= github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3/go.mod h1:FHSHmyEUkzRbaFFqqm6bkLAOQHgqhsLmfCahvCBMiyA= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 h1:c5WJ3iHz7rLIgArznb3JCSQT3uUMiz9DLZhIX+1G8ok= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.14/go.mod h1:+JJQTxB6N4niArC14YNtxcQtwEqzS3o9Z32n7q33Rfs= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 h1:f1L/JtUkVODD+k1+IiSJUUv8A++2qVr+Xvb3xWXETMU= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13/go.mod h1:tvqlFoja8/s0o+UruA1Nrezo/df0PzdunMDDurUfg6U= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.13 h1:3LXNnmtH3TURctC23hnC0p/39Q5gre3FI7BNOiDcVWc= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.13/go.mod h1:7Yn+p66q/jt38qMoVfNvjbm3D89mGBnkwDcijgtih8w= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 h1:/eE3DogBjYlvlbhd2ssWyeuovWunHLxfgw3s/OJa4GQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.15/go.mod h1:2PCJYpi7EKeA5SkStAmZlF6fi0uUABuhtF8ILHjGc3Y= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 h1:M/zwXiL2iXUrHputuXgmO94TVNmcenPHxgLXLutodKE= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14/go.mod h1:RVwIw3y/IqxC2YEXSIkAzRDdEU1iRabDPaYjpGCbCGQ= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.14 h1:TzeR06UCMUq+KA3bDkujxK1GVGy+G8qQN/QVYzGLkQE= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.14/go.mod h1:dspXf/oYWGWo6DEvj98wpaTeqt5+DMidZD0A9BYTizc= github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= From 2463c95a87de285103c4847b6a8304939ceb7821 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:16:03 +0000 Subject: [PATCH 34/87] deps: bump sigs.k8s.io/cloud-provider-azure/pkg/azclient from 0.4.14 to 0.4.15 (#1317) Bumps [sigs.k8s.io/cloud-provider-azure/pkg/azclient](https://github.com/kubernetes-sigs/cloud-provider-azure) from 0.4.14 to 0.4.15.
Commits
  • 0b1583c build(deps): bump the all group in /pkg/azclient with 2 updates (#8241)
  • 33d59db build(deps): bump oss/go/microsoft/golang from 1343d81 to 87c9102 (#8216)
  • d7c3e70 build(deps): bump golang.org/x/sync (#8220)
  • 0cd23ff build(deps): bump golangci/golangci-lint-action in the all group (#8225)
  • cee7317 build(deps): bump oss/go/microsoft/golang from 94a7ec6 to 1343d81 (#8190)
  • 2b91a50 build(deps): bump github.com/spf13/pflag (#8209)
  • 3785b15 build(deps): bump github/codeql-action in the all group (#8207)
  • dfca04a build(deps): bump github/codeql-action in the all group (#8197)
  • 66e6f8d build(deps): bump github/codeql-action in the all group (#8181)
  • 066f8f5 build(deps): bump oss/go/microsoft/golang from ff1f672 to 94a7ec6 (#8172)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigs.k8s.io/cloud-provider-azure/pkg/azclient&package-manager=go_modules&previous-version=0.4.14&new-version=0.4.15)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 5d5e272b31..0137054ece 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/spf13/cobra v1.8.1 go.uber.org/zap v1.27.0 k8s.io/client-go v0.30.3 - sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.14 + sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.15 sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 ) @@ -227,7 +227,7 @@ require ( golang.org/x/crypto v0.32.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/text v0.21.0 // indirect - golang.org/x/time v0.9.0 // indirect + golang.org/x/time v0.10.0 // indirect golang.org/x/tools v0.28.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect diff --git a/go.sum b/go.sum index a152f94938..9ada008fe8 100644 --- a/go.sum +++ b/go.sum @@ -1096,8 +1096,8 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1221,8 +1221,8 @@ k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 h1:MDF6h2H/h4tbzmtIKTuctcwZmY0tY k8s.io/utils v0.0.0-20240921022957-49e7df575cb6/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.14 h1:Hjwpu3YiO8lt05MfqyTDU/UMXYcVzKLfGBRFTa+1qnI= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.14/go.mod h1:SUEQT6YJvFcXCQB1DI2uJhAlc7VFrh+SkeUJz0lpk24= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.15 h1:pkxFdvaTO56NmvFN8w6B6N4jfaVkOROddSr1Jx+BzfM= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.15/go.mod h1:N9u32SVBhbFI5LLgU4IPyAoWqSAwdc+yFp8VHvADe4o= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 h1:jeEFfNxq9uJqkkxhd6WaWNsKNjKhJBcVuWTSgJoXXHM= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20/go.mod h1:5evhIg+6KdZLaezvJPN1rMcn/EY+GypQh/7gNZHD97Y= sigs.k8s.io/controller-runtime v0.18.5 h1:nTHio/W+Q4aBlQMgbnC5hZb4IjIidyrizMai9P6n4Rk= From 47fcc312f46d93e7b2a542a874500db40545b690 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:16:47 +0000 Subject: [PATCH 35/87] deps: bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.75.3 to 1.75.4 (#1320) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.75.3 to 1.75.4.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.75.3&new-version=1.75.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 0137054ece..06c714e0f6 100644 --- a/go.mod +++ b/go.mod @@ -52,11 +52,11 @@ require ( github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.6 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.33.14 // indirect @@ -292,7 +292,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.36.1 github.com/aws/aws-sdk-go-v2/config v1.29.6 github.com/aws/aws-sdk-go-v2/credentials v1.17.59 - github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3 + github.com/aws/aws-sdk-go-v2/service/s3 v1.75.4 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 diff --git a/go.sum b/go.sum index 9ada008fe8..b901a66cfd 100644 --- a/go.sum +++ b/go.sum @@ -145,18 +145,18 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32 h1:m1GeXHVMJsRsUAqG6H github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32/go.mod h1:IitoQxGfaKdVLNg0hD8/DXmAqNy0H4K2H2Sf91ti8sI= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31 h1:8IwBjuLdqIO1dGB+dZ9zJEl8wzY3bVYxcs0Xyu/Lsc0= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31/go.mod h1:8tMBcuVjL4kP/ECEIWTCWtwV2kj6+ouEKl4cqR4iWLw= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 h1:OIHj/nAhVzIXGzbAE+4XmZ8FPvro3THr6NlqErJc3wY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32/go.mod h1:LiBEsDo34OJXqdDlRGsilhlIiXR7DL+6Cx2f4p1EgzI= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5 h1:siiQ+jummya9OLPDEyHVb2dLW4aOMe22FGDd0sAfuSw= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5/go.mod h1:iHVx2J9pWzITdP5MJY6qWfG34TfD9EA+Qi3eV6qQCXw= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.6 h1:cCBJaT7EeEojpJ4s7wTDbhZlHVJOgNHN7iw6qVurGaw= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.6/go.mod h1:WYH1ABybY7JK9TITPnk6ZlP7gQB8psI4c9qDmMsnLSA= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 h1:SYVGSFQHlchIcy6e7x12bsrxClCXSP5et8cqVhL8cuw= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13/go.mod h1:kizuDaLX37bG5WZaoxGPQR/LNFXpxp0vsUnqfkWXfNE= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 h1:tkVNm99nkJnFo1H9IIQb5QkCiPcvCDn3Pos+IeTbGRA= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12/go.mod h1:dIVlquSPUMqEJtx2/W17SM2SuESRaVEhEV9alcMqxjw= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3 h1:JBod0SnNqcWQ0+uAyzeRFG1zCHotW8DukumYYyNy0zo= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.3/go.mod h1:FHSHmyEUkzRbaFFqqm6bkLAOQHgqhsLmfCahvCBMiyA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13 h1:OBsrtam3rk8NfBEq7OLOMm5HtQ9Yyw32X4UQMya/wjw= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13/go.mod h1:3U4gFA5pmoCOja7aq4nSaIAGbaOHv2Yl2ug018cmC+Q= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.4 h1:DJYjOvNgC30JAcDCRmtQHoYK4trc7XetDXRTEAReGKA= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.4/go.mod h1:KuLNrwYJFaC2AVZ+CVVc12k9NyqwgWsoNNHjwqF6QNk= github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 h1:/eE3DogBjYlvlbhd2ssWyeuovWunHLxfgw3s/OJa4GQ= github.com/aws/aws-sdk-go-v2/service/sso v1.24.15/go.mod h1:2PCJYpi7EKeA5SkStAmZlF6fi0uUABuhtF8ILHjGc3Y= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 h1:M/zwXiL2iXUrHputuXgmO94TVNmcenPHxgLXLutodKE= From ca2b7fb0ef45a6e713550e3f0ef5060f201857cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 13:12:56 -0500 Subject: [PATCH 36/87] deps: bump golang.org/x/sys from 0.29.0 to 0.30.0 (#1318) Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.29.0 to 0.30.0.
Commits
  • 863b3c4 unix: update glibc to 2.41
  • 4d4692e unix: add Auxv
  • b215a1c unix: update to Linux kernel 6.13
  • c756214 cpu: add support for AVX-VNNI and IFMA detection
  • 1c14dca unix: add GetPeerUcred and UcredGet for solaris
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/sys&package-manager=go_modules&previous-version=0.29.0&new-version=0.30.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 06c714e0f6..7b58d1d4d1 100644 --- a/go.mod +++ b/go.mod @@ -260,7 +260,7 @@ require ( golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect golang.org/x/sync v0.11.0 - golang.org/x/sys v0.29.0 + golang.org/x/sys v0.30.0 golang.org/x/term v0.28.0 // indirect google.golang.org/protobuf v1.36.4 gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index b901a66cfd..80d981c163 100644 --- a/go.sum +++ b/go.sum @@ -1074,8 +1074,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 41853155fc2e281a41d4b654e62b83d273191bec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:06:25 -0500 Subject: [PATCH 37/87] deps: bump google.golang.org/protobuf from 1.36.4 to 1.36.5 (#1319) Bumps google.golang.org/protobuf from 1.36.4 to 1.36.5. [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/protobuf&package-manager=go_modules&previous-version=1.36.4&new-version=1.36.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 7b58d1d4d1..66708e7cf0 100644 --- a/go.mod +++ b/go.mod @@ -262,7 +262,7 @@ require ( golang.org/x/sync v0.11.0 golang.org/x/sys v0.30.0 golang.org/x/term v0.28.0 // indirect - google.golang.org/protobuf v1.36.4 + google.golang.org/protobuf v1.36.5 gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/api v0.30.3 diff --git a/go.sum b/go.sum index 80d981c163..d8c205c5ea 100644 --- a/go.sum +++ b/go.sum @@ -1154,8 +1154,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 5791cc595f5a07b9fd924aa443361ac7bcdc9f62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 22:35:57 -0500 Subject: [PATCH 38/87] deps: bump github.com/safchain/ethtool from 0.5.9 to 0.5.10 (#1316) Bumps [github.com/safchain/ethtool](https://github.com/safchain/ethtool) from 0.5.9 to 0.5.10.
Release notes

Sourced from github.com/safchain/ethtool's releases.

v0.5.10

Fix the license

Commits
  • 8136d40 fix license
  • c20939d Merge pull request #93 from safchain/dependabot/go_modules/golang.org/x/sys-0...
  • 78bb3fc Bump golang.org/x/sys from 0.28.0 to 0.29.0
  • e503016 Merge pull request #92 from safchain/dependabot/go_modules/golang.org/x/sys-0...
  • 6df2d80 Bump golang.org/x/sys from 0.27.0 to 0.28.0
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/safchain/ethtool&package-manager=go_modules&previous-version=0.5.9&new-version=0.5.10)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 66708e7cf0..32aea620bc 100644 --- a/go.mod +++ b/go.mod @@ -314,7 +314,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.62.0 - github.com/safchain/ethtool v0.5.9 + github.com/safchain/ethtool v0.5.10 github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.19.0 github.com/vishvananda/netlink v1.2.1-beta.2.0.20240524165444-4d4ba1473f21 diff --git a/go.sum b/go.sum index d8c205c5ea..aa9fafea11 100644 --- a/go.sum +++ b/go.sum @@ -793,8 +793,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/s3rj1k/go-fanotify/fanotify v0.0.0-20210917134616-9c00a300bb7a h1:np2nR32/A/VcOG9Hn+IOPA8kMk1gbBzK5LpSsgq5pJI= github.com/s3rj1k/go-fanotify/fanotify v0.0.0-20210917134616-9c00a300bb7a/go.mod h1:wiP6GQ2T378F+YIyuNw7yXtBxJZR+fqrrn1Z6UHZi0Q= -github.com/safchain/ethtool v0.5.9 h1://6RvaOKFf3nQ0rl5+8zBbE4/72455VC9Jq61pfq67E= -github.com/safchain/ethtool v0.5.9/go.mod h1:w8oSsZeowyRaM7xJJBAbubzzrOkwO8TBgPSEqPP/5mg= +github.com/safchain/ethtool v0.5.10 h1:Im294gZtuf4pSGJRAOGKaASNi3wMeFaGaWuSaomedpc= +github.com/safchain/ethtool v0.5.10/go.mod h1:w9jh2Lx7YBR4UwzLkzCmWl85UY0W2uZdd7/DckVE5+c= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= @@ -1073,7 +1073,7 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= From 75600a6541872b7d986a9ae358312c41e8455f2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Feb 2025 10:23:23 -0500 Subject: [PATCH 39/87] deps: bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.75.4 to 1.76.0 (#1324) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.75.4 to 1.76.0.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.75.4&new-version=1.76.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 32aea620bc..6c192b73b1 100644 --- a/go.mod +++ b/go.mod @@ -292,7 +292,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.36.1 github.com/aws/aws-sdk-go-v2/config v1.29.6 github.com/aws/aws-sdk-go-v2/credentials v1.17.59 - github.com/aws/aws-sdk-go-v2/service/s3 v1.75.4 + github.com/aws/aws-sdk-go-v2/service/s3 v1.76.0 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 diff --git a/go.sum b/go.sum index aa9fafea11..8e15007e5e 100644 --- a/go.sum +++ b/go.sum @@ -155,8 +155,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 h1:SYVGSFQH github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13/go.mod h1:kizuDaLX37bG5WZaoxGPQR/LNFXpxp0vsUnqfkWXfNE= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13 h1:OBsrtam3rk8NfBEq7OLOMm5HtQ9Yyw32X4UQMya/wjw= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13/go.mod h1:3U4gFA5pmoCOja7aq4nSaIAGbaOHv2Yl2ug018cmC+Q= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.4 h1:DJYjOvNgC30JAcDCRmtQHoYK4trc7XetDXRTEAReGKA= -github.com/aws/aws-sdk-go-v2/service/s3 v1.75.4/go.mod h1:KuLNrwYJFaC2AVZ+CVVc12k9NyqwgWsoNNHjwqF6QNk= +github.com/aws/aws-sdk-go-v2/service/s3 v1.76.0 h1:ehvUZNVrGA1Usa6yYo8A8pUqrigRelWXSbcCqYpRLeI= +github.com/aws/aws-sdk-go-v2/service/s3 v1.76.0/go.mod h1:KuLNrwYJFaC2AVZ+CVVc12k9NyqwgWsoNNHjwqF6QNk= github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 h1:/eE3DogBjYlvlbhd2ssWyeuovWunHLxfgw3s/OJa4GQ= github.com/aws/aws-sdk-go-v2/service/sso v1.24.15/go.mod h1:2PCJYpi7EKeA5SkStAmZlF6fi0uUABuhtF8ILHjGc3Y= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 h1:M/zwXiL2iXUrHputuXgmO94TVNmcenPHxgLXLutodKE= From ee81a416dbda8202521e0687350b8540393d9161 Mon Sep 17 00:00:00 2001 From: kamilprz <36544756+kamilprz@users.noreply.github.com> Date: Mon, 10 Feb 2025 14:48:55 +0000 Subject: [PATCH 40/87] chore: Refactor Captures to use Contexts (#1307) # Description Refactoring the capture manager and capture commands to create a context hierarchy by passing it around, rather than creating a new one in each method with `context.TODO`. ## Related Issue https://github.com/microsoft/retina/issues/317 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Additional Notes https://go.dev/blog/context --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --------- Signed-off-by: Kamil --- captureworkload/main.go | 12 ++--- cli/cmd/capture/create.go | 53 ++++++++++--------- cli/cmd/capture/delete.go | 11 ++-- cli/cmd/capture/list.go | 10 +++- cli/cmd/capture/table_util.go | 12 ++--- pkg/capture/capture_manager.go | 9 ++-- pkg/capture/capture_manager_test.go | 7 +-- pkg/capture/crd_to_job.go | 46 ++++++++-------- pkg/capture/crd_to_job_test.go | 25 +++++++-- pkg/capture/outputlocation/blob.go | 4 +- pkg/capture/outputlocation/hostpath.go | 3 +- pkg/capture/outputlocation/output.go | 4 +- pkg/capture/outputlocation/output_test.go | 6 ++- pkg/capture/outputlocation/pvc.go | 3 +- pkg/capture/outputlocation/s3.go | 10 ++-- pkg/capture/provider/interface.go | 4 +- pkg/capture/provider/mock_network_capture.go | 10 ++-- pkg/capture/provider/network_capture_unix.go | 12 +++-- pkg/capture/provider/network_capture_win.go | 10 ++-- pkg/capture/test_helper.go | 19 +++++++ .../operator/capture/controller.go | 2 +- .../operator/capture/suite_test.go | 2 +- 22 files changed, 172 insertions(+), 102 deletions(-) create mode 100644 pkg/capture/test_helper.go diff --git a/captureworkload/main.go b/captureworkload/main.go index 0b6fd3c69e..350a196a70 100644 --- a/captureworkload/main.go +++ b/captureworkload/main.go @@ -1,6 +1,7 @@ package main import ( + "context" "os" "os/signal" "syscall" @@ -44,10 +45,9 @@ func main() { tel = telemetry.NewNoopTelemetry() } - // Create channel to listen for signals. - sigChan := make(chan os.Signal, 1) - // Notify sigChan for SIGTERM. - signal.Notify(sigChan, syscall.SIGTERM) + // Create a context that is canceled when a termination signal is received + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGTERM) + defer cancel() cm := capture.NewCaptureManager(l, tel) @@ -56,12 +56,12 @@ func main() { l.Error("Failed to cleanup network capture", zap.Error(err)) } }() - srcDir, err := cm.CaptureNetwork(sigChan) + srcDir, err := cm.CaptureNetwork(ctx) if err != nil { l.Error("Failed to capture network traffic", zap.Error(err)) os.Exit(1) } - if err := cm.OutputCapture(srcDir); err != nil { + if err := cm.OutputCapture(ctx, srcDir); err != nil { l.Error("Failed to output network traffic", zap.Error(err)) } l.Info("Done for capturing network traffic") diff --git a/cli/cmd/capture/create.go b/cli/cmd/capture/create.go index a2f57fe949..736cdadfc4 100644 --- a/cli/cmd/capture/create.go +++ b/cli/cmd/capture/create.go @@ -6,7 +6,9 @@ package capture import ( "context" "fmt" + "os/signal" "strings" + "syscall" "time" "github.com/pkg/errors" @@ -118,12 +120,15 @@ var createCapture = &cobra.Command{ return errors.Wrap(err, "failed to initialize kubernetes client") } - capture, err := createCaptureF(kubeClient) + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGTERM) + defer cancel() + + capture, err := createCaptureF(ctx, kubeClient) if err != nil { return err } - jobsCreated, err := createJobs(kubeClient, capture) + jobsCreated, err := createJobs(ctx, kubeClient, capture) if err != nil { retinacmd.Logger.Error("Failed to create job", zap.Error(err)) return err @@ -144,23 +149,23 @@ var createCapture = &cobra.Command{ // let the customer recycle them. retinacmd.Logger.Info("Waiting for capture jobs to finish") - allJobsCompleted := waitUntilJobsComplete(kubeClient, jobsCreated) + allJobsCompleted := waitUntilJobsComplete(ctx, kubeClient, jobsCreated) // Delete all jobs created only if they all completed, otherwise keep the jobs for debugging. if allJobsCompleted { retinacmd.Logger.Info("Deleting jobs as all jobs are completed") - jobsFailedToDelete := deleteJobs(kubeClient, jobsCreated) + jobsFailedToDelete := deleteJobs(ctx, kubeClient, jobsCreated) if len(jobsFailedToDelete) != 0 { retinacmd.Logger.Info("Please manually delete capture jobs failed to delete", zap.String("namespace", *opts.Namespace), zap.String("job list", strings.Join(jobsFailedToDelete, ","))) } - err = deleteSecret(kubeClient, capture.Spec.OutputConfiguration.BlobUpload) + err = deleteSecret(ctx, kubeClient, capture.Spec.OutputConfiguration.BlobUpload) if err != nil { retinacmd.Logger.Error("Failed to delete capture secret, please manually delete it", zap.String("namespace", *opts.Namespace), zap.String("secret name", *capture.Spec.OutputConfiguration.BlobUpload), zap.Error(err)) } - err = deleteSecret(kubeClient, &capture.Spec.OutputConfiguration.S3Upload.SecretName) + err = deleteSecret(ctx, kubeClient, &capture.Spec.OutputConfiguration.S3Upload.SecretName) if err != nil { retinacmd.Logger.Error("Failed to delete capture secret, please manually delete it", zap.String("namespace", *opts.Namespace), @@ -177,11 +182,11 @@ var createCapture = &cobra.Command{ retinacmd.Logger.Info("Not all job are completed in the given time") retinacmd.Logger.Info("Please manually delete the Capture") - return getCaptureAndPrintCaptureResult(kubeClient, capture.Name, *opts.Namespace) + return getCaptureAndPrintCaptureResult(ctx, kubeClient, capture.Name, *opts.Namespace) }, } -func createSecretFromBlobUpload(kubeClient kubernetes.Interface, blobUpload, captureName string) (string, error) { +func createSecretFromBlobUpload(ctx context.Context, kubeClient kubernetes.Interface, blobUpload, captureName string) (string, error) { if blobUpload == "" { return "", nil } @@ -196,14 +201,14 @@ func createSecretFromBlobUpload(kubeClient kubernetes.Interface, blobUpload, cap captureConstants.CaptureOutputLocationBlobUploadSecretKey: []byte(blobUpload), }, } - secret, err := kubeClient.CoreV1().Secrets(*opts.Namespace).Create(context.TODO(), secret, metav1.CreateOptions{}) + secret, err := kubeClient.CoreV1().Secrets(*opts.Namespace).Create(ctx, secret, metav1.CreateOptions{}) if err != nil { return "", err } return secret.Name, nil } -func createSecretFromS3Upload(kubeClient kubernetes.Interface, s3AccessKeyID, s3SecretAccessKey, captureName string) (string, error) { +func createSecretFromS3Upload(ctx context.Context, kubeClient kubernetes.Interface, s3AccessKeyID, s3SecretAccessKey, captureName string) (string, error) { secret := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ GenerateName: captureConstants.CaptureOutputLocationS3UploadSecretName, @@ -215,22 +220,22 @@ func createSecretFromS3Upload(kubeClient kubernetes.Interface, s3AccessKeyID, s3 captureConstants.CaptureOutputLocationS3UploadSecretAccessKey: []byte(s3SecretAccessKey), }, } - secret, err := kubeClient.CoreV1().Secrets(*opts.Namespace).Create(context.TODO(), secret, metav1.CreateOptions{}) + secret, err := kubeClient.CoreV1().Secrets(*opts.Namespace).Create(ctx, secret, metav1.CreateOptions{}) if err != nil { return "", fmt.Errorf("failed to create s3 upload secret: %w", err) } return secret.Name, nil } -func deleteSecret(kubeClient kubernetes.Interface, secretName *string) error { +func deleteSecret(ctx context.Context, kubeClient kubernetes.Interface, secretName *string) error { if secretName == nil { return nil } - return kubeClient.CoreV1().Secrets(*opts.Namespace).Delete(context.TODO(), *secretName, metav1.DeleteOptions{}) //nolint:wrapcheck //internal return + return kubeClient.CoreV1().Secrets(*opts.Namespace).Delete(ctx, *secretName, metav1.DeleteOptions{}) //nolint:wrapcheck //internal return } -func createCaptureF(kubeClient kubernetes.Interface) (*retinav1alpha1.Capture, error) { +func createCaptureF(ctx context.Context, kubeClient kubernetes.Interface) (*retinav1alpha1.Capture, error) { capture := &retinav1alpha1.Capture{ ObjectMeta: metav1.ObjectMeta{ Name: *opts.Name, @@ -319,7 +324,7 @@ func createCaptureF(kubeClient kubernetes.Interface) (*retinav1alpha1.Capture, e if len(blobUpload) != 0 { // Mount blob url as secret onto the capture pod for security concern if blob url is not empty. - secretName, err := createSecretFromBlobUpload(kubeClient, blobUpload, *opts.Name) + secretName, err := createSecretFromBlobUpload(ctx, kubeClient, blobUpload, *opts.Name) if err != nil { return nil, err } @@ -327,7 +332,7 @@ func createCaptureF(kubeClient kubernetes.Interface) (*retinav1alpha1.Capture, e } if s3Bucket != "" { - secretName, err := createSecretFromS3Upload(kubeClient, s3AccessKeyID, s3SecretAccessKey, *opts.Name) + secretName, err := createSecretFromS3Upload(ctx, kubeClient, s3AccessKeyID, s3SecretAccessKey, *opts.Name) if err != nil { return nil, fmt.Errorf("failed to create s3 upload secret: %w", err) } @@ -367,16 +372,16 @@ func getCLICaptureConfig() config.CaptureConfig { } } -func createJobs(kubeClient kubernetes.Interface, capture *retinav1alpha1.Capture) ([]batchv1.Job, error) { +func createJobs(ctx context.Context, kubeClient kubernetes.Interface, capture *retinav1alpha1.Capture) ([]batchv1.Job, error) { translator := pkgcapture.NewCaptureToPodTranslator(kubeClient, retinacmd.Logger, getCLICaptureConfig()) - jobs, err := translator.TranslateCaptureToJobs(capture) + jobs, err := translator.TranslateCaptureToJobs(ctx, capture) if err != nil { return nil, err } jobsCreated := []batchv1.Job{} for _, job := range jobs { - jobCreated, err := kubeClient.BatchV1().Jobs(*opts.Namespace).Create(context.TODO(), job, metav1.CreateOptions{}) + jobCreated, err := kubeClient.BatchV1().Jobs(*opts.Namespace).Create(ctx, job, metav1.CreateOptions{}) if err != nil { return nil, err } @@ -386,7 +391,7 @@ func createJobs(kubeClient kubernetes.Interface, capture *retinav1alpha1.Capture return jobsCreated, nil } -func waitUntilJobsComplete(kubeClient kubernetes.Interface, jobs []batchv1.Job) bool { +func waitUntilJobsComplete(ctx context.Context, kubeClient kubernetes.Interface, jobs []batchv1.Job) bool { allJobsCompleted := false // TODO: let's make the timeout and period to wait for all job to finish configurable. @@ -402,7 +407,7 @@ func waitUntilJobsComplete(kubeClient kubernetes.Interface, jobs []batchv1.Job) } retinacmd.Logger.Info(fmt.Sprintf("Waiting timeout is set to %s", deadline)) - ctx, cancel := context.WithTimeout(context.TODO(), deadline) + ctx, cancel := context.WithTimeout(ctx, deadline) defer cancel() wait.JitterUntil(func() { @@ -410,7 +415,7 @@ func waitUntilJobsComplete(kubeClient kubernetes.Interface, jobs []batchv1.Job) jobsIncompleted := []string{} for _, job := range jobs { - jobRet, err := kubeClient.BatchV1().Jobs(job.Namespace).Get(context.TODO(), job.Name, metav1.GetOptions{}) + jobRet, err := kubeClient.BatchV1().Jobs(job.Namespace).Get(ctx, job.Name, metav1.GetOptions{}) if err != nil { retinacmd.Logger.Error("Failed to get job", zap.String("namespace", job.Namespace), zap.String("job name", job.Name), zap.Error(err)) jobsIncompleted = append(jobsIncompleted, job.Name) @@ -439,13 +444,13 @@ func waitUntilJobsComplete(kubeClient kubernetes.Interface, jobs []batchv1.Job) return allJobsCompleted } -func deleteJobs(kubeClient kubernetes.Interface, jobs []batchv1.Job) []string { +func deleteJobs(ctx context.Context, kubeClient kubernetes.Interface, jobs []batchv1.Job) []string { jobsFailedtoDelete := []string{} for _, job := range jobs { // Child pods are preserved by default when jobs are deleted, we need to set propagationPolicy=Background to // remove them. deletePropagationBackground := metav1.DeletePropagationBackground - err := kubeClient.BatchV1().Jobs(job.Namespace).Delete(context.TODO(), job.Name, metav1.DeleteOptions{ + err := kubeClient.BatchV1().Jobs(job.Namespace).Delete(ctx, job.Name, metav1.DeleteOptions{ PropagationPolicy: &deletePropagationBackground, }) if err != nil { diff --git a/cli/cmd/capture/delete.go b/cli/cmd/capture/delete.go index 88c5e7020d..7cc6cb8a4c 100644 --- a/cli/cmd/capture/delete.go +++ b/cli/cmd/capture/delete.go @@ -6,6 +6,8 @@ package capture import ( "context" "fmt" + "os/signal" + "syscall" retinacmd "github.com/microsoft/retina/cli/cmd" captureConstants "github.com/microsoft/retina/pkg/capture/constants" @@ -40,6 +42,9 @@ var deleteCapture = &cobra.Command{ return errors.Wrap(err, "") } + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGTERM) + defer cancel() + captureJobSelector := &metav1.LabelSelector{ MatchLabels: map[string]string{ label.CaptureNameLabel: *opts.Name, @@ -51,7 +56,7 @@ var deleteCapture = &cobra.Command{ LabelSelector: labelSelector.String(), } - jobList, err := kubeClient.BatchV1().Jobs(*opts.Namespace).List(context.TODO(), jobListOpt) + jobList, err := kubeClient.BatchV1().Jobs(*opts.Namespace).List(ctx, jobListOpt) if err != nil { return errors.Wrap(err, "failed to list capture jobs") } @@ -61,7 +66,7 @@ var deleteCapture = &cobra.Command{ for _, job := range jobList.Items { deletePropagationBackground := metav1.DeletePropagationBackground - if err := kubeClient.BatchV1().Jobs(job.Namespace).Delete(context.TODO(), job.Name, metav1.DeleteOptions{ + if err := kubeClient.BatchV1().Jobs(job.Namespace).Delete(ctx, job.Name, metav1.DeleteOptions{ PropagationPolicy: &deletePropagationBackground, }); err != nil { retinacmd.Logger.Info("Failed to delete job", zap.String("job name", job.Name), zap.Error(err)) @@ -70,7 +75,7 @@ var deleteCapture = &cobra.Command{ for _, volume := range jobList.Items[0].Spec.Template.Spec.Volumes { if volume.Secret != nil { - if err := kubeClient.CoreV1().Secrets(*opts.Namespace).Delete(context.TODO(), volume.Secret.SecretName, metav1.DeleteOptions{}); err != nil { + if err := kubeClient.CoreV1().Secrets(*opts.Namespace).Delete(ctx, volume.Secret.SecretName, metav1.DeleteOptions{}); err != nil { return errors.Wrap(err, "failed to delete capture secret") } break diff --git a/cli/cmd/capture/list.go b/cli/cmd/capture/list.go index a95cefd2c4..43e5667f05 100644 --- a/cli/cmd/capture/list.go +++ b/cli/cmd/capture/list.go @@ -4,6 +4,10 @@ package capture import ( + "context" + "os/signal" + "syscall" + "github.com/pkg/errors" "github.com/spf13/cobra" "k8s.io/client-go/kubernetes" @@ -36,11 +40,15 @@ var listCaptures = &cobra.Command{ return errors.Wrap(err, "failed to initialize kubernetes client") } + // Create a context that is canceled when a termination signal is received + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGTERM) + defer cancel() + captureNamespace := *opts.Namespace if allNamespaces { captureNamespace = "" } - return listCapturesInNamespaceAndPrintCaptureResults(kubeClient, captureNamespace) + return listCapturesInNamespaceAndPrintCaptureResults(ctx, kubeClient, captureNamespace) }, } diff --git a/cli/cmd/capture/table_util.go b/cli/cmd/capture/table_util.go index 8d94ef1847..3f3c5389a4 100644 --- a/cli/cmd/capture/table_util.go +++ b/cli/cmd/capture/table_util.go @@ -21,16 +21,16 @@ import ( "k8s.io/client-go/kubernetes" ) -func getCaptureAndPrintCaptureResult(kubeClient *kubernetes.Clientset, name, namespace string) error { - return listCapturesAndPrintCaptureResults(kubeClient, name, namespace) +func getCaptureAndPrintCaptureResult(ctx context.Context, kubeClient *kubernetes.Clientset, name, namespace string) error { + return listCapturesAndPrintCaptureResults(ctx, kubeClient, name, namespace) } -func listCapturesInNamespaceAndPrintCaptureResults(kubeClient *kubernetes.Clientset, namespace string) error { - return listCapturesAndPrintCaptureResults(kubeClient, "", namespace) +func listCapturesInNamespaceAndPrintCaptureResults(ctx context.Context, kubeClient *kubernetes.Clientset, namespace string) error { + return listCapturesAndPrintCaptureResults(ctx, kubeClient, "", namespace) } // listCapturesAndPrintCaptureResults list captures and print the running jobs into properly aligned text. -func listCapturesAndPrintCaptureResults(kubeClient *kubernetes.Clientset, name, namespace string) error { +func listCapturesAndPrintCaptureResults(ctx context.Context, kubeClient *kubernetes.Clientset, name, namespace string) error { jobListOpt := metav1.ListOptions{} if len(name) != 0 { captureJobSelector := &metav1.LabelSelector{ @@ -45,7 +45,7 @@ func listCapturesAndPrintCaptureResults(kubeClient *kubernetes.Clientset, name, } } - jobList, err := kubeClient.BatchV1().Jobs(namespace).List(context.TODO(), jobListOpt) + jobList, err := kubeClient.BatchV1().Jobs(namespace).List(ctx, jobListOpt) if err != nil { return err } diff --git a/pkg/capture/capture_manager.go b/pkg/capture/capture_manager.go index 0d93242892..c953a9746e 100644 --- a/pkg/capture/capture_manager.go +++ b/pkg/capture/capture_manager.go @@ -6,6 +6,7 @@ package capture import ( "archive/tar" "compress/gzip" + "context" "fmt" "io" "os" @@ -41,7 +42,7 @@ func NewCaptureManager(logger *log.ZapLogger, tel telemetry.Telemetry) *CaptureM } } -func (cm *CaptureManager) CaptureNetwork(sigChan <-chan os.Signal) (string, error) { +func (cm *CaptureManager) CaptureNetwork(ctx context.Context) (string, error) { startTimestamp, err := cm.captureStartTimestamp() if err != nil { return "", err @@ -65,7 +66,7 @@ func (cm *CaptureManager) CaptureNetwork(sigChan <-chan os.Signal) (string, erro return "", err } - if err := cm.networkCaptureProvider.CaptureNetworkPacket(captureFilter, captureDuration, captureMaxSizeMB, sigChan); err != nil { + if err := cm.networkCaptureProvider.CaptureNetworkPacket(ctx, captureFilter, captureDuration, captureMaxSizeMB); err != nil { return "", err } @@ -153,7 +154,7 @@ func (cm *CaptureManager) captureMaxSizeMB() (int, error) { return strconv.Atoi(captureMaxSizeMBStr) } -func (cm *CaptureManager) OutputCapture(srcDir string) error { +func (cm *CaptureManager) OutputCapture(ctx context.Context, srcDir string) error { var errStr string if _, err := os.Stat(srcDir); os.IsNotExist(err) { @@ -166,7 +167,7 @@ func (cm *CaptureManager) OutputCapture(srcDir string) error { } for _, location := range cm.enabledOutputLocations() { - if err := location.Output(dstTarGz); err != nil { + if err := location.Output(ctx, dstTarGz); err != nil { errStr = errStr + fmt.Sprintf("location %q output error: %s\n", location.Name(), err) } } diff --git a/pkg/capture/capture_manager_test.go b/pkg/capture/capture_manager_test.go index 45ce0b0d15..3fc92fa01a 100644 --- a/pkg/capture/capture_manager_test.go +++ b/pkg/capture/capture_manager_test.go @@ -50,13 +50,14 @@ func TestCaptureNetwork(t *testing.T) { os.Unsetenv(captureConstants.CaptureMaxSizeEnvKey) }() - sigChanel := make(chan os.Signal, 1) + ctx, cancel := TestContext(t) + defer cancel() tmpFilename := file.CaptureFilename{CaptureName: captureName, NodeHostname: nodeHostName, StartTimestamp: ×tamp} networkCaptureProvider.EXPECT().Setup(tmpFilename).Return(fmt.Sprintf("%s-%s-%s", captureName, nodeHostName, ×tamp), nil).Times(1) - networkCaptureProvider.EXPECT().CaptureNetworkPacket(filter, duration, maxSize, sigChanel).Return(nil).Times(1) + networkCaptureProvider.EXPECT().CaptureNetworkPacket(ctx, filter, duration, maxSize).Return(nil).Times(1) - _, err := cm.CaptureNetwork(sigChanel) + _, err := cm.CaptureNetwork(ctx) if err != nil { t.Errorf("CaptureNetwork should have not fail with error %s", err) } diff --git a/pkg/capture/crd_to_job.go b/pkg/capture/crd_to_job.go index e6fe9b95f5..537b5563b9 100644 --- a/pkg/capture/crd_to_job.go +++ b/pkg/capture/crd_to_job.go @@ -109,7 +109,7 @@ func NewCaptureToPodTranslator(kubeClient kubernetes.Interface, logger *log.ZapL return captureToPodTranslator } -func (translator *CaptureToPodTranslator) initJobTemplate(capture *retinav1alpha1.Capture) error { +func (translator *CaptureToPodTranslator) initJobTemplate(ctx context.Context, capture *retinav1alpha1.Capture) error { backoffLimit := int32(0) // NOTE(mainred): We allow the capture pod to run for at most 30 minutes before being deleted to ensure the output is // uploaded, and this happens when the user want to stop a capture on demand by deleting the capture. @@ -223,7 +223,7 @@ func (translator *CaptureToPodTranslator) initJobTemplate(capture *retinav1alpha if capture.Spec.OutputConfiguration.BlobUpload != nil && *capture.Spec.OutputConfiguration.BlobUpload != "" { translator.l.Info("BlobUpload is not empty") - secret, err := translator.kubeClient.CoreV1().Secrets(capture.Namespace).Get(context.Background(), *capture.Spec.OutputConfiguration.BlobUpload, metav1.GetOptions{}) + secret, err := translator.kubeClient.CoreV1().Secrets(capture.Namespace).Get(ctx, *capture.Spec.OutputConfiguration.BlobUpload, metav1.GetOptions{}) if apierrors.IsNotFound(err) { err := SecretNotFoundError{SecretName: *capture.Spec.OutputConfiguration.BlobUpload, Namespace: capture.Namespace} translator.l.Error(err.Error()) @@ -255,7 +255,7 @@ func (translator *CaptureToPodTranslator) initJobTemplate(capture *retinav1alpha if capture.Spec.OutputConfiguration.S3Upload != nil && capture.Spec.OutputConfiguration.S3Upload.SecretName != "" { translator.l.Info("S3Upload is not empty") - secret, err := translator.kubeClient.CoreV1().Secrets(capture.Namespace).Get(context.Background(), capture.Spec.OutputConfiguration.S3Upload.SecretName, metav1.GetOptions{}) + secret, err := translator.kubeClient.CoreV1().Secrets(capture.Namespace).Get(ctx, capture.Spec.OutputConfiguration.S3Upload.SecretName, metav1.GetOptions{}) if apierrors.IsNotFound(err) { err := SecretNotFoundError{SecretName: capture.Spec.OutputConfiguration.S3Upload.SecretName, Namespace: capture.Namespace} translator.l.Error(err.Error()) @@ -288,7 +288,7 @@ func (translator *CaptureToPodTranslator) initJobTemplate(capture *retinav1alpha if capture.Spec.OutputConfiguration.PersistentVolumeClaim != nil && *capture.Spec.OutputConfiguration.PersistentVolumeClaim != "" { translator.l.Info("PersistentVolumeClaim is not empty", zap.String("PersistentVolumeClaim", *capture.Spec.OutputConfiguration.PersistentVolumeClaim)) - _, err := translator.kubeClient.CoreV1().PersistentVolumeClaims(capture.Namespace).Get(context.TODO(), *capture.Spec.OutputConfiguration.PersistentVolumeClaim, metav1.GetOptions{}) + _, err := translator.kubeClient.CoreV1().PersistentVolumeClaims(capture.Namespace).Get(ctx, *capture.Spec.OutputConfiguration.PersistentVolumeClaim, metav1.GetOptions{}) if err != nil { return fmt.Errorf("failed to get pvc %s/%s", capture.Namespace, *capture.Spec.OutputConfiguration.PersistentVolumeClaim) } @@ -314,7 +314,7 @@ func (translator *CaptureToPodTranslator) initJobTemplate(capture *retinav1alpha // validateNoRunningWindowsCapture checks if there's any running capture jobs on the Windows to deploy capture. // Windows node allows only one capture job running for only one tracing session is allowed at one time. -func (translator *CaptureToPodTranslator) validateNoRunningWindowsCapture(captureTargetOnNode *CaptureTargetsOnNode) error { +func (translator *CaptureToPodTranslator) validateNoRunningWindowsCapture(ctx context.Context, captureTargetOnNode *CaptureTargetsOnNode) error { // map is easy for removing duplication. windowsNodesRunningCapture := map[string]struct{}{} capturePodSelector := &metav1.LabelSelector{ @@ -324,7 +324,7 @@ func (translator *CaptureToPodTranslator) validateNoRunningWindowsCapture(captur podListOpt := metav1.ListOptions{ LabelSelector: labelSelector.String(), } - podList, err := translator.kubeClient.CoreV1().Pods("").List(context.TODO(), podListOpt) + podList, err := translator.kubeClient.CoreV1().Pods("").List(ctx, podListOpt) if err != nil { translator.l.Error("Failed to list capture Pods", zap.String("podSelector", capturePodSelector.String()), zap.Error(err)) return err @@ -349,15 +349,15 @@ func (translator *CaptureToPodTranslator) validateNoRunningWindowsCapture(captur return nil } -func (translator *CaptureToPodTranslator) TranslateCaptureToJobs(capture *retinav1alpha1.Capture) ([]*batchv1.Job, error) { +func (translator *CaptureToPodTranslator) TranslateCaptureToJobs(ctx context.Context, capture *retinav1alpha1.Capture) ([]*batchv1.Job, error) { if err := translator.validateCapture(capture); err != nil { return nil, err } - if err := translator.initJobTemplate(capture); err != nil { + if err := translator.initJobTemplate(ctx, capture); err != nil { return nil, err } - captureTargetOnNode, err := translator.CalculateCaptureTargetsOnNode(capture.Spec.CaptureConfiguration.CaptureTarget) + captureTargetOnNode, err := translator.CalculateCaptureTargetsOnNode(ctx, capture.Spec.CaptureConfiguration.CaptureTarget) if err != nil { return nil, err } @@ -570,16 +570,16 @@ func (translator *CaptureToPodTranslator) validateCapture(capture *retinav1alpha return nil } -func (translator *CaptureToPodTranslator) getCaptureTargetsOnNode(captureTarget retinav1alpha1.CaptureTarget) (*CaptureTargetsOnNode, error) { +func (translator *CaptureToPodTranslator) getCaptureTargetsOnNode(ctx context.Context, captureTarget retinav1alpha1.CaptureTarget) (*CaptureTargetsOnNode, error) { var err error captureTargetsOnNode := &CaptureTargetsOnNode{} if captureTarget.NodeSelector != nil { - if captureTargetsOnNode, err = translator.calculateCaptureTargetsByNodeSelector(captureTarget); err != nil { + if captureTargetsOnNode, err = translator.calculateCaptureTargetsByNodeSelector(ctx, captureTarget); err != nil { return nil, err } } if captureTarget.PodSelector != nil { - if captureTargetsOnNode, err = translator.calculateCaptureTargetsByPodSelector(captureTarget); err != nil { + if captureTargetsOnNode, err = translator.calculateCaptureTargetsByPodSelector(ctx, captureTarget); err != nil { return nil, err } } @@ -590,7 +590,7 @@ func (translator *CaptureToPodTranslator) getCaptureTargetsOnNode(captureTarget return captureTargetsOnNode, nil } -func (translator *CaptureToPodTranslator) updateCaptureTargetsOSOnNode(captureTargetsOnNode *CaptureTargetsOnNode) error { +func (translator *CaptureToPodTranslator) updateCaptureTargetsOSOnNode(ctx context.Context, captureTargetsOnNode *CaptureTargetsOnNode) error { nodeNames := []string{} for nodeName := range *captureTargetsOnNode { nodeNames = append(nodeNames, nodeName) @@ -607,7 +607,7 @@ func (translator *CaptureToPodTranslator) updateCaptureTargetsOSOnNode(captureTa nodeListOpt := metav1.ListOptions{ LabelSelector: labelSelector.String(), } - nodeList, err := translator.kubeClient.CoreV1().Nodes().List(context.TODO(), nodeListOpt) + nodeList, err := translator.kubeClient.CoreV1().Nodes().List(ctx, nodeListOpt) if err != nil { return err } @@ -619,27 +619,27 @@ func (translator *CaptureToPodTranslator) updateCaptureTargetsOSOnNode(captureTa } // CalculateCaptureTargetsOnNode returns capture target on each node. -func (translator *CaptureToPodTranslator) CalculateCaptureTargetsOnNode(captureTarget retinav1alpha1.CaptureTarget) (*CaptureTargetsOnNode, error) { +func (translator *CaptureToPodTranslator) CalculateCaptureTargetsOnNode(ctx context.Context, captureTarget retinav1alpha1.CaptureTarget) (*CaptureTargetsOnNode, error) { if err := translator.validateTargetSelector(captureTarget); err != nil { return nil, err } - captureTargetsOnNode, err := translator.getCaptureTargetsOnNode(captureTarget) + captureTargetsOnNode, err := translator.getCaptureTargetsOnNode(ctx, captureTarget) if err != nil { return nil, err } - if err := translator.updateCaptureTargetsOSOnNode(captureTargetsOnNode); err != nil { + if err := translator.updateCaptureTargetsOSOnNode(ctx, captureTargetsOnNode); err != nil { return nil, err } - if err := translator.validateNoRunningWindowsCapture(captureTargetsOnNode); err != nil { + if err := translator.validateNoRunningWindowsCapture(ctx, captureTargetsOnNode); err != nil { return nil, err } return captureTargetsOnNode, nil } -func (translator *CaptureToPodTranslator) calculateCaptureTargetsByNodeSelector(captureTarget retinav1alpha1.CaptureTarget) (*CaptureTargetsOnNode, error) { +func (translator *CaptureToPodTranslator) calculateCaptureTargetsByNodeSelector(ctx context.Context, captureTarget retinav1alpha1.CaptureTarget) (*CaptureTargetsOnNode, error) { captureTargetOnNode := &CaptureTargetsOnNode{} labelSelector, err := labels.Parse(metav1.FormatLabelSelector(captureTarget.NodeSelector)) if err != nil { @@ -649,7 +649,7 @@ func (translator *CaptureToPodTranslator) calculateCaptureTargetsByNodeSelector( nodeListOpt := metav1.ListOptions{ LabelSelector: labelSelector.String(), } - nodeList, err := translator.kubeClient.CoreV1().Nodes().List(context.TODO(), nodeListOpt) + nodeList, err := translator.kubeClient.CoreV1().Nodes().List(ctx, nodeListOpt) if err != nil { translator.l.Error("Failed to list node", zap.String("nodeSelector", fmt.Sprint(captureTarget.NodeSelector.String())), zap.Error(err)) return nil, err @@ -660,7 +660,7 @@ func (translator *CaptureToPodTranslator) calculateCaptureTargetsByNodeSelector( return captureTargetOnNode, nil } -func (translator *CaptureToPodTranslator) calculateCaptureTargetsByPodSelector(captureTarget retinav1alpha1.CaptureTarget) (*CaptureTargetsOnNode, error) { +func (translator *CaptureToPodTranslator) calculateCaptureTargetsByPodSelector(ctx context.Context, captureTarget retinav1alpha1.CaptureTarget) (*CaptureTargetsOnNode, error) { captureTargetOnNode := &CaptureTargetsOnNode{} nsList := &corev1.NamespaceList{Items: []corev1.Namespace{ { @@ -680,7 +680,7 @@ func (translator *CaptureToPodTranslator) calculateCaptureTargetsByPodSelector(c nsListOpt := metav1.ListOptions{ LabelSelector: labelSelector.String(), } - nsList, err = translator.kubeClient.CoreV1().Namespaces().List(context.TODO(), nsListOpt) + nsList, err = translator.kubeClient.CoreV1().Namespaces().List(ctx, nsListOpt) if err != nil { translator.l.Error("Failed to list Namespace", zap.String("namespaceSelector", captureTarget.NamespaceSelector.String()), zap.Error(err)) return nil, err @@ -692,7 +692,7 @@ func (translator *CaptureToPodTranslator) calculateCaptureTargetsByPodSelector(c podListOpt := metav1.ListOptions{ LabelSelector: labelSelector.String(), } - podList, err := translator.kubeClient.CoreV1().Pods(ns.Name).List(context.TODO(), podListOpt) + podList, err := translator.kubeClient.CoreV1().Pods(ns.Name).List(ctx, podListOpt) if err != nil { translator.l.Error("Failed to list Pod.", zap.String("podSelector", captureTarget.PodSelector.String()), zap.Error(err)) return nil, err diff --git a/pkg/capture/crd_to_job_test.go b/pkg/capture/crd_to_job_test.go index 73989e4374..4113ee0be1 100644 --- a/pkg/capture/crd_to_job_test.go +++ b/pkg/capture/crd_to_job_test.go @@ -135,6 +135,9 @@ func Test_CaptureTargetsOnNode_AddNodeInterface(t *testing.T) { } func Test_CaptureToPodTranslator_GetCaptureTargetsOnNode(t *testing.T) { + ctx, cancel := TestContext(t) + defer cancel() + cases := []struct { name string captureTarget retinav1alpha1.CaptureTarget @@ -393,7 +396,7 @@ func Test_CaptureToPodTranslator_GetCaptureTargetsOnNode(t *testing.T) { k8sClient := fakeclientset.NewSimpleClientset(objects...) captureToPodTranslator := NewCaptureToPodTranslatorForTest(k8sClient) - gotCaptureTargetsOnNode, err := captureToPodTranslator.getCaptureTargetsOnNode(tt.captureTarget) + gotCaptureTargetsOnNode, err := captureToPodTranslator.getCaptureTargetsOnNode(ctx, tt.captureTarget) if tt.wantErr != (err != nil) { t.Errorf("getCaptureTargetsOnNode() want(%t) error, got error %s", tt.wantErr, err) } @@ -408,6 +411,9 @@ func Test_CaptureToPodTranslator_GetCaptureTargetsOnNode(t *testing.T) { } func Test_CaptureToPodTranslator_updateCaptureTargetsOSOnNode(t *testing.T) { + ctx, cancel := TestContext(t) + defer cancel() + cases := []struct { name string captureTargetsOnNode *CaptureTargetsOnNode @@ -457,7 +463,7 @@ func Test_CaptureToPodTranslator_updateCaptureTargetsOSOnNode(t *testing.T) { k8sClient := fakeclientset.NewSimpleClientset(objects...) captureToPodTranslator := NewCaptureToPodTranslatorForTest(k8sClient) - err := captureToPodTranslator.updateCaptureTargetsOSOnNode(tt.captureTargetsOnNode) + err := captureToPodTranslator.updateCaptureTargetsOSOnNode(ctx, tt.captureTargetsOnNode) if tt.wantErr != (err != nil) { t.Errorf("updateCaptureTargetsOSOnNode() want(%t) error, got error %s", tt.wantErr, err) } @@ -584,6 +590,9 @@ func Test_CaptureToPodTranslator_ObtainCaptureJobPodEnv(t *testing.T) { } func Test_CaptureToPodTranslator_RenderJob_NodeSelected(t *testing.T) { + ctx, cancel := TestContext(t) + defer cancel() + cases := []struct { name string captureTargetOnNode *CaptureTargetsOnNode @@ -670,7 +679,7 @@ func Test_CaptureToPodTranslator_RenderJob_NodeSelected(t *testing.T) { k8sClient := fakeclientset.NewSimpleClientset() log.SetupZapLogger(log.GetDefaultLogOpts()) captureToPodTranslator := NewCaptureToPodTranslatorForTest(k8sClient) - err := captureToPodTranslator.initJobTemplate(&retinav1alpha1.Capture{ + err := captureToPodTranslator.initJobTemplate(ctx, &retinav1alpha1.Capture{ Spec: retinav1alpha1.CaptureSpec{ CaptureConfiguration: retinav1alpha1.CaptureConfiguration{}, OutputConfiguration: retinav1alpha1.OutputConfiguration{}, @@ -825,6 +834,9 @@ func isIgnorableEnvVar(envVar corev1.EnvVar) bool { } func Test_CaptureToPodTranslator_TranslateCaptureToJobs(t *testing.T) { + ctx, cancel := TestContext(t) + defer cancel() + captureName := "capture-test" hostPath := "/tmp/capture" timestamp := file.Now() @@ -1711,7 +1723,7 @@ func Test_CaptureToPodTranslator_TranslateCaptureToJobs(t *testing.T) { } k8sClient := fakeclientset.NewSimpleClientset(objects...) captureToPodTranslator := NewCaptureToPodTranslatorForTest(k8sClient) - jobs, err := captureToPodTranslator.TranslateCaptureToJobs(&tt.capture) + jobs, err := captureToPodTranslator.TranslateCaptureToJobs(ctx, &tt.capture) if tt.wantErr != (err != nil) { t.Errorf("TranslateCaptureToJobs() want(%t) error, got error %s", tt.wantErr, err) } @@ -1767,6 +1779,9 @@ func Test_CaptureToPodTranslator_TranslateCaptureToJobs(t *testing.T) { } func Test_CaptureToPodTranslator_TranslateCaptureToJobs_JobNumLimit(t *testing.T) { + ctx, cancel := TestContext(t) + defer cancel() + captureName := "capture-test" hostPath := "/tmp/capture" cases := []struct { @@ -1858,7 +1873,7 @@ func Test_CaptureToPodTranslator_TranslateCaptureToJobs_JobNumLimit(t *testing.T k8sClient := fakeclientset.NewSimpleClientset(objects...) captureToPodTranslator := NewCaptureToPodTranslatorForTest(k8sClient) captureToPodTranslator.config.CaptureJobNumLimit = tt.jobNumLimit - _, err := captureToPodTranslator.TranslateCaptureToJobs(&tt.capture) + _, err := captureToPodTranslator.TranslateCaptureToJobs(ctx, &tt.capture) if tt.wantErr != (err != nil) { t.Errorf("TranslateCaptureToJobs() want(%t) error, got error %s", tt.wantErr, err) } diff --git a/pkg/capture/outputlocation/blob.go b/pkg/capture/outputlocation/blob.go index 1477efedfa..41baecad92 100644 --- a/pkg/capture/outputlocation/blob.go +++ b/pkg/capture/outputlocation/blob.go @@ -42,7 +42,7 @@ func (bu *BlobUpload) Enabled() bool { return true } -func (bu *BlobUpload) Output(srcFilePath string) error { +func (bu *BlobUpload) Output(ctx context.Context, srcFilePath string) error { bu.l.Info("Upload capture file to blob.", zap.String("location", bu.Name())) blobURL, err := readBlobSASURL() if err != nil { @@ -71,7 +71,7 @@ func (bu *BlobUpload) Output(srcFilePath string) error { blobName := filepath.Base(srcFilePath) _, err = azClient.UploadFile( - context.TODO(), + ctx, "", blobName, blobFile, diff --git a/pkg/capture/outputlocation/hostpath.go b/pkg/capture/outputlocation/hostpath.go index bff6d52c2f..5c39ae051b 100644 --- a/pkg/capture/outputlocation/hostpath.go +++ b/pkg/capture/outputlocation/hostpath.go @@ -4,6 +4,7 @@ package outputlocation import ( + "context" "io" "os" "path/filepath" @@ -37,7 +38,7 @@ func (hp *HostPath) Enabled() bool { return true } -func (hp *HostPath) Output(srcFilePath string) error { +func (hp *HostPath) Output(_ context.Context, srcFilePath string) error { hostPath := os.Getenv(string(captureConstants.CaptureOutputLocationEnvKeyHostPath)) hp.l.Info("Copy file", zap.String("location", hp.Name()), diff --git a/pkg/capture/outputlocation/output.go b/pkg/capture/outputlocation/output.go index f7e01a168b..a91f23a33f 100644 --- a/pkg/capture/outputlocation/output.go +++ b/pkg/capture/outputlocation/output.go @@ -3,11 +3,13 @@ package outputlocation +import "context" + type Location interface { // Name returns the name of the output location. Name() string // Enabled checks whether a output location is enabled. Enabled() bool // Output outputs source file to the location specified by the users. - Output(srcFilePath string) error + Output(ctx context.Context, srcFilePath string) error } diff --git a/pkg/capture/outputlocation/output_test.go b/pkg/capture/outputlocation/output_test.go index eb2b9ed3c7..3f8edeff14 100644 --- a/pkg/capture/outputlocation/output_test.go +++ b/pkg/capture/outputlocation/output_test.go @@ -4,6 +4,7 @@ package outputlocation import ( + "context" "os" "testing" @@ -110,6 +111,9 @@ func TestOutput(t *testing.T) { }, } + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + for _, tt := range cases { t.Run(tt.name, func(t *testing.T) { for k, v := range tt.env { @@ -122,7 +126,7 @@ func TestOutput(t *testing.T) { } }() - err := tt.outputLocation.Output(tt.srcPath) + err := tt.outputLocation.Output(ctx, tt.srcPath) assert.Equal(t, tt.hasError, err != nil, "Output check failed on source file open") }) } diff --git a/pkg/capture/outputlocation/pvc.go b/pkg/capture/outputlocation/pvc.go index f56d507f5e..3b4209e1c4 100644 --- a/pkg/capture/outputlocation/pvc.go +++ b/pkg/capture/outputlocation/pvc.go @@ -4,6 +4,7 @@ package outputlocation import ( + "context" "io" "os" "path/filepath" @@ -37,7 +38,7 @@ func (pvc *PersistentVolumeClaim) Enabled() bool { return true } -func (pvc *PersistentVolumeClaim) Output(srcFilePath string) error { +func (pvc *PersistentVolumeClaim) Output(_ context.Context, srcFilePath string) error { dstDir := captureConstants.PersistentVolumeClaimVolumeMountPathLinux pvc.l.Info("Copy file", zap.String("location", pvc.Name()), diff --git a/pkg/capture/outputlocation/s3.go b/pkg/capture/outputlocation/s3.go index d615db850c..cb6e761994 100644 --- a/pkg/capture/outputlocation/s3.go +++ b/pkg/capture/outputlocation/s3.go @@ -77,7 +77,7 @@ func (su *S3Upload) Enabled() bool { return true } -func (su *S3Upload) Output(srcFilePath string) error { +func (su *S3Upload) Output(ctx context.Context, srcFilePath string) error { objectKey := path.Join(su.path, srcFilePath) su.l.Info("Upload capture file to s3", @@ -87,7 +87,7 @@ func (su *S3Upload) Output(srcFilePath string) error { zap.String("objectKey", objectKey), ) - s3Client, err := su.getClient() + s3Client, err := su.getClient(ctx) if err != nil { su.l.Error("Failed to get AWS client", zap.Error(err)) return err @@ -101,7 +101,7 @@ func (su *S3Upload) Output(srcFilePath string) error { } defer s3File.Close() - _, err = s3Client.PutObject(context.TODO(), &s3.PutObjectInput{ + _, err = s3Client.PutObject(ctx, &s3.PutObjectInput{ Bucket: aws.String(su.bucket), Key: aws.String(objectKey), Body: s3File, @@ -117,7 +117,7 @@ func (su *S3Upload) Output(srcFilePath string) error { return nil } -func (su *S3Upload) getClient() (*s3.Client, error) { +func (su *S3Upload) getClient(ctx context.Context) (*s3.Client, error) { var opts []func(options *config.LoadOptions) error if su.endpoint != "" { @@ -147,7 +147,7 @@ func (su *S3Upload) getClient() (*s3.Client, error) { ))) } - cfg, err := config.LoadDefaultConfig(context.TODO(), + cfg, err := config.LoadDefaultConfig(ctx, opts..., ) if err != nil { diff --git a/pkg/capture/provider/interface.go b/pkg/capture/provider/interface.go index 20295aca7b..5a626b4d44 100644 --- a/pkg/capture/provider/interface.go +++ b/pkg/capture/provider/interface.go @@ -4,7 +4,7 @@ package provider import ( - "os" + "context" "github.com/microsoft/retina/pkg/capture/file" ) @@ -14,7 +14,7 @@ type NetworkCaptureProviderInterface interface { // Setup prepares the provider with folder to store network capture for temporary. Setup(filename file.CaptureFilename) (string, error) // CaptureNetworkPacket capture network traffic per user input and store the captured network packets in local directory. - CaptureNetworkPacket(filter string, duration, maxSize int, sigChan <-chan os.Signal) error + CaptureNetworkPacket(ctx context.Context, filter string, duration, maxSize int) error // CollectMetadata collects network metadata and store network metadata info in local directory. CollectMetadata() error // Cleanup removes created resources. diff --git a/pkg/capture/provider/mock_network_capture.go b/pkg/capture/provider/mock_network_capture.go index 6cab944e55..6cf82e1024 100644 --- a/pkg/capture/provider/mock_network_capture.go +++ b/pkg/capture/provider/mock_network_capture.go @@ -10,7 +10,7 @@ package provider import ( - os "os" + context "context" reflect "reflect" file "github.com/microsoft/retina/pkg/capture/file" @@ -41,17 +41,17 @@ func (m *MockNetworkCaptureProviderInterface) EXPECT() *MockNetworkCaptureProvid } // CaptureNetworkPacket mocks base method. -func (m *MockNetworkCaptureProviderInterface) CaptureNetworkPacket(filter string, duration, maxSize int, sigChan <-chan os.Signal) error { +func (m *MockNetworkCaptureProviderInterface) CaptureNetworkPacket(ctx context.Context, filter string, duration, maxSize int) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CaptureNetworkPacket", filter, duration, maxSize, sigChan) + ret := m.ctrl.Call(m, "CaptureNetworkPacket", ctx, filter, duration, maxSize) ret0, _ := ret[0].(error) return ret0 } // CaptureNetworkPacket indicates an expected call of CaptureNetworkPacket. -func (mr *MockNetworkCaptureProviderInterfaceMockRecorder) CaptureNetworkPacket(filter, duration, maxSize, sigChan any) *gomock.Call { +func (mr *MockNetworkCaptureProviderInterfaceMockRecorder) CaptureNetworkPacket(ctx, filter, duration, maxSize any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CaptureNetworkPacket", reflect.TypeOf((*MockNetworkCaptureProviderInterface)(nil).CaptureNetworkPacket), filter, duration, maxSize, sigChan) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CaptureNetworkPacket", reflect.TypeOf((*MockNetworkCaptureProviderInterface)(nil).CaptureNetworkPacket), ctx, filter, duration, maxSize) } // Cleanup mocks base method. diff --git a/pkg/capture/provider/network_capture_unix.go b/pkg/capture/provider/network_capture_unix.go index f8a170d5f1..0288964539 100644 --- a/pkg/capture/provider/network_capture_unix.go +++ b/pkg/capture/provider/network_capture_unix.go @@ -6,6 +6,7 @@ package provider import ( + "context" "fmt" "os" "os/exec" @@ -54,7 +55,10 @@ func (ncp *NetworkCaptureProvider) Setup(filename file.CaptureFilename) (string, return ncp.TmpCaptureDir, nil } -func (ncp *NetworkCaptureProvider) CaptureNetworkPacket(filter string, duration, maxSizeMB int, sigChan <-chan os.Signal) error { +func (ncp *NetworkCaptureProvider) CaptureNetworkPacket(ctx context.Context, filter string, duration, maxSizeMB int) error { + ctx, cancel := context.WithTimeout(ctx, time.Duration(duration)*time.Second) + defer cancel() + filename := file.CaptureFilename{CaptureName: ncp.CaptureName, NodeHostname: ncp.NodeHostName, StartTimestamp: ncp.StartTimestamp} captureFileName := fmt.Sprintf("%s.pcap", filename) captureFilePath := filepath.Join(ncp.TmpCaptureDir, captureFileName) @@ -167,8 +171,8 @@ func (ncp *NetworkCaptureProvider) CaptureNetworkPacket(filter string, duration, select { case <-doneChan: - case sig := <-sigChan: - ncp.l.Info("Got OS signal, tcpdump will be stopped", zap.String("signal", sig.String())) + case <-ctx.Done(): + ncp.l.Info("Tcpdump will be stopped - got OS signal, or timeout reached", zap.Error(ctx.Err())) case err := <-errChan: return err } @@ -177,7 +181,7 @@ func (ncp *NetworkCaptureProvider) CaptureNetworkPacket(filter string, duration, // flushed to the capture file. Instead, we signal terminate and wait until the process to exit. if err := captureStartCmd.Process.Signal(syscall.SIGTERM); err != nil { ncp.l.Error("Failed to signal terminate to process, will kill the process", zap.Error(err)) - if killErr := captureStartCmd.Process.Kill(); err != nil { + if killErr := captureStartCmd.Process.Kill(); killErr != nil { return fmt.Errorf("tcpdump stop failed, error: %s", killErr) } return err diff --git a/pkg/capture/provider/network_capture_win.go b/pkg/capture/provider/network_capture_win.go index c09e4a6ef1..a15da1c746 100644 --- a/pkg/capture/provider/network_capture_win.go +++ b/pkg/capture/provider/network_capture_win.go @@ -6,6 +6,7 @@ package provider import ( + "context" "fmt" "io" "net/http" @@ -59,7 +60,10 @@ func (ncp *NetworkCaptureProvider) Setup(filename file.CaptureFilename) (string, return ncp.TmpCaptureDir, nil } -func (ncp *NetworkCaptureProvider) CaptureNetworkPacket(filter string, duration, maxSizeMB int, sigChan <-chan os.Signal) error { +func (ncp *NetworkCaptureProvider) CaptureNetworkPacket(ctx context.Context, filter string, duration, maxSizeMB int) error { + ctx, cancel := context.WithTimeout(ctx, time.Second*time.Duration(duration)) + defer cancel() + stopTrace, err := ncp.needToStopTraceSession() if err != nil { return err @@ -125,8 +129,8 @@ func (ncp *NetworkCaptureProvider) CaptureNetworkPacket(filter string, duration, select { case <-doneChan: - case sig := <-sigChan: - ncp.l.Info("Got OS signal, netsh will be stopped", zap.String("signal", sig.String())) + case <-ctx.Done(): + ncp.l.Info("Netsh will be stopped - got OS signal, or timeout reached", zap.Error(ctx.Err())) } ncp.l.Info("Stop netsh") diff --git a/pkg/capture/test_helper.go b/pkg/capture/test_helper.go new file mode 100644 index 0000000000..947cdaa3c3 --- /dev/null +++ b/pkg/capture/test_helper.go @@ -0,0 +1,19 @@ +package capture + +import ( + "context" + "os/signal" + "syscall" + "testing" +) + +func TestContext(t *testing.T) (context.Context, context.CancelFunc) { + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGTERM) + + deadline, ok := t.Deadline() + if ok { + return context.WithDeadline(ctx, deadline) + } + + return ctx, cancel +} diff --git a/pkg/controllers/operator/capture/controller.go b/pkg/controllers/operator/capture/controller.go index 6cf8224922..3c86f44784 100644 --- a/pkg/controllers/operator/capture/controller.go +++ b/pkg/controllers/operator/capture/controller.go @@ -224,7 +224,7 @@ func (cr *CaptureReconciler) createJobsFromCapture(ctx context.Context, capture Name: capture.Name, } - jobs, err := cr.captureToPodTranslator.TranslateCaptureToJobs(capture) + jobs, err := cr.captureToPodTranslator.TranslateCaptureToJobs(ctx, capture) if err != nil { cr.logger.Error("Failed to translate Capture to jobs", zap.Error(err), zap.String("Capture", captureRef.String())) var errorReason string diff --git a/pkg/controllers/operator/capture/suite_test.go b/pkg/controllers/operator/capture/suite_test.go index 25c01a08ef..6b13f56a71 100644 --- a/pkg/controllers/operator/capture/suite_test.go +++ b/pkg/controllers/operator/capture/suite_test.go @@ -44,7 +44,7 @@ var _ = BeforeSuite(func() { logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) - ctx, cancel = context.WithCancel(context.TODO()) + ctx, cancel = context.WithCancel(context.Background()) By("Bootstrapping test environment") testEnv = &envtest.Environment{ From 33f3613c56c4bd94c2fbf3ed79b1cd0eb7b81b8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 10:22:57 -0500 Subject: [PATCH 41/87] deps: bump gotest.tools/v3 from 3.5.1 to 3.5.2 (#1328) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [gotest.tools/v3](https://github.com/gotestyourself/gotest.tools) from 3.5.1 to 3.5.2.
Release notes

Sourced from gotest.tools/v3's releases.

v3.5.2

What's Changed

New Contributors

Full Changelog: https://github.com/gotestyourself/gotest.tools/compare/v3.5.1...v3.5.2

Commits
  • 0b81523 Merge pull request #286 from thaJeztah/undeprecate_ErrorType
  • c5dad8f Merge pull request #285 from thaJeztah/update_go_versions
  • 160ab0e Remove go1.18 and go1.19
  • 8569bbc Merge pull request #284 from thaJeztah/cleanup_readme
  • 4256834 assert, assert/cmp: un-deprecate assert.ErrorType for now
  • eb32186 circleci: update golangci-lint to v1.60.3
  • 5fc8473 circleci: add go1.21, go1.22, go1.23
  • 6f26df9 circleci: test generics on go1.20 and windows as well
  • 732dfcf internal/difflib: rename funcs that collided with built-ins
  • 7d95f55 internal/difflib: gofmt
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gotest.tools/v3&package-manager=go_modules&previous-version=3.5.1&new-version=3.5.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6c192b73b1..0a53cdf342 100644 --- a/go.mod +++ b/go.mod @@ -326,7 +326,7 @@ require ( google.golang.org/grpc v1.66.2 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gotest.tools v2.2.0+incompatible - gotest.tools/v3 v3.5.1 + gotest.tools/v3 v3.5.2 helm.sh/helm/v3 v3.15.4 k8s.io/apiextensions-apiserver v0.30.3 k8s.io/cli-runtime v0.30.3 diff --git a/go.sum b/go.sum index 8e15007e5e..2264bec8fb 100644 --- a/go.sum +++ b/go.sum @@ -1187,8 +1187,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= -gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= helm.sh/helm/v3 v3.15.4 h1:UFHd6oZ1IN3FsUZ7XNhOQDyQ2QYknBNWRHH57e9cbHY= helm.sh/helm/v3 v3.15.4/go.mod h1:phOwlxqGSgppCY/ysWBNRhG3MtnpsttOzxaTK+Mt40E= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From a7f86953bc975bda0b34e303df3dbfabd3f24ceb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 10:23:14 -0500 Subject: [PATCH 42/87] deps: bump sigs.k8s.io/cloud-provider-azure/pkg/azclient from 0.4.15 to 0.4.16 (#1329) Bumps [sigs.k8s.io/cloud-provider-azure/pkg/azclient](https://github.com/kubernetes-sigs/cloud-provider-azure) from 0.4.15 to 0.4.16.
Commits
  • 2ba85a7 build(deps): bump golang.org/x/crypto in /pkg/azclient in the all group (#8256)
  • a9efea6 build(deps): bump oss/go/microsoft/golang from 87c9102 to 8b584e9 (#8231)
  • 3c3d5a4 Merge pull request #8245 from andyzhangx/fix-disk-attach-detach-failure
  • de028f1 Update Helm chart for v1.32.0 (#8249)
  • b663a60 build(deps): bump sigs.k8s.io/cloud-provider-azure/pkg/azclient (#8247)
  • f199952 build(deps): bump the all group across 1 directory with 8 updates (#8244)
  • f552263 build(deps): bump sigs.k8s.io/cloud-provider-azure/pkg/azclient (#8243)
  • 54b9daa fix: disk attach/detach failure with track2 sdk
  • 4c500b1 test: add vm etag in ensureBackendPoolDeletedFromNode and add UT (#8167)
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigs.k8s.io/cloud-provider-azure/pkg/azclient&package-manager=go_modules&previous-version=0.4.15&new-version=0.4.16)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 0a53cdf342..6504b12f77 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/spf13/cobra v1.8.1 go.uber.org/zap v1.27.0 k8s.io/client-go v0.30.3 - sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.15 + sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.16 sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 ) @@ -224,9 +224,9 @@ require ( go.starlark.net v0.0.0-20230814145427-12f4cb8177e4 // indirect go.uber.org/dig v1.17.1 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect - golang.org/x/crypto v0.32.0 // indirect + golang.org/x/crypto v0.33.0 // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.22.0 // indirect golang.org/x/time v0.10.0 // indirect golang.org/x/tools v0.28.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect @@ -261,7 +261,7 @@ require ( golang.org/x/oauth2 v0.24.0 // indirect golang.org/x/sync v0.11.0 golang.org/x/sys v0.30.0 - golang.org/x/term v0.28.0 // indirect + golang.org/x/term v0.29.0 // indirect google.golang.org/protobuf v1.36.5 gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 2264bec8fb..42b820be27 100644 --- a/go.sum +++ b/go.sum @@ -943,8 +943,8 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= @@ -1083,8 +1083,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -1094,8 +1094,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1221,8 +1221,8 @@ k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 h1:MDF6h2H/h4tbzmtIKTuctcwZmY0tY k8s.io/utils v0.0.0-20240921022957-49e7df575cb6/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.15 h1:pkxFdvaTO56NmvFN8w6B6N4jfaVkOROddSr1Jx+BzfM= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.15/go.mod h1:N9u32SVBhbFI5LLgU4IPyAoWqSAwdc+yFp8VHvADe4o= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.16 h1:4i5YbA1l5CZdL2dovH9kQqwrTl2VNFH5BshD08carlU= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.16/go.mod h1:T0rXo+yw4LxGKCZ2k9ywYMQketwK83I5xDs3XRUSUJo= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 h1:jeEFfNxq9uJqkkxhd6WaWNsKNjKhJBcVuWTSgJoXXHM= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20/go.mod h1:5evhIg+6KdZLaezvJPN1rMcn/EY+GypQh/7gNZHD97Y= sigs.k8s.io/controller-runtime v0.18.5 h1:nTHio/W+Q4aBlQMgbnC5hZb4IjIidyrizMai9P6n4Rk= From d78450e6fc83c65441ff9f2fd5d0c26cdca3f43a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 10:23:28 -0500 Subject: [PATCH 43/87] deps: bump sigs.k8s.io/controller-tools from 0.17.1 to 0.17.2 in /hack/tools (#1330) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [sigs.k8s.io/controller-tools](https://github.com/kubernetes-sigs/controller-tools) from 0.17.1 to 0.17.2.
Release notes

Sourced from sigs.k8s.io/controller-tools's releases.

v0.17.2

What's Changed

Dependencies

New Contributors

Full Changelog: https://github.com/kubernetes-sigs/controller-tools/compare/v0.17.1...v0.17.2

Commits
  • bbc5992 Merge pull request #1147 from kubernetes-sigs/dependabot/github_actions/all-g...
  • 99c1b2c :seedling: Bump the all-github-actions group with 2 updates
  • dac769d Merge pull request #1145 from cbandy/alias-deepcopy
  • 6eea484 :bug: Handle pointer to alias in DeepCopy
  • d1f73b5 Merge pull request #1142 from kubernetes-sigs/dependabot/go_modules/all-go-mo...
  • de21282 :seedling: Bump github.com/spf13/pflag
  • aeb46e2 Merge pull request #1128 from davidxia/patch2
  • ca675ed Merge pull request #1141 from davidxia/patch4
  • 8afaf2b :bug: fix minor typo in kubebuilder
  • fd6668c ✨ Allow customizing generated webhook K8s Service
  • Additional commits viewable in compare view

Most Recent Ignore Conditions Applied to This Pull Request | Dependency Name | Ignore Conditions | | --- | --- | | sigs.k8s.io/controller-tools | [>= 0.15.0.a, < 0.15.1] |
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigs.k8s.io/controller-tools&package-manager=go_modules&previous-version=0.17.1&new-version=0.17.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- hack/tools/go.mod | 10 +++++----- hack/tools/go.sum | 19 ++++++++++--------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/hack/tools/go.mod b/hack/tools/go.mod index 1b3aa9533d..3aed5b6760 100644 --- a/hack/tools/go.mod +++ b/hack/tools/go.mod @@ -10,7 +10,7 @@ require ( go.uber.org/mock v0.5.0 mvdan.cc/gofumpt v0.7.0 sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211110210527-619e6b92dab9 - sigs.k8s.io/controller-tools v0.17.1 + sigs.k8s.io/controller-tools v0.17.2 ) require ( @@ -383,7 +383,7 @@ require ( github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.1 // indirect - github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/spf13/viper v1.18.2 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect @@ -460,9 +460,9 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect honnef.co/go/tools v0.5.1 // indirect - k8s.io/api v0.32.0 // indirect - k8s.io/apiextensions-apiserver v0.32.0 // indirect - k8s.io/apimachinery v0.32.0 // indirect + k8s.io/api v0.32.1 // indirect + k8s.io/apiextensions-apiserver v0.32.1 // indirect + k8s.io/apimachinery v0.32.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect lukechampine.com/blake3 v1.2.1 // indirect diff --git a/hack/tools/go.sum b/hack/tools/go.sum index 90546e7b72..62fb6c0d1c 100644 --- a/hack/tools/go.sum +++ b/hack/tools/go.sum @@ -996,8 +996,9 @@ github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= @@ -1417,12 +1418,12 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.5.1 h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I= honnef.co/go/tools v0.5.1/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs= -k8s.io/api v0.32.0 h1:OL9JpbvAU5ny9ga2fb24X8H6xQlVp+aJMFlgtQjR9CE= -k8s.io/api v0.32.0/go.mod h1:4LEwHZEf6Q/cG96F3dqR965sYOfmPM7rq81BLgsE0p0= -k8s.io/apiextensions-apiserver v0.32.0 h1:S0Xlqt51qzzqjKPxfgX1xh4HBZE+p8KKBq+k2SWNOE0= -k8s.io/apiextensions-apiserver v0.32.0/go.mod h1:86hblMvN5yxMvZrZFX2OhIHAuFIMJIZ19bTvzkP+Fmw= -k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg= -k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc= +k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k= +k8s.io/apiextensions-apiserver v0.32.1 h1:hjkALhRUeCariC8DiVmb5jj0VjIc1N0DREP32+6UXZw= +k8s.io/apiextensions-apiserver v0.32.1/go.mod h1:sxWIGuGiYov7Io1fAS2X06NjMIk5CbRHc2StSmbaQto= +k8s.io/apimachinery v0.32.1 h1:683ENpaCBjma4CYqsmZyhEzrGz6cjn1MY/X2jB2hkZs= +k8s.io/apimachinery v0.32.1/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= @@ -1435,8 +1436,8 @@ mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8 mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ= sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211110210527-619e6b92dab9 h1:ylYUI5uaq/guUFerFRVG81FHSA5/3+fERCE1RQbQUZ4= sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211110210527-619e6b92dab9/go.mod h1:+sJcI1F0QI0Cv+8fp5rH5B2fK1LxzrAQqYnaPx9nY8I= -sigs.k8s.io/controller-tools v0.17.1 h1:bQ+dKCS7jY9AgpefenBDtm6geJZCHVKbegpLynxgyus= -sigs.k8s.io/controller-tools v0.17.1/go.mod h1:3QXAdrmdxYuQ4MifvbCAFD9wLXn7jylnfBPYS4yVDdc= +sigs.k8s.io/controller-tools v0.17.2 h1:jNFOKps8WnaRKZU2R+4vRCHnXyJanVmXBWqkuUPFyFg= +sigs.k8s.io/controller-tools v0.17.2/go.mod h1:4q5tZG2JniS5M5bkiXY2/potOiXyhoZVw/U48vLkXk0= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= sigs.k8s.io/kind v0.23.0 h1:8fyDGWbWTeCcCTwA04v4Nfr45KKxbSPH1WO9K+jVrBg= From f0b5ae535c57ca536c235c5fd18586793db49302 Mon Sep 17 00:00:00 2001 From: Tatsinnit Date: Tue, 11 Feb 2025 05:13:23 +1300 Subject: [PATCH 44/87] fix: captures document link not working. (#1327) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description Hiya, while doing #1326, I've noticed that the document link is not working. this PR is made with an intent to fix that. You can see working `Captures` here - * https://github.com/Tatsinnit/retina/tree/fix/doclink?tab=readme-ov-file whereas the main repo has broken link for `captueres` which goes to page not found. ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshot: Screenshot 2025-02-10 at 8 38 19 AM --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 99a1079e17..9cc72dc36b 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ See [retina.sh](http://retina.sh) for documentation and examples. Retina has two major features: - [Metrics](https://retina.sh/docs/metrics/modes) -- [Captures](https://retina.sh/docs/captures) +- [Captures](https://retina.sh/docs/captures/overview) ### Metrics Quick Install Guide From 819a9ee3e355e193230934a8dfc53b5a2d147b54 Mon Sep 17 00:00:00 2001 From: Tatsinnit Date: Tue, 11 Feb 2025 06:52:35 +1300 Subject: [PATCH 45/87] docs: Add vscode documentation in main retina repo. (#1326) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### **Documentation: Retina Integration in AKS VS Code Extension** This PR adds documentation for the integration of **Retina** in the **AKS VS Code Extension**. It provides an overview of how Retina enhances the extension's capabilities, enabling seamless capture and visualization of cluster telemetry. This PR should suffice: https://github.com/microsoft/retina/issues/274 I am open to any suggestions as well please, the reason I moved contribution down is because its a standard practices to keep that way, thanks! Additionally, it includes a reference to the official Retina feature page: [Retina Capture in AKS VS Code Extension](https://azure.github.io/vscode-aks-tools/features/retina-capture.html). #### **Changes Included:** - Overview of Retina integration in the AKS VS Code Extension - Usage details and key benefits - Link to official documentation for further reference This update aims to improve discoverability and provide users with a clear understanding of how to leverage Retina within their AKS development workflow. ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Screenshot 2025-02-10 at 8 23 59 AM Screenshot 2025-02-10 at 8 24 25 AM --- docs/01-Introduction/02-architecture.md | 2 +- docs/07-Consumingtools/vscode.md | 23 +++++++++++++++++++ .../01-overview.md | 0 .../02-development.md | 0 site/docusaurus.config.ts | 2 +- 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 docs/07-Consumingtools/vscode.md rename docs/{07-Contributing => 08-Contributing}/01-overview.md (100%) rename docs/{07-Contributing => 08-Contributing}/02-development.md (100%) diff --git a/docs/01-Introduction/02-architecture.md b/docs/01-Introduction/02-architecture.md index 7c55eb440a..b125aeb7ca 100644 --- a/docs/01-Introduction/02-architecture.md +++ b/docs/01-Introduction/02-architecture.md @@ -10,7 +10,7 @@ To collect this data, Retina observes and hooks on to system events within the k This section discusses how Retina collects its raw data. More specifically, it discusses how the eBPF programs and plugins are used. -The plugins have a very specific scope by design, and Retina is designed to be extendable, meaning it is easy to add in additional plugins if necessary. If there is a plugin missing for your use case, you can create your own! See our [Development page](../07-Contributing/02-development.md) for details on how to get started. +The plugins have a very specific scope by design, and Retina is designed to be extendable, meaning it is easy to add in additional plugins if necessary. If there is a plugin missing for your use case, you can create your own! See our [Development page](../08-Contributing/02-development.md) for details on how to get started. The plugins are responsible for installing the eBPF programs into the host kernel during startup. These eBPF programs collect metrics from events in the kernel level, which are then passed to the user space where they are parsed and converted into a `flow` data structure. Depending on the Control Plane being used, the data will either be sent to a Retina Enricher, or written to an external channel which is consumed by a Hubble observer - more on this in the [Control Plane](#control-plane) section below. It is not required for a plugin to use eBPF, it can also use syscalls or other API calls. In either case, the plugins will implement the same [interface](https://github.com/microsoft/retina/blob/main/pkg/plugin/registry/registry.go). diff --git a/docs/07-Consumingtools/vscode.md b/docs/07-Consumingtools/vscode.md new file mode 100644 index 0000000000..e5caf8ad3d --- /dev/null +++ b/docs/07-Consumingtools/vscode.md @@ -0,0 +1,23 @@ +# Retina Integration in AKS VS Code Extension + +## Overview + +Retina is a powerful feature integrated into the Azure Kubernetes Service (AKS) VS Code extension, enabling users to capture and analyze workloads efficiently. This integration simplifies debugging and troubleshooting by providing deep insights into Kubernetes applications. + +## Integration Details + +The AKS VS Code extension incorporates Retina to enhance cluster observability by capturing snapshots of workloads, logs, and events in real time. Users can: + +- Capture workload snapshots directly within VS Code. +- Analyze Kubernetes resources and identify issues. +- Improve troubleshooting efficiency with detailed insights. + +## How to Use Retina in the AKS VS Code Extension + +1. Install the **[Azure Kubernetes Service](https://marketplace.visualstudio.com/items?itemName=ms-kubernetes-tools.vscode-aks-tools)** extension in VS Code. +2. Connect to an AKS cluster. +3. Navigate to the **Retina Capture** feature. +4. Capture and analyze workloads seamlessly within the VS Code environment. + +For a detailed guide on using Retina in AKS, visit: +[Retina Capture in AKS VS Code Extension](https://azure.github.io/vscode-aks-tools/features/retina-capture.html) diff --git a/docs/07-Contributing/01-overview.md b/docs/08-Contributing/01-overview.md similarity index 100% rename from docs/07-Contributing/01-overview.md rename to docs/08-Contributing/01-overview.md diff --git a/docs/07-Contributing/02-development.md b/docs/08-Contributing/02-development.md similarity index 100% rename from docs/07-Contributing/02-development.md rename to docs/08-Contributing/02-development.md diff --git a/site/docusaurus.config.ts b/site/docusaurus.config.ts index 431b62691f..292393d4b2 100644 --- a/site/docusaurus.config.ts +++ b/site/docusaurus.config.ts @@ -142,7 +142,7 @@ const config = { items: [ { label: "Contribute", - href: "https://github.com/microsoft/retina/tree/main/docs/07-Contributing", + href: "https://github.com/microsoft/retina/tree/main/docs/08-Contributing", }, { label: "Github", From fce4894ae5218c52203be0f94be6af52b442689f Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Tue, 11 Feb 2025 17:14:08 +0000 Subject: [PATCH 46/87] test(mc): Multi-Cloud multi-cluster single Grafana (#1322) # Description Create a multi cloud multi cluster deployment where each cluster has a deployment of Prometheus and Retina. Each cluster exposes Prometheus as a load balancer. Both load balancers are connected to a single instance of Grafana to visualize retina network observability metrics. * Add module for Kubernetes load balancer service used by AKS and GKE Prometheus instances * Automate the data source config via Grafana module * Add module for Azure Network Security Group * Add module for Google Cloud Firewall * Update retina-gke and retina-aks live stacks ![grafana-mc](https://github.com/user-attachments/assets/b24138cb-9b03-4d46-8231-ebba530ce486) ## Related Issue #1267 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed ![image](https://github.com/user-attachments/assets/fc9ec2b5-9ca5-4a41-bff4-bb97c23bd67d) ![image](https://github.com/user-attachments/assets/2f4779cc-8677-4bc0-9a65-faebcddb0c94) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- test/multicloud/README.md | 62 +- test/multicloud/diagrams/diagram-mc.svg | 2 + test/multicloud/diagrams/mc-gke-hubble-ui.png | Bin 0 -> 592962 bytes test/multicloud/diagrams/mc-gke-hubble.png | Bin 0 -> 569348 bytes test/multicloud/diagrams/mc.excalidraw | 1668 +++++++++++++++++ .../examples/grafana/.terraform.lock.hcl | 30 + test/multicloud/examples/grafana/main.tf | 9 + test/multicloud/examples/grafana/providers.tf | 15 + test/multicloud/examples/grafana/variables.tf | 4 + .../integration/prometheus-kind/main.tf | 15 +- .../integration/prometheus-kind/variables.tf | 48 +- .../integration/retina-gke/variables.tf | 21 +- .../integration/retina-kind/variables.tf | 23 +- test/multicloud/image.png | Bin 0 -> 569348 bytes test/multicloud/live/files/retina-hubble.yaml | 30 + ...tina-standard-advanced-local-operator.yaml | 16 + ...ina-standard-advanced-remote-operator.yaml | 17 + .../files/retina-standard-basic-mode.yaml | 6 + .../live/retina-aks/.terraform.lock.hcl | 50 +- test/multicloud/live/retina-aks/locals.tf | 55 + test/multicloud/live/retina-aks/main.tf | 60 +- test/multicloud/live/retina-aks/outputs.tf | 20 +- test/multicloud/live/retina-aks/providers.tf | 21 + test/multicloud/live/retina-aks/variables.tf | 71 +- .../live/retina-gke/.terraform.lock.hcl | 50 +- test/multicloud/live/retina-gke/locals.tf | 35 + test/multicloud/live/retina-gke/main.tf | 58 +- test/multicloud/live/retina-gke/providers.tf | 27 +- test/multicloud/live/retina-gke/variables.tf | 68 +- .../live/retina-kind/.terraform.lock.hcl | 2 - test/multicloud/live/retina-kind/locals.tf | 17 + test/multicloud/live/retina-kind/main.tf | 30 +- test/multicloud/live/retina-kind/variables.tf | 51 - test/multicloud/modules/aks-nsg/main.tf | 35 + test/multicloud/modules/aks-nsg/provider.tf | 9 + test/multicloud/modules/aks-nsg/variables.tf | 25 + test/multicloud/modules/aks/main.tf | 15 + test/multicloud/modules/aks/variables.tf | 20 +- test/multicloud/modules/gke-firewall/main.tf | 31 + .../modules/gke-firewall/variables.tf | 36 + test/multicloud/modules/gke/main.tf | 19 +- test/multicloud/modules/gke/variables.tf | 20 +- test/multicloud/modules/grafana/main.tf | 7 + test/multicloud/modules/grafana/providers.tf | 10 + test/multicloud/modules/grafana/variables.tf | 4 + test/multicloud/modules/helm-release/main.tf | 10 +- .../modules/helm-release/variables.tf | 13 +- test/multicloud/modules/kubernetes-lb/main.tf | 18 + .../modules/kubernetes-lb/outputs.tf | 3 + .../modules/kubernetes-lb/providers.tf | 9 + .../modules/kubernetes-lb/variables.tf | 25 + .../test/integration/prometheus_kind_test.go | 14 +- .../test/integration/retina_gke_test.go | 22 +- .../test/integration/retina_kind_test.go | 9 + test/multicloud/test/utils/types.go | 5 +- test/multicloud/test/utils/utils.go | 32 + 56 files changed, 2610 insertions(+), 362 deletions(-) create mode 100644 test/multicloud/diagrams/diagram-mc.svg create mode 100644 test/multicloud/diagrams/mc-gke-hubble-ui.png create mode 100644 test/multicloud/diagrams/mc-gke-hubble.png create mode 100644 test/multicloud/diagrams/mc.excalidraw create mode 100644 test/multicloud/examples/grafana/.terraform.lock.hcl create mode 100644 test/multicloud/examples/grafana/main.tf create mode 100644 test/multicloud/examples/grafana/providers.tf create mode 100644 test/multicloud/examples/grafana/variables.tf create mode 100644 test/multicloud/image.png create mode 100644 test/multicloud/live/files/retina-hubble.yaml create mode 100644 test/multicloud/live/files/retina-standard-advanced-local-operator.yaml create mode 100644 test/multicloud/live/files/retina-standard-advanced-remote-operator.yaml create mode 100644 test/multicloud/live/files/retina-standard-basic-mode.yaml create mode 100644 test/multicloud/live/retina-aks/locals.tf create mode 100644 test/multicloud/live/retina-gke/locals.tf create mode 100644 test/multicloud/live/retina-kind/locals.tf delete mode 100644 test/multicloud/live/retina-kind/variables.tf create mode 100644 test/multicloud/modules/aks-nsg/main.tf create mode 100644 test/multicloud/modules/aks-nsg/provider.tf create mode 100644 test/multicloud/modules/aks-nsg/variables.tf create mode 100644 test/multicloud/modules/gke-firewall/main.tf create mode 100644 test/multicloud/modules/gke-firewall/variables.tf create mode 100644 test/multicloud/modules/grafana/main.tf create mode 100644 test/multicloud/modules/grafana/providers.tf create mode 100644 test/multicloud/modules/grafana/variables.tf create mode 100644 test/multicloud/modules/kubernetes-lb/main.tf create mode 100644 test/multicloud/modules/kubernetes-lb/outputs.tf create mode 100644 test/multicloud/modules/kubernetes-lb/providers.tf create mode 100644 test/multicloud/modules/kubernetes-lb/variables.tf diff --git a/test/multicloud/README.md b/test/multicloud/README.md index dc7bd0c230..287914439d 100644 --- a/test/multicloud/README.md +++ b/test/multicloud/README.md @@ -4,12 +4,18 @@ This project leverages [OpenTofu](https://opentofu.org/docs/intro/) Infrastructu ![Architecture Diagram](./diagrams/diagram.svg) +An example Hubble UI visualization on GKE dataplane v1 (no Cilium). [See GKE network overview doc](https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview). + ## Modules available -* [aks](./modules/aks/) -* [gke](./modules/gke/) -* [kind](./modules/kind/) -* [retina](./modules/retina/) +* [aks](./modules/aks/): Deploy Azure Kubernetes Service cluster. +* [gke](./modules/gke/): Deploy Google Kubernetes Engine cluster. +* [kind](./modules/kind/): Deploy KIND cluster. +* [helm-release](./modules/helm-release/): Deploy a Helm Chart, used to deploy Retina and Prometheus. +* [kubernetes-lb](./modules/kubernetes-lb/): Create a Kubernetes Service of type Load Balancer, used to expose Prometheus. +* [grafana](./modules/grafana/): Set up multiple Prometheus data sources in Grafana Cloud. +* [aks-nsg](./modules/aks-nsg/): Inboud and outbount rules for AKS Load Balancer. +* [gke-firewall](./modules/gke-firewall/): Inboud and outbount rules for GKE Load Balancer. ## Prerequisites @@ -17,10 +23,10 @@ This project leverages [OpenTofu](https://opentofu.org/docs/intro/) Infrastructu * AKS: - 1. create an Azure account - 2. [Install az](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) + 1. Create an Azure account. + 2. [Install az](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli). - To deploy an AKS cluster and install retina, create file `live/retina-aks/terraform.tfvars` with the Azure TenantID and SubscriptionID + To deploy an AKS cluster and install retina, create file `live/retina-aks/terraform.tfvars` with the Azure TenantID and SubscriptionID. ```sh # example values @@ -30,10 +36,10 @@ This project leverages [OpenTofu](https://opentofu.org/docs/intro/) Infrastructu * GKE: - 1. create a gcloud account, project and enable billing - 2. create a service account and service account key - 3. [Enable Kubernetes Engine API](https://console.developers.google.com/apis/api/container.googleapis.com/overview?project=mc-retina) - 4. [Install gcloud](https://cloud.google.com/sdk/docs/install) + 1. create a gcloud account, project and enable billing. + 2. create a service account and service account key. + 3. [Enable Kubernetes Engine API](https://console.developers.google.com/apis/api/container.googleapis.com/overview?project=mc-retina). + 4. [Install gcloud](https://cloud.google.com/sdk/docs/install). To deploy a GKE cluster export `GOOGLE_APPLICATION_CREDENTIALS` env variable to point to the path where your [service account key](https://cloud.google.com/iam/docs/keys-create-delete) is located. @@ -42,12 +48,25 @@ This project leverages [OpenTofu](https://opentofu.org/docs/intro/) Infrastructu export GOOGLE_APPLICATION_CREDENTIALS=/Users/srodi/src/retina/test/multicloud/live/retina-gke/service-key.json ``` +* Grafana + + 1. Set up a [Grafana Cloud free account](https://grafana.com/pricing/) and start an instance. + 2. Create a [Service Account](https://grafana.com/docs/grafana/latest/administration/service-accounts/#create-a-service-account-in-grafana). + 3. Export `GRAFANA_AUTH` environmnet variable containing the service account token. + + ```sh + # example + export GRAFANA_AUTH=glsa_s0MeRan0mS7r1ng_1ab2c345 + ``` + * Kind: 1. Docker installed on the host machine ## Quickstart +![Hubble on GKE v1 dataplane (no Cilium)](./diagrams/mc-gke-hubble.png) + The following Make targets can be used to manage each stack lifecycle. ### Create @@ -93,15 +112,20 @@ make test ## Providers references -* [GKE resource documentation](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster) -* [AKS resource documentation](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster) -* [Kind resource documentation](https://registry.terraform.io/providers/tehcyx/kind/latest/docs/resources/cluster) +Resources documentation: + +* [GKE](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster) +* [AKS](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster) +* [Kind](https://registry.terraform.io/providers/tehcyx/kind/latest/docs/resources/cluster) +* [Helm Release](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) +* [Kubernetes LB Service](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/service) +* [Grafana Data Source](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/data_source) ## Troubleshooting In case the test fails due to timeout, validate the resource was created by the provider, and if it is, you can import into OpenTofu state. -Here is an example on how to import resources for `modules/gke` +Here is an example on how to import resources for `modules/gke`: ```sh # move to the stack directory @@ -110,4 +134,10 @@ tofu import module.gke.google_container_cluster.gke europe-west2/test-gke-cluste tofu import module.gke.google_service_account.default projects/mc-retina/serviceAccounts/test-gke-service-account@mc-retina.iam.gserviceaccount.com ``` ->Note: each resource documentation contains a section on how to import resources into the State. [Example for google_container_cluster resource](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster#import) +>Note: each resource documentation contains a section on how to import resources into the State. [Example for google_container_cluster resource](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster#import). + +## Multi-Cloud + +The [live/](./live/) directory contains the multi-cloud / multi-cluster stacks to deploy clusters, install Retina, install Prometheus, expose all Prometheus using load blanaces, and configure a Grafana Cloud instance to consume prometheus data sources to visualize multiple cluster in a single Grafana dashboard. + +![Architecture Diagram](./diagrams/diagram-mc.svg) diff --git a/test/multicloud/diagrams/diagram-mc.svg b/test/multicloud/diagrams/diagram-mc.svg new file mode 100644 index 0000000000..9d27baa8ad --- /dev/null +++ b/test/multicloud/diagrams/diagram-mc.svg @@ -0,0 +1,2 @@ +Google CloudGKEDeploymentPrometheusRetinaLoad BalancerAzureAKSDeploymentPrometheusRetinaLoad BalancerGrafanaCloud \ No newline at end of file diff --git a/test/multicloud/diagrams/mc-gke-hubble-ui.png b/test/multicloud/diagrams/mc-gke-hubble-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..7e59ea3ec920a02688e3c86bafda732367f1767e GIT binary patch literal 592962 zcmZ^L1yodh`z;O9AtgwuAdMhhBB_*gH%NCk(v3)|^iV@1-AKdG-AH$L3^Vue{r`8} z_4P=WI&4l-KK2ne{HkH3h$_Fz*41bE&D2{Ba< z{ez_^@1B~$(NEZ~eZg56Opy#8e?Xug?o>ZEQM|(FcA}V%|N>R&$LE4i5uA9cN2_OjO$Z9)$4K zjACPB9h{wmT3T8tZES68_$6G5cU=TFHa2Jk1u4kM$?HAO^LfI;|2iNY#{yJ1!A$ey8b#_Y* zBf{5NuKUwqwPF$#U=R`# zs%E4sIv5`x|N8T1k^EnGCs5K#5`dbUn}@}}kY4L1HR!tBpZVpuE@iV&i*tHVA0}+x2A|{DB>IvyNwrtA;jJq*lzC^eUq7T{F6F zlbig1zbQkY|8W~!MC5Mg1@vY;&SN89+Tl-@n1h2$02>2oZEbBuO;u1#X-vt_l!A%= z-Gh=;%_cWizq?(AmkbQn*2RkwYMrO+z3Xt;G5lmZ)8DGpr75DwA9P1epvKB;zbs*F z4C0aeYt|&pjJ6LCg;glnr+^%Bi5z%+x@ijzHDCUYuk zetltM$8)Q7b8vI&{zjc**n8C$|MOd9Nr~Jfcr}Lw&T)5f7<6%=`Z@~9jpv;mRqMl* zH;Z1Qs%2Ht$%^e*qpNj8DW32Jek`?USsgaH+P80?8u(rkZw>xHrqH3-%z!Mpc%EFHbqv;hHn}|8 z+*z*We}*#oe(!R>-tj!2vs{3Uf!_Fj_+f|J;`Oqhd+ouQQfS$k&DYf8P73?xFUa@T z)^Vy0zOdWv*+$o5?Dy)yWqM6(g#{VklFwl{@)8ZaUzkuQZer>QrP;$*_>PjJQ}@M zRs zZFXUfdH+{;hF+7YWJ^(&=lRynR;s-zjbbp_z(9pjCx;)@<0U=)T8e>R`+SXcd}=E5 zc8%=<37#mFmdOorLQLWiCJ*^%~q||M66ZhAe1p7Qqb$iC= zKm!7SOgUJqWx>;%r7_qV{QQDO16yq?#^%WGq|&CQpXnYxvyHpP)@LL|RY%L2{zjyI z-n25uAia{=)QPZ)N%2#3x_oGG2aURR@mj{2^ zsPTkO0;ZLPewAp(abNTMLHXG9o5K;2(JWZa7#fvHzBD?n_ZUrrl{9Oth||*3H*Z35 zC`@bGH#ST!4i`u#^5qlsK1Z%kmFWr2JwGpfNj0IpcH21B#s6%v2bo>YHu^MyqO*Mt z&DwqXy;QOQ{EXZ1esvFg^fly1yQ35M_@||-`|$oudGAVlPz~eMjDdd)?;jtPRHnu9 zHW(9fX7W?+V_lp=XZqcJAi*FEA|tg;8XL=z zHgjy~2=_GparVjPrd&3KZMM=3tI_qCt zGY1!^_ro!7XBQZY>uTC-65o1wd9Fx(#I#$ir)4gQ$V%Gb*L0y}X>4L0{DO=w_ukyt zyGWxvR={=7g7sagc8$X(gt$cW*L&+izBSEoE1ykC)k~rzyquhzr1fpKrYT}EDFTki zfWHZAyIr^Abkg@Ct}g?zo2Exn#|#@G@=&|pf!6Elps)Nlh(;5PH_f=Pxb~2Dg;5rcoXw z-bX^LtO7rkh%Ynk@6XqyQr5ksrA1UwP`D-Dn6I;sySee0EY;y{lMhCglsQqy?*$ok zhR&T`57jbc8YaQI)s7hX3xqYomF`;yX)l-z|x+ShoSjEm&>YX_BC2g}1{2-jk z)vEeTjB$IpGlpE=a`jACPp^jLukZ>wd%>v!a+me35q+qznd9VFd|lK#w_vtEUFxwK zLTXAf$cON{M>6$0Loy>?cPJbQ2??KqA}TcI8Ka8S>T3!mqan1Z;+cTd;upqiYbOIe z&poz9&m9f-d1iGLdq`F2SN65I9Q=AS9bDZc5?1i}_?zh1HKuVB_wi{y%Wc5c>N5Fx%J$ReT@6LUc?@dqhp2r)LHkaU&uSs3FZimZQB2kje- z(KnK@#qyCnf*#ddLSp8Q zxVX6Z-7wRFHi749y1E3ucW-N9cg#LTo;ewr>|U;R=4n{=b(3~1&$1eUF6KBHZ?;a>z49~^2t#Hv6>k;kKy=;)3 zE5~-FNI+a^Cl@dpe#-hS?IN1Z$wC!*B##&h-s!EUiYOYA#L{mtsQqrTn~5WT7S#DY zczF)*r!>J~_W<(Wltn?1bWlSL}v@;cMW zs?Y5r2W0x3MNmQnZy26Zz=$MXf4rDwu2k}@+{kn)o@j6HN3Hb~;G5&mGPlqW8f~J` zp1G8adDa@>?RxS20sF}Rj8PSDH`BXW|H|sMOB@~OaU?BV5{Yh-xT3kUO6~e zz0J?}<*Qdl-I2tV@-ElRNC9*huiyKEqKpaFh|WW9&$kDdJktf;lP5q;D}Vgqda+nQ zWphi6C>dV-GP=`~Sl)%bq#Q|;OdVD=*iH^!`V^*( zPub^Y;NoWdj~bUFd_D}J69tOa&XMLmY>`&UYtSiXs|*g06T|wZrqp1(?rIB$A`H46 zhN4fg6uh`mr0lJm#PBYYREFEjAj3jEY)Q4@m;a0gjTD+p`6ia&$cq+;`ey)-rG#8F zz5lh^*3~7Uwaa#ERe4aPfrB_tr=z-DOce0->M-8r)f3Bp#@|CMrp)5D{{8?Ip<&%* z8ZRrLWqv`dWohY9K7l{HybP2n>eN~r(}|aQ@~uo%MW5(Q*H%}*cptZrGBQHeUrX?| zftn1IXys852Rei_)t(Z(e~Ktk)a>NiuygeZ7p=vENE~)d4^7>}x3-Uy%+S}|I{JdD zpHW{Xckf**(fd0rY1P1DWkS+T%vUgvu{^#*^Jhv%h8>~M)6SpV*3}JY#{B1>vM@09 z>m9^W>6kKh_O1=!cciV*Gg+bAjf7i01fqX#R;A6)h2LZIvY7}&R+*T6HQLHs@0faG zpQrvob?{{3fieWzf%gAYDVcA&WXNYc`&Ri&3_!{AZikW8C8;vuaqaD$(vEjdm^`I7 zI1I3Pgx==VQ9Z?u80I&9{lg(m{=z$FPE)S0uQlw?9cbyL%9=Pp#(#!Vc?t0GX__*h zUKGj`U_KRlx4PCHRk>i`3ye>ZLCiC5%+gPYlUc^Jqv$*Q>F_@!rBsFC z#>{V9sJu%RY2dVI?3^QK*41;I?bpia#PJohlts8KPVr~_M4(DM#dJB?gmN_5e{usF zSU%q#u~v~BA-bRy9V51OTmynQP~TXo?D5BNE_~#_lI?VAkI6F)gN-e zU%SmkNB%p97)7z}MY||4Qg>_tk~%YGdNp~Fve^>@2?><>YRe$;FuVcFRH3oMavU2Q z+xU#+$kEn^(Q01?%81yW46f}Jp!%ZDwCWqI|B}$;Mz=cXxKmcp*`9-TCNWdos5`e* zB(I;Ln{rcUKBC`n)Dh0+E1ASO)>1BV!7$%d?U=fQbXifEPVIB@g+=mq(Rrl*Q)VlL zq3pMWgj1kS9ze*_G;7QQVLI7qgUC=8n0)9gFWj~F|Ntc;TIQ(zZFFvsu!6M<|oSy+WNW@JhCE)7$8hu27Z^sXJ;;bK?RZYaERWDY@(J0qX zLX?ty#l5t+$l-Nifla|9r@qmsCgD*E6cv@m#zqUDLtGg5<)OdTl~ zD+#iMO4vyG+(*&ML~zD(w_Bxk zb07ecU58Chsuq`prLgIZ_dpasl>HsvRckH)pfn5sGhD5*B(K@}Cg#?9m0Mzh$983=;t3Rq!sK?OxWaDV=%TTXLBQP-6^>v4J$WEx(TCR5 zUO`H27iw=#d#O)>3SwX%PD<`B_%B9%EMCSQt%yr&J4d|KvF#deGAA!I$0t}!aKRD^e zqF~(Jm64V0shO0>&3$QQ4PFFdO8~$LWCQiucMc;Yx)(2M_+6SjJv@F-OsM?lzTDhu zo{BOP|0+7c)gOrgsCiusznf`0@rPgg*E_DG@z~4;lLxF*bFbK`LlNdGsDA89-R z6waaWzZVy9UWD&ghpyd_)(Q;HoMv zfN)Pn#_O^ZUclc#e1QuSs-$NrMz>|DAII!8++M;8RJEfp&yd;Aa8+WBj4*ld_ zU0)AM<+Z017S_XElb2kKb~rjBcuyYxFIQBF5Tz9(co#o-Mn?vLFc^Mo#f98israNh8& zEE?TbA98@S4NxeU*uwuSDvTY{c-fWc)Uo;a`Z^vh@~a~@2k{9AW=&MMSvcBP_~<7L z8?^s;*#1hH5}1pn5%0(x(feGTGJ)N z_R57Xt8Gjj0|T<^_fg^DU)5lL&lmU%e+mH@jaXn`J*ouOc||f$cdX`X2pWZE5tYz~ zP5u;#_sO(m54{rRwbyWIZe!i6D+}{aKJ4DrGbi_J=>`UNL&8;5>5!eDUn{@!FZdJ= zJ|pDEQ&dz;6ZO|uN6jrNI1EU(Ae_hF7oCev3|1{o!dySx4uP$EuXg<@aJ(5=2ZARi zHeAh^?#V)y7;;y4cmJ2aADT(j-`{_-NKFZLJ;t_m3XbTht5(1>A>mR zr=icpX|B>!m zy1nh6t#wTgo&m*9J6%__`Lo&8zZG|~K`Ubv{|Lp=jT(4o)q%sW%byT9u&`!moq+Bg zr`>nvN9oDKHs2znu3UkNIg)Wk2N@(qoAX|0CYC9k*phu`C=LNRc?3X%T9=vulq$s|mMqi24xD9w!(z}%DIH50 zZ~OPYc27-a)qyPJNDruo45T$R2?7-z{W*DE=Rf9-29Uyb#Q6dd;8xHC$tMXZ3bB7rKT^s3CH zHi;d)QZeA*f983hO(Ld2k8!AiUy!I1H_Me`Y{|G2qM zhUeA~C>5KtlT(FpHzxGhAD%E_rWBt9U-rAVJpc$mDp95GPo~~Xfga1$>E|@bBU(We zmOr%j)8(6~+HTgcC`J7!MWH7_EU)Q1vguZ?0p_s1zyCu<)ngf363VDgx&|fqB1f>* z;XWc|md>UbbT9D&>$+xWsq4G!$lyvMxZut)7OM0}NkZU*Bsb zPZeotY4Y4+@JVL9VFXqVhHUZ_{NWEg8>sZic^VxhcAx*BE*@6;4*>CTp|D;>V>GmZ1p`8vV0=aE6cVsh7%e zzA@9pkymw<)f1=noq@z;#$#oIF8O@_l#I%v>`%PxY^w!vtfdM>H#o)%fmLX-aB`jb zq_ft;^}W)C@1?fk&JB%(R$2j=IJEZ;X;oGs=hv7C?ID>u%N%ZJj#A-U>c~^u1X)*> z&GUU+6SLCds_+VvTYu)?~nJV05`RwKJ9zHm&SM zOboN0t;imv#Gw|^CAlP=+La*fAwJdg!?C8zl~%EVc{NQdSJ&4YMngL(G>&v)O=_$M zYOAY%?lkjZix{-V*-8hQ>U_u(IcIMU7&(1NSq5SlQA>DZW25nOiI#TMM^$9q3d1if zn)FW6KYrvJ$tdZ{J(a%)#Fm<5(4}WSL#%Ct1axj3b)g8eX*tJ`XjYD#$fzw1ijakk zXtmmAO>opFQwC^x$XHMY-O*>emtllHzQQ(zTRW!uUK)*naZ|B;wTXq9zZWmO+vW@zYR5 z>?!Jb<0Izqli8b7BaG2}R?D#lRD9=Wr!~)z(WhKlwX2bON0C~*$;xB;5{24AlS^G# z{*lk)`Q!QViQxd{W%N4$ah}ZK_RNe@&iDWh(A27W@5Wx2+w#UnN`L)u3_MF+D&SPm$SxCK>j>l)C-`J zs`DTkLA77P1=F*DY^%g7e!2sH*2&H)Z_P+S0DbyJLwIcIve9*aga0Mdz3}}(6>6Y= zV7;QI=64=7AxGWr)0T+_l*Zpv{OaUv9aFpCoUF+fH}J8-oQqeIe&ORX7Ax)VsW+R> zV8cJUNtU0J?~oja;P(<(9K*0fZ-&HV%W3C-MrqKNZ}h}atS2anwEM&F4Q%GCKUkNh zNxauor5}Vq#Tf;Yz*ImXJI08|knU$Zsk0YosPT&5#J|u&Z zZ$^Cep5(0Q`CMmdK}f^0_eS#MSPUBabyG5h?5cPbQ8yA&-bd=siB?E8weq4so8~nQ zaj)C{HdSZFdLf1dIJ7jfwfxzjSC&4uI*X|K$;~EFoa2))N$&RG!&yIFYbhax-rSA} zowmO~Iw+C>$qYoJ2oPb@#y`LT43XSRR-ljRecnQV2c(i>5hx7%qopJyf@@JW>UV_C zVE4x<1L3+6uL+6CG;0wOJSdgaNGhi2lDYxo1=RTm7opmwgpBHj z{)Hd>!M$M#=vR7{+{|Fb51{)ivDFj@=gDeqD-z6g=BI2{>z7h7S zQT`G9A^x1Y-t!eOr*wL!&M&7$wZg^QuveK%G=x1g6l1E9Z zi*g^u-Ns!vdBn-fa&jJ!=f8C`U!P=pWDjMEQroxQ(qA3S<xAYD8Vm*R}b1&4V)Z6CH8kLJ!Tp_f;Ipjwz*~O1{nu-C+YqN(1JYwf5g;Mv3doI)ZMM zf}a&PZ^zI#BIiV8wXt!6dQXXO_XSxnz3J1WyZP`f4H+iz+eo&Vqh3x za$!(N8--of%M4G%MY$>Q9{_Yw<%9Zsi+3G1djyTv2Py*;R7v7@@j0)p5n19<9i5#g z@*y+paiXz+sIeA8sy_~v@q%je&PgX5xGC$0yuu@D?2SJ)T)xrwcWtU+_PPU z8O?O`XKN7O zVm-M?J0BAhlT*NOxCYpxEdI2%*pO~VzNVvR`n(sx*3=tAQ2-EfQV<+ZpMfBZ z+kwhtmr|KE9GT`qZQ0!X7@|Ys{SPe5+^Blr{KQGI5Ji>d$}5We>!L8^H^VL@Jc`-z z%N_zMcWk~oEvKp(GRpz0deSP|3t#Vv^~5)k9WxRr5u5D{l78g6w*$)%(bPo?619QZ z_kt3xJ;D{G&ews-ZrH0JYom}7O)zxecvur{1bg3Vj02(2_+c;iP7{*MGmYLC-N+Lw z>Ng0k%&r{Xl*$%phzWhS@Jp@d9OUqX3QRw(#f)8w%x2W2gt}N#!i*7_Qu(UOV|y>g8jOmf5BZi z-S!cj({FNnseb(S=@YIpOg`?(=Tyt6a13^&U_?JU-J37EM}OL|dxVelPjClElV2}u z82BdnV@qc9J~-+&IOPd#OKJ>)0_IBGKd;IxvrSU#;Kb-(#n-i7H+J^4ni5~yU0Ork zEOfV-poeU4RA$lL-aaxKfU8y8dh^w{V!A2YQhNEH-!FXi^d*cJn}y6Q(}X;guX5~5 zf!+OrlT$gh=$#@kF_vY_SL=}S)q(jX^ggfakKmAYiu{4 zq>|9jx?f5Is!d-eUA0O{nDKU{@hplOFnz-@S|wDjHBZbw)6)!?w)ya$b3D<%e{1!9 zKi-rO;>Z@>M!7Zg27R)yGIX74a~AchRE=h00$PqA7aH4G~wd zPM=tOso1idwX;1L`Ic+CNlpmF!KyN^%O%vPlU+Bk-sMl#*H7C8@mTpR2(e={YQ0g7 z_blT~mJcfk+MZE48BlY0>5g$%(Aro?9Yl4T{FTeOlo;hM)OXfRZgkcG&9eGU4YN|b zJpR(|GA`(B<&l=)EdU`I8FdN$ir%5qTr4P&Ajt(4&9ef=U3CGXr7aT4;QdF}fzQR5 zv=dlPyne1QD*5nSS4%7LO+edz=5xX$(^2l9TAlJQyxV-IR z8U`!|n)BvN#79s4!rM=>gr|T8J?tsvMDhe4h|chX@WaIfeXo*>D{DAF5}aj%vH1=! zEy3qt(&hy~{8_-|af7Tg)h!>UD_s+?&nD8iZtZPGQWS1ZUw@sje5Er zK-N{Cp((|}e55kA*HDNk>VF>v!H=4UlxFHhb5bFTE}Xx6FEn0Gj;jt1V^6c;GVK=C zSa_>-I{2zUL;fR&o_5(JMXKsu&R7T}R^- zD;5EaIgYcO?l(j2m^OeufkJ&WpD7#z_OL+e9~x}fx38Vrz~DuLLNI$(%46Hkn?i_~ zi6B%ck5#n*ByW%>@349N_q`{7dggO!rjLJw%Sx8C$w_cPz>svBCS!SdHtzsztGebl z3_~+71NBLYV8kC#;8gEwf{keS(U5GMb~OS3ueO){3|*>u4oA>PER z3-)bEVg=KsI@YYo5j2yJMRsv(#5SmMuEGfUkzoUH7ZBs5r1o&?y^@-(wejKx`25?k zSntrSS>G+^dOIjy`K8_UYFH!gy;W%%A?~VllfI@i`Ga~egezVk4Ki!OfZ~ibKD3OD zP;keG7gJ2x?oJLGEdQ*!xXCj!F?r$bNjwDy2t2d6Y`{I3upOxqCB!$S%KQ}b%^$sq z9s~waZ;v`=*!PI_pYh5f+b#8W;SdlA%hu${lPCWd5ki8d>@q?!m&ncd;^v*|G5ni6 zZszDgwYHpPQWUY-qm_+<2kBg^HsxvV+Bb@-_s&%+O>kF@o;b6N$z(SDkYIQ);I|Y4 z>R=CGf4y9G-r3hk`9XYAtfkb16M*Y1(tZSlsXnIt2!clWz$PMJFKP#7J{ z3L&WaWO`K=5n}*PJK}dnEAzDRkq+gU@P1w=$$LL5)V5x)r?AcsVj|!zBVE=C)WFCh zs0Q{JvCTWY0a||1JYmrT24;+B=MquFq27SOv$RCKSl?WKN%5eKr^rpv#wV@Yw{v5i zw1zd1dkIF*I8ercg#fA0efJ4gz4#f=_C0%6jneO5sG(OJsy-}s_n68Vf3icJr9@f@ z=7^nJmUotfhDM3YJ>+ss5?qGr(?H}(!W=Z%;oB$2} zqw3`HvK#Od1_G@tIsR}Mr=fdOILBIzbtp$dLt^4nKz_7TG1G`&6g3T-@j~bK=Z#7rf*tOYuafEu#G#E zXbz+0b693&@rNbcApY^+WexJCXpIR@m^M2;5N&o;+rQ%7*-%^&c*uJ7)1 zYroE{;(W^oO@Vigw)bKR!OjgrK$5yZnCg#kSWM%0HjS0JIAcNzz#?J!TCQ?UA3LvH zR1!>SE4R5k_<@31cL=RjCRTAQ|40sQQx-K}`_7i)w<390edhOCWE2 zhQ%c(qkT7`S~lL56_@8_xa1C1ia|}bn2QI>hCwgW8nw>0$MbdS?1-N^J{4;KxYd5s zGMQ%@QlR(Q9^wQa)Mc~zoB>;SWAkgkJ)vgJDC*|sRta}y)${t4wW6uE7)+@42W zS|~i!Nr<>nbC@CLn} zjWB%48+Po4^WyA?Jx7qWsv1))D{onIf%?=0dWS?(9Td|e5_DYLU+z_hd3R@ROc6Nz zvrINmM8D-b@eQpgG*3A8+9(IpF4W53_<8<<-?Z9ts&AmL{ST+R zX&<-SXd2aj_tdg?@;=J-lH(;7POo@L75BHef^13W2dM0<-4)qwd!sCb2hD?qAMWvE zXht-HQ+ub@BB7ge!T%P@oC^Nq_E7!R%SX_7FXRW6#xWV?xlMeVZDB8~5U;vT=IQzm zsuyB{xP_tTRbZ1GD)$nm+>RjeHV0i+#8k=xt@`Z}SaFxS1wCx8Pt zA&Gz)@@PUjP63*hCbe0dU0f1Z2lZRLELrmyIN1P4%1k~)N{AhVKa(XEWO~Y?lytQ0 zeVo)Quj*L*`civRY~c&*>HYnFb#kS1x)7SLLbHvUMsr;P-}EDY<0A0r!)^4q-dE6*g)YbJqHr4uHeO;kP6HrU(vzwt)IkY%c=h@hEro+YunV zWq+ZiFX7$-viClH&xG~M01!ct0jJ*Psp3aSdHUz~FZTf%k@dcqTG-1aq;>2QxfTYp zx-WK2Qe2>z+&?A*1StV@&Pt>#3Sg&=LA$~cFrkMD)LhhUC?A0kL~DnaSVn%FV+G_CoVCle_+zjt94l zwQ9{trXeN5Q+`lmPRpw5K=pvOiPkB9_-*US`ld>OK&X5Ro`K@slZH8W4U*k9WZltu zZamMK%6Ruz6j~b21nzUVt$NSe$EH*oMrUc+7sSYIvIhvVMK`%qt&un8*8JbZ&!$lp zmlk@s0g^*%VT=Zuqq5CXqnbX4Vx~xGjXD)wHtT(nn^Q-%<-|s}gzlu|bv;P_B4WAD z-hdnm=y+Alqfb-5v0?oZ232Ogrqv-a7G9GF19WDkM1cpFqoZT|KCzgnWA;XeduzPYXjOzvVgLm&t(VS?Rc5BPD~XEXb4~i zdJ&n6;Soi_W;k$EG&DM9=HmBF55yALj0872%^trF<~2|#C1>i5{U3W$!l=9e>S2T( zuiG`#CI+xx0WU6PR}RKx?Dzq+9{Po7gbq$@w$BYc5j)&lKWKHT0ZLlyQ2i$$nwONkZsgRjFcb?h6^B%vWdgpJe8tSzHrSmk)%DqqT|;h~ zF6HTtKUK%EGyHYkp1)dpX$#I?>{)0|x%LA)gFL!7o(_Koc}h@}sJ^&9ZTio<$tO-wsC|qIoHGDdXK$g5d{WCIP20O!&fFk#@lo6B9KgMF;asGnjzfw-y(YT1`?p?aO}E zo=4=!2iWV(Ey$|D&B1y%dfq5@4_j$dQ57~ofcQ>lgK;8^ZF8k`D8*5@ z>8o<2q~T3DA<-0EqU{)T>@?OZ{0|ulI8pOML_|C}Jr$Fa8)Q8`N`Y);Ff?{{cRopN zoee!GX(}I>A15S+-^Cq=Tx?+5JlKUzeBcjbo8%S2uibsu-+NfD1GT#iyl} z4E=-U1110jkx_-7pPhYc7j?VVxl9wKM83AN!|;Cll=Ov3ysNNms(8rh)p^HP4YZZP zW#`$dvw-Q3bx6QGrg;zn9_E~?NTUOL2h$6-`v`|Np9?e1C^+W>Lwn0m6hn@ZY!xqjv>PB^KYQZp^ zY`};r^YLRx2o~vApp|jq@A=ues;H_GUutv(@&Ha6AoqS2Iy)olZBTi;KTXE!9hT)4 zz+2Y!a{XetN+woTOxcByQ<-1OqxKe5p$V(Azs#s{|))QAG|stjJyZ%Y6%#|8ljYfx>fA zES$wB#u<*E6*%OIac;>4H#05saV<2N0!7s6Qqu5(3{Ul1a?$U*Xc3#2 z>pcVEqF$oYMZg!rwhqr-c5NfRWmCzbkdVD$TyfnWqp zpeHJUGULOhXu3j}+jD_JJi`kz z9ozOyitt>bs`W#xHP&~Qf+Z5O^Q|EOic)WszFJ;hp8sC-?nW^mtH!avr-JBiH0!&4 zbG((SD1T85g`4I#LGz!1e>HeLzC}^AX|`a_VyXy{IVHl|=wdDYoUXL&A+S>PUNPcN zLBJ`FODz&TkitHo^F}WXcy^OJbROKZ-Ck_l(3Q+A`xHTzWS)8T^~-HqT{YEt<> z_}51>pCPICPKo8!Fb36vbrlZxG}77Rq@>V*CV6(-kFWA2y_JAnc@bx_i-;q?_x+TU zzFov@-RwlssJZIjivgIs*7?kgzRq1P$DZ>^NB*CGKG&y+!8rF~A^VN?O>4YEgfpJc*LFDXEO4A*0bF<+9!By+Ja^XR6h6fpZReEcYciw@X3 z9Kb@zf6e1qy2KW(>47|}2Sa`gmm?=uff>C-s;6Iv2ft@=rnQ(7{51BxBsF|#1sVec(XYQx>+VPHV7t(7EU zeMtwxq+jNJ%n9B>S#2$;;n(s&z_pG1-#`X-YFZE-xH*~;tuXncWcu06l9ia5<2PO> z`f?D@P^ty1>eS18v(@7X4M&cxX9^6tFW9)T7|BEJ>Yv@zL$cNM?1OnqLg{N3f#%D{ zLv<=WCUz)pxL+vvEc0h7*MO8}_($+SAwTbrx(W3C3tourL%`3yVB?3o%kb#v$$U&q zT-=@jMC5A5EP&ZOyY`OHWX6Zx@6IGS(LRLkszh#4*p27geqYr5W9XctghDUuvwiJ#%(B3$3jc|S)DX0dlDd77{;=V_v zd`(JX{KNczjloP@r(tN)(hQTuD(KGzYr~3*i+Q$>XafCL1u>853+aZ^c@S%Simg>t zi4S5MBMq+fJGO{EXv_9jW1n;dJ%>8_r_O5wy(GY)rbY*4=%bX#P*PA>2H#@%Qk8-G z0yL%AtP=}}kREVWMXi%$Zxly7S{ub7S+==Z)Wqjq9y!XP@UB|Ddi{65-x%prrRr!DQ58QdQ_w9!zP8S(J`_6Pum4p&+T`z$*W>iUS8f!oXewG`~M9& zMU5_vLb{4=v9mXPZ!t>ZsDvA>osV!w6nu}9)u3G0CtpSCkC)2;r|;)C8k`jl=lnL2 z^(8fl3S6S@%?|eXjl5;qHUHVGz;}c2&?|hNwyB{E79lpoI3q_22<1U`> z_ZRQ`d;i(4YuDns_W3;bxu5f#bM9vqmPwFR>$9^{&wAC7#K}|4PHoPa%Vkc)Z$~rd#Qb(&U;`Mw;6@NlZZ6Q}q`k(j2Q^F%kbfnI_v&xQ zvg^&lqpE2MBK++rv%3I$Ep3A;i5CezGgVtB=&A9fQ<(!8cA;=#*Us6#|dQY|VLO?3Oa(fje#^oj`X? zT66PhZfnA9b5<5Dt%N&%ll`=8RYuXW9}^QN;Atu!GuF`WWZ3j|6>vS6AFSRQT4mVv zkFn|p*mMP0_g@2$r_J-+mfVDRMftx^@w;7q%=r7Tt6m)~Iny2Y%U%9H$($2U>)5{i z_~_oz;PLX@cFbwBnJJy0(OghFQcC7_FH6KKJ-dn^W6E7g3*gf#fmoFflwdNS{Fi*qcmWK;X)Uo>A6JRY#Uas1x$|@S8fVgb&aZzZJdLY)W&xUzW z6bLf!3oI#~!i$l{e2(1_RdkM=ec5n5WQ+uOG5T@oITpW8#>gkL5Thjn&&B$Ju|OFq zgMznPc~GG{jM~wQr*PfZ&I?bx9z1CLZ*)L@`RYeUZnbQgP!s6@TOJ==hrZy!9)L9Q zJ=D<_V68v>47-r9mV~yTPVr|T=Y*MJZqmieFEd2%Vqm8S2D?qvf{cI}1W z)q*N)MAE;2>DhTQ=AoR48l4{Nlo3?||LD743)x^lFHO=LW0NjKw_yx2wlBE22^Y_- zoAG8P*A@nuhQX-^{w_Yh$H;_LBV=b&d;S;k%I*6Z9`8F|w<&5$G!t?>N0HLf?Vs#= zBrq1f$EgY{Z@0STC8I&n1gqmvEeH{zpT>JP`?i6YM;PYne+_|ybGt)CgA@LHca@LZ zEKj}6RRv3_i=5U z4j*55d;3}~6xdF@e&>)^{=suz(&m7}X{i1_kG+{O?8eQzz z@xdz1*g>iGZSuSuk3KDYhW|F+$nF-{#stEs}7jb$PG@;)`|^a_bT{0;GRSZESJgVm)Kh$O2#f{MJ1 zicngLVTSInOwc%B7nn2#6aQ`9yIG`FbXG5(f>p>UqNW*3rvB@zO9h2qbWQ%YTcBH#SGk{QR-RpJ?~ZF4ssd0JIdnv-SdUQ1kn-k+0N*u4`YcD1v`7 zQ2alI_@Afzp`n4fr@;A^sbX%d+%>GFq(ekO=QmLYudPK`h0&r84GynKS6&?13lA1K z8k~&V0PO2V?OP-jn17=Qqy1ww0vOfS+Q_;m%Wo*v*3QTs)}B1u;lqcGN!n<{p84f> zv10|=(dM0W^{?_K;&-S%&}1BO{_Erae$d=l-~Ss~qC_}=4V;K;M>ko{m$5h1XSN}O z4|;Rth!HOq?cCj`cj-e)clFo{4B{_}ZW?I*{rm1IvH{mltbXE&?|*-skUq=tQ3!)z z17qy8isb_|$?oBy$Uj;_dN*k-URM#_?kLlj>>15 z6}_K*O6Vx~Pij}PPEVGRN#3<+I<~8rHc0#~>33QvVr`&#rhHEJYB*1Nl1F47{eeyR zPNMtTilDf&;U28(qI#ewt?1hP`6b03@gDR4yGZ%v>I^6cN=mFR7;M}|ECHk!!89;% zi8>}aFE6=zQu8HD(JKe-Fe4zxA8;WxjUlK2+mJlvwg~m<0di0lS$bEIy z>bG(l5u{L(l%mrG{X5$%zr0@zP{Q}UWYU@78SD1>WdkK-a=YV(M@92YwKsT^2s9PC zd8C1UoWbXq;mIwAnYpn-vhGXx;+O4&yVxg(w?gz2^#9kespDjia9VCe0_wgQAdMKp9}QKWv4Y5@Znp?E@# zaSZ6`iPxt8W)_lj-N@Ad&KwMEb`!0#Hd_XVBCXsXrVeUMQMH>?GH35{ufvzd#&b>l z73Vn7=^Z(4ay0+nbyh@CS^Sw*dZvwv5%VHs2t?dE7_Ljh3Vqt@mis4K)VR>(WI-nR5^1+`|zHwJeJ?@SjGPxDNkN z5SCS;CxBIGLBh&ic28QQBex@4(tm1y4>)4nX-vT zz4@0$uI4Y;kK-hBFFqot%D+=ilZ>nGObd&PtB0G#qa1C*tHBNy<*Wp|jEzCcub-CN z2vQ2UK-_s0mUamaCxJ9vQOf#Kosx>^{cv1*=eSc8B{oeVV&bF@v?^lx5aDkZCokXf z6U&ioXjByQVO=xWKgnntiBTh=^SCc;uN@I_nxp-VDRrbLsfMVhO~>Z-cbD8K{kxd} z-%CpZ{5=h<+F*X)D5PZbOJB7rdxjxq#zax+cWm^yEEwlIN+RFM32B7Xe%~K%apSOT>QQErXlcOGzNGh9&)f9yoUd;GBhR^W z32G!yn1a=NI#9*9b??H&#;c_EZxd#5rYQRiE}`nr3^8V(KZRl7_V0)sdw( zzRVR0OAeDB9w6?M<^(=5%QmDC|MJ@I6AxxT^-_SM^3lU1*54fVKEHJsU(A)g72d#z z%rXS2I`K0<_>_OMtlq)LBqNOX&CSkzu8J-3_-5!`B_QQfCGF(1Z-a+Un=wR+&8=KA zqFADb)8#2VVRb8#t&Z=4#&}dJffiWoNYP?`GnGsrme@&kpT27KP+x1T!4M(t2t|@{2RrmLIf)-=0pjf zQnqz&1$%w^nN$r5o%g;wsTYxSQ710nPytY6F~yh7UtGwp1(Y#aVB~GCe!H$TT;xzX z-ZJ&EE!|2vkIuuhyD{b7RRFk;O?hT5LdWPhv%Why_+YT-jH-0LkrAtHxvZEnuXE|6 zik!_=(l9!=``88!Zq4}48XONNDpn~O&<4j$a4SO|Z^Jh>%&zwRv1uV#RFIXEYZ6$g zsOcVp*}O2iu2~tRX)-{_GH;UI<02*ACS8?Y?@7CsIx~GqOsrWJ1yEE^`&`0JsQd%0 zk`=YjEiNk`y=Sn?cixiCOQ+PG8B-!7nJ=ur>bPK51Ph0LsPS*i($R^K0fXF=(CoqRJ?|Eao!h>g-SCC@wM2 z;gL2jY&7FD-Wm}eN6j4tCIrE!Scy$NnT>$kKC# z0;pba%dA-6ZNnkMPH$4!_U5k=GXXivrLmP+N<5Dlm(~sj6~v!fUo5 zk@wN{d9GXDrsyob+U}pAqo_k#G!CeL3$J*!ta;3ExGE(ysbDot(usHT=sg_qVb^<+ z;#ar(vx+TPk1~kvt@%@c_RDflRDk&=%HZmF=ed}zYBKcE7e4*Sw!IOVC6A{)T1R8O zTa*61S58tJD<3+~Zfe+pu`QjJ=9n5IH^odrvd=JUzJVKGn=gdg!6JUGRk$R{2RWzC zV&+GPy?0FBhp{+;0c%Bd(i25nFVAg@N85S+xcx0rNIM075mCj$h!rFH@#!29*YWyL zoG<7h#yKOrO)V=fg-kq}X6CL*s{>a@M{fSgZ0;(4oAl#Q`CG+|>oyDQuITvVa`?YE z2m^=F9gfy-7Hxtx;&oa2OZK9IZUl$h{H|h~U6MGjJ=Y}h+`RR-`{N!f?;%&Z29VNDz=z^H_CqQx$|et z@kz+EbSp?ag1K%dxuf^FrjEBWPBBCfk1wd1tgdM{oOyBYJo2~WI`@E9- zviyFvKBQ^Z><%>GGa;W0>Y}dp4VL!^lxP>m;z2=Eit+G0^^r~hB|v(f7~5ft8)9jy zUxv8r!JN%&x#D%5t+_hJ)T=vilfjrf!=HK>zjQ4N{J_Gh3vmsSG5O!$LOdx>=1<>Q zip^D+apBP#cTVKNo{!wZ-gu59q7z$h*~fm_2gRMNwenxtKU(YziC9lY@50z3d=BNK zX*+HU9RZPjYgezGVq~VLo6DJMft1ub@Enb|e(?t9;X!$*@4i*k2qNk*qODj37eG~d0s2dF+oe$$L~{>7V-3?X7ZLi? zv-=neoTEnvs)3)_SVwz%*A4qlyxec1-s9Dl&r0bNlKAlU?az4}$95(Ns$|DdfzVNr zubqfje_kRa00I^9z66;v*s2$5IlV5giYM3p1vc`; zp+eZC$AwT=Fe^kEMZg;^E_Uv}WO1jH8E1g%ZJ7?X1n^vPCzB>*1A;=}#dfevvCSI3 zpS^M4!n|Fa>JPD4cnaN9ft5Y@<7T~nnRe2?>PH8-45*BG%?GtR@YD7WBkSYRpgJa3 z+WJ6&=E@t=zJEN4Q4ywke7RFSdjC(g(cw0t70B(<9q<0_7}sQf;+bkd=O-&ebJRbb z>g&H|-0_+vab&{k?<9}uOlTK?28sqY!-v~cxF^6NkOwT?5ko_m#5B~CsImm?qLqy5;(^IL2)+kw1>KM%!ii$)mQ&Z8xOQ|+~M zi3;<0!N1BH&K{Q!r!gcfXww=?koC2DYj4G@^Pfo4z7DvfiMJvjtJX+?12#Xszglhd zfANQqZ{RO+_`0~GuGn|?4etC81@esBY1aSNd9|3a59Eym4!4)$S& zBk%VO+i1@Sta(iZ+;pO{fAh`}&h#Y{L(7_F6vHuew`7o7=_oH|t(NsUwL6*}s8Bei zrH`4D?L3e6m2xubmeBCkD;esJ-T6i-B} ze>!!?)$sN!?d4mR`7j1RMeFafRa1sKKtE66$+uk{O-X=R`^(^$6$Ny15Z?>Wr-CE^cJ!Zj?e74~r?P^SaNx;DLbB8^)f3YFO3mf)`!XLPHn z+SVkZ;OC7B`e1&#TL9^#0`Q1HP%ZrshUbxDdRM06+ln-m?ViiQn-6x+<7Va?I(yBi9ybz+ltHa z6IkL0;5QaL)pvN!ObFYJ-LnfW`JmLHOkIsO0#Y zvF^w+==Acp;BY^h53JA{Alk{_X!^6}743c_F&8B`=XXEViN8QQeP=`e>FpPt8aan* z)gn`r)cSVKuEjQ}=Eh-hz;YjB&p5~dfTp2ntp|jeFk(@+l{c)IPV%iXv@lEQFi*d` z8~168&10GQlCjjGYh!prptKe8Ew(sHw0qf>#Vz_D7>P^{mX@C&U3+m3>@8;an=+O` zHQvx3(SQx2VbC_WT!^}NMFeZphqGHrELmjW&T;ou#5()WQq8AdLXlsYm!4EIE2#ht zBh*DfiOKMs$y5U_w(g~|-FLbYf+GOQjub+qMZZd+{*9F8`pOzUACXP#u3W^$g}Y%h z8ImgZkZEQ#JM=e1er;r$)^Z-v_qLLmi*y3&v({yRS9|!qojqjFArJaWJ{q92yQ8)q z3r;VMLAYrvWW}epRI6sb)M$$X-bS73LtVvqamQUes!#O=PHNNE#JiOVsQp{yk2dW| zzs3i}0D1!UlAv8FIJlx-(rZ`QQN*9yK5(+pP2lRThc@jBJna;H!RS8nAm$dR;r++X z5!gw+C;wxtN+3Mkze4B(`^L}9w3}-a+U`6rt?b0mZMi-E^%4tru*?Q3_XM$Z<*80$ zuHZfKUR*sXbAJzB>#``=Dd<9HK03BI>xFk5t>1D=`;?GS{GC(-#nIiCI&BJ%b&`kM zWCR|6z@oT3R{|ppMDddOkTwO3ekvnvdY)d^wDm2yT=uBtUxGdkMfqo%C6i|TeFLW0rM1tEV!-br6^b>HG{%h*3eWFYTs?Q*)S%9g<@>D^CFF5~(j zxwKz&52I!~c8E|Hiy&7T$L8wNqvP?fq9<(B>rqjO0@kL=t!&PH^)=X*ocB(k-bvW0 z$K28px_2oZpFr4=w@$h)a4oRm1|+TX(Bf>DTE;~NQTKqiT4vknY>}0MP8ZNEU<|0Q z=G&rx-x7{(25_W(CB8il@x$ni)C`@632faG zM9bYUi(L=q@glUBJPM7|txq4POT@7^(Y;azaGq|^H66RL_g%x}D7j!PX_rq#XYObp zL3mS7X4XMW1(>rmv?ZlIl)gWAm8+J!ifb_JBr`zUuhDkq`2@xK*ECNZhq_8XS7xc} zUw0cfo1S+!UgA^bJ9yY*)ma2WH%b&zA06NJiCVb4PtH%BGr7@Ywo{tgc9yCulN_Cs z;_Xf$lItZ`a%*U}%sce6tSaF74tf(IZ08uh?KXs zf4AT*^@$`-sQnVmd><1{^9t;z!4SiQmU1qV3x(knntl7ZMRCz1wQslY0we z8fakle<*IxrJ+!55)D}2wdkMKnEEXh0YS$r7K8B49ZIsa5Q2|bOfd|^?*zobSn}sE z^-6dGZ}Ij*vxVhI%9~aqgs!e>yrv5rgb?s7d)zU)cbs4pu&`_-&a3LcD7s7Oy)XXd zO9tIU&+;)@<##%{v#sJMh&nt%JO!;23r+tQ;2aDyy8SRFf-O!7aL4zJ>G{=6!mR5w zf%MH~;_cK+b#cXcZ$>GOd!dH#Pe3}oS1vLkp>~Jc(^d41AY2{d;I)E-r%&k5pB$F4 zT_`=&TDKaqVbN^Fyf^5jGlqP> z&A4yd-@I#9hhe>G8O8)JAqXcph&|*<-a_|#bI*A{og3o&G&WfC{-DjR%ljUH&P{Ha zF>iZ`^B&=rnmJ|yC-UN%La7uVnV$Dbwt<6NKjV|W!=qwu`18-=sda2s2!8UY- zUDoy|ES_NYDEAG$6}5tzUIS@oAh!ZCfUo$X8^Wg=fQ_3U`vpoUs{L6AQ82Ldv&m5V z8IJCnu(Sh*h_Sb9g-KU3s6Dg5uSwex6U6Mz3E8*aq67d^KwRd*CU=eu-=z#Wpdb7Q z4X4A`%jB*shMf!HL~<2O?LOp}K~_D4Swq76MiKt;k==!IXJbf46J6Z{2-=enpD zkJ-fp#)9rE|ab=2_-d$%7op=g%nIx@blnd^|kVPU3xz1AcRVMcBsJbz&K8MPn!|=Nbg^6-$$jxZpjm(oqs`;al@H zC%~ti#_dYBlKk>8PdPjGdzbo9V%a%d-~=_cSlIWKfRICH z!#tC+iH7bSa&GZc#6=D zc8EGT3v5!8l&X+YjL?mnXjBsxbAY$+r^!V+A=#Ix0hE16=;V;Y7ym3rvj8`|84zLb z-JK*SAlH}iAn7y%;X&EH;(R(Q*}-uHLneFdqQv{JcUwxR3}08q?XKB;eF6m6WXSPFp^FyaWW1IMMx~wA+Cb`&>VBcXt^T?Zm-B@o%p7*lI8T0mU9U{^lq< zZEkNF`2H{5n8Gu_WiuA(X@RW%kJV<1KfL$cy0sFEk8=4qa}enkM4g7dQy9V6@?03V zDCI(-c}k=D`}3}k^PA-sXQU^3%okI>a~GVB#qR-gds8cfs-V{_y+> zgzsWKe?(23xzNa_Z!6b&fw~d;(`0dlqJb=+KlNSc?fRJ>x~Q>9>Fd=j*Bw5VmXx*Z zk8NSQY2mBmUt=}hi1kxUUH=T07HG}p$-m51>K#>~l}!FTCQXeUYJdl4_Fj)X zwOAJ3qNZFZFK+)%idm@$dcT|6cqX{ASV&{|3-*G~d~5eEQaj!uVu^XYCqT0MYVDys zPsLY8Qi03#CHG9+OS`z@3-RMpJ(_U!+c1@V<8ErnntO5n1kmwt1cP|N%*vwh$*+&` z?{nR>jtBe9+@<9LL=}*Zbh~h#wa_zj%bbNTEX#M%8>^DF(t-qDnZmNdlL@X>p2QVP z*Uvq49S4R0KIX&Ud|$Q0dwxN4`&)StCtN?i-p!DbQEs8*u~fDB^o50(uR+95wXTyv zJRD-}?`vC%TeA75ltF{>eKZN@1LNS)RoXTRXwsIbqznOA8j)Xp#joW%pZAa7UmRaNphd^4DCqigGkFnAltf*0{G8^wI-b{hH$>V4Gr59IK~Eyx zO{B+%8QO7_Tve2}{T?=rLe%#emRCYUheD?uV+>qmLY4e|`hG4+Pl#Xg_ZA4co>-D( zEX|X2r_bal&AeB8A0dM=6~{G0uoj;har5M;XYXv7&9(zO{_2g#yr8BokGqeZ+oA)O zDOlM3l*GQTiS&P1E!L)~FSYro5<6JN0tEgnV0c_}&Qy0LWIC4Ob>+SL?tCwpVXza) zBEsiK>*daTvV?M#QvhrX@bCThi`)e;+|Gcbf)n=Rz;X=Gc@QQ(?9z|PeTkNv%j}-S zUd@L49OF?<{}vxLy$|%l&Xz5;^fNlth%4b5SJx$x;Bnjh$)4cG2LW5LaCUgf_e!o- zNPX1-&fg@xcWL#pf{PH+b9hUk6`#dId4{i@pO|j=2)vX@=CLG=2x}$G$e^ zaM+%kqS45Wg)IxQNjipLhV91uii^+u4SM;3U>znRdA7(Q} zS~s%ZDI}nS9i}%zd@Tp5`z1~M%hf*Ye%=k}eUO0ZpBI5w-V=T2=x|U-r>s#P@t-=U zh&eDP)FtzjoVWQs#@N6MHLNqSwF=LS8^(m0HiiX>Fen;T!h%yLP4KFD7<#kH`uN{; zlDD7tmzHVqm$jWrImD!Y7(@>gb;zRe73MjmRn&E>} z$>jtQGXU&RbfSAO(1KXVQLscCz+C~) z7fb1P&)daV%&$r0SVm`sl}|h>rQ4XUM|#k_XQX zmC7boFucxZaZ{QTewQvyLT73cRrv+3&0NR!eFFUFl~fT(*LX66T}X``4sbH4VKp~- z-hb)8xcjAaew^hYI;B32w`t--`tk?XE2*hV7lGGhx~G@#%aY)AF{^16SvcK6^u5m= zFo%^3KInF_4J6@Zxf8 zwDCUXidrF#7uzlSXK25?mkv?|gX<2d^L*|r@l$%R5(uJ3PO{wNG?rreS}KkP2v3di z-u}2+;SCNz2~cq7&&dY^hiEvL#c&g&$~QW>jZKMqFfwf!<_L(WSIG0*A4Dk zu+a@PvkR=neJ!@PYKuLiI1T8FlmQb`9ly<0GdE#X%Z1BWw!0D9SP~8p^{lm8ZBUli z|2_?&-e`^RbclKIt*c_bZl}=Q!3Z~~H@2L|dV|_ORKO&mi@`rUW%cRMY)lb^?oHCg zs-D^!abSaEO})~_K0*O?G3j0zBZ4tD(wYTRaNDTllewOQx2!x;*1E zxH!0vD`0Jh)aFR9NWz0&iR&c)^&U6o@w|3)+I*j=Bfg1ai5m29DRH?$e}Ak%jJbKB z?0ycIX=I$BS<6D|%8{MgF7etES_|&*eQtvv==LqP_s`ZJYqh1KU$AuV*Zi~ zV2jHE=WVDVYHN|RmD{kH@d#(=*O`94@TVOVZMZm3ina!*wuXBtxNHd0`pGg-R>bgT zCm~H@`3XwtW<#9}4!0K@q+}jmDkKnRuR7H8jM+}<@2fMJPe;!^&N&b$jQM@pn3Nm6 zYyMMusO}^9S}fnI%i&I-F@%?DUgny5m^4Vh@{jK%|6p9-toLhNlWhO|E(7vOh};tt zafFbetU#?%fOuDMf@bR1cIH{{m$=QLT%!V`6#g zyO1A5-Uszzk=Yn5CX z+z1V4x?Nl*w+6e!4Wm5n{Qc2<7E4QO?WwWMw<;YDUi@elRWsyu0P2ai)m#CTzrji4 zis&%>0?}%6(Tx+vOLVDANy1ufp;W6C7=%wz3-ly4DWOsH=I=;hN8w(|Q_Ryk&KI#{ zV4>`&^@$sjkFv9Tl1A>sI8Iu7(Bbw3Bzwoh)QARX$Td&yG4|Y8gtWsV;WWm}Nea~& z7Bs2ff>F%ifInE@OA01!Bmu|Q6?ur}GhZTu`{9=rVo;i@F^M zm=6dGgBqNzVaY;<5s{Z6Dut9b(ZgZFM~OwP@lhXKG4s*=n?zBH!BX!EJf9C2^5NA-*c$vuS)Dv*T-Pb-m z)Y>Jg*eykjGb*DtJbQ-MEs=wB)i^+t&^T^5oGB?GB}D9k@A&D>U24d|0r6}x-=_3D zx%IcNr=%1Kw%08$H%{i$g1=VTF1_2^6eX>5vwt`SXpN_iS84w=nSZNi+`pPQB$fMk zd$G6~m9;mLK572g^sHNWWKoX!LZk?PZ=$f|8I_WB1EtO1-VUnlnog(cL}(4Yw_)>rOWKzi}Aspx-szFqn^U28@bH$=a*ISXVB`;?z1y^%}BaO zUcL%Pt&(kAC*y6bwCh8Xw=@;nv;Ep+(dQmMJ5&h51pI@Dp017!B6GvWRLJnG7!n+7 z^yobEl4}#mnY)sEDiY4igIv6%^pKqwVHyo2q~I&#A-=uj#3b|w;27rFMb7ctmsLKe zBrf2gJ)=7m0x43lx@g)+h7mxYGnnqh-U^&9ZbYioYc%&aN!~==!$wXilAYDpx&?`8 z9GOYY7&viEv`2q`5fv&hbWl$5%+Y1?tBG$=i{R0@fx!p(%O_5m>33GpX}N=xHm@fm z9xL=F8^}Q7WPqrs9%{LvU}e|b7y4p7Uv;El2&%#Ii@&j4>zJs&DA`jLH6Zc~1hF>+ zYTz?OL4?@`-`;6;!yH=SGc;&-k?yp0u-_i~2SV4IwA?ecFa9;S zv%!b{CofR=i`OI=!6R(5(dn4q>7--|cdIJ>!~CB#pRX5J z&0S}z`#C>5XDUYJv&%ef{ho$FxIH;Y&?Lwv?%KhN4X|RAG4y&^r;DbveP0?0xOQ7^SLR@SMeB8aUBrmCwV2zIMnTTcpzoR{z4 zP6B1okpHR5_)X!?t<}Oux0eiB8Lh#a6piwW8j=}Sz>AFGTD$(I)I3IejnoK@*}D$? zZZjp*tIIV=-_T&;*7OEwT%Ew3k(F)5_RkLWdM+bRwatza>wEWWW;g7teAQFqnUy!! zr`0cT%nFXtQ@x=DEb9r1DHn3$#cLhqbx(J}MgjCGhY0PZa*nMSkqp?7gS^a!P2GdN z`n9{tkTK-!@R|$@BfSClK-0#UF`LxJifN%tJkfK zgh%K=VyfmP-{aqmR;bQOu|wM_m)F*#6A|sjW;3LD$Ew}ML5kW0=$Rl`i|^ALulc^b zv>@e9R^_YvZ&k-N2YJ?rIm&B+l5u@Q-0&N()#XMRtbkiSJK`$Q@H`#Q{O#*!&SgP4 ze?w(p@jpY~?k@Y1@X4E>Kyyt|u>+4PR(9eU0~4+?vn6lN`SE~==AYZCxcMblKQvQA zXV(MjT$hZc&T_59xNquts_aclt--YRxJ>V8c!&sPc=$cnG|pc@HB!GEXBXS0FkQ}* z1o%7*mkANQsUUkGL`d5&b9T>yYJk;tnUeS746ai6Yh+pBZ}2OFUw%3(fkF}#IGG}f zFp(78CeasMV+BSq;jd zF-+(iYhiWYlv;gl`|{FCIJLzl4B9IjPIXyIfpg^v#m76#ow@AYBo6nh=!QZ9#Mf7R zgaj&;lsp6M=|wWMAG-B^{l>hSbc+jKEWBe8Wu~nVz3259`I-G5Q?e~k;n%y=V6l@n z7sJm7!uaYx+S(fjpQ?oc6ZeOw3?wIJUe}MUQ#_@hB+7>jWT%Df-ng3Na&hVFqYfcy` z!f|q2m<+GOS=HwS=YE)t-XV=kHHh3;+xTAE7_$S5|20swkB23{anpil>Eu||dPay< zSFAQ*xa4GYgnAo>KzrTn`J%3r7geo9axP8L;&3iFGU-1e_CrUfJNmbuO1#nu{*iSw z2@;~dl*KTAE5$L+yy)#rx0rgFo*uM!QJ#F_2|u2fTDP~{tJMNNl!U+$-7g-c4}tnM zuOnXmaHe~$3mr;m$-GdQp|zwSr98Ww4i0U46w(ApQpggI+g~rSN^YO&;kh@T@`U_- zTcuc5R7d!vz?x97i&c*1fozK@evsRy45sW66H|VQk}v{zS$A} z;_Rz6x@|jlMlQ)?{pqkAT7YBK&y$U7E1~qP(TG!f{kQ(jNzk!a*K;CBEv?NN*Q!od zzi(A^Zg+kp>L;2t(CAzdf=-FxeTyi$seZd{ZU(Lm{AS;2WHA!rC3X#i`QDzW4RtK} z_}0OM^sNJlcch*WalljK_An{Qj~dW7q(%z&PC(X8$Pe|^z3jJaYyR(@?>}mW^FJIO zB9Zs0fBf0&cp)u90KN0gJ?qe`oXig&=QeiW9NhhGq2Zy2UWT{NGd&xF?469znlPv~?mFi; z!aU$a9|v8>1@K<={@{hyn~K^o>-o)?`-#OXeJwHc#g`O1$+7HE4fdfBPQ$@{RNpoczQ{oah|*Hp3FiJyybe=(n-QTw(dyS zGJR1ND18>WSTiJEGRi%0z4ubCyH2bih}?W_Fz!K~(X#!T|BKLuO`y5`)Q6C!rd_M) zm4hkrP zL>NOvSoF#fk>{+w=WM2M*dq7F2tUZ039Ig}ya;hWpe0PL#^d|lX2&3Pefna=Kj@jY z3S~I!AtLqBx$&;OUZ!fu^685p`eY(a4OnBT$*Opp zk%3mt>~U^U+(gTc&o7iNEU;Zr94l@W&P0n)#iqkZhf^t*O^(*Ke)qha7a=85UnV?z zUeOToZdEaQx8zZlw9afgRTL1)eK*ZdV$@Rf;Qk_Ud2*4{QhuW2vd#*bw&GF`r2v*G z%?)PAa=%=OATZq4u#bZ(a?sS;5r|kD_mo?$zR6WO)-a>U$e*#&`^CWZz)+4{;A-nD z3WsE3k-O0Dc}S*qG-Pa&N9#C~rpHMxiNUd;)=Z8HT+TCC9qc^}ii}mLK}0hT5uNAJ zW!Um$Y*vl;aL~aTN3Vm% zK7i>Febc=%nMBn-hJKCi&uN*ub8J?derTCYIwY^xsHS{qo^zOJczWmrR5kF)*cZ`) zAbJm~@iasYA!n8+P?ylBFVgMC!PunovX7Sl(LE5@aNMJET&+fs{byjdtX$-GZ zGAVkEkXyJ+qcj@WK-S@@xCN?WwJlnJ{c(`Eo${~L#B(73t=vX0T;B>9z&o5V5hr)k zN1uI@J#tt?FFUIy<$5G#YGF*9u5C2R5KRkdP4KCY<32`4g1_H2o^KSBbg3Kq(Nz#@ zzeE)gGCp}xLs5dTWhu_IW$Y_h)u&&NUrGRcS*Z{Fs`Ey$*(FX8&%wGJj)nByz4vDS z+5v0XE#p;LYzXH!@^T&ZAWF60Znf*ZBfTOlzr+6ga8W|%dJa|v}Hpm@MH$CV~`nDK7-+RH{zPrHV zxy{yjaiG>u4fU+&HQ(E+nA!y&E80pH^vVnzi1L~*LUS#q-TKa6$~na z4$UkB@})9IjAf52(N8*D9h_Os`siRpb7)^VgJQ#Q8$azzn_YJyzBJnX=x(l8vshir zemAkqa`3VngHGGA$qG?c`XZvE1arJ1TxJjig9l`)`vM@e+HA`H^vRlL*DY)A9)p~M zvNp&`umWz(_*?8f-z4u_

K;`6QRIJ|=;iq3Ke(7F|Q?*AyrHM50aggePjKw#Qw_VdrUouE)D!^a&ImK88 zwrhGmI^efK!cQMxKQb|*Eo!1Fbh;s|h&zjvm-l&wL7YaE03E;s%|P5*|2e{@a^P?e z<>Vi#x=ixbA|E~TE)c)?ml3E^MdN{X{K+oMvgysj@q=W%(17L$mt8Ydr!>_+++C|w zaGJ|F*(E2$g?6r1?lE3K8Y%}Ez3#%jrq{`D#tW9IP&FDII;(wP#b8{%Kg>O1Y@_<* zoleSa3c9JFwHfC~CGGR|JYKk#isyDhgaZdrQ73uvUjS_N%Ju?xcK?+uV-ZD%Gx6Z4 zNyxO(z*!0Y(B8><)$ccn-cNXx$1C5u#M&Rk#zrRldc~uW9c0Q&*)a(p@6Lin#+)z;6G6-=GE95V!uRA>LJI^sby>ZGgeWEflkri;7+RI( zw8)=ebu(@BwH}2WJ^p8hl+z5bgBiLV&S&sNkD{c&?EUGDu>V>axZ6G0#D93(mjl-K z{Sn^DnBiSpViYrIq(>`}+`J1dJK_4=gyd5Crs8){OO;`?54odG4V&&^a2xy1wawdG z#v$Q9B2*R04s~d1juvE-P|LpPt?ftO?}iigOt0tZ~4TD_CdWEi{Zi>hI^yu`~6Q#uDZ=574SKG%^r8`%lm7s^EV% zwxa7LO}iExW-o@fhHkb@*J9g-en`!9hVE|Z3D4)ZT;yqCZ6$)VoAYHc?YtgvzO@z@ z#Y$9}Io;6l4Q(uDCm%n!tr=ed_TePVn-RAz0^RSRmAs`bS*@-Dj2&Pbcxsw3LnIxY zrt~+TRVr%EnX$NAd73L4t1J_koFoS_ucpwuQ(tz6y<~$3(jMHuyIBm z71odp)uF$o+NfjW(@W^k8~*HDojK7mocXT<9#gx)6M%qbmXVgJ9xx2 zY>+@rFu^OHfcph;efFafTx>F5kLOF@qp=@-6yy_L7ZQ4Sdw@+Hcl zyumjCp>Rc<^`o)!=E&Pk1l5V3oVyq>pwz^R%o4?4%*luvsOYV8+mVf>nV|bW zbbV!5TidpFOG}aBQi@BF;@aY*NP(io9g2H!0t6}U?vhfVxVyW%ySuvt2=Zm0bN9Vx zf6u-A$OEh-Ypyxw&^gEZlG2uZ-C*7`NepS8_}rt&Uea=V6|5S zCvoJVG?kLHj}A1A#_6B$C`q2527^=k{Ri4!9;c@Sp-}eEJyfbgHH#vzzrcj$Hy%y3 zG#;Fl*P0>Yd*ZYlO>iV4-gmiZaQHXcD)=D*?gfU(_6>A)v#T>P0hKwS`|GZ&V8L}a z1788!^kQEBqlII(^>70Au082b_+Ds;=kMj$^}WDiHV+7#vlcJg_?p>0?%A$NAmJZU zX9^bY9C$hmkH)jT8hyOq5RNHD9HWCA_kSqcG;1r1njJ0-G;lJ%d0Q;>ByKRO{UtyN zOEcKWD_`A-mOjCQcJ~mmj z$V0*H2gVDBhod~Vj-Tb&}!(&IF@VzlyfhrNq5$$3{(J0+IQv_-aig}bY#=D!F~vg=v|Unpk(7m9lY+f z9QI7JLv4?e`wAjU@zR5=tFzwGVe3|iWDXQOvSQK*Ju`h@ftj>qXn*+1rlI>`c5T=2 z%Uq@5aLFc-WobUmPAH{3RDuy|>#8M!u|09cLY)EP+0_n1f32=M57#@_cu!jb`o zO8C+5DAgB3@xXaX%5a6~<6EL|D(m1$GJ>H5Chq&p_bZR;c$D~OZ zeio-cxm-~=W4)(Fxh5n7&2<1!|3O>_Z}3quC!W`S!7QP}QL1l{(?Us{ zcuEBZW1+WuURu&NGBw@oD@TUokH4+92+1pVYI)cP9q}tVnwF(MnHGG0v)z4N0`J`K zRc&{F%81`y^u{M<&~l@ON?>$?d*cUJw&K-!#TzfONqaW-Z8kcY z75WBLbT5UQ&nNh8GFG3;_XII-q4(+RIlmhAy1Owgt@VB%=Ww&%RoZIf;XexajBR@p zoUf{ZJA37HX4DtFPuY%(N6XKvRE0;iG(7i0T}%~irr3wK@fi+p?Pa{cl%L5OscLb_ zK4C2#YBcdWQ7>ppey3vwzgb>cdX=lNy4hDXqggnR;*?FQTJyL%P{FP-VBgGcbL@^b zuJ^W*MSl~lbUw4tX|cNJ{OinooOHC64?VK_QaMrKeMIWIdO?k$eIL99?aDCCom<9I z3Ez`Evr(yIdr(qR@=M`6%D)J3ArPH-*H=uT){CIua8AFxW7B0Y5&d61s5Swwd};OX z+i;ZqKQK}oJ~m#SbGmJI<_i|~k#BI8Tep)u90{V519U@B)nEy0`8GK0?hDjt^oR1N zp!~h`T>}$GZg-ySG{y!M=Z06eW*bsRHi9^Mks;to29Q8b?akoM52)k8FLv=opPjcTIbVy{4=~}{D?K2k{S%k=P<2 zE(2jLY5xAb)4+{ilLg1QV&t9G2h3O>8+!76M#S~vYSCXYd+_IS476t}p?vxN0s+m- zwAH_44dyR#)~+JaB+x=EuJvrn2H(KUw?@!{J}k;Nc!dO=xh%vHypXwTITMNoeS^g z=BBK=y0~t@tA{}pYfDe`{+MjUcTZ2X4RBCKg+x|!c+0Pa5Xq(ILQE@!4rJ3l0AfaZ{-dp+@}2ixr>w7+ z&!@u+vtldQee;67csrn-{>7t-dnD=ortOu@(e1ttoT~oEzIs6ioBYx!6P&@_lN{bH z7rZyzXxH-@x%pK8taJ$iLrP^uDDL1>%fOOFGsuj$#;Cv6(Ta(R;2hsSvzggCd82s_3J?l;US|HytJqh-*?rgqR2dV`qr1AEFQ6%0qT>vBuG_|c)Zi8plnT;#w>1?`( zBS*fZ$(oxwEcS#so^>RgCQp8ynz$Mtu*pYPeQIp1+e2YM3u_Za`E?Cr&&67217il; z?eymN50mt0Pe-p=%tQYIml{8Igmb+foKKhYLqgXHv8% z`{{LXMMrw}zfe1p_&un8k+7==yy(}AR=*h5|2_Y~CCCeo-qQfvlheN}ar{@IW_yts zKu=YBB9W=Yh=$Dk6`EW-*zFKB1oXksRC(3V9XD%aB=gB}|GOio90W(^R4o=RY=nxsctGnF%-{c}nLQR7Yc3#&1uxbPjZaR_jAWU_Cp z2lI3#7|;5lWak)N58RfKfLU}Oe0RWJbbo^@^Ynw%pgN~9mi5FkC*c$Zb3tS3el8(t z^bs`p(^64Hx3+%lLo_g2`^lm~12ps(4q2WLSDUZRNL%e?uD*;z@qUSI?FkgJueyCS zaHY`v%}K->{C3%P(|^Atu4Z40DdMG@5a&?UJta2w^0)zaY4?GS*7@~O_FMq%dw7Md zDL!?MRK4Zk#f;Y{@=NH;V+k~ITNPA;sr^XMyD$TnEob-%ITZ5cejQpmgGVm{gC{l1 za?jb9M~VT~g$WxFc+w@%PT1Z_CUQ!&kXifXsDYKupzuXI9I%N9T&De!?lb=Y6pO7q7Ki4V%|##D;J(5sP0((YDck1 zR{+10_R+g&Czf5*Jv<^P=!6J^JG0FF8;`TebZ6eTEI11l!9s(>obg6qPyFqj`e%3( zM7JM{O5Opvg8${0ADozf(gcgNeN{I&jc?tg@i+=~ z19@`R0@^zD)7ggbWP_SBfiTimfoOb&6k7db>fiWFQYB?1X`T~`0wtN84*!DwYZryX zW5RLA9x4o~`9ujX;=BxAb+tALIBDFM8~|hs4*pRK-^Yi8dtp^S7J=pe23BcU-q_f*yT8)7LO#r?USdg}yFb@v z650&&W|eD~Wa{nm?~U4+#C}c|8ryoy@o#_NJvKhc#lI9f_5K- zV>4dJe%I+MS!Ml`V3j-^Lp&QZGtuiO;o{`D+1jN`R(j-20SIkXUME6U<7ST&NFQ(=$Y?)lG3@cJVCFkZ8278uYNdtEnf2;= zFt(*9ljAH_x%sCAVB^odL*9!1_F@ci`IEr7NP^8;g!*sW>O*P~{-2!~A>l0_ZHV8j zw0Qnx@jq=_Yqdd;^|3vR{!)xzS8v13S33N{2caD77^S&?I`^{bk-6J({)*?J>0Ur6 zVn8f~XX&QKY=-_d;2K|#HngXzHnU8w9y++$sPFicUVL?|tA1<3??@oqfJSl$do3iC z6d*WTMUh#_8E}o+o@(7RWv<;0eH*#vTe$OYoTJRe?InMgPtQN_yxB&(^J@bh(u&np zKlf#$4+eP|XjcVmgfw^ttjfa~1xmy5ffIkeEhJsQ49z~mu_E>1$S*ZOuiy}ZfZ9m1 z_Wmrd5AH90;lOWy|NNo^W@sS_{y#j8{TJx}9)(>kCH|$oACzKX~WdhsT)ZU#}J?;@_rGl@m9lEg=){K8F0&QmFM4Is=J?LT&yCwX{}12)UQA z=d_bCrrciJUWg;rdpOxzTK-aFdC6Ru;r*UBJxuVf`x!{};1WP`xZEVSuJdrfvc4QC zzqYKDYSP7v?C@Zor+fYq97*xP6N*mXukg@B`0;I7Hm1_v3ltBi<_z-vx1|N zqp+f&0ti?=*bC#a8-bJG$%*|ca5=g3oJB`*?cRVR0apw}h#g?N!g4Pze()4syU%_S zPPUxdVg;Oiy^9B`iHIOm`eBLmb-mPIt@B2<)jq<0K31z|Ad={!w~wlTU;5Yef4|gM z^*v8MA{^^&XpG_wnjUNNmS%WK+aD5;&BOs&oJ(T#ZvE4v(%m}`w@tm)KV6{T_U=r> zw%_V?t`u$=?=su17K4^b(g#FA{ktJMm*(69gII5BkkkZDHSzmZTAb6Z4lxRA2MNa7 z+Nv)ybF~(|u5vM@ji1EtjIBE@w*yzt3@-+sFEml4rG=jQNAqykK4S_p5u`siUmQMP zT3>jruc$SvtX!U_&11*g+>Ub(mbTnoUvvU)a4!mNV6^r6$d77Ir%zHVl@_Wovjg(a z9ix4$t^IsYtPdOVeT=Fx7e}WYi>x~39K9v+r{gysvCFmcitk1Tpp>=}A6U~JUnf-e zZrPBrr%$5XmF%J+!#jxvcP)1~>#19zn|gErX!B^ip4+DE#l9M=226sIht9@pa(1wH z)ol9Gp_HGs6-q_Y_~EqmEkXRhXO<(_@o*{axH3B1AhjTuDF$M>6~~7)^9YqzZF3uAdk|rj#j^n0B=d}IIJU% zCK5-TeX7J{@yzGnF1EQtbnP6zx$rt6xb_*0H^NQFXtCUe={Yo0r`>oSW8dK{IL?P( z2+9Xe{+2yzN^9-WJ(ZRNK2zNfru726ikGm;75hD@w~S{+zoSMkBg&e)e`0+88E?6> zMdP~?)$MEl>1KCkoB8yq;Gt8q(@I8~$)b@lLd5-BNvxCWY2ay8`d#zrz~EEw>Y$}i z;JpmkLiN_xlA9(KH=+c4G6fuHKN8N%MN;dZLw98rnZf5+H-@SNOE;OuUsQij~!jM zYrW2=^xEClYEgLA8{%jcJu`3G*XnsZ2xVD4A6lk#E^QG9+SZQJlSdY`*>OoJDtH?z z@4)H^VpfI(EyaHs3lT$s1BsuuSVg|b4?+b`IhI!w*QPHVO7&uFfbU8IKD_5Z<=Fm!$695}Zw;gncvazZT3ni7GLOq{me>^ciC@ zX>yDZzD6+Kq>um4QZZ5|d+c~jkk+O67_2_)^SxyvX7q7Vt&D?%y9tk~DPhSoklt%l z@S>h?38q`66*TMHH49MsWi50GT4jvnqx2fpWn^9XP!rmZ&dS5O+n8wjYw?(A?$qUa z;pD7MF_wb_F))+bRSbi+GgdoV&0=pg(|xCfZVMOr?ohsuTd(r@uzW6_yRWomn|O=d z>meUL{>zk;(!SEB!@&zoWTd4?O(iU2w?L=6tjHbN6gA!FhSEe(>w5jgj!nI|ZiT?r zA@6^Q`SqF^6^VHlMR1qhA)VWkbGcsKs&4oZC}vZDvb2}6n3j1Ah0;i|jgxS6hmKe% zJ#tmzzbAq>e$9sHcCn}5u661DYh9`9wz17^elJ3cpxpbiav#= z$7pfGdxnaJ1_|ATY;zyt@x5m@I&!ygo%7b8(qc{ZBEPpY-`(mxRSPt%re~8Rw&QNm ztEEkDZ++_<{Dsonm*Bo(qqdD}B6FACK*2gE53Vhz$F$^@3-!7ya$kk&(Ak8f4vVXh zu}}yysHNJO;A~w+@>;Y-2t3R?F&3SD{#5_F(^zvu81@@d<$j^dc*Oc|i?QWcnUzRf z6zO1jelxipJ}@QAyR{Vx?DLXyZfsrIriU1YisIf>#mg*P>P8t-m+AMe(~I4G`+v|ZW;Usr%u=N zUadt9SQZPa(_6W$0SyL*Qtj$Jf4-X?#lOpazI=N@3_7*qzmgvHI`Zn5_fX$N4NVhd zZGAe`6H?Aw-YITn1>EP#OY*G6hiKCP9;Hi{x8J**i?*`ZJk}XE*V@jj*mtI>*%Oc_ zuv&|4gP%6#`$0uXq@X70m9vt-ufLv9?^*%(PARjQw0ifCpgw-A0G9 zr4Ll5F}$u*Tp*Z$DuBu6@f4mb-j&AcJ&l%@iTQ3XZi77UI_)jzi@?qH-SKMu@#C2S z_FmE>t^0Ia_&haABSo|$nNLAYSF5e!r0D5Wcqg&st=m5Cy4*S2FkLA6MS4TvGhEw= z;hVx2Q-#|jv%31$UcZ@G>o}-PAE>Tn6oi^)u!BeY8=qTE`<+a*1s>K%`z(bb4|$nq zb;x21iHz^W3^hk`h%U+q?ONee8=olo?dbwiJ2(o^kHE$lU@SqCv@8CoR}h3}nIp98 z5|aRW>`B}vC2VcFTV0|q)tgfNFHy-wNw5|j?oM%W+0~egtj%;Ej}KD1R&!nf?w9M;rwgP?uTC>LAe|<15PIWv4=-i}r$vGn)i!Z1m)nn2= zb^6rA4;X*5Hc_@6w@80z)&AfYMaOCT&`BP$OJG7n6ud|9w&m^8Dsdu1wVMu$u6BIP zosdQCqBFyPJH0-m&2txOqVR!aPDUIwGxue~-NMs*nmZd%74^fzY@bc*38C`=knAxO z)VC<4gyXs}xc&TaczKbH-R-3a4+PHjo>W_=uw8Fj;cCBgY3m8+5mVcOdhM`oogPxH z@21=|w={Y%&o^Cqo}LjK z6B|N*BK<4&)MdFfiqi`kvAjDj{eYxtX@5xmoZkfdm9~Y=0AEDG*@asYo=4ReR!$kX z^|$@2i6Hk|lzFkojKgg@uYEB6lkbaDC@?WSkb#4b?$mRza*NNh7h`#&H9T<3^y$Iw zPORVqI?wm}-0cR&#I530SBLNCJ_}KtF0dsx>E0y}=zIWBWA+n2WeA^>|9e((WdP@^zy?Q$l!{BhAKs%PEqv1Y zTX{sV^Cn4=Q!FXXkX!Gvi>V%g8Mia3@&nR$Ko`CoF~kY3&~!*GVrNK(yKfN>PfpSP z)^ND7mGiqW-6FMt#ku!`j>(`xe_t|sPw}LL-t~pBYea5uF-L_OshmWSMELhz7v{{c z=h2&9h9?K2a^^Epl**H!XXi34(=wvQ%Hr;!8{uv*^)Yd#ks4nx1Rk4?uY2wsLVY#P zj5GB<-hBS=^#LDKf7U5Du<5vx2Bmckyj`mYZiYzx9Sxw#v!0XJfDWgeovD_wpUs8% ztv9;7%qo8QX`IqLRT9--)`vH{-6i|F#`8O^PinwFmqv0A`N2B!k6Uy?E`I4fhG<&} zvFI(B1^bo6b3Y$hZqHMKx&Iys2STLI(wIEsQE9f4!xicYFQE4gNE%>{EDoo^G*10d}~uVYv@}PSZ}YIOUT%U#)^T z|5&1%@re1YM)dci{w>`9`Yw+BqugNrZyrm!=XxN+CG_PP+7n&SW|~ZC?1hVSAt}oL z{<)}cFR>k=xDVHvr8OmuOG4LS9T|}4FRk#_2?S?8t%=VN(Z8ScKSv7xp9~SuL#y@) z{YndfA`YJd_{q)Uy3udE=GWp%fdBJund4^ryA~@Ailt{ z=C`e{Hn0o>XcX}UjVI+Y9p)Ec73Q#U^6*_^N7~rDrs%fse;+;EUB6h@D_4$pb13~) ztaUp(N@A1v>jc@)v-v&K(_${R=sZD#?QY;#gBJA}wzmK4OYB}fYO?6XNEHKfk7nxY z38ijlLmzL*qdXwbH(XXQAsvmHa;*EG$+oHw)Wx za608+roumFDpeMIYTHojjh1SICbR4~DO*s}`K@~BTl48FuPg+CT=WGqt;j$p+1lE3 zZ!X4G%fNQt`C|{0*@Qd0+{R1(x^AzL`x6fSqgr&gY+kgvY%~UNT-uZ!d@YcW-u_xX z2;y2mH|JiQV8aa@9A)aOdL#wCUpTID5g-GH%AgW(b5595{aH5euW~Ump{1Oh14&Vn@)iVM`-scRO%yM z+z+;@!f=@P<_6FE(P+szrs!i=t@7_tRlMo*$r{1ES#ULu3!yPjsTmy_nWKMKtto3? z@5972lmZ^K%#9FlfAATznlT#DuJrvm|ARIbdvvOb+B8PhfSk|dBx%@Wm?w3?fhF+e z?B{e=Nh<7FOYl^j6b)y@ph?;r8lrHyA%|kcV##{t8Sn>-drB;{1@N0mV5;8x!B6=~ zo>z$OIacZj-s=OuOxVbzcj{GG)UNn?3}RiMasOcjp@eifEq+yeu^^X(nL|ULEUzO)=~A-lKbWG zO-kS0QN+B#7x1;m&*b^8Mw$2A+Ay6)AJB%m&u(s_yhqJ&7*=z#D(Z>ozl?k*}7j$dqVg zuK&&5bM%*`<9bIynqZ@Wjj)VbqP7sL(xehY3JRiVMR`5_uy`lV3pW7~&Fdw> z(L?#lapm=QM`e@6jfIXI-d2KY!+?CJVJpucyZgnXve5>dVQ&Zbg~gkWLS;!dekO zY#G+(xrmXK12ybAg3GG!bHZ(D*6Pn<6H(3M8Yb$^jar>Kj8`q`YwskWt^F?@!X#LM zQdtVPqg84qCNX^H2k)MXOG^4DCN@g0rc9)oJX^Vloixv@Hl6v$Jp0XpQ|fpjwj8$g_axCQ$b9WYGibD(#mQ3 zF22`j7D^Q>#-{KJbp>Yp`0kUjzBE8_;k`(ZHj$a58|1adrCzK`LxTE^%cR;kCQrpO zrxmrLuFfp?C`!(>Yxgp_MaZSGGP!6Zmi-L|Y6<)6-<6e>9LI!A7tHVAMp0Si1y96o z=&P=%PY$HGCQFC`B$$C2)4=?>KR*+XHgaPpsyy;3b0wPUzE$lcsru z>d4AoaJ84|uJfa0Eg+4n_I8xsVQT|W$gKM6Z1eYSv9&~J+Rpo`wuoDKVj#EXEI%NH>qi$neoI4i0W$s&D)Pp0D07Gz_s0o#FsHNQ+d9 zEj_${>wT5Snl!F-Ee01_?`Tab+20%`AG_lFeZrEWiA6#27fE?D{sa5O36j&5#g4MD zFNdr&1d~DJ!}R??KmuDj-m6-KyJBUMz_OM+ZW1(%ZRdanN(4V#(uJ_G9$We_aZo5a z9U}5olMr&fbLhiDag9}uVvG!Rz`HLuRIvj=y{9VcOTr50I>iMDZI4|BBQD9Q-++2h zyBFu=enGay{9zRKcxwX4!XLVRVnwunwO7nb0#~aSB$<{zoO*CVxv-iXVRO7h1WsMIPe`XNwuuEgUeRad&v zq!}=6%@0@^29`D+jLY*N@-3Q-$E37CihiF!HnpzPgKkIp?BFrFEyrye#*b5n8i<_z z!I;6w{bx6e#cM5yS-C@ps?Le^STo!edVB6;z>ZJ5g$LkKiL3qOzLf^Tm&%pTtMyoR z)wP;Cu-T)<1FJyeuVjQ)C)I&&SuE93Iyn8lp`m>*+qWyedMNEUEXbVw9xhNJn&6mq z(g&(SY0I-*H?dKn=v7%d>gJVSzF%bmeAZR3?N3bvgC!!s&W;mrZs(lL|`QvoC?* z+v=AkG3{ep$lF+&jjyqPkJ2ej&SvqjY}n})YtG_lq=-gGp}u4_mgh zKdO;tZUAI-6z7YEMuzg%-d^E6TLW{b$>b#|%CwkXCvp#ovY9lk>|0ATI5HH9RQ(uZ zUAGnMjnR4$^e}HFw-}ukd}@Ee7%xSH!DBEWOtL3aS`?LLY@Sjc)K9tNY8&OJjw#Xs zOc|~TIQP%PLh|`Qru`BY+(vOBOjw$aYaJN7xb#p&jT=j&T)i+KGe6(F?)uh0rh$B< z@!m}t9((;679g%#PRkBEY`&!rv?>F1X_)z@wHxD?zxNAZP!$1ly|EMzK9{u+$$?Ip{h`F&CVt=q4 zI_|!A#*&NRN&h1TjhgHv6VxET-zKK?&_v*9U?{bUVmzr=tc_^_SE?88bAMZQ< z+*K(QDf^I1s!xu0*f7uhv}hucw<|X-QnS`RZv$D9OL3^cIEfWEh2kJOPcjbcj|m0p zUmW%F98maS+3#<>d(p9i$?*mM<-yJR&$HLpO?xKw7i4pFmB(+^}XBC7b=VzP61?YQ~v0g%-F1x%{JZ+&^Jk_;% zDanI3RpUCu%U`8MsKJb6RRDu?B@xoK=xc3XE=LQiTOFQjkUb z+7u~!+$`B`!bF>z#w7@=6ic^b+J-jyh@S(~`#?&VQzfw4uul<-X;5q`o)Mg;~f>&;!YFvep$++C#$5pr*t^%^Nh7%Omax-bj$PA&C8lP-03{LV1VsXcv{u5T;=}serM1N z;Z{fP&Mi1*pC>$s{X-D(0*i;L4dRsgDoN03!5U6S8kfDDt+QIY6=bLPS?j8%yv4-d z1pO9<`uv49R;gT?wf*f4;)9U6(?ZgVZynA9T8(uq;i{rOl*m5r6Fn{*4sk$z0`0Dg zyC&4Yjq_!nPeC_Ws4f0ILBnm+EFIHsXt@`E(u>xLV~66UVtN827fA-yq6IOHVf4O?Lz@g_Rl z%`GAKqWhI}8_b7|mWgGupOfSw*uA)|&d?TdS*&OkL=y@fMUF>Ybm`Td28|A521SdF zN6N&L#U*?sHS+E+mZ`q5o0YjOU`Dj)Hp8u~-e zeslKwsm#480V89FDtvxxTEjA)7=XYMCqqicG%>qWtIK@R2tt(OV{){B(Q&z9)PdQ1Db$S*kOi(dN*;}f_E>K-FmrBfrv z9&$duEjQ%0<@K9fet77}=qS(BgQs&t!^0u7+Rwf|>@VoLZF#7%t3Z)h)rMZ0$^*ve zl__Zuh4nq2{N%%YYxdc*x@C!4(Y^!*oKOkO?GYZ}?|qiU&h1s7dy-hI z=2qK=Ns+DiNOmI2a+% zeq!*fM0z4QjA>}J-w`uW^a@-!eKJ3q^}RSnh*@Qd@`6o7gvWEo!S(#^(S+pqUGu)5 zp0yZA>?anRNoCIHu)0XnjvWFvSyv9^CV@KUJQ{L>Aw9W7hfEndHf=Xa&@5I>*S#63 z7pM1J{9G&tF;z|2UVYq(B$u2s@!w_H7euTTHZNht<}W13h?nu6gbt?zd_0&(r;#sJYtqNeW+$ zaV(bsiehbVG}0T#x$qW8Oe^K*Rz0r5TPBbc|W=bZNf-CjL?a#DX z%2kbDN6yIiv9wS~J(9nHhQ-c%GES7^s?-h40P6Q>N&9OF0d#UyX(hZS)hkg_`9;Pe z(Pe(}6ePCeB;-`ZM(Kw!!#mxU_Z08und3;}GYJ{PHAO`~V;(dZl?_ zkkVEUi#7*OVD6{mBGk=W6-s~X5dp04>wiqPgs{FFcKFB=jf=G=Orgf~?uw{G5U41! z?RifQjE6o?ufor9Lmw;H0EHg7q1_mG0fZPo_jaYKGuOM-Y~!jL@7MsnDle$>(Ta%#ORRnuU!1~qG@&KP>|IEFrd zKTY=k1N6lucs?%saMGDOX(n5#+E@lXd)dhR7G<4@{T4tX#UgDi$p+Oi+%`RWU8TCj?+`^^ns*lAx-g3f-)mM zeVi1ZMwnP9c=>cF4T;4US@_@*Jne+$^rh<^8WIg2TESWoG0&8+?PmZWHDQOJSH#IXd&@tOiZ57E0)1G9|UZNuF6-vc%rTI z)nlA{!@RrJ(_Ra+t9@T5?>I5YJcYU$xeYKXt(aS0*j#*h5#+%Pb9>FE`X;Q^SJ9?w zNPTGkR+4(dZD=zGUXdx+p77Gg{{+q6baRba^6X9AI{XE*A{E6-rqZ@!!cmCc5GJKq zr_d--btHw?O==TyTt?by@JCsLXnK#;zx^|Q>|Eb#=xO(Ky2gR=UNIcXIaoHjZCBsi zO)@A+o?7veV5B@4g(_-^f6_*qb4oqx#cT*cVGQ_9E zG16!xkqd2cyatDB>X?|o-hNug2y)f5r_Csdh__HFX}GWlm#QF%K&W2Z6zj&<&-3;h zac)50P)9E@z7W&Nt27$u-c&f3aqZf~PnK2pVIS&edu8!ii=jr?Oi_je{Bqr(aCxFW zvv)H(f)Q%ZqxgR;dU!gh)8lSSluPnH66ps~l3k{@B;hR-N5l;x+i9u3q*!{7 zdB0Sma>#%nHn$1S9ZMpR?C{f+m4`GKLVClN&6rrc+tyDB{;6~%tl%pn7@On~(*5)- zBk5_6+fMBy6C|lR!hNx!yo5@wfgdn-UyScD8@#;edhY93tQOlt`$T;E*(?qNp)oht_(QwG$_t$+$xNUDj{6vT{<4MS|&cvviJG*XPMHpcX zp;O_6OZIC^2W?ScSa2QOkcCR}`~iZ8O_UIxes0;jCZ|H;#Vc9-MaD;}Q}goa;Me)$ zqebdJI`r4M2-*f$YOhn2pisr-mzeYADp z%=YQEd!^RyLX{H{>+jw#C#cI-laNTDtezs5O_MlG-d|7lIuf*SC9kbI!n8lvQdd** zIQ1C{%cD4A6-%?7#dD~ho#CEZ#?D-n_WsWEF*Nio4%;X~n%d`BC8Yn)w~>$oWv7G_ zgp)|Xo(+V`daaJeUm8+%x4{XVR|9YFw*d@q_?~%_ax~Ky%qo3wOb}TMA#b$OBSh@z zNcS4(Cm|7C&E{`nYu=iAfg0XQ(DMfAUtD!uwEh*Y%3&hcCl4DLxw?+aQA(hY)UHWZ zm$5Y+lIP75X^!9=ULjEtl#Vj4+e(tT?J4k9Ry5I7(fPUSrt2;5Q6Tsh>M=l~f3W4j z$#&UxeM|DD%~LmLtCu)SS~dL*9@|JzGudVO*=!a$L6vqFFN3~&hY%0@*j8apw6kNv z-pqOnByd7TR%LYKz7o=*4^GA9PYR7F{1gSr0EFk}FoUYt)W{_Gdo&12UTN3o<_cbP zxoIML0->!yHSs!$1Zg;_F9iP?o2S4$ZwsEQ$EAI{af%hNU<0E1$KV6GiKbzHR@DVi zD5RL)4Kl1mSn#a%{j&VT^#0X0$3X#{KvYv?y$scj760OHqf1xfpPF)nc-k&*oYeY^ zIkdSFnCOM!F?jSx>-58L%^l_;hFnAZj=Sc*ORl-<5eNVF(gG*EjFI--_8a4%)+WyJ z&+)fj=Tg4=Y~nOGw;9t(NUmNBP-ess_Sc;E2)CV1+eRYCN=E!r%>TG9*|kFCZT?^w z@<`h9oxAG`*0F!5KK(l=-~I3q^&ib*$&Vy4CXMvj_9{C&rk`Zk{B)M{+D3-_*MsU+WCH@bD{(Lh>Q)IO6&UKd7l=c-xyn<*FUjVGBDzVUETRy zzY|Q{SMQc3by}r604S>bep`?6qKB%?u00XH(|%P*zBpmV<(P)fhgm1pgNrgRnLU(5 z`0Vg1!-}2EHzTUZ=FcB(Awp9{?NKo*TE@Z93gdf2CnwQv=U9Xu@WfKAbm-+mOLes@ zem$v?%n!7+1{PN4JqE_2L8DzXR<}1fYDi1$-V&j`8gArVh~icO5FK zcp3%`CWo3Q_QO!sZwxu(aasYt^}PhiN}r@7T&zGz>ka18e2|3sJKla{2b|Det~4f+ z7g^DH0RVsGqG=B4T;^kEX`Q#}_IDv84s7I(B=>K;-TN@@k~t#}5ifW`Hzxusu#SYc z{3;#?I@xUtE3*wmxEl|v1{!Ob71msY!AKCsi116IEi4|U90sM?wasvZ1!ow+X|(^H z21@cF<}RR=V73kf_(UYzZ^S_aB#N+*5YC$C*yLo?O_%>#c&oGd$1Dk4rv5PnTuxuE zE+d*FkK-cVwu~`)VaAms_cL(6)UA>}-oD!%5J!U(vFCJ?9`$yUCqLCrive#+5O)?k zqXQoA{zoFqK}fO#nUyq#Z8;sZfjPOCowQ(}6+PfCcj^e=4ez0xr#s)iCeFTQ&p;OJ z%=a~z`+ef&>evPVNmc^II;q+Vsj$86&QVT;lX&TFJqE#fRzKdZvT^9d13YKrMF5+T zfcuLy1Nd2&*zRoJbGIJyo>+COoQZ=TP?T*7mTPgT&A`Aw1!N*!s+jgpM%CT>Cv^<_ zyt;g{y);-%JKJ7^AwHx(Hg0$rUN6$aiZqo{Of{Fr!^HrGK5GsKOdZJ9?_A(Bhnh#D zz8Ide1Yqmbk0(e>peLh)jd)KMIny0{?-D90(&bvCmY@9Q%G6vL9glTi{(g019f&X9 zteROO+BMhuH7lccpHj@x*YnjT7P)3`Wf~^Z^)ZilZ4R$xbhA-J?0}z zLr{2Uy^nZ9sa!G>+Oya_e&RfciX>nJ#pp_T*0{cTwHw%sg+lf&x3%boyhW&Vm99Ve zPe3k<$_-}iVe-wu{NPBRAXJdz^gb34Tl;jxI?xNaHV2>HO7?8x$am4C_J3c*$Oiw#Gy%zX5IZ5V(p`)u2^V`*v zGVXTaz9A$q(1TW%%0;fjA77*=tUh2~TerLDKh*{<8{HzPWhX1lM_^eR^UXA`MT2Oo z2P~ej$}25w>%sIB8f&mDcBPMxoM^Fp?{N3Mb)HI#^G_W0gFu6vNI+pSfk+1ZX{5^&rm-*9`*K7nRQaq~8M`%Z}Yt$;vZ%j z#koy3{NWj3XwZIctBr);o-B|2c+-hjduZq9l{bpY+XN=#Ba-tvB3J;mVzp-%_L1r`^|ima)RI4+HlN0hu6hPGTs-#HKEw@;j?963-rh5%GVXnn9_fOH z?Z&=nqPjsWOCKdr6c@CT z^@0+Zp&X-Fo>!8Ka=G-+!z_J%4nILwu;xUEo6Y6a)D!!eCo-pGYLG@zR#EKgeC~dV z!6Rn>BJ8XZA`gfdxwAENYM~d=?HKP-h2=DwU)UyS2eqL+WaGz<6rJ9qn&Sc~=U`g^b| zo;D9bZvGFIJ3^(?L=3M3Y){!^{U@RCSlmAs~OHB z`0c&cKedN_EnBzLm^=;Se3DJjc|_jz`w?k**JRGUb8J$`IO)|BGY44N%FUIh3Q3Jm(}3rRp>B>+oPx})x3z?Krt;x=hpUT#lo*E{hvKmq z6Rj<8Wu=m2Xure>b3amxVq9&DmE6N4!V+9Mvke#0g!!0M0s3%iWEhTz7 z7P-j7&d|0v_Dlxa0n|;f;YHBe8Xu38AVx%#ZPZV!-l_#bvX>Mk#0Qq-WkOY-s#{pD z3uw@M_w3uXpH(Yq2suB$v74{2yqI}DJKYL6{Ke3p>}LhciBOg#2^BZ?)L&WBqOo2S z_D|V-ong10X2IfJRAM8UpW2cqM?Rzn^J@yv*Yl*!0cpbpu!K~ zr3bLcMh;H8K(XeI#o;=0rPO^jEY3hvt;AsV&uXX~NfQ@gFURW*>j9xI%ZZzOW@f zw93aNSStFGtsQMqoikfYa3`XmIh+G85*N5Iu3<`k#HkQtBPPb-IvlOrvEYa5KJA|u zG(CQxzpLai^yT+0tSj3REYJ1Xg39_2ON^!Pm-vQ zJ8rc$xsME$Gp&>PIY>3qbSp|2ptOzv%0~qOU1?~$LDZ(?6KRM?1*b38>eRoJiUs8j zE(Zvk!GLvfRk$EbtTamG5x%eZ(6UbGX@)r=(p$ zu~fLK4`%h)x6f<;b>rvZQx@=G|3R9Te8l4>U{26HP2m(HW+hXl&X?u+*!zv`eYZj` zDiTc`(iPpQryxzXAM2Zq=|pUt#YKS9iU8l@#7}}N4$lp)=4H;GaS1%}2a|b`{jlVu zhf1pXdwM9zz2~94(NyRHB2;>MOivHwA|!eRnH{Y@8gOn#J>8e9Igena{_+p{>~Zo7 z{d7gAiEhQoLbcgu%!cfKdAk$P{eQbyT-0^57fEiASw6Q~p~aVZw7_%niogxQQYtZCKa213SES}DyKYQ=^R zM{5_;zzmvp))($oZCPQhGgr5%Yb>-fPudonyOsHk+}lvgR-%u!-k41l6_kAPHr|f6 zK;IGPIH5T?QKEm5PxEpww}tcT7fy-m2l&MF^bhXwk?J{rXY7b9e|ihaZ*3bH>RKCgEKXj4pFs+4~zmNB8DpVcqPL$@F3uYAh7M9<`t|;L1gPV9;-05Bc!_cX;Th* zywI)tysD#sy1)p+O6-w<@Ec)5(aaNWcs(LzfGhsRz#typ*^Yx2u-}x2yx0S>rTpl@ zhYhy*{J%(_^KG`HlmPmIBLs`vCdA6+H|lpaXUPCkx#D%;UAUecpPhaWc3!*R{!U9A zahBdunhKT{*qmcck1DL z+iucIFgG&FLLdoR0oX|zQ9Iu`G|dMW_!%xgxuM^-43DA-y0s2%2P`0zKioy>QcKx$ zx%bn?6{opZMSY~6nPd?LNvBp%Zdx9vtkXI22fbF0zEwv}j&C;GzKYJ2k?kLCY;OZJWVXGq(YY~UIgAV(cf6@ z{f>~DX6+2Du{V_#1f!pgSz9Faf@@RD@%>7Fic>Hk`0Zek=O|znyXJpY|2x$*f)VuS zCQuR(EzZ4|jesz~V_W#0jSfbb->iR6C6tVZhX?3XC5q+ct&45tWYK<5inX8o_$mnv zdG_!WIXKY@g^8j-*_6rd8Sw|oo2$ul6io^@9{#j(2M%nmk2h*JR9#@?pA#JY$Bur! z`iO?_s)PsVh<@*v-UQCI=#X$_Z;}4WOnCw%XuH7WS%_tpeqqwZb|^lve-+bkrGd%V z)L(0TNqX+j!Y!=^6m?TEBV0Z;CyR-NX_nsLE1QZ4!4MQmjoT82=$CTtl1Gg*w_UZpG61;T2DPgS&$xaPO}2RdT5=i(x_C)Ny11$^K~O1h1N$WmLC@BKX-{HMM3rC< z{9%bmCR5vYp$?x79Sxax9Jc)ETS;qI4XPg*+D5Mz(a6(8XLriqe*Ob~gPCZ}#UuN( zW0Y-Vtg)Ua1W@LkB%A%OVMz?M^vEye)aj~55Zp6AY!#hiKM5_=NcT;BB083}{b%@p zmX0X(#?xhppRz+U_&>}Jz_$@D_E?* zo6==j$68Q`IiTgUMD~F{xpQYg+eZe__aNiu84jj@7wNGCOZ<#`0+y~#kbW&~)(qa2XtoTl==LtodZ#Vsze`qC^v zYW7hAY3M?Xbe%_;Z6xF?fMoyLdy?Yuc^VB~^HenczLKK(rNGr`J>^Lxv>$l93t|zG z{#mwcE*qCj`JWdq$R^+W3e7jpmre3U_Y^}TK3U<6G&U;bsqi&BV=fY!uJt=p_ruz3 z?(~J(BWlMyjo>Bc1|7Y_`~u_+w-aXqnjB(avwvYFdu3KV|2{@~p58!}_aIzTRqIy; z-jc1=Maw0zMOFzg?}LYW6fH3s&1yJELj&=rDP!4oDb2`-Cqs%UiSF0fyfPH zuzni?1dy z8@FwCeyz;60Khf9d+6wmiQqF9)U{xZSdIZnq$YK9!COXCH)38(W>E z7bm}Wi7vJ)$O1|=r(wjMg857d^kQB&x760t7{`%+&koXkv%2n|s7g`x0hJILC3)Vw zhAMGZC(`+3J&8Az2O(CxBL7f*fKjR*!=^3;ZRa)^mHp-4i+bKX>U9MZ3;WHz4Nn`W~Y!`dhC_TL2XauZ5slj)*Id)d=ST-`@UsdN2ZSHWr>|>D*(6c6j_&pcssHrUI<1I zqFqv}7gl52tHWsLt!YDO4NOzTZArX$b@O%sQ&X4Yj5h6Vs%hQ$^(H0)8j4r39ZNRD^R!95f>;rn<>vS=WB5hRoo zCXvf_3A>b5`f`JCg%Yl>rKs_J5{=qTtre*4H#T*-Go>pJLjPGPzsQZu6>!-DWEpya zcqel(9Y7dka8Lo6PQ5?0AgD>eZ3tsz^{77E?dkJ-ILKWI9rED5iKu@CiHB7^mt0Q# z7)pv7_;p7(0C}AOMW5m`*`oIsjP)Gd9dk7bR^*luT7h&&mD+E$#kir=51)x2juUPA z#H0avS)!IYizlSlmL_G`O+s|xoyYxsSnNBE_oSDA&)P+pM3Q4OGYnUtetACnYFRDT z^TwyPac>v5YsHAws-?X$@`MFMRV!Vj{n#@exOqW_j-&(?pKEVAE$IFf60_ZzpOoY)fUX8P!XXP+$ACUF#xuKkgjDP=D_cC zR6tL2dXqH`L+K@Ii`$4qhW|dwMg4SS&v?530saQdvx*#DA)@iXN>S0oVUyT1KB`JY zO5l2`-0g7f@BQOdNpEN|N+>;lwATnuH&0J>%I@m>pODtN* zu(g>;R8;yQ9}BZ4-I~cF1a505VI1I@F>H?mvzw&q8>+g?78szT7J$?7L(FP4^7vLjbgh_mu z9)R|DYK#8sv@#ekT{iq#O%&ie$zkfjh0M&wf{A-M0}QB;dkC(oeTx@Z*A{nWvtp)? zsCN$EKfK+R`uY!~Gt##e)f=k?pgP$99Pum^AfeS%6O?)ytq~oI+{mr=bV`+65WQD# zy8{XfnHK25g+(O;<~HK@@GX}5l9kofG`6<3464@IwgRrpGp3vd_WDX`SLd*=9|LW> zJc2e-cJYZ$k2eylABTEZ_~oPI_~qjO#@G4dLiF5mr6&J&JP<0mX+I+KM}D*|AIp{p zW&N_F4-km_R1ZW%a_o(;Q6|n+lCCP9cbF;JHXhMUg^~$5AsdUIE0wsAAyg8PIBpfh zIYHbq(uEua`OmNa@{T%xM!8$S5c|%ZH#hedY{-VFo;%CK7P8@c_5i@!R4&ke#@m0_t^<@gTRi5>=-spc)Wa zE4{G{`IBKc?ma=Jsr-=p%n#Sq(44*d_aHI;eRktQ2e`v>5nA-HwD2-!lLc0|F%c|T z-DFWTYX~S)o{3%>%6%)YCT+X$_S$~ZYLb7-L5mX(3_eT!JK#>x#l${S4-3!g1a)5` zI;R|$FNw9UX_3pZV}!Ill*pGV-NpocuCg?%XBDj%{O4JsU4=`O|_( z+f2O8pF(=NSJrU()8|`D;$pHr(F{*DVtA4Bx#~14Jm|Z_HuzO|hE+l{2`+cq8qs)u z<>iEjka=x+Ba@1@yML@1$DDMIfxEueQJ!u;X{^C}@)IX%VmNfsu%{Rb9MpmF@#yP& zfw@I#DVF4k6MmD{e2DX$sWE4&0``yWvC6A(r^P&JwPW0%oxTk4^ z_oc|iq30_uIy1C}PCwUAUOS&RJ6bx0N%lp7u?~?h-S8eP8yk+sIC}l$hALIo=~?)Y6%+4z(!84)cVeKuip=Se-hqLurm_ve_suHVO*yzbo>JTdtL3q5c|7OiL%O;ySJS`AY^un4=$*^n2Zb^ z>_qI#WKo3OH0{Ti2zT|iDlDyw>ODORF)Nl-0Ao+*>$=4#557SGkz=XW_IbI@HYV>X^p z@~{}|Dez(S&#K~N%X*2GjMW?(P4?xdwg`3bAp5b+C&CgE>fzu7+*mfo>7HSM{n;jq zOc+gt(hBDEK=P7_>u!ywqR!)UUGm^j967m^Y_O9>eO&qiE$G~G;1LW z!>M4iymLTH_ty(`Jz9I`VsSS1gR#o~n^26Hm%3!_VF;;bb7#%U739BMw9*{9>JHpn zv2%p|0-Q6br7L!ZZ9y-mymz(oCY0HSJcJgFQ2U8aG_6K^xM{*?%(R0ahQ|wvQ#Vv& zZXdRaLB}ReIbRAs-z(%aAG(r0O=bcH{?%F4}_j}ws91oBL z7;=A3`6l`&3}hmd>x0P$3FGo|!+8!c7r=Qc57n}K1H8z41V6<(_CVaSdlvzlHaxh6 zfWic8GQJ0u2phY+cFt6a2`}nTohL1J*aDzT>C#i{+EkcOPQUt*_Nz7k#UlJ9YvjWR z+3-EpjSO`F-KMNaXkK10qMYXJh;<*+Ha;>;kG||{R-aES=1zuSouH62->mt}AG)|RuKYSkX zkaw&B)0)Kd$Pn5WDK(9`p5cnu$aa|e9z?pTg1iY#mf?}{8Ui@S@@Y{PxsWRyHc%Su<(tLkriaQM~<8el@a!*lL@dHlodQ6nZ3 z85<71u;9~++ttw#WO6|0_C8VmiVGz*0LY3FZ`?|opI!X;FgjVXUcKm^PqjnfFdxLYv^2FsU5HDEr#ppQAlJFZ^;KJHB2-vWbLS z^H3XS;_Qu=Gmz;pV!s)GAxB&OoWqzqe-1%3y!A5~YG{O2nVPmoz!88(90F8>$7N!y?lIHlzL;5RIK znlw1);=2C(x#6L03-hJ2al@@2_NI~3D$xFv)m>W zE%T#)&%}D0SNX-RY+{L^?BRcx-Mc*V>L%)~!#VyDRcQA6iDp{hzb{AhlNN~hjL_zl zYEvnl4>B)}#MEQOMa6_;Q3AD2HY}E|J|e@F9q^Q z(o4)*3S_z2FHL;~OM`*0y76f*74EmRw*`O2^@Cm6#XAKKWO zZYzI+bhk_kQ(|?MfrW)d#Fu}^ML56rYDtW!C*tU_Z=@``%T2Z%uW5D43{n6K}nTI+jJ^BukR-j@6iu}4dHEoQ2%NR0kD`turewG?@l))|Q@CSL@dDf)?W~-kn zmABmt%oE64Dr&tcSK|6MmaS3|{haSeJ4|AxdeSoc;gqBY^x&a3eVQA!Jk6F2SOU!q z2S!pQ7vtkTNbZk_S7w4_;tSG-Up0{(n{>U8xl{YTP!WxT%A35L3cnU7*cJrMfSEHP zs;P)r=!?wgTQ~735|UIn)k?Iai|PJ)5_f>fZnxOgM)5}tWJxl&$w)eBTbb{j0{npj zd?uaWLXM)E7W~>`i2P2Bc+(i$MsbGEQEi_PsOjFZjYc_`$H?~ggO$1M&ClbP z^=)d7rwuh#AFHdvQjNlE{GTZn@&Q}$QTP9IaC2a`fdSFon+xzscB`}Q9@F!8^YBuP zMTVHB^mWIiO6L5H`Mm)EUq9~yyO#~$gfn=;$X*qjOqt54AH>!33S1v&Gcbg9WdmpT zM|T1u>jdiWujvhw6lV*qtiX2LU^-s*DUVVl2m}*6n6OwpGU+{9e^}4fVi(S_&mKvd z#iulDxp7#IauNFQXMu;N)t>NWYz5Kd=vH`rJjO&`Zh{G6zj~%0d^b*bgafxj5IR-0ihE|SpwqB644y>Wpe!jsNpHg7ub*oNu4K%%Ef zid1VYQt57Fs0NHje^&r41(qNvYqdaP1e4UX3I=v)~_Jr(*xu! z$*~_|Bp%la&Uc;bnG`U?lz$GJ%~ zLm-c7XuL~+yHlt1Bma~<7^VV)?+Af|@83C*xjVn!nx#u0*!rzmY&xszS3Ybo?ht%} z5Je&;12~IBCon_fG*V`oMd+4=w+Yb#4Rk$Z@#44aUG@2?lao#ImH*cBGk}80?U-&Y zEZjxALi6BjAKHp=Wy2vSni?AEv-0I>CK1&agZQ-LfCNOdhgjksS+-n> zD22239|=7XQ4okM(y3gjNO`DHB%J?McF5BucDs-PCt&)})gj-!A2ha#$rHH9KV2kD zXP(hKdsBBn`XsT=UYq;vvrVG9YbnK%`}HuE2lWTpZDtT!i3{1Xn;ld6+2aoI6u{>I1{ zNOia>(9o#hnav#EuF_l{PSa9Q>CnrkD=2^=<2ebZymV~)%8+fJf;Wn_Q!_WGhATwj z$1SoVOF2pUZ;@~xlp%?Z%8R6p*z8?AV z(bS5V6ci~DpJ0ilp+U2ZrZpn*6u@S+*RMp0iNLG zxNSFB*5YYBYcJRRs^MwtfiwMYQ-=9Eh?T7Iv43jvxQcAh|KEzWl zPnB5HCB~V@f`P8PWUOBN#odN!X3hyU=k@h^P1PlNYpp!nRJZL2&zi=q6~52oa(th) z?+!{L&*GEWT@OMg75}kD=yBH$W-1Ytk!<;Y5&W}(*AFIlbPa}szl7aSFx8IKFCjEo z&u^m86JwJ?#Jmtgj^K60WBO{DSXm`I7hxVHa_@J;_-=Rf74u03*{uWtS#uZcqPKf% z>x-`T>)_e|QGd8nWkT7-w?D-UtgRJ3K_G3ut?0wP7ue~>*xY4BOp-u5PFt-jY9NOI zVG~2q_e1J-kMJm&qM7Idk!KkjMQ;@#zm88aQ#v0mw#@C@jk-@~m9 z#Hg9WVWV^^?*wibnVPEezT2u6oNdvWT?tQ|myx^sxCv!^oU8dVdK4q)cB%w8%@|ki zhgheApD*bmS*gFjLU?ov7ReBFOPn4kusqpWpC08}WDoCm0yG^x#QC%b*sUHF~^`FtAA8DBR^=LR#U!;^ILu24! zDISNvZAX%eAf&XSyp2|;*i2U=U=vYj7-O?B;349%z7Ss|Lg|&58UklgMl#$+^rZye z&lS1Lq+nwnIVz3PsC+B7{x5}qJ^Cac@x#8qlK6sg1tpMv6X=LzCzMM5p&1}oHs{UK z_4dwsx5On`G;8S+%^iM}EtOKmNT6P0kJ~AIa_+zh7B>Le2(4>zR6}%lA|x+kW#!K8 z3rWuSUl%`rM(qg&sr%uI)16mM{ZzV=_KS2iu~wjn3IaSexOFno1F3}RBeWGCJ}@kH zUJL!u_R|uSgggn6IRpJIuim;7WTC=u{4=cp5gs>>-u}oiRgQYGI>jt1Hr>B@w7@Qx zCyqs%B<@{Kx#w7_+c-p4tdnu*1L^&rst(H-PI;Xe-k%(d&*STeRQG92^ec(o`lf-@ zL#jjBg#nMd=XGJ@v^x9(Ik&=C`K!UX0ivu9iYHMpQOh+J!W)z}5KaYYff*rC9hUTX)1urp1zj4a2M!gDLtjo5FsgT02kqmk!p-#& zKf_cO_3Ev+PNTN=aVle6@5m%Fw%V0lkrsV&_2#D4lZIs4QxoycO3QqtSvouA%6&RZ z%$%OGz$Ihy>3t3VHzUH!+oz*B8^czX{dS(0TfU=PLYiE|b>v818X#rU)HnzhMKi!c zr@Uwv`5JKsA-Zop>d&L#3;EGv28!Zvnml@~6t6)tWODS>J_UMsKAkMcWY5I{vLXu!Du?um z($zGt4Z|ko8CODdG2;%nZ6OpC^6#BZbFg>Pyr8PKZ&)+jBoRp`+f`T6B(=*BdVhUg zCcL>1;Sp$>#^Fk;~eElR|DjMQ}ji1ru|AKjnblMax!xHD5K1ezSpm8%aEVwX{&5BwuWyEp-Hos z_pf5UqU-=BuLP*D=AYNYqQg)!McdBcxY^@ldk0^aBGj61N8CtWaQ3|DLJh9L_bD6t zEfsLT4;+V;Nn&wv+3Wn1Gt#fIDhDrCX1_@BVNV>_%@%+C%YfwfmfFuT^UKa?7G>Cg zCTEHM2he`z>Aq-BSc@GECCQnlkJO@YoAa;!t;WHo0NY@(4u&AYm)tvTxYjRa11Kxq z6pyb9%+b}INS@lYgbak+6t*h1uj;MNRWh$Ejp_*+*nr>W0U@IK@M5sf0aO z--!=41>H5weE1g-L?QRJUY@z=m~T15Gz7Ou?0uW=JKFE~uPV_y#;&(ex|*$em^{;C zkrVJD%OXLS2HEmV5_}GP2r=41b~CK^1&B!B@BAMQXn=9fA5eRqB`|M|MW;Twb$dtg ztxG5ugBh&JjQ9CkMUu<#VJ$?nHjl30N`>m8bC{rP%T4)i@jD*M=T>5cr8e(lEc;c} zgjUNy7%?R;d-dH6?^Sg%DPG5~tzE#uEQBn9&Qugr`2oG@C^@=m(w72Ufa&7~D zw1}0U$CS0rk5SU^uPMc>rGQ%i~aTWg6Z&)#Mtp>-^dXX;6r5jD#{CG zqY4T>lWJeFwG!j#W9jXv7iAv!N8bGLX3PqYs$j%HL;8BoV>-K&jgU12{YC9AAcP{& zH}h|oMcvmnFg{aEca+9UZrWwDXTZ^G;LVl}dN=i#0}LHUCMVSxiW8&221BpCVQH^G z9KyZ+=?dF&y`;h7lP87AKum+B={Joa|Hj%&?FF?_oEZy=?CChH$8O)#8?3^9N=MvH zEy0IxH|>F(4#7wAnEQB}_P;NBMNhBNnUl}U-46J5qOaU3SjUG4ELv_}m}zlBl?0z& z+&ru}OQR|Nx?48e-bJvm?KD?))Vv}4O{l!d`AT+4Ri0I3HT?B~&cwC`v6N=e&W2k@)@hE9=>6*ie>{U8%Q}^9qh<3hJRm~6o$?^!Au8ia*;*t^ zb8}Ot>C2!8#Jr}i8|OYl8%p%QWJqUsh~*~XOXeifUORB)6iEJmUO%{6+iSf~EJQQB z^Nw7V8bIF@kDr%LF4OgI6_EL^32=;n^ig{R@i0Ax%p8WCBC)2<%LQiqr7qKz)H9{c z#}ywRPlX*S)#XM?LFGXnalF6bP7~(S!zUOW?8n5+JU?S4%J7ReT{Zo`LE-b};E_CT zE?Rk?PgHkp1G<_M9)0Vz@P=`vQh$5^6azozJ|{Gj4y6ROZb_N z?j3ckQ76Ywp)HaF{8*fZw`s^wL^E5POMS<_K$6S;DnYk8Cr=psjZZAJ`69^etN@?N z8-u-A^HptF1!OV;vM;=HPPEL(wmn&aJ)a%BIwNo zq67hVOV#^X3s!Gnv}flA#fzH?Ga{sGpWzY#Pr3rfVp66HcsB|GnMNi zfVZ1GYDveik_q#@+rK^E4gXWdS1*sIQ=lJhvesKHWoZKQ0pkJ% zZ&w^KqOqMm|N9pp6AVn_`W%r`UoS`=Nb{SEpY7#cBSWG0U7|0w*aya38IVv_5(?m1 z>B|8`rc3ynix=$lx$lf{f**)YrWb5xXq6P{D>v8qshQ1C^YAvESBUXg|4LT<#>0|i zTEjk(>ASTOAj9`qm2}qTC)asOwYV9TTc*9TsQ >kFUB>Fky|D4`9CF@s{;S=5OR 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%0AC+U)?ZWa- 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

{GdbJ+91LTTRU%%rH~P4d~gLJNOGl)-`OW9 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%0DCHzbf_5?kif`rx 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 literal 0 HcmV?d00001 diff --git a/test/multicloud/diagrams/mc-gke-hubble.png b/test/multicloud/diagrams/mc-gke-hubble.png new file mode 100644 index 0000000000000000000000000000000000000000..4e24e1841dbfd2010d12f941ddb7e380c952649c GIT binary patch literal 569348 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

o*3ynY{dO#aA3Y0j~0g{!5W9IMt-&TN| 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 z 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�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

CK~rVFVCY+|Fcz2Qz3Oe%pq1nP_lrG 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

#k=&GvK`0JPmukYpTejoIWozIoUx< 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

e!QXgE+;-9bWdJwc52cy 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

o*3ynY{dO#aA3Y0j~0g{!5W9IMt-&TN| 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 z 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�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

CK~rVFVCY+|Fcz2Qz3Oe%pq1nP_lrG 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

#k=&GvK`0JPmukYpTejoIWozIoUx< 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

e!QXgE+;-9bWdJwc52cy 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
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.76.0&new-version=1.76.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 6504b12f77..e2752a60b8 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 // indirect @@ -292,7 +292,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.36.1 github.com/aws/aws-sdk-go-v2/config v1.29.6 github.com/aws/aws-sdk-go-v2/credentials v1.17.59 - github.com/aws/aws-sdk-go-v2/service/s3 v1.76.0 + github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 diff --git a/go.sum b/go.sum index 42b820be27..9132cfdce1 100644 --- a/go.sum +++ b/go.sum @@ -149,14 +149,14 @@ github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 h1:OIHj/nAhVzIXGzbAE+4XmZ8FPvr github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32/go.mod h1:LiBEsDo34OJXqdDlRGsilhlIiXR7DL+6Cx2f4p1EgzI= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.6 h1:cCBJaT7EeEojpJ4s7wTDbhZlHVJOgNHN7iw6qVurGaw= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.6/go.mod h1:WYH1ABybY7JK9TITPnk6ZlP7gQB8psI4c9qDmMsnLSA= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0 h1:kT2WeWcFySdYpPgyqJMSUE7781Qucjtn6wBvrgm9P+M= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0/go.mod h1:WYH1ABybY7JK9TITPnk6ZlP7gQB8psI4c9qDmMsnLSA= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 h1:SYVGSFQHlchIcy6e7x12bsrxClCXSP5et8cqVhL8cuw= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13/go.mod h1:kizuDaLX37bG5WZaoxGPQR/LNFXpxp0vsUnqfkWXfNE= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13 h1:OBsrtam3rk8NfBEq7OLOMm5HtQ9Yyw32X4UQMya/wjw= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13/go.mod h1:3U4gFA5pmoCOja7aq4nSaIAGbaOHv2Yl2ug018cmC+Q= -github.com/aws/aws-sdk-go-v2/service/s3 v1.76.0 h1:ehvUZNVrGA1Usa6yYo8A8pUqrigRelWXSbcCqYpRLeI= -github.com/aws/aws-sdk-go-v2/service/s3 v1.76.0/go.mod h1:KuLNrwYJFaC2AVZ+CVVc12k9NyqwgWsoNNHjwqF6QNk= +github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1 h1:d4ZG8mELlLeUWFBMCqPtRfEP3J6aQgg/KTC9jLSlkMs= +github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1/go.mod h1:uZoEIR6PzGOZEjgAZE4hfYfsqK2zOHhq68JLKEvvXj4= github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 h1:/eE3DogBjYlvlbhd2ssWyeuovWunHLxfgw3s/OJa4GQ= github.com/aws/aws-sdk-go-v2/service/sso v1.24.15/go.mod h1:2PCJYpi7EKeA5SkStAmZlF6fi0uUABuhtF8ILHjGc3Y= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 h1:M/zwXiL2iXUrHputuXgmO94TVNmcenPHxgLXLutodKE= From ee114e5b0b5ec4481739fb51f5f8a89b7d99a3e7 Mon Sep 17 00:00:00 2001 From: Tatsinnit Date: Wed, 12 Feb 2025 07:26:36 +1300 Subject: [PATCH 49/87] fix: Security pin SHA for known workflows. (#1332) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description ### **Pin Dependencies to Ensure Stability and Consistency** I noticed this while doing documentation updated hence a small upgrade PR for help for this repo as well. This PR introduces explicit version pinning for dependencies to improve build reliability and prevent unexpected issues due to upstream changes. By specifying exact versions, we ensure that all environments—local development, CI/CD pipelines, and production—use the same dependency versions, reducing the risk of breaking changes introduced in newer releases. #### **Why This is Important:** 1. **Prevents Unexpected Breakages** – Dependency updates can introduce breaking changes or incompatibilities. Pinning ensures stability. 2. **Ensures Reproducible Builds** – Developers and CI/CD pipelines will run identical dependency versions, reducing “works on my machine” issues. 3. **Improves Security** – By locking dependencies, we can better track and audit security vulnerabilities using tools like [Dependabot](https://github.com/dependabot) or [OWASP Dependency-Check](https://jeremylong.github.io/DependencyCheck/). 4. **Facilitates Debugging** – If a bug appears, we can quickly trace it to a specific version rather than dealing with multiple moving parts. #### **Related References:** - [Why Pin Your Dependencies?](https://blog.codeship.com/why-you-should-pin-your-software-dependencies/) - [Semver Best Practices](https://semver.org/) ### **What will happen next:** - Use automated dependency management will happen: Dependabot will track and update pinned versions. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- .github/workflows/codeql.yaml | 10 ++++---- .github/workflows/docs.yaml | 2 +- .github/workflows/e2e.yaml | 4 ++-- .github/workflows/golangci-lint.yaml | 4 ++-- .github/workflows/goreleaser.yaml | 8 +++---- .github/workflows/images.yaml | 34 +++++++++++++-------------- .github/workflows/kapinger.yaml | 2 +- .github/workflows/markdownlint.yaml | 2 +- .github/workflows/perf.yaml | 8 +++---- .github/workflows/release-charts.yaml | 2 +- .github/workflows/release-images.yaml | 22 ++++++++--------- .github/workflows/scale-test.yaml | 4 ++-- .github/workflows/test-multicloud.yml | 4 ++-- .github/workflows/test.yaml | 6 ++--- .github/workflows/trivy.yaml | 2 +- .github/workflows/update-hubble.yaml | 2 +- 16 files changed, 58 insertions(+), 58 deletions(-) diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 35e5b1f966..b430adf8a4 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -28,22 +28,22 @@ jobs: steps: - name: Checkout repository if: env.IS_NOT_MERGE_GROUP - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup go if: env.IS_NOT_MERGE_GROUP - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - name: Initialize CodeQL if: env.IS_NOT_MERGE_GROUP - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 with: languages: ${{ matrix.language }} - name: Autobuild if: env.IS_NOT_MERGE_GROUP - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 - name: Perform CodeQL Analysis if: env.IS_NOT_MERGE_GROUP - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 1fe235727f..6b35313530 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup Pages uses: actions/configure-pages@v5 - uses: actions/setup-node@v4 diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 157f09597b..1f96455423 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -19,10 +19,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version diff --git a/.github/workflows/golangci-lint.yaml b/.github/workflows/golangci-lint.yaml index 07c435e928..d20c62ac4f 100644 --- a/.github/workflows/golangci-lint.yaml +++ b/.github/workflows/golangci-lint.yaml @@ -20,11 +20,11 @@ jobs: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 if: env.IS_NOT_MERGE_GROUP with: fetch-depth: 0 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 if: env.IS_NOT_MERGE_GROUP with: go-version-file: go.mod diff --git a/.github/workflows/goreleaser.yaml b/.github/workflows/goreleaser.yaml index 0b12b2a44a..578a5fc071 100644 --- a/.github/workflows/goreleaser.yaml +++ b/.github/workflows/goreleaser.yaml @@ -14,11 +14,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - name: Run GoReleaser build @@ -33,11 +33,11 @@ jobs: if: github.ref_type == 'tag' steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - name: Run GoReleaser release diff --git a/.github/workflows/images.yaml b/.github/workflows/images.yaml index 3ac8488b58..3497ee0129 100644 --- a/.github/workflows/images.yaml +++ b/.github/workflows/images.yaml @@ -23,9 +23,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -74,9 +74,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -126,9 +126,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -176,9 +176,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -225,9 +225,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -282,7 +282,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup QEMU uses: docker/setup-qemu-action@v3 @@ -310,10 +310,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -343,10 +343,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: 1.23 - run: go version @@ -377,10 +377,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: 1.23 - run: go version diff --git a/.github/workflows/kapinger.yaml b/.github/workflows/kapinger.yaml index 40719bfc6e..6a329412c0 100644 --- a/.github/workflows/kapinger.yaml +++ b/.github/workflows/kapinger.yaml @@ -11,7 +11,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set outputs id: vars diff --git a/.github/workflows/markdownlint.yaml b/.github/workflows/markdownlint.yaml index 5c911ac193..d11291efaf 100644 --- a/.github/workflows/markdownlint.yaml +++ b/.github/workflows/markdownlint.yaml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: DavidAnson/markdownlint-cli2-action@v9 with: command: config diff --git a/.github/workflows/perf.yaml b/.github/workflows/perf.yaml index 11d71cf47e..6e9c380397 100644 --- a/.github/workflows/perf.yaml +++ b/.github/workflows/perf.yaml @@ -21,10 +21,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: 1.23 - run: go version @@ -57,10 +57,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: 1.23 - run: go version diff --git a/.github/workflows/release-charts.yaml b/.github/workflows/release-charts.yaml index 385918b24e..8ee52157e3 100644 --- a/.github/workflows/release-charts.yaml +++ b/.github/workflows/release-charts.yaml @@ -19,7 +19,7 @@ jobs: if: github.ref_type == 'tag' steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 diff --git a/.github/workflows/release-images.yaml b/.github/workflows/release-images.yaml index 9f35594184..8e2f28c1c2 100644 --- a/.github/workflows/release-images.yaml +++ b/.github/workflows/release-images.yaml @@ -24,9 +24,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -70,9 +70,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -116,9 +116,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -161,9 +161,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -204,9 +204,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version @@ -254,7 +254,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up QEMU uses: docker/setup-qemu-action@v3 diff --git a/.github/workflows/scale-test.yaml b/.github/workflows/scale-test.yaml index 75367fff48..fa6e9bd6a1 100644 --- a/.github/workflows/scale-test.yaml +++ b/.github/workflows/scale-test.yaml @@ -72,10 +72,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod - run: go version diff --git a/.github/workflows/test-multicloud.yml b/.github/workflows/test-multicloud.yml index 6281341efb..6b46c60786 100644 --- a/.github/workflows/test-multicloud.yml +++ b/.github/workflows/test-multicloud.yml @@ -15,10 +15,10 @@ jobs: tofu_version: 1.8.3 - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go - uses: actions/setup-go@v2 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version: '1.23' diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 03adae0147..f887189acb 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -22,9 +22,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: go.mod @@ -36,7 +36,7 @@ jobs: make test-image IMAGE_NAMESPACE=${{ github.repository }} PLATFORM=linux/amd64 - name: Upload Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: coverage-files path: ./artifacts/coverage* diff --git a/.github/workflows/trivy.yaml b/.github/workflows/trivy.yaml index 741bc5119b..53c901bc23 100644 --- a/.github/workflows/trivy.yaml +++ b/.github/workflows/trivy.yaml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest # trivy only supports running on Linux steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get Tag run: | diff --git a/.github/workflows/update-hubble.yaml b/.github/workflows/update-hubble.yaml index 9f0346bd83..dc65eb5083 100644 --- a/.github/workflows/update-hubble.yaml +++ b/.github/workflows/update-hubble.yaml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest Hubble version id: get_version From 2a47603885c6cd26818ddadfe83c10eb4b4c8b41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2025 15:01:40 -0500 Subject: [PATCH 50/87] build(deps): bump serialize-javascript from 6.0.1 to 6.0.2 in /site in the npm_and_yarn group across 1 directory (#1339) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the npm_and_yarn group with 1 update in the /site directory: [serialize-javascript](https://github.com/yahoo/serialize-javascript). Updates `serialize-javascript` from 6.0.1 to 6.0.2
Release notes

Sourced from serialize-javascript's releases.

v6.0.2

  • fix: serialize URL string contents to prevent XSS (#173) f27d65d
  • Bump @​babel/traverse from 7.10.1 to 7.23.7 (#171) 02499c0
  • docs: update readme with URL support (#146) 0d88527
  • chore: update node version and lock file e2a3a91
  • fix typo (#164) 5a1fa64

https://github.com/yahoo/serialize-javascript/compare/v6.0.1...v6.0.2

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serialize-javascript&package-manager=npm_and_yarn&previous-version=6.0.1&new-version=6.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/retina/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- site/package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/site/package-lock.json b/site/package-lock.json index 61076cfa11..17f3c9ad5e 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -15009,9 +15009,10 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } From ce7a39b2e6bdd58afb394e1895c643ddb10f6956 Mon Sep 17 00:00:00 2001 From: Will Daly Date: Tue, 11 Feb 2025 12:02:05 -0800 Subject: [PATCH 51/87] feat(shell): install less in retina-shell image (#1337) # Description Install `less` command in retina-shell image. ## Related Issue N/A ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed image ## Additional Notes N/A --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Will Daly --- shell/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/Dockerfile b/shell/Dockerfile index eb30b98f8d..759ab9e58c 100644 --- a/shell/Dockerfile +++ b/shell/Dockerfile @@ -14,6 +14,7 @@ RUN tdnf install -y \ iputils \ jq \ ldns-utils \ + less \ net-tools \ nftables \ nmap \ From 265ee8a4377e85d673f514d66a083e231e00e468 Mon Sep 17 00:00:00 2001 From: Will Daly Date: Tue, 11 Feb 2025 12:02:55 -0800 Subject: [PATCH 52/87] feat(shell): run bash as a login shell to get hostname in prompt (#1336) # Description Running `bash -l` causes bash to source /etc/profile, which includes the hostname in the shell prompt. This is useful for keeping track of where retina-shell is running if you have multiple terminals open. ## Related Issue N/A ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed image ## Additional Notes N/A --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Will Daly --- shell/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/Dockerfile b/shell/Dockerfile index 759ab9e58c..ac29afbe5b 100644 --- a/shell/Dockerfile +++ b/shell/Dockerfile @@ -25,4 +25,4 @@ RUN tdnf install -y \ wget \ && tdnf clean all -CMD ["/bin/bash"] +CMD ["/bin/bash", "-l"] From b6c3cc7b30de6c8193232281a85dbcfbc03119fb Mon Sep 17 00:00:00 2001 From: Alex Castilio Date: Wed, 12 Feb 2025 09:39:10 +0000 Subject: [PATCH 53/87] test: automate scale test execution (#1248) # Description Create automation workflow to run scale test automatically. Initially to keep it simpler, it will be executed daily with latest commit from main. In future it can be changed to run at merge if desired. Current Scale test configuration is 1000 deployments of 20 replicas of kapinger pods running on a cluster of 1000 nodes. The cluster will be created and deleted at each automatic execution. Changes in this PR: * Creation of workflow for daily execution * Add code to create Scale Test cluster * Simplify environment variables handling by doing it in `params` package * Update kapinger version * Update kapinger memory limit * Update context handling in scale test steps (improve flakiness of test) * Notify test job's root ctx of os signals (SIGINT and SIGTERM) to allow proper cleanup in case of interruption ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Workflow execution was tested by triggering it on push in PR branch. Workflow: https://github.com/microsoft/retina/actions/workflows/daily-scale-test.yaml ![image](https://github.com/user-attachments/assets/979ca6ae-3f8d-48ad-a9fa-57fdceeb72d9) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --------- Signed-off-by: Alex Castilio dos Santos --- .github/workflows/daily-scale-test.yaml | 20 ++++ .github/workflows/scale-test.yaml | 26 +++--- test/e2e/common/common.go | 53 ++++++++++- test/e2e/framework/azure/create-cluster.go | 48 +++++++++- test/e2e/framework/helpers/helpers.go | 7 +- .../framework/kubernetes/check-pod-status.go | 8 +- .../kubernetes/create-kapinger-deployment.go | 4 +- .../framework/kubernetes/create-namespace.go | 4 +- .../framework/kubernetes/delete-namespace.go | 3 +- test/e2e/framework/kubernetes/label-nodes.go | 91 +++++++++++++++++++ test/e2e/framework/params/params.go | 17 ++++ .../framework/scaletest/add-shared-labels.go | 11 +-- .../framework/scaletest/add-unique-labels.go | 7 +- .../scaletest/create-network-policies.go | 4 +- .../framework/scaletest/create-resources.go | 4 +- .../scaletest/delete-and-re-add-labels.go | 44 +++++++-- .../scaletest/get-publish-metrics.go | 5 +- .../e2e/framework/scaletest/validate-nodes.go | 8 +- test/e2e/framework/types/runner.go | 2 +- test/e2e/jobs/scale.go | 47 ++++++++++ test/e2e/scale_test.go | 40 +++----- 21 files changed, 359 insertions(+), 94 deletions(-) create mode 100644 .github/workflows/daily-scale-test.yaml create mode 100644 test/e2e/framework/kubernetes/label-nodes.go create mode 100644 test/e2e/framework/params/params.go diff --git a/.github/workflows/daily-scale-test.yaml b/.github/workflows/daily-scale-test.yaml new file mode 100644 index 0000000000..c62b353973 --- /dev/null +++ b/.github/workflows/daily-scale-test.yaml @@ -0,0 +1,20 @@ +name: Daily Scale Test + +on: + schedule: + - cron: "0 0 * * *" + +permissions: + contents: read + id-token: write + +jobs: + call-scale-test: + uses: ./.github/workflows/scale-test.yaml + with: + num_deployments: 1000 + num_replicas: 20 + num_netpol: 0 + num_nodes: 1000 + cleanup: true + secrets: inherit diff --git a/.github/workflows/scale-test.yaml b/.github/workflows/scale-test.yaml index fa6e9bd6a1..ee46a07989 100644 --- a/.github/workflows/scale-test.yaml +++ b/.github/workflows/scale-test.yaml @@ -15,7 +15,7 @@ on: description: "Image Namespace (if not set, default namespace will be used)" type: string image_tag: - description: "Image Tag (if not set, default for this commit will be used)" + description: "Image Tag (if not set, latest commit from 'main' will be used)" type: string num_deployments: description: "Number of Traffic Deployments" @@ -36,25 +36,21 @@ on: workflow_call: inputs: - resource_group: - description: "Azure Resource Group" - required: true - type: string - cluster_name: - description: "AKS Cluster Name" - required: true - type: string num_deployments: description: "Number of Traffic Deployments" - default: 1000 + default: 100 type: number num_replicas: description: "Number of Traffic Replicas per Deployment" - default: 40 + default: 10 type: number num_netpol: description: "Number of Network Policies" - default: 1000 + default: 0 + type: number + num_nodes: + description: "Number of nodes" + default: 100 type: number cleanup: description: "Clean up environment after test" @@ -100,8 +96,10 @@ jobs: IMAGE_NAMESPACE: ${{ inputs.image_namespace == '' && github.repository || inputs.image_namespace }} TAG: ${{ inputs.image_tag }} AZURE_APP_INSIGHTS_KEY: ${{ secrets.AZURE_APP_INSIGHTS_KEY }} + NODES: ${{ inputs.num_nodes }} + CREATE_INFRA: ${{ github.event_name != 'workflow_dispatch' }} shell: bash run: | set -euo pipefail - [[ $TAG == "" ]] && TAG=$(make version) - go test -v ./test/e2e/. -timeout 300m -tags=scale -count=1 -args -create-infra=false -delete-infra=false + [[ $TAG == "" ]] && TAG=$(curl -s https://api.github.com/repos/microsoft/retina/commits | jq -r '.[0].sha' | cut -c1-7) + exec go test -v ./test/e2e/. -timeout 300m -tags=scale -count=1 -args -create-infra=$(echo $CREATE_INFRA) -delete-infra=$(echo $CLEANUP) diff --git a/test/e2e/common/common.go b/test/e2e/common/common.go index 1d4f5b00a2..19a04172b0 100644 --- a/test/e2e/common/common.go +++ b/test/e2e/common/common.go @@ -6,13 +6,13 @@ package common import ( "flag" - "os" "os/user" "path/filepath" "strconv" "testing" "time" + "github.com/microsoft/retina/test/e2e/framework/params" "github.com/stretchr/testify/require" ) @@ -31,6 +31,13 @@ var ( Architectures = []string{"amd64", "arm64"} CreateInfra = flag.Bool("create-infra", true, "create a Resource group, vNET and AKS cluster for testing") DeleteInfra = flag.Bool("delete-infra", true, "delete a Resource group, vNET and AKS cluster for testing") + ScaleTestInfra = ScaleTestInfraHandler{ + location: params.Location, + subscriptionID: params.SubscriptionID, + resourceGroup: params.ResourceGroup, + clusterName: params.ClusterName, + nodes: params.Nodes, + } // kubeconfig: path to kubeconfig file, in not provided, // a new k8s cluster will be created @@ -49,8 +56,50 @@ var ( } ) +type ScaleTestInfraHandler struct { + location string + subscriptionID string + resourceGroup string + clusterName string + nodes string +} + +func (s ScaleTestInfraHandler) GetSubscriptionID() string { + return s.subscriptionID +} + +func (s ScaleTestInfraHandler) GetLocation() string { + if s.location == "" { + return "westus2" + } + return s.location +} + +func (s ScaleTestInfraHandler) GetResourceGroup() string { + if s.resourceGroup != "" { + return s.resourceGroup + } + // Use the cluster name as the resource group name by default. + return s.GetClusterName() +} + +func (s ScaleTestInfraHandler) GetNodes() string { + if s.nodes == "" { + // Default to 100 nodes per pool + return "100" + } + return s.nodes +} + +func (s ScaleTestInfraHandler) GetClusterName() string { + if s.clusterName != "" { + return s.clusterName + } + return "retina-scale-test" +} + func ClusterNameForE2ETest(t *testing.T) string { - clusterName := os.Getenv("CLUSTER_NAME") + clusterName := params.ClusterName if clusterName == "" { curuser, err := user.Current() require.NoError(t, err) diff --git a/test/e2e/framework/azure/create-cluster.go b/test/e2e/framework/azure/create-cluster.go index 160d81fa86..c6a5b9e50a 100644 --- a/test/e2e/framework/azure/create-cluster.go +++ b/test/e2e/framework/azure/create-cluster.go @@ -3,6 +3,7 @@ package azure import ( "context" "fmt" + "log" "time" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" @@ -23,6 +24,25 @@ type CreateCluster struct { ResourceGroupName string Location string ClusterName string + podCidr string + vmSize string + networkPluginMode string + Nodes int32 +} + +func (c *CreateCluster) SetPodCidr(podCidr string) *CreateCluster { + c.podCidr = podCidr + return c +} + +func (c *CreateCluster) SetVMSize(vmSize string) *CreateCluster { + c.vmSize = vmSize + return c +} + +func (c *CreateCluster) SetNetworkPluginMode(networkPluginMode string) *CreateCluster { + c.networkPluginMode = networkPluginMode + return c } func (c *CreateCluster) Run() error { @@ -30,14 +50,35 @@ func (c *CreateCluster) Run() error { if err != nil { return fmt.Errorf("failed to obtain a credential: %w", err) } - ctx, cancel := context.WithTimeout(context.Background(), defaultClusterCreateTimeout) - defer cancel() + ctx := context.TODO() clientFactory, err := armcontainerservice.NewClientFactory(c.SubscriptionID, cred, nil) if err != nil { return fmt.Errorf("failed to create client: %w", err) } + if c.Nodes == 0 { + c.Nodes = MaxNumberOfNodes + } + + template := GetStarterClusterTemplate(c.Location) + + if c.Nodes > 0 { + template.Properties.AgentPoolProfiles[0].Count = to.Ptr(c.Nodes) + } + + if c.podCidr != "" { + template.Properties.NetworkProfile.PodCidr = to.Ptr(c.podCidr) + } + + if c.vmSize != "" { + template.Properties.AgentPoolProfiles[0].VMSize = to.Ptr(c.vmSize) + } + + if c.networkPluginMode != "" { + template.Properties.NetworkProfile.NetworkPluginMode = to.Ptr(armcontainerservice.NetworkPluginMode(c.networkPluginMode)) + } - poller, err := clientFactory.NewManagedClustersClient().BeginCreateOrUpdate(ctx, c.ResourceGroupName, c.ClusterName, GetStarterClusterTemplate(c.Location), nil) + log.Printf("creating cluster %s in location %s...", c.ClusterName, c.Location) + poller, err := clientFactory.NewManagedClustersClient().BeginCreateOrUpdate(ctx, c.ResourceGroupName, c.ClusterName, template, nil) if err != nil { return fmt.Errorf("failed to finish the create cluster request: %w", err) } @@ -45,6 +86,7 @@ func (c *CreateCluster) Run() error { if err != nil { return fmt.Errorf("failed to pull the create cluster result: %w", err) } + log.Printf("cluster created %s in location %s...", c.ClusterName, c.Location) return nil } diff --git a/test/e2e/framework/helpers/helpers.go b/test/e2e/framework/helpers/helpers.go index 5102d7cae4..4dbcc05052 100644 --- a/test/e2e/framework/helpers/helpers.go +++ b/test/e2e/framework/helpers/helpers.go @@ -2,6 +2,8 @@ package helpers import ( "context" + "os/signal" + "syscall" "testing" "time" ) @@ -20,5 +22,8 @@ func Context(t *testing.T) (context.Context, context.CancelFunc) { // Subtract a minute from the deadline to ensure we have time to cleanup deadline = deadline.Add(-time.Minute) - return context.WithDeadline(context.Background(), deadline) + ctx, cancel := context.WithDeadline(context.Background(), deadline) //nolint:all // cancel is reassigned in next line + ctx, cancel = signal.NotifyContext(ctx, syscall.SIGINT, syscall.SIGTERM) + + return ctx, cancel } diff --git a/test/e2e/framework/kubernetes/check-pod-status.go b/test/e2e/framework/kubernetes/check-pod-status.go index 197b32c964..8c51152cd8 100644 --- a/test/e2e/framework/kubernetes/check-pod-status.go +++ b/test/e2e/framework/kubernetes/check-pod-status.go @@ -14,9 +14,8 @@ import ( ) const ( - RetryTimeoutPodsReady = 5 * time.Minute - RetryIntervalPodsReady = 5 * time.Second - timeoutWaitForPodsSeconds = 1200 + RetryTimeoutPodsReady = 5 * time.Minute + RetryIntervalPodsReady = 5 * time.Second printInterval = 5 // print to stdout every 5 iterations ) @@ -49,8 +48,7 @@ func (w *WaitPodsReady) Run() error { return fmt.Errorf("error creating Kubernetes client: %w", err) } - ctx, cancel := context.WithTimeout(context.Background(), timeoutWaitForPodsSeconds*time.Second) - defer cancel() + ctx := context.TODO() return WaitForPodReady(ctx, clientset, w.Namespace, w.LabelSelector) } diff --git a/test/e2e/framework/kubernetes/create-kapinger-deployment.go b/test/e2e/framework/kubernetes/create-kapinger-deployment.go index a895625e32..a09e6867f1 100644 --- a/test/e2e/framework/kubernetes/create-kapinger-deployment.go +++ b/test/e2e/framework/kubernetes/create-kapinger-deployment.go @@ -132,13 +132,13 @@ func (c *CreateKapingerDeployment) GetKapingerDeployment() *appsv1.Deployment { Containers: []v1.Container{ { Name: "kapinger", - Image: "acnpublic.azurecr.io/kapinger:20241014.7", + Image: "acnpublic.azurecr.io/kapinger:v0.0.23-9-g23ef222", Resources: v1.ResourceRequirements{ Requests: v1.ResourceList{ "memory": resource.MustParse("20Mi"), }, Limits: v1.ResourceList{ - "memory": resource.MustParse("100Mi"), + "memory": resource.MustParse("40Mi"), }, }, Ports: []v1.ContainerPort{ diff --git a/test/e2e/framework/kubernetes/create-namespace.go b/test/e2e/framework/kubernetes/create-namespace.go index 4c8275afdc..c3ba5f16ca 100644 --- a/test/e2e/framework/kubernetes/create-namespace.go +++ b/test/e2e/framework/kubernetes/create-namespace.go @@ -3,7 +3,6 @@ package kubernetes import ( "context" "fmt" - "time" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" @@ -52,8 +51,7 @@ func CreateNamespaceFn(kubeconfigpath, namespace string) error { return fmt.Errorf("error creating Kubernetes client: %w", err) } - ctx, cancel := context.WithTimeout(context.Background(), defaultTimeoutSeconds*time.Second) - defer cancel() + ctx := context.TODO() _, err = clientset.CoreV1().Namespaces().Create(ctx, &v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ diff --git a/test/e2e/framework/kubernetes/delete-namespace.go b/test/e2e/framework/kubernetes/delete-namespace.go index a8bd41c3ef..259e7a5dd0 100644 --- a/test/e2e/framework/kubernetes/delete-namespace.go +++ b/test/e2e/framework/kubernetes/delete-namespace.go @@ -30,8 +30,7 @@ func (d *DeleteNamespace) Run() error { return fmt.Errorf("error creating Kubernetes client: %w", err) } - ctx, cancel := context.WithTimeout(context.Background(), 1200*time.Second) - defer cancel() + ctx := context.TODO() err = clientset.CoreV1().Namespaces().Delete(ctx, d.Namespace, metaV1.DeleteOptions{}) if err != nil { diff --git a/test/e2e/framework/kubernetes/label-nodes.go b/test/e2e/framework/kubernetes/label-nodes.go new file mode 100644 index 0000000000..63256da456 --- /dev/null +++ b/test/e2e/framework/kubernetes/label-nodes.go @@ -0,0 +1,91 @@ +package kubernetes + +import ( + "context" + "encoding/json" + "fmt" + "log" + + retry "github.com/microsoft/retina/test/retry" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/tools/clientcmd" +) + +type patchStringValue struct { + Op string `json:"op"` + Path string `json:"path"` + Value string `json:"value"` +} + +type LabelNodes struct { + KubeConfigFilePath string + Labels map[string]string +} + +func (l *LabelNodes) Prevalidate() error { + return nil +} + +func (l *LabelNodes) Run() error { + config, err := clientcmd.BuildConfigFromFlags("", l.KubeConfigFilePath) + if err != nil { + return fmt.Errorf("error building kubeconfig: %w", err) + } + + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + return fmt.Errorf("error creating Kubernetes client: %w", err) + } + + ctx := context.TODO() + + var nodes *corev1.NodeList + + retrier := retry.Retrier{Attempts: defaultRetryAttempts, Delay: defaultRetryDelay} + err = retrier.Do(ctx, func() error { + nodes, err = clientset.CoreV1().Nodes().List(ctx, metav1.ListOptions{}) + if err != nil { + return fmt.Errorf("failed to get nodes: %w", err) + } + return nil + }) + if err != nil { + return fmt.Errorf("retrier failed: %w", err) + } + + patch := []patchStringValue{} + for k, v := range l.Labels { + patch = append(patch, patchStringValue{ + Op: "add", + Path: "/metadata/labels/" + k, + Value: v, + }) + } + b, err := json.Marshal(patch) + if err != nil { + return fmt.Errorf("failed to marshal patch: %w", err) + } + + for i := range nodes.Items { + log.Println("Labeling node", nodes.Items[i].Name) + err = retrier.Do(ctx, func() error { + _, err = clientset.CoreV1().Nodes().Patch(ctx, nodes.Items[i].Name, types.JSONPatchType, b, metav1.PatchOptions{}) + if err != nil { + return fmt.Errorf("failed to patch pod: %w", err) + } + return nil + }) + if err != nil { + return fmt.Errorf("retrier failed: %w", err) + } + } + + return nil +} + +func (l *LabelNodes) Stop() error { + return nil +} diff --git a/test/e2e/framework/params/params.go b/test/e2e/framework/params/params.go new file mode 100644 index 0000000000..233944ae3f --- /dev/null +++ b/test/e2e/framework/params/params.go @@ -0,0 +1,17 @@ +package params + +import ( + "os" +) + +var ( + Location = os.Getenv("LOCATION") + SubscriptionID = os.Getenv("AZURE_SUBSCRIPTION_ID") + ResourceGroup = os.Getenv("AZURE_RESOURCE_GROUP") + ClusterName = os.Getenv("CLUSTER_NAME") + Nodes = os.Getenv("NODES") + NumDeployments = os.Getenv("NUM_DEPLOYMENTS") + NumReplicas = os.Getenv("NUM_REPLICAS") + NumNetworkPolicies = os.Getenv("NUM_NET_POL") + CleanUp = os.Getenv("CLEANUP") +) diff --git a/test/e2e/framework/scaletest/add-shared-labels.go b/test/e2e/framework/scaletest/add-shared-labels.go index 6a38be4f5d..027f711994 100644 --- a/test/e2e/framework/scaletest/add-shared-labels.go +++ b/test/e2e/framework/scaletest/add-shared-labels.go @@ -5,7 +5,6 @@ import ( "encoding/json" "fmt" "log" - "time" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" @@ -51,10 +50,12 @@ func (a *AddSharedLabelsToAllPods) Run() error { return fmt.Errorf("error creating Kubernetes client: %w", err) } - ctx, cancel := contextToLabelAllPods() - defer cancel() + ctx := context.TODO() resources, err := clientset.CoreV1().Pods(a.Namespace).List(ctx, metav1.ListOptions{}) + if err != nil { + return fmt.Errorf("failed to list pods: %w", err) + } patchBytes, err := getSharedLabelsPatch(a.NumSharedLabelsPerPod) if err != nil { @@ -106,7 +107,3 @@ func getSharedLabelsPatch(numLabels int) ([]byte, error) { return b, nil } - -func contextToLabelAllPods() (context.Context, context.CancelFunc) { - return context.WithTimeout(context.Background(), 120*time.Minute) -} diff --git a/test/e2e/framework/scaletest/add-unique-labels.go b/test/e2e/framework/scaletest/add-unique-labels.go index ff85764d8f..e196caabb1 100644 --- a/test/e2e/framework/scaletest/add-unique-labels.go +++ b/test/e2e/framework/scaletest/add-unique-labels.go @@ -1,6 +1,7 @@ package scaletest import ( + "context" "encoding/json" "fmt" @@ -41,10 +42,12 @@ func (a *AddUniqueLabelsToAllPods) Run() error { return fmt.Errorf("error creating Kubernetes client: %w", err) } - ctx, cancel := contextToLabelAllPods() - defer cancel() + ctx := context.TODO() resources, err := clientset.CoreV1().Pods(a.Namespace).List(ctx, metav1.ListOptions{}) + if err != nil { + return fmt.Errorf("failed to list pods: %w", err) + } count := 0 diff --git a/test/e2e/framework/scaletest/create-network-policies.go b/test/e2e/framework/scaletest/create-network-policies.go index c38f9597cc..18b7a9b90a 100644 --- a/test/e2e/framework/scaletest/create-network-policies.go +++ b/test/e2e/framework/scaletest/create-network-policies.go @@ -3,7 +3,6 @@ package scaletest import ( "context" "fmt" - "time" e2ekubernetes "github.com/microsoft/retina/test/e2e/framework/kubernetes" @@ -45,8 +44,7 @@ func (c *CreateNetworkPolicies) Run() error { return fmt.Errorf("error creating Kubernetes client: %w", err) } - ctx, cancel := context.WithTimeout(context.Background(), defaultTimeoutSeconds*time.Second) - defer cancel() + ctx := context.TODO() networkPolicies := c.generateNetworkPolicies(c.NumNetworkPolicies) diff --git a/test/e2e/framework/scaletest/create-resources.go b/test/e2e/framework/scaletest/create-resources.go index 4057cdc826..2175a07234 100644 --- a/test/e2e/framework/scaletest/create-resources.go +++ b/test/e2e/framework/scaletest/create-resources.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "log" - "time" e2ekubernetes "github.com/microsoft/retina/test/e2e/framework/kubernetes" "github.com/microsoft/retina/test/retry" @@ -49,8 +48,7 @@ func (c *CreateResources) Run() error { return fmt.Errorf("error creating Kubernetes client: %w", err) } - ctx, cancel := context.WithTimeout(context.Background(), 1200*time.Second) - defer cancel() + ctx := context.TODO() retrier := retry.Retrier{Attempts: defaultRetryAttempts, Delay: defaultRetryDelay} diff --git a/test/e2e/framework/scaletest/delete-and-re-add-labels.go b/test/e2e/framework/scaletest/delete-and-re-add-labels.go index 3403ea2488..db215234e4 100644 --- a/test/e2e/framework/scaletest/delete-and-re-add-labels.go +++ b/test/e2e/framework/scaletest/delete-and-re-add-labels.go @@ -6,6 +6,7 @@ import ( "log" "time" + "github.com/microsoft/retina/test/retry" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" @@ -33,7 +34,6 @@ func (d *DeleteAndReAddLabels) Prevalidate() error { // Primary step where test logic is executed // Returning an error will cause the test to fail func (d *DeleteAndReAddLabels) Run() error { - if d.NumSharedLabelsPerPod <= 2 || !d.DeleteLabels { return nil } @@ -48,15 +48,24 @@ func (d *DeleteAndReAddLabels) Run() error { return fmt.Errorf("error creating Kubernetes client: %w", err) } - ctx, cancel := contextToLabelAllPods() - defer cancel() + ctx := context.TODO() labelsToDelete := `"shared-lab-00000": null, "shared-lab-00001": null, "shared-lab-00002": null` labelsToAdd := `"shared-lab-00000": "val", "shared-lab-00001": "val", "shared-lab-00002": "val"` - pods, err := clientset.CoreV1().Pods(d.Namespace).List(ctx, metav1.ListOptions{}) + var pods *corev1.PodList + + retrier := retry.Retrier{Attempts: defaultRetryAttempts, Delay: defaultRetryDelay} + + err = retrier.Do(ctx, func() error { + pods, err = clientset.CoreV1().Pods(d.Namespace).List(ctx, metav1.ListOptions{}) + if err != nil { + return fmt.Errorf("failed to list pods: %w", err) + } + return nil + }) if err != nil { - return fmt.Errorf("error listing pods: %w", err) + return fmt.Errorf("retrier failed: %w", err) } for i := 0; i < d.DeleteLabelsTimes; i++ { @@ -89,12 +98,19 @@ func (d *DeleteAndReAddLabels) Run() error { } func (d *DeleteAndReAddLabels) addLabels(ctx context.Context, clientset *kubernetes.Clientset, pods *corev1.PodList, patch string) error { - for _, pod := range pods.Items { log.Println("Labeling Pod", pod.Name) - _, err := clientset.CoreV1().Pods(d.Namespace).Patch(ctx, pod.Name, types.StrategicMergePatchType, []byte(patch), metav1.PatchOptions{}) + + retrier := retry.Retrier{Attempts: defaultRetryAttempts, Delay: defaultRetryDelay} + err := retrier.Do(ctx, func() error { + _, err := clientset.CoreV1().Pods(d.Namespace).Patch(ctx, pod.Name, types.StrategicMergePatchType, []byte(patch), metav1.PatchOptions{}) + if err != nil { + return fmt.Errorf("could not patch pod: %w", err) + } + return nil + }) if err != nil { - return fmt.Errorf("error patching pod: %w", err) + return fmt.Errorf("could not patch pod: %w", err) } } @@ -105,9 +121,17 @@ func (d *DeleteAndReAddLabels) deleteLabels(ctx context.Context, clientset *kube for _, pod := range pods.Items { log.Println("Deleting label from Pod", pod.Name) - _, err := clientset.CoreV1().Pods(d.Namespace).Patch(ctx, pod.Name, types.StrategicMergePatchType, []byte(patch), metav1.PatchOptions{}) + + retrier := retry.Retrier{Attempts: defaultRetryAttempts, Delay: defaultRetryDelay} + err := retrier.Do(ctx, func() error { + _, err := clientset.CoreV1().Pods(d.Namespace).Patch(ctx, pod.Name, types.StrategicMergePatchType, []byte(patch), metav1.PatchOptions{}) + if err != nil { + return fmt.Errorf("could not patch pod: %w", err) + } + return nil + }) if err != nil { - return fmt.Errorf("error patching pod: %w", err) + return fmt.Errorf("could not patch pod: %w", err) } } return nil diff --git a/test/e2e/framework/scaletest/get-publish-metrics.go b/test/e2e/framework/scaletest/get-publish-metrics.go index b8e168b239..c64703f1f7 100644 --- a/test/e2e/framework/scaletest/get-publish-metrics.go +++ b/test/e2e/framework/scaletest/get-publish-metrics.go @@ -26,7 +26,7 @@ import ( const ( defaultRetryAttempts = 10 - defaultRetryDelay = 500 * time.Millisecond + defaultRetryDelay = 3 * time.Second defaultInterval = 2 * time.Minute ) @@ -136,8 +136,7 @@ func (g *GetAndPublishMetrics) Prevalidate() error { func (g *GetAndPublishMetrics) getAndPublishMetrics() error { - ctx, cancel := context.WithTimeout(context.Background(), defaultTimeoutSeconds*time.Second) - defer cancel() + ctx := context.TODO() labelSelector := labels.Set(g.Labels).String() diff --git a/test/e2e/framework/scaletest/validate-nodes.go b/test/e2e/framework/scaletest/validate-nodes.go index c95bd98f10..ea4666c516 100644 --- a/test/e2e/framework/scaletest/validate-nodes.go +++ b/test/e2e/framework/scaletest/validate-nodes.go @@ -3,7 +3,6 @@ package scaletest import ( "context" "fmt" - "time" "github.com/pkg/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -12,10 +11,6 @@ import ( "k8s.io/client-go/tools/clientcmd" ) -const ( - defaultTimeoutSeconds = 300 -) - type ValidateNumOfNodes struct { NumNodesRequired int Label map[string]string @@ -43,8 +38,7 @@ func (v *ValidateNumOfNodes) Run() error { return fmt.Errorf("error creating Kubernetes client: %w", err) } - ctx, cancel := context.WithTimeout(context.Background(), defaultTimeoutSeconds*time.Second) - defer cancel() + ctx := context.TODO() labelSelector := labels.Set(v.Label).String() nodes, err := clientset.CoreV1().Nodes().List(ctx, metav1.ListOptions{LabelSelector: labelSelector}) diff --git a/test/e2e/framework/types/runner.go b/test/e2e/framework/types/runner.go index 241205dc26..ac094ea5cd 100644 --- a/test/e2e/framework/types/runner.go +++ b/test/e2e/framework/types/runner.go @@ -33,7 +33,7 @@ func (r *Runner) Run(ctx context.Context) { }() select { case <-ctx.Done(): - r.t.Fatal("Test deadline exceeded. If more time is needed, set -timeout flag to a higher value") + r.t.Fatal("Failed to complete execution:", ctx.Err()) case err := <-runComplete: require.NoError(r.t, err) } diff --git a/test/e2e/jobs/scale.go b/test/e2e/jobs/scale.go index 58b5d49864..f4c8ac7d9a 100644 --- a/test/e2e/jobs/scale.go +++ b/test/e2e/jobs/scale.go @@ -5,6 +5,8 @@ import ( "time" "github.com/microsoft/retina/test/e2e/common" + "github.com/microsoft/retina/test/e2e/framework/azure" + "github.com/microsoft/retina/test/e2e/framework/generic" "github.com/microsoft/retina/test/e2e/framework/kubernetes" "github.com/microsoft/retina/test/e2e/framework/scaletest" "github.com/microsoft/retina/test/e2e/framework/types" @@ -45,6 +47,51 @@ func DefaultScaleTestOptions() scaletest.Options { } } +func GetScaleTestInfra(subID, rg, clusterName, location, kubeConfigFilePath string, nodes int32, createInfra bool) *types.Job { + job := types.NewJob("Get scale test infrastructure") + + if createInfra { + job.AddStep(&azure.CreateResourceGroup{ + SubscriptionID: subID, + ResourceGroupName: rg, + Location: location, + }, nil) + + job.AddStep((&azure.CreateCluster{ + ClusterName: clusterName, + Nodes: nodes, + }). + SetPodCidr("100.64.0.0/10"). + SetVMSize("Standard_D4_v3"). + SetNetworkPluginMode("overlay"), nil) + + job.AddStep(&azure.GetAKSKubeConfig{ + KubeConfigFilePath: kubeConfigFilePath, + }, nil) + + } else { + job.AddStep(&azure.GetAKSKubeConfig{ + KubeConfigFilePath: kubeConfigFilePath, + ClusterName: clusterName, + SubscriptionID: subID, + ResourceGroupName: rg, + Location: location, + }, nil) + } + + job.AddStep(&kubernetes.LabelNodes{ + Labels: map[string]string{"scale-test": "true"}, + }, nil) + + job.AddStep(&generic.LoadFlags{ + TagEnv: generic.DefaultTagEnv, + ImageNamespaceEnv: generic.DefaultImageNamespace, + ImageRegistryEnv: generic.DefaultImageRegistry, + }, nil) + + return job +} + func ScaleTest(opt *scaletest.Options) *types.Job { job := types.NewJob("Scale Test") diff --git a/test/e2e/scale_test.go b/test/e2e/scale_test.go index e8ca228767..3922971c73 100644 --- a/test/e2e/scale_test.go +++ b/test/e2e/scale_test.go @@ -3,8 +3,6 @@ package retina import ( - "crypto/rand" - "math/big" "os" "path/filepath" "strconv" @@ -14,6 +12,7 @@ import ( "github.com/microsoft/retina/test/e2e/framework/azure" "github.com/microsoft/retina/test/e2e/framework/generic" "github.com/microsoft/retina/test/e2e/framework/helpers" + "github.com/microsoft/retina/test/e2e/framework/params" "github.com/microsoft/retina/test/e2e/framework/types" jobs "github.com/microsoft/retina/test/e2e/jobs" "github.com/stretchr/testify/require" @@ -23,25 +22,13 @@ func TestE2ERetina_Scale(t *testing.T) { ctx, cancel := helpers.Context(t) defer cancel() - clusterName := common.ClusterNameForE2ETest(t) - - subID := os.Getenv("AZURE_SUBSCRIPTION_ID") + clusterName := common.ScaleTestInfra.GetClusterName() + subID := common.ScaleTestInfra.GetSubscriptionID() require.NotEmpty(t, subID) - - location := os.Getenv("AZURE_LOCATION") - if location == "" { - nBig, err := rand.Int(rand.Reader, big.NewInt(int64(len(common.AzureLocations)))) - if err != nil { - t.Fatal("Failed to generate a secure random index", err) - } - location = common.AzureLocations[nBig.Int64()] - } - - rg := os.Getenv("AZURE_RESOURCE_GROUP") - if rg == "" { - // Use the cluster name as the resource group name by default. - rg = clusterName - } + location := common.ScaleTestInfra.GetLocation() + rg := common.ScaleTestInfra.GetResourceGroup() + nodes, err := strconv.ParseInt(common.ScaleTestInfra.GetNodes(), 10, 32) + require.NoError(t, err, "NODES must be an integer within int32 range") cwd, err := os.Getwd() require.NoError(t, err) @@ -56,10 +43,10 @@ func TestE2ERetina_Scale(t *testing.T) { opt := jobs.DefaultScaleTestOptions() opt.KubeconfigPath = common.KubeConfigFilePath(rootDir) - NumDeployments := os.Getenv("NUM_DEPLOYMENTS") - NumReplicas := os.Getenv("NUM_REPLICAS") - NumNetworkPolicies := os.Getenv("NUM_NETPOLS") - CleanUp := os.Getenv("CLEANUP") + NumDeployments := params.NumDeployments + NumReplicas := params.NumReplicas + NumNetworkPolicies := params.NumNetworkPolicies + CleanUp := params.CleanUp if NumDeployments != "" { opt.NumRealDeployments, err = strconv.Atoi(NumDeployments) @@ -90,12 +77,13 @@ func TestE2ERetina_Scale(t *testing.T) { opt.LabelsToGetMetrics = map[string]string{"k8s-app": "retina"} // CreateTestInfra - createTestInfra := types.NewRunner(t, jobs.CreateTestInfra(subID, rg, clusterName, location, common.KubeConfigFilePath(rootDir), *common.CreateInfra)) + infra := types.NewRunner(t, jobs.GetScaleTestInfra(subID, rg, clusterName, location, common.KubeConfigFilePath(rootDir), int32(nodes), *common.CreateInfra)) + t.Cleanup(func() { _ = jobs.DeleteTestInfra(subID, rg, location, *common.DeleteInfra).Run() }) - createTestInfra.Run(ctx) + infra.Run(ctx) fqdn, err := azure.GetFqdnFn(subID, rg, clusterName) require.NoError(t, err) From 764d86bdc91b7b782b0eb2eb2f2928d218914dc7 Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Wed, 12 Feb 2025 13:46:23 +0000 Subject: [PATCH 54/87] fix(grafana): Fix dashboard Hubble pod-flow-workload dashboard (#1341) # Description * fix pod-flow-workload Hubble dashboard ## Related Issue #811 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed ![Screenshot 2025-02-12 115154](https://github.com/user-attachments/assets/186a42cb-2b45-45a8-b6c1-8ec6dba4d593) ![Screenshot 2025-02-12 115213](https://github.com/user-attachments/assets/386ae58f-6bc1-4f6f-b723-d7d1bad73e04) ## Additional Notes Dashboard `pod-flows-namespace.json` is still broken. Need someone to investigate how to fix it (I'll link the relevant GH issue here). --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- .../dashboards/pod-flows-workload.json | 55 ++++++++----------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/deploy/hubble/grafana/dashboards/pod-flows-workload.json b/deploy/hubble/grafana/dashboards/pod-flows-workload.json index 98123c1d30..0556acc142 100644 --- a/deploy/hubble/grafana/dashboards/pod-flows-workload.json +++ b/deploy/hubble/grafana/dashboards/pod-flows-workload.json @@ -133,7 +133,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count(\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"forwarded\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count(\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"FORWARDED\"}[10m])\r\n ) >= 0.01\r\n)", "hide": false, "instant": true, "legendFormat": "Pods with Outgoing Traffic", @@ -200,7 +200,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"forwarded\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"FORWARDED\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Max Outgoing Traffic", @@ -267,7 +267,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"forwarded\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"FORWARDED\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Min Outgoing Traffic", @@ -334,7 +334,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count(\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"forwarded\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count(\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"FORWARDED\"}[10m])\r\n ) >= 0.01\r\n)", "hide": false, "instant": true, "legendFormat": "Pods with Incoming Traffic", @@ -401,7 +401,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"forwarded\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"FORWARDED\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Max Incoming Traffic", @@ -468,7 +468,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"forwarded\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"FORWARDED\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Min Incoming Traffic", @@ -535,7 +535,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count (\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"dropped\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count (\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"DROPPED\"}[10m])\r\n ) >= 0.01\r\n)", "hide": false, "instant": true, "legendFormat": "Pods with Outgoing Drops", @@ -602,7 +602,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"dropped\", cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"DROPPED\", cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Max Outgoing Drops", @@ -669,7 +669,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"dropped\", cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"DROPPED\", cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Min Outgoing Drops", @@ -736,7 +736,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count (\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"dropped\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count (\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"DROPPED\"}[10m])\r\n ) >= 0.01\r\n)", "hide": false, "instant": true, "legendFormat": "Pods with Incoming Drops", @@ -803,7 +803,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"dropped\", cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"DROPPED\", cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Max Incoming Drops", @@ -870,7 +870,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"dropped\", cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"DROPPED\", cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Min Incoming Drops", @@ -1702,7 +1702,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"dropped\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"DROPPED\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -1783,7 +1783,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"dropped\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"DROPPED\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{destination}}", "range": true, @@ -1885,7 +1885,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"dropped\"}[$__rate_interval])\r\n ), 0.01\r\n)", + "expr": "round(\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/$workload\", verdict=\"DROPPED\"}[$__rate_interval])\r\n ), 0.01\r\n)", "legendFormat": "{{destination}}", "range": true, "refId": "A" @@ -1986,7 +1986,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"dropped\"}[$__rate_interval])\r\n ), 0.01\r\n)", + "expr": "round(\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/$workload\", verdict=\"DROPPED\"}[$__rate_interval])\r\n ), 0.01\r\n)", "legendFormat": "{{destination}}", "range": true, "refId": "A" @@ -3901,17 +3901,14 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info, cluster)", + "definition": "label_values(hubble_flows_processed_total, cluster)", "hide": 0, "includeAll": false, "label": "Cluster", "multi": false, "name": "cluster", "options": [], - "query": { - "query": "label_values(kube_node_info, cluster)", - "refId": "StandardVariableQuery" - }, + "query": "label_values(hubble_flows_processed_total, cluster)", "refresh": 2, "regex": "", "skipUrlSync": false, @@ -3925,17 +3922,14 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info{cluster=\"$cluster\"},node)", + "definition": "label_values(hubble_flows_processed_total{cluster=\"$cluster\"}, instance)", "hide": 0, "includeAll": true, "label": "Nodes", "multi": true, "name": "Nodes", "options": [], - "query": { - "query": "label_values(kube_node_info{cluster=\"$cluster\"},node)", - "refId": "PrometheusVariableQueryEditor-VariableQuery" - }, + "query": "label_values(hubble_flows_processed_total{cluster=\"$cluster\"}, instance)", "refresh": 2, "regex": "", "skipUrlSync": false, @@ -3974,7 +3968,7 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "query_result(sum by (workload) (label_replace(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/[a-z0-9]+$\"}, \"workload\", \"$1\", \"destination\", \"^$namespace/([a-z0-9]+)\")) or sum by (workload) (label_replace(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/[a-z0-9]+-\"}, \"workload\", \"$1\", \"destination\", \"^$namespace/(.*)-[a-z0-9]+\"))or sum by (workload) (label_replace(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/[a-z0-9]+$\"}, \"workload\", \"$1\", \"source\", \"^$namespace/([a-z0-9]+)\")) or sum by (workload) (label_replace(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/[a-z0-9]+-\"}, \"workload\", \"$1\", \"source\", \"^$namespace/(.*)-[a-z0-9]+\")))", + "definition": "label_values(kube_pod_info{namespace=\"$namespace\"}, pod)", "description": "", "hide": 0, "includeAll": false, @@ -3982,12 +3976,9 @@ "multi": false, "name": "workload", "options": [], - "query": { - "query": "query_result(sum by (workload) (label_replace(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/[a-z0-9]+$\"}, \"workload\", \"$1\", \"destination\", \"^$namespace/([a-z0-9]+)\")) or sum by (workload) (label_replace(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/[a-z0-9]+-\"}, \"workload\", \"$1\", \"destination\", \"^$namespace/(.*)-[a-z0-9]+\"))or sum by (workload) (label_replace(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/[a-z0-9]+$\"}, \"workload\", \"$1\", \"source\", \"^$namespace/([a-z0-9]+)\")) or sum by (workload) (label_replace(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/[a-z0-9]+-\"}, \"workload\", \"$1\", \"source\", \"^$namespace/(.*)-[a-z0-9]+\")))", - "refId": "PrometheusVariableQueryEditor-VariableQuery" - }, + "query": "label_values(kube_pod_info{namespace=\"$namespace\"}, pod)", "refresh": 2, - "regex": "/workload=\"([-a-z0-9]+)/g", + "regex": "", "skipUrlSync": false, "sort": 1, "type": "query" From 6e453fcf79a876e1916f03258e4f76771a28c9e9 Mon Sep 17 00:00:00 2001 From: Alex Castilio Date: Wed, 12 Feb 2025 15:23:59 +0000 Subject: [PATCH 55/87] fix(test): fix typo in var name (#1346) # Description Fix typo in workflow file: `AZURE_APP_INSIGHTS_ID` -> `AZURE_APP_INSIGHTS_KEY` ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Alex Castilio dos Santos --- .github/workflows/images.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/images.yaml b/.github/workflows/images.yaml index 3497ee0129..e33eff0e56 100644 --- a/.github/workflows/images.yaml +++ b/.github/workflows/images.yaml @@ -52,7 +52,7 @@ jobs: IMAGE_NAMESPACE=${{ github.repository }} \ PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ IMAGE_REGISTRY=${{ vars.ACR_NAME }} \ - APP_INSIGHTS_ID=${{ secrets.AZURE_APP_INSIGHTS_ID }} \ + APP_INSIGHTS_ID=${{ secrets.AZURE_APP_INSIGHTS_KEY }} \ BUILDX_ACTION=--push else make retina-image \ @@ -103,7 +103,7 @@ jobs: IMAGE_NAMESPACE=${{ github.repository }} \ PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ IMAGE_REGISTRY=${{ vars.ACR_NAME }} \ - APP_INSIGHTS_ID=${{ secrets.AZURE_APP_INSIGHTS_ID }} \ + APP_INSIGHTS_ID=${{ secrets.AZURE_APP_INSIGHTS_KEY }} \ WINDOWS_YEARS=${{ matrix.year }} \ BUILDX_ACTION=--push else @@ -155,7 +155,7 @@ jobs: IMAGE_NAMESPACE=${{ github.repository }} \ PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ IMAGE_REGISTRY=${{ vars.ACR_NAME }} \ - APP_INSIGHTS_ID=${{ secrets.AZURE_APP_INSIGHTS_ID }} \ + APP_INSIGHTS_ID=${{ secrets.AZURE_APP_INSIGHTS_KEY }} \ BUILDX_ACTION=--push else make retina-operator-image \ From b8db6c3a1913325fef10fd39c35c2b97040e0d65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 12:10:22 -0500 Subject: [PATCH 56/87] deps: bump github.com/golangci/golangci-lint from 1.63.4 to 1.64.2 in /hack/tools (#1344) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/golangci/golangci-lint](https://github.com/golangci/golangci-lint) from 1.63.4 to 1.64.2.
Release notes

Sourced from github.com/golangci/golangci-lint's releases.

v1.64.2

golangci-lint is a free and open-source project built by volunteers.

If you value it, consider supporting us, the maintainers and linter authors.

We appreciate it! :heart:

For key updates, see the changelog.

Changelog

  • 07019ee1d build(deps): bump honnef.co/go/tools from 0.5.1 to 0.6.0 (#5391)
  • 474fdafc7 go1.24 support (#5224)
  • e21ee9a8d build(deps): bump github.com/ldez/exptostd from 0.4.0 to 0.4.1 (#5390)
  • 8e1d5f487 build(deps): bump golang.org/x/tools from 0.29.0 to 0.30.0 (#5389)
  • 23eafd5d6 build(deps): bump github.com/catenacyber/perfsprint from 0.8.0 to 0.8.1 (#5386)
  • 71445eebf build(deps): bump go-simpler.org/sloglint from 0.7.2 to 0.9.0 (#5384)
  • 9ce909727 build(deps): bump 4d63.com/gochecknoglobals from 0.2.1 to 0.2.2 (#5380)
  • 1200be22a build(deps): bump github.com/catenacyber/perfsprint from 0.7.1 to 0.8.0 (#5382)
  • 2b24c4ea4 build(deps): bump golang.org/x/sys from 0.29.0 to 0.30.0 (#5376)
  • fbc663dfe build(deps): bump golang.org/x/mod from 0.22.0 to 0.23.0 (#5375)
  • 0284fa966 tenv: deprecation (#5373)
  • a2ef9ee16 build(deps): bump github.com/polyfloyd/go-errorlint from 1.7.0 to 1.7.1 (#5368)
  • a7da4040a build(deps): bump github.com/spf13/pflag from 1.0.5 to 1.0.6 (#5367)
  • 72a1b33db build(deps): bump github.com/shirou/gopsutil/v4 from 4.24.12 to 4.25.1 (#5366)
  • 10c03d79b feat: use run.relative-path-mode for output format paths (#5363)
  • fc9406016 build(deps): bump the linter-testdata group across 2 directories with 4 updates (#5365)
  • 192e98bfe feat: add new issues.new-from-merge-base option (#5362)
  • 980a91177 fix: sanitize severities by output format (#5359)
  • 4b0517088 build(deps): bump github.com/matoous/godox from 0.0.0-20230222163458-006bad1f9d26 to 1.1.0 (#5355)
  • 98c110b06 feat: new linter exclusions system (#5339)
  • d1e9da0a2 fix: fallback on unknown severities for code climate (#5350)
  • 2637593e7 build(deps): bump github.com/mgechev/revive from 1.5.1 to 1.6.0 (#5346)
  • 23641e3b1 build(deps): bump github.com/golangci/revgrep from 0.6.1 to 0.7.0 (#5337)
  • a10bfc547 build(deps): bump github.com/golangci/revgrep from 0.6.0 to 0.6.1 (#5336)
  • 2084a50a8 build(deps): bump github.com/Crocmagnon/fatcontext from 0.6.0 to 0.7.1 (#5335)
  • ac95a2332 build(deps): bump github.com/ldez/exptostd from 0.3.1 to 0.4.0 (#5330)
  • 20e4b1e3b build(deps): bump github.com/Crocmagnon/fatcontext from 0.5.3 to 0.6.0 (#5332)
  • 29eaf2d9c build(deps): bump github.com/ldez/gomoddirectives from 0.6.0 to 0.6.1 (#5329)
  • 5a7c7e640 fix: spancheck default StartSpanMatchersSlice values (#5324)
  • 019bde5e2 build(deps): bump github.com/golangci/revgrep from 0.5.3 to 0.6.0 (#5319)
  • 2502d207c build(deps): bump github.com/mattn/go-colorable from 0.1.13 to 0.1.14 (#5318)
  • 8f187ff9f build(deps): bump github.com/securego/gosec/v2 from 2.21.4 to 2.22.0 (#5311)
  • e24c18c5a build(deps): bump github.com/karamaru-alpha/copyloopvar from 1.1.0 to 1.2.1 (#5307)
  • ace35f068 fix: avoid panic with plugin without description (#5312)
  • 09489d568 build(deps): bump github.com/uudashr/iface from 1.3.0 to 1.3.1 (#5308)
  • c07dc97f3 build(deps): bump github.com/ghostiam/protogetter from 0.3.8 to 0.3.9 (#5306)
  • 555fb5cf5 build(deps): bump github.com/alingse/nilnesserr from 0.1.1 to 0.1.2 (#5305)
  • b7fd29575 build(deps): bump golang.org/x/tools from 0.28.0 to 0.29.0 (#5309)
  • b747025f7 build(deps): bump github.com/ldez/grignotin from 0.7.0 to 0.8.0 (#5295)

... (truncated)

Changelog

Sourced from github.com/golangci/golangci-lint's changelog.

v1.64.2

This is the last minor release of golangci-lint v1. The next release will be golangci-lint v2.

  1. Enhancements
    • 🎉 go1.24 support
    • New issues.new-from-merge-base option
    • New run.relative-path-mode option
  2. Linters new features
    • copyloopvar: from 1.1.0 to 1.2.1 (support suggested fixes)
    • exptostd: from 0.3.1 to 0.4.1 (handles golang.org/x/exp/constraints.Ordered)
    • fatcontext: from 0.5.3 to 0.7.1 (new option: check-struct-pointers)
    • perfsprint: from 0.7.1 to 0.8.1 (new options: integer-format, error-format, string-format, bool-format, and hex-format)
    • revive: from 1.5.1 to 1.6.0 (new rules: redundant-build-tag, use-errors-new. New option early-return.early-return)
  3. Linters bug fixes
    • go-errorlint: from 1.7.0 to 1.7.1
    • gochecknoglobals: from 0.2.1 to 0.2.2
    • godox: from 006bad1f9d26 to 1.1.0
    • gosec: from 2.21.4 to 2.22.0
    • iface: from 1.3.0 to 1.3.1
    • nilnesserr: from 0.1.1 to 0.1.2
    • protogetter: from 0.3.8 to 0.3.9
    • sloglint: from 0.7.2 to 0.9.0
    • spancheck: fix default StartSpanMatchersSlice values
    • staticcheck: from 0.5.1 to 0.6.0
  4. Deprecations
    • ⚠️ tenv is deprecated and replaced by usetesing.osenv: true.
  5. Misc.
    • Sanitize severities by output format
    • Avoid panic with plugin without description
  6. Documentation
    • Clarify depguard configuration

v1.64.1

Cancelled due to CI failure.

v1.64.0

Cancelled due to CI failure.

Commits
  • 1dae906 dev: disable chocolatey install
  • 07019ee build(deps): bump honnef.co/go/tools from 0.5.1 to 0.6.0 (#5391)
  • edd8799 dev: disable chocolateys
  • 474fdaf go1.24 support (#5224)
  • e21ee9a build(deps): bump github.com/ldez/exptostd from 0.4.0 to 0.4.1 (#5390)
  • 8e1d5f4 build(deps): bump golang.org/x/tools from 0.29.0 to 0.30.0 (#5389)
  • 1b50df3 build(deps): bump golangci/golangci-lint-action from 6.2.0 to 6.3.2 in the gi...
  • e309eb4 build(deps): bump golang.org/x/oauth2 from 0.25.0 to 0.26.0 in /scripts/gen_g...
  • 23eafd5 build(deps): bump github.com/catenacyber/perfsprint from 0.8.0 to 0.8.1 (#5386)
  • 71445ee build(deps): bump go-simpler.org/sloglint from 0.7.2 to 0.9.0 (#5384)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/golangci/golangci-lint&package-manager=go_modules&previous-version=1.63.4&new-version=1.64.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- hack/tools/go.mod | 107 +++++++++++---------- hack/tools/go.sum | 238 +++++++++++++++++++++++++--------------------- 2 files changed, 189 insertions(+), 156 deletions(-) diff --git a/hack/tools/go.mod b/hack/tools/go.mod index 3aed5b6760..b98d325b08 100644 --- a/hack/tools/go.mod +++ b/hack/tools/go.mod @@ -4,7 +4,7 @@ go 1.22.1 toolchain go1.23.4 require ( - github.com/golangci/golangci-lint v1.63.4 + github.com/golangci/golangci-lint v1.64.2 github.com/goreleaser/goreleaser v1.26.2 github.com/onsi/ginkgo v1.16.5 go.uber.org/mock v0.5.0 @@ -15,15 +15,17 @@ require ( require ( 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect - 4d63.com/gochecknoglobals v0.2.1 // indirect - cloud.google.com/go v0.115.1 // indirect - cloud.google.com/go/auth v0.9.4 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect - cloud.google.com/go/compute/metadata v0.5.1 // indirect - cloud.google.com/go/iam v1.2.0 // indirect - cloud.google.com/go/kms v1.19.0 // indirect - cloud.google.com/go/longrunning v0.6.0 // indirect - cloud.google.com/go/storage v1.43.0 // indirect + 4d63.com/gochecknoglobals v0.2.2 // indirect + cel.dev/expr v0.18.0 // indirect + cloud.google.com/go v0.116.0 // indirect + cloud.google.com/go/auth v0.13.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/iam v1.2.2 // indirect + cloud.google.com/go/kms v1.20.1 // indirect + cloud.google.com/go/longrunning v0.6.2 // indirect + cloud.google.com/go/monitoring v1.21.2 // indirect + cloud.google.com/go/storage v1.49.0 // indirect code.gitea.io/sdk/gitea v0.18.0 // indirect dario.cat/mergo v1.0.0 // indirect github.com/4meepo/tagalign v1.4.1 // indirect @@ -50,9 +52,12 @@ require ( github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect - github.com/Crocmagnon/fatcontext v0.5.3 // indirect + github.com/Crocmagnon/fatcontext v0.7.1 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.3.0 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect @@ -64,7 +69,7 @@ require ( github.com/alexkohler/nakedret/v2 v2.0.5 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect - github.com/alingse/nilnesserr v0.1.1 // indirect + github.com/alingse/nilnesserr v0.1.2 // indirect github.com/anchore/bubbly v0.0.0-20230518153401-87b6af8ccf22 // indirect github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a // indirect github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb // indirect @@ -119,10 +124,11 @@ require ( github.com/caarlos0/go-version v0.1.1 // indirect github.com/caarlos0/log v0.4.4 // indirect github.com/carlmjohnson/versioninfo v0.22.5 // indirect - github.com/catenacyber/perfsprint v0.7.1 // indirect + github.com/catenacyber/perfsprint v0.8.1 // indirect github.com/cavaliergopher/cpio v1.0.1 // indirect github.com/ccojocar/zxcvbn-go v1.0.2 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.10 // indirect github.com/charmbracelet/bubbletea v0.22.1 // indirect @@ -132,6 +138,7 @@ require ( github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 // indirect github.com/ckaznocha/intrange v0.3.0 // indirect github.com/cloudflare/circl v1.3.8 // indirect + github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect github.com/containerd/console v1.0.4 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect @@ -155,6 +162,8 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/elliotchance/orderedmap/v2 v2.2.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/envoyproxy/go-control-plane v0.13.1 // indirect + github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect github.com/ettle/strcase v0.2.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.18.0 // indirect @@ -165,7 +174,7 @@ require ( github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/gabriel-vasile/mimetype v1.4.2 // indirect - github.com/ghostiam/protogetter v0.3.8 // indirect + github.com/ghostiam/protogetter v0.3.9 // indirect github.com/github/smimesign v0.2.0 // indirect github.com/go-critic/go-critic v0.11.5 // indirect github.com/go-fed/httpsig v1.1.0 // indirect @@ -205,10 +214,10 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect github.com/golangci/go-printf-func-name v0.1.0 // indirect - github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9 // indirect + github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect github.com/golangci/misspell v0.6.0 // indirect github.com/golangci/plugin-module-register v0.1.1 // indirect - github.com/golangci/revgrep v0.5.3 // indirect + github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-containerregistry v0.19.1 // indirect @@ -222,7 +231,7 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/google/wire v0.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect - github.com/googleapis/gax-go/v2 v2.13.0 // indirect + github.com/googleapis/gax-go/v2 v2.14.1 // indirect github.com/gordonklaus/ineffassign v0.1.0 // indirect github.com/goreleaser/chglog v0.6.1 // indirect github.com/goreleaser/fileglob v1.3.0 // indirect @@ -267,7 +276,7 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/julz/importas v0.2.0 // indirect - github.com/karamaru-alpha/copyloopvar v1.1.0 // indirect + github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/kisielk/errcheck v1.8.0 // indirect github.com/kkHAIKE/contextcheck v1.1.5 // indirect @@ -277,11 +286,10 @@ require ( github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.10 // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/kyoh86/exportloopref v0.1.11 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect - github.com/ldez/exptostd v0.3.1 // indirect - github.com/ldez/gomoddirectives v0.6.0 // indirect - github.com/ldez/grignotin v0.7.0 // indirect + github.com/ldez/exptostd v0.4.1 // indirect + github.com/ldez/gomoddirectives v0.6.1 // indirect + github.com/ldez/grignotin v0.9.0 // indirect github.com/ldez/tagliatelle v0.7.1 // indirect github.com/ldez/usetesting v0.4.2 // indirect github.com/leonklingele/grouper v1.1.2 // indirect @@ -292,13 +300,13 @@ require ( github.com/mailru/easyjson v0.7.7 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/maratori/testpackage v1.1.1 // indirect - github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/matoous/godox v1.1.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-mastodon v0.0.8 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/mgechev/revive v1.5.1 // indirect + github.com/mgechev/revive v1.6.0 // indirect github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -338,9 +346,10 @@ require ( github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/polydawn/refmt v0.89.1-0.20221221234430-40501e09de1f // indirect - github.com/polyfloyd/go-errorlint v1.7.0 // indirect + github.com/polyfloyd/go-errorlint v1.7.1 // indirect github.com/prometheus/client_golang v1.19.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.55.0 // indirect @@ -364,9 +373,8 @@ require ( github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e // indirect github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect - github.com/securego/gosec/v2 v2.21.4 // indirect + github.com/securego/gosec/v2 v2.22.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/shopspring/decimal v1.2.0 // indirect github.com/sigstore/cosign/v2 v2.2.4 // indirect github.com/sigstore/rekor v1.3.6 // indirect @@ -380,7 +388,7 @@ require ( github.com/sourcegraph/conc v0.3.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/pflag v1.0.6 // indirect @@ -402,7 +410,7 @@ require ( github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect github.com/uudashr/gocognit v1.2.0 // indirect - github.com/uudashr/iface v1.3.0 // indirect + github.com/uudashr/iface v1.3.1 // indirect github.com/vbatts/tar-split v0.11.5 // indirect github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 // indirect github.com/wagoodman/go-progress v0.0.0-20220614130704-4b1c25a33c7c // indirect @@ -418,38 +426,41 @@ require ( gitlab.com/bosi/decorder v0.4.2 // indirect gitlab.com/digitalxero/go-conventional-commit v1.0.7 // indirect go-simpler.org/musttag v0.13.0 // indirect - go-simpler.org/sloglint v0.7.2 // indirect + go-simpler.org/sloglint v0.9.0 // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.29.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect go.opentelemetry.io/otel v1.29.0 // indirect go.opentelemetry.io/otel/metric v1.29.0 // indirect + go.opentelemetry.io/otel/sdk v1.29.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect go.opentelemetry.io/otel/trace v1.29.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect gocloud.dev v0.37.0 // indirect - golang.org/x/crypto v0.32.0 // indirect + golang.org/x/crypto v0.33.0 // indirect golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/term v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/time v0.7.0 // indirect - golang.org/x/tools v0.29.0 // indirect + golang.org/x/mod v0.23.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/oauth2 v0.25.0 // indirect + golang.org/x/sync v0.11.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/term v0.29.0 // indirect + golang.org/x/text v0.22.0 // indirect + golang.org/x/time v0.8.0 // indirect + golang.org/x/tools v0.30.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - google.golang.org/api v0.198.0 // indirect - google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.2 // indirect - google.golang.org/protobuf v1.35.1 // indirect + google.golang.org/api v0.215.0 // indirect + google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect + google.golang.org/grpc v1.67.3 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect gopkg.in/inf.v0 v0.9.1 // indirect @@ -459,7 +470,7 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - honnef.co/go/tools v0.5.1 // indirect + honnef.co/go/tools v0.6.0 // indirect k8s.io/api v0.32.1 // indirect k8s.io/apiextensions-apiserver v0.32.1 // indirect k8s.io/apimachinery v0.32.1 // indirect diff --git a/hack/tools/go.sum b/hack/tools/go.sum index 62fb6c0d1c..c59e014b72 100644 --- a/hack/tools/go.sum +++ b/hack/tools/go.sum @@ -1,24 +1,32 @@ 4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= 4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= -4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= -4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= +4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= +4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= +cel.dev/expr v0.18.0 h1:CJ6drgk+Hf96lkLikr4rFf19WrU0BOWEihyZnI2TAzo= +cel.dev/expr v0.18.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= -cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= -cloud.google.com/go/auth v0.9.4 h1:DxF7imbEbiFu9+zdKC6cKBko1e8XeJnipNqIbWZ+kDI= -cloud.google.com/go/auth v0.9.4/go.mod h1:SHia8n6//Ya940F1rLimhJCjjx7KE17t0ctFEci3HkA= -cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= -cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= -cloud.google.com/go/compute/metadata v0.5.1 h1:NM6oZeZNlYjiwYje+sYFjEpP0Q0zCan1bmQW/KmIrGs= -cloud.google.com/go/compute/metadata v0.5.1/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= -cloud.google.com/go/iam v1.2.0 h1:kZKMKVNk/IsSSc/udOb83K0hL/Yh/Gcqpz+oAkoIFN8= -cloud.google.com/go/iam v1.2.0/go.mod h1:zITGuWgsLZxd8OwAlX+eMFgZDXzBm7icj1PVTYG766Q= -cloud.google.com/go/kms v1.19.0 h1:x0OVJDl6UH1BSX4THKlMfdcFWoE4ruh90ZHuilZekrU= -cloud.google.com/go/kms v1.19.0/go.mod h1:e4imokuPJUc17Trz2s6lEXFDt8bgDmvpVynH39bdrHM= -cloud.google.com/go/longrunning v0.6.0 h1:mM1ZmaNsQsnb+5n1DNPeL0KwQd9jQRqSqSDEkBZr+aI= -cloud.google.com/go/longrunning v0.6.0/go.mod h1:uHzSZqW89h7/pasCWNYdUpwGz3PcVWhrWupreVPYLts= -cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs= -cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0= +cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= +cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= +cloud.google.com/go/auth v0.13.0 h1:8Fu8TZy167JkW8Tj3q7dIkr2v4cndv41ouecJx0PAHs= +cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q= +cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= +cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +cloud.google.com/go/iam v1.2.2 h1:ozUSofHUGf/F4tCNy/mu9tHLTaxZFLOUiKzjcgWHGIA= +cloud.google.com/go/iam v1.2.2/go.mod h1:0Ys8ccaZHdI1dEUilwzqng/6ps2YB6vRsjIe00/+6JY= +cloud.google.com/go/kms v1.20.1 h1:og29Wv59uf2FVaZlesaiDAqHFzHaoUyHI3HYp9VUHVg= +cloud.google.com/go/kms v1.20.1/go.mod h1:LywpNiVCvzYNJWS9JUcGJSVTNSwPwi0vBAotzDqn2nc= +cloud.google.com/go/logging v1.12.0 h1:ex1igYcGFd4S/RZWOCU51StlIEuey5bjqwH9ZYjHibk= +cloud.google.com/go/logging v1.12.0/go.mod h1:wwYBt5HlYP1InnrtYI0wtwttpVU1rifnMT7RejksUAM= +cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc= +cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= +cloud.google.com/go/monitoring v1.21.2 h1:FChwVtClH19E7pJ+e0xUhJPGksctZNVOk2UhMmblmdU= +cloud.google.com/go/monitoring v1.21.2/go.mod h1:hS3pXvaG8KgWTSz+dAdyzPrGUYmi2Q+WFX8g2hqVEZU= +cloud.google.com/go/storage v1.49.0 h1:zenOPBOWHCnojRd9aJZAyQXBYqkJkdQS42dxL55CIMw= +cloud.google.com/go/storage v1.49.0/go.mod h1:k1eHhhpLvrPjVGfo0mOUPEJ4Y2+a/Hv5PiwehZI9qGU= +cloud.google.com/go/trace v1.11.2 h1:4ZmaBdL8Ng/ajrgKqY5jfvzqMXbrDcBsUGXOT9aqTtI= +cloud.google.com/go/trace v1.11.2/go.mod h1:bn7OwXd4pd5rFuAnTrzBuoZ4ax2XQeG3qNgYmfCy0Io= code.gitea.io/sdk/gitea v0.18.0 h1:+zZrwVmujIrgobt6wVBWCqITz6bn1aBjnCUHmpZrerI= code.gitea.io/sdk/gitea v0.18.0/go.mod h1:IG9xZJoltDNeDSW0qiF2Vqx5orMWa7OhVWrjvrd5NpI= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= @@ -83,14 +91,22 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/Crocmagnon/fatcontext v0.5.3 h1:zCh/wjc9oyeF+Gmp+V60wetm8ph2tlsxocgg/J0hOps= -github.com/Crocmagnon/fatcontext v0.5.3/go.mod h1:XoCQYY1J+XTfyv74qLXvNw4xFunr3L1wkopIIKG7wGM= +github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM= +github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU= github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0/go.mod h1:ONJg5sxcbsdQQ4pOW8TGdTidT2TMAUy/2Xhr8mrYaao= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= @@ -127,8 +143,8 @@ github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pO github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= -github.com/alingse/nilnesserr v0.1.1 h1:7cYuJewpy9jFNMEA72Q1+3Nm3zKHzg+Q28D5f2bBFUA= -github.com/alingse/nilnesserr v0.1.1/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= +github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKCZlo= +github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/anchore/bubbly v0.0.0-20230518153401-87b6af8ccf22 h1:5NFK6VGgqBUOAX2SYyzFYvNdOiYDxzim8jga386FlZY= github.com/anchore/bubbly v0.0.0-20230518153401-87b6af8ccf22/go.mod h1:Kv+Mm9CdtnV8iem48iEPIwy7/N4Wmk0hpxYNH5gTwKQ= github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a h1:nJ2G8zWKASyVClGVgG7sfM5mwoZlZ2zYpIzN2OhjWkw= @@ -245,8 +261,8 @@ github.com/caarlos0/testfs v0.4.4 h1:3PHvzHi5Lt+g332CiShwS8ogTgS3HjrmzZxCm6JCDr8 github.com/caarlos0/testfs v0.4.4/go.mod h1:bRN55zgG4XCUVVHZCeU+/Tz1Q6AxEJOEJTliBy+1DMk= github.com/carlmjohnson/versioninfo v0.22.5 h1:O00sjOLUAFxYQjlN/bzYTuZiS0y6fWDQjMRvwtKgwwc= github.com/carlmjohnson/versioninfo v0.22.5/go.mod h1:QT9mph3wcVfISUKd0i9sZfVrPviHuSF+cUtLjm2WSf8= -github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc= -github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= +github.com/catenacyber/perfsprint v0.8.1 h1:bGOHuzHe0IkoGeY831RW4aSlt1lPRd3WRAScSWOaV7E= +github.com/catenacyber/perfsprint v0.8.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= github.com/cavaliergopher/cpio v1.0.1 h1:KQFSeKmZhv0cr+kawA3a0xTQCU4QxXF1vhU7P7av2KM= github.com/cavaliergopher/cpio v1.0.1/go.mod h1:pBdaqQjnvXxdS/6CvNDwIANIFSP0xRKI16PX4xejRQc= github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= @@ -255,6 +271,8 @@ github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/certifi/gocertifi v0.0.0-20180118203423-deb3ae2ef261/go.mod h1:GJKEexRPVJrBSOjoqN5VNOIKJ5Q3RViH6eu3puDRwx4= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -278,6 +296,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI= github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= @@ -343,7 +363,11 @@ github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FM github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.13.1 h1:vPfJZCkob6yTMEgS+0TwfTUfbHjfy/6vOJ8hUWX/uXE= +github.com/envoyproxy/go-control-plane v0.13.1/go.mod h1:X45hY0mufo6Fd0KW3rqsGvQMw58jvjymeCzBU3mWyHw= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= @@ -370,8 +394,8 @@ github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= -github.com/ghostiam/protogetter v0.3.8 h1:LYcXbYvybUyTIxN2Mj9h6rHrDZBDwZloPoKctWrFyJY= -github.com/ghostiam/protogetter v0.3.8/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= +github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ= +github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= github.com/github/smimesign v0.2.0 h1:Hho4YcX5N1I9XNqhq0fNx0Sts8MhLonHd+HRXVGNjvk= github.com/github/smimesign v0.2.0/go.mod h1:iZiiwNT4HbtGRVqCQu7uJPEZCuEE5sfSSttcnePkDl4= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= @@ -491,16 +515,16 @@ github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9 github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= -github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9 h1:t5wybL6RtO83VwoMOb7U/Peqe3gGKQlPIC66wXmnkvM= -github.com/golangci/gofmt v0.0.0-20241223200906-057b0627d9b9/go.mod h1:Ag3L7sh7E28qAp/5xnpMMTuGYqxLZoSaEHZDkZB1RgU= -github.com/golangci/golangci-lint v1.63.4 h1:bJQFQ3hSfUto597dkL7ipDzOxsGEpiWdLiZ359OWOBI= -github.com/golangci/golangci-lint v1.63.4/go.mod h1:Hx0B7Lg5/NXbaOHem8+KU+ZUIzMI6zNj/7tFwdnn10I= +github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= +github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= +github.com/golangci/golangci-lint v1.64.2 h1:+os/Y7xzFKmVfYRzYayEpVItp/8eTR4VDODaCgcGOHA= +github.com/golangci/golangci-lint v1.64.2/go.mod h1:NTiG5Pmn7rkG6TuTPLcyT18Qbfijzcwir4NRiOoVcpw= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= -github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs= -github.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= +github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= +github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -536,8 +560,8 @@ github.com/google/ko v0.15.4 h1:0blRbIdPmSy6v4LvedGxbI/8krdJYQgbSih3v6Y8V1c= github.com/google/ko v0.15.4/go.mod h1:ZkcmfV91Xt6ZzOBHc/cXXGYnqWdNWDVy/gHoUU9sjag= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a h1:JJBdjSfqSy3mnDT0940ASQFghwcZ4y4cb6ttjAoXqwE= github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a/go.mod h1:uqVAUVQLq8UY2hCDfmJ/+rtO3aw7qyhc90rCVEabEfI= @@ -556,8 +580,8 @@ github.com/google/wire v0.6.0 h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI= github.com/google/wire v0.6.0/go.mod h1:F4QhpQ9EDIdJ1Mbop/NZBRB+5yrR6qg3BnctaoUk6NA= github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= -github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= -github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= +github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= +github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= @@ -684,8 +708,8 @@ github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= -github.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos= -github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= +github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= +github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -714,16 +738,14 @@ github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCT github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= -github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= -github.com/ldez/exptostd v0.3.1 h1:90yWWoAKMFHeovTK8uzBms9Ppp8Du/xQ20DRO26Ymrw= -github.com/ldez/exptostd v0.3.1/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= -github.com/ldez/gomoddirectives v0.6.0 h1:Jyf1ZdTeiIB4dd+2n4qw+g4aI9IJ6JyfOZ8BityWvnA= -github.com/ldez/gomoddirectives v0.6.0/go.mod h1:TuwOGYoPAoENDWQpe8DMqEm5nIfjrxZXmxX/CExWyZ4= -github.com/ldez/grignotin v0.7.0 h1:vh0dI32WhHaq6LLPZ38g7WxXuZ1+RzyrJ7iPG9JMa8c= -github.com/ldez/grignotin v0.7.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= +github.com/ldez/exptostd v0.4.1 h1:DIollgQ3LWZMp3HJbSXsdE2giJxMfjyHj3eX4oiD6JU= +github.com/ldez/exptostd v0.4.1/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= +github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc= +github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs= +github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow= +github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA= @@ -744,12 +766,12 @@ github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= -github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= -github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= +github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= @@ -763,8 +785,8 @@ github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRC github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mgechev/revive v1.5.1 h1:hE+QPeq0/wIzJwOphdVyUJ82njdd8Khp4fUIHGZHW3M= -github.com/mgechev/revive v1.5.1/go.mod h1:lC9AhkJIBs5zwx8wkudyHrU+IJkrEKmpCmGMnIJPk4o= +github.com/mgechev/revive v1.6.0 h1:NsdaDzYcWZd3ikrWbdbFsvk+DvEAmP6A21LAdZEomZg= +github.com/mgechev/revive v1.6.0/go.mod h1:YpafN9JKjfKxG/UDGUHU1kPJKalHx7fHIgclT04SjBs= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= @@ -846,8 +868,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= -github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= +github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= @@ -883,13 +905,15 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/polydawn/refmt v0.89.1-0.20221221234430-40501e09de1f h1:VXTQfuJj9vKR4TCkEuWIckKvdHFeJH/huIFJ9/cXOB0= github.com/polydawn/refmt v0.89.1-0.20221221234430-40501e09de1f/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw= -github.com/polyfloyd/go-errorlint v1.7.0 h1:Zp6lzCK4hpBDj8y8a237YK4EPrMXQWvOe3nGoH4pFrU= -github.com/polyfloyd/go-errorlint v1.7.0/go.mod h1:dGWKu85mGHnegQ2SWpEybFityCg3j7ZbwsVUxAOk9gY= +github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA= +github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= @@ -945,13 +969,11 @@ github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e h1:7q6NSFZDeGfvv github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs= github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= -github.com/securego/gosec/v2 v2.21.4 h1:Le8MSj0PDmOnHJgUATjD96PaXRvCpKC+DGJvwyy0Mlk= -github.com/securego/gosec/v2 v2.21.4/go.mod h1:Jtb/MwRQfRxCXyCm1rfM1BEiiiTfUOdyzzAhlr6lUTA= +github.com/securego/gosec/v2 v2.22.0 h1:bV/Ii5YSQtbobXuIFBXrfr91l5N4qslEdFHE9E0I/10= +github.com/securego/gosec/v2 v2.22.0/go.mod h1:sR5n3LzZ/52rn4xxRBJk38iPe/hjiA0CkVcyiAHNCrM= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= @@ -989,8 +1011,8 @@ github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag07 github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= @@ -1053,8 +1075,8 @@ github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givT github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= -github.com/uudashr/iface v1.3.0 h1:zwPch0fs9tdh9BmL5kcgSpvnObV+yHjO4JjVBl8IA10= -github.com/uudashr/iface v1.3.0/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= +github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U= +github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 h1:jIVmlAFIqV3d+DOxazTR9v+zgj8+VYuQBzPgBZvWBHA= @@ -1104,12 +1126,14 @@ go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM= -go-simpler.org/sloglint v0.7.2 h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY= -go-simpler.org/sloglint v0.7.2/go.mod h1:US+9C80ppl7VsThQclkM7BkCHQAzuz8kHLsW3ppuluo= +go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE= +go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww= go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/detectors/gcp v1.29.0 h1:TiaiXB4DpGD3sdzNlYQxruQngn5Apwzi1X0DRhuGvDQ= +go.opentelemetry.io/contrib/detectors/gcp v1.29.0/go.mod h1:GW2aWZNwR2ZxDLdv8OyC2G8zkRoQBuURgV7RPQgcPoU= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= @@ -1120,10 +1144,14 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9RO go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0 h1:FyjCyI9jVEfqhUh2MoSkmolPjfh5fp2hnV0b0irxH4Q= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0/go.mod h1:hYwym2nDEeZfG/motx0p7L7J1N1vyzIThemQsb4g2qY= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= +go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= +go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= +go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= @@ -1168,8 +1196,8 @@ golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58 golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= @@ -1194,8 +1222,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= +golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1215,18 +1243,17 @@ golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= +golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1239,8 +1266,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1268,43 +1295,40 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= -golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1313,7 +1337,6 @@ golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1333,40 +1356,39 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= -golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= +golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= +golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -google.golang.org/api v0.198.0 h1:OOH5fZatk57iN0A7tjJQzt6aPfYQ1JiWkt1yGseazks= -google.golang.org/api v0.198.0/go.mod h1:/Lblzl3/Xqqk9hw/yS97TImKTUwnf1bv89v7+OagJzc= +google.golang.org/api v0.215.0 h1:jdYF4qnyczlEz2ReWIsosNLDuzXyvFHJtI5gcr0J7t0= +google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= -google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4= -google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0= -google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.3 h1:OgPcDAFKHnH8X3O4WcO4XUc8GRDeKsKReqbQtiCj7N8= +google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1378,8 +1400,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1416,8 +1438,8 @@ gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.5.1 h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I= -honnef.co/go/tools v0.5.1/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs= +honnef.co/go/tools v0.6.0 h1:TAODvD3knlq75WCp2nyGJtT4LeRV/o7NN9nYPeVJXf8= +honnef.co/go/tools v0.6.0/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc= k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k= k8s.io/apiextensions-apiserver v0.32.1 h1:hjkALhRUeCariC8DiVmb5jj0VjIc1N0DREP32+6UXZw= From 769bc7a9fcc645c048fca2d7cbf89dad775120a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 12:10:46 -0500 Subject: [PATCH 57/87] deps: bump actions/upload-artifact from 4.4.3 to 4.6.0 (#1342) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.3 to 4.6.0.
Release notes

Sourced from actions/upload-artifact's releases.

v4.6.0

What's Changed

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.0

v4.5.0

What's Changed

New Contributors

Full Changelog: https://github.com/actions/upload-artifact/compare/v4.4.3...v4.5.0

Commits
  • 65c4c4a Merge pull request #662 from actions/yacaovsnc/add_variable_for_concurrency_a...
  • 0207619 move files back to satisfy licensed ci
  • 1ecca81 licensed cache updates
  • 9742269 Expose env vars to controll concurrency and timeout
  • 6f51ac0 Merge pull request #656 from bdehamer/bdehamer/artifact-digest
  • c40c16d add new artifact-digest output
  • 735efb4 bump @​actions/artifact from 2.1.11 to 2.2.0
  • 184d73b Merge pull request #578 from hamirmahal/fix/deprecated-nodejs-usage-in-action
  • b4a0a98 Merge branch 'main' into fix/deprecated-nodejs-usage-in-action
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=4.4.3&new-version=4.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index f887189acb..dbea9d30f0 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -36,7 +36,7 @@ jobs: make test-image IMAGE_NAMESPACE=${{ github.repository }} PLATFORM=linux/amd64 - name: Upload Artifacts - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: coverage-files path: ./artifacts/coverage* From 2600b27c331402751623d2e3a27b59d57fd80b33 Mon Sep 17 00:00:00 2001 From: Paulina Kalicka <71526180+paulinek13@users.noreply.github.com> Date: Wed, 12 Feb 2025 18:17:38 +0100 Subject: [PATCH 58/87] docs: fix broken links to `retina.sh/docs` (#1340) # Description This PR fixes broken links to the contributing guide and other `retina.sh/docs` pages. ## Related Issue Resolves #1333 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed N/A ## Additional Notes I also adjusted some working links to `retina.sh/docs` to avoid a brief "Page Not Found" flash before loading. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Paulina Kalicka <71526180+paulinek13@users.noreply.github.com> --- .github/pull_request_template.md | 2 +- CONTRIBUTING.md | 2 +- README.md | 18 +++++++++--------- docs/03-Metrics/plugins/Linux/dns.md | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 0aaf825c05..c431e2811e 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -8,7 +8,7 @@ If this pull request is related to any issue, please mention it here. Additional ## Checklist -- [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). +- [ ] I have read the [contributing documentation](https://retina.sh/docs/Contributing/overview). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eccc030a9b..2b1397c16f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,4 +31,4 @@ This will add a `Signed-off-by` trailer to your Git commit, affirming your accep ## More info -Getting started guides, community meetings, and more can be found on the [Retina website](https://retina.sh/docs/contributing). +Getting started guides, community meetings, and more can be found on the [Retina website](https://retina.sh/docs/Contributing/overview). diff --git a/README.md b/README.md index 9cc72dc36b..2a93ca183a 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Retina **collects customizable telemetry**, which can be exported to **multiple ## Why Retina? -Retina lets you **investigate network issues on-demand** and **continuously monitor your clusters**. For scenarios where Retina shines, see the intro docs [here](https://retina.sh/docs/intro) +Retina lets you **investigate network issues on-demand** and **continuously monitor your clusters**. For scenarios where Retina shines, see the intro docs [here](https://retina.sh/docs/Introduction/intro) ## Documentation @@ -37,8 +37,8 @@ See [retina.sh](http://retina.sh) for documentation and examples. Retina has two major features: -- [Metrics](https://retina.sh/docs/metrics/modes) -- [Captures](https://retina.sh/docs/captures/overview) +- [Metrics](https://retina.sh/docs/Metrics/modes) +- [Captures](https://retina.sh/docs/Captures/overview) ### Metrics Quick Install Guide @@ -57,7 +57,7 @@ helm upgrade --install retina oci://ghcr.io/microsoft/retina/charts/retina \ Set the `version` and image `tag` arguments to the desired version, if different. -After Helm install, follow steps in [Using Prometheus and Grafana](https://retina.sh/docs/installation/grafana/prometheus-unmanaged) to set up metrics collection and visualization. +After Helm install, follow the steps for setting up [Prometheus](https://retina.sh/docs/Installation/prometheus) and [Grafana](https://retina.sh/docs/Installation/grafana) to configure metrics collection and visualization. ### Captures Quick Start Guide @@ -69,7 +69,7 @@ The preferred way to install the Retina CLI using [Krew](https://krew.sigs.k8s.i kubectl krew install retina ``` -Other installation options are documented in [CLI Installation](https://retina.sh/docs/installation/cli). +Other installation options are documented in [CLI Installation](https://retina.sh/docs/Installation/CLI). Verify installation: @@ -84,7 +84,7 @@ To quickly start creating a capture: kubectl retina capture create --name --namespace --selector ``` -For further CLI documentation, see [Capture with Retina CLI](https://retina.sh/docs/captures/cli). +For further CLI documentation, see [Capture with Retina CLI](https://retina.sh/docs/Captures/cli). #### Captures via CRD @@ -105,7 +105,7 @@ helm upgrade --install retina oci://ghcr.io/microsoft/retina/charts/retina \ --set enabledPlugin_linux="\[dropreason\,packetforward\,linuxutil\,dns\,packetparser\]" ``` -Then follow steps in [Capture CRD](https://retina.sh/docs/captures/#option-2-capture-crd-custom-resource-definition) for documentation of the CRD and examples for setting up Captures. +Then follow steps in [Capture CRD](https://retina.sh/docs/Captures/overview/#option-2-capture-crd-custom-resource-definition) for documentation of the CRD and examples for setting up Captures. ## Contributing @@ -121,7 +121,7 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. -[Read more about how to begin contributing here.](https://retina.sh/docs/contributing) +[Read more about how to begin contributing here.](https://retina.sh/docs/Contributing/overview) ### Verify signed images @@ -136,7 +136,7 @@ cosign verify ghcr.io/$REPO/$IMAGE:$TAG --certificate-oidc-issuer https://token. ### Office Hours and Community Meetings -We host a periodic open community meeting. [Find the details here.](https://retina.sh/docs/contributing/#office-hours-and-community-meetings) +We host a periodic open community meeting. [Find the details here.](https://retina.sh/docs/Contributing/overview#office-hours-and-community-meetings) ## Trademarks diff --git a/docs/03-Metrics/plugins/Linux/dns.md b/docs/03-Metrics/plugins/Linux/dns.md index 5a424ea4e4..eaba737e3c 100644 --- a/docs/03-Metrics/plugins/Linux/dns.md +++ b/docs/03-Metrics/plugins/Linux/dns.md @@ -12,7 +12,7 @@ The `dns` plugin requires the `CAP_SYS_ADMIN` capability. This plugin uses [Inspektor Gadget](https://github.com/inspektor-gadget/inspektor-gadget)'s DNS Tracer to track DNS traffic and generate basic metrics derived from the captured events. -In [Advanced mode](https://retina.sh/docs/metrics/modes), the plugin further processes the capture results into an enriched Flow with additional Pod information. Subsequently, the Flow is transmitted to an external channel. This allows a DNS module to generate additional Pod-Level metrics. +In [Advanced mode](https://retina.sh/docs/Metrics/modes), the plugin further processes the capture results into an enriched Flow with additional Pod information. Subsequently, the Flow is transmitted to an external channel. This allows a DNS module to generate additional Pod-Level metrics. ### Code locations From 65b6244a16372aee554eefe3845575cee5f0ca60 Mon Sep 17 00:00:00 2001 From: Yilin <76769345+xiaozhiche320@users.noreply.github.com> Date: Wed, 12 Feb 2025 21:54:24 +0000 Subject: [PATCH 59/87] fix: fix ethtool issue when trying to skip unsupported interface (#1296) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description This PR addresses an issue where the plugin repeatedly logged the same operation not supported error for interfaces on every metrics collection cycle. The root cause ethtool handle is created and closed during each interval, which invalidated any cached (LRU) information on unsupported interfaces. Now, once an interface is identified as unsupported, it won’t repeatedly log the same error. ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. https://github.com/microsoft/retina/issues/1280 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. Logs before fixing the issue: Before Logs after fixing the issue, the unsupported cache will only log once now (add debug message for test and validate behaviour of LRU, which has been removed in PR): After ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- pkg/plugin/linuxutil/ethtool_handle_linux.go | 10 +---- pkg/plugin/linuxutil/ethtool_stats_linux.go | 11 ++--- .../linuxutil/ethtool_stats_linux_test.go | 43 +++++++++---------- pkg/plugin/linuxutil/linuxutil_linux.go | 21 ++++++--- pkg/plugin/linuxutil/types_linux.go | 4 +- 5 files changed, 44 insertions(+), 45 deletions(-) diff --git a/pkg/plugin/linuxutil/ethtool_handle_linux.go b/pkg/plugin/linuxutil/ethtool_handle_linux.go index a2e454d2c2..ee71a8611f 100644 --- a/pkg/plugin/linuxutil/ethtool_handle_linux.go +++ b/pkg/plugin/linuxutil/ethtool_handle_linux.go @@ -8,7 +8,6 @@ import ( lru "github.com/hashicorp/golang-lru/v2" "github.com/microsoft/retina/pkg/log" - "go.uber.org/zap" ) type CachedEthtool struct { @@ -17,15 +16,10 @@ type CachedEthtool struct { l *log.ZapLogger } -func NewCachedEthtool(ethHandle EthtoolInterface, opts *EthtoolOpts) *CachedEthtool { - cache, err := lru.New[string, struct{}](int(opts.limit)) - if err != nil { - log.Logger().Error("failed to create LRU cache: ", zap.Error(err)) - } - +func NewCachedEthtool(ethHandle EthtoolInterface, unsupportedInterfacesCache *lru.Cache[string, struct{}]) *CachedEthtool { return &CachedEthtool{ EthtoolInterface: ethHandle, - unsupported: cache, + unsupported: unsupportedInterfacesCache, l: log.Logger().Named(string("EthtoolReader")), } } diff --git a/pkg/plugin/linuxutil/ethtool_stats_linux.go b/pkg/plugin/linuxutil/ethtool_stats_linux.go index 19abe8a5ab..0d2088d846 100644 --- a/pkg/plugin/linuxutil/ethtool_stats_linux.go +++ b/pkg/plugin/linuxutil/ethtool_stats_linux.go @@ -7,6 +7,7 @@ import ( "net" "strings" + lru "github.com/hashicorp/golang-lru/v2" "github.com/microsoft/retina/pkg/log" "github.com/microsoft/retina/pkg/metrics" "github.com/microsoft/retina/pkg/utils" @@ -21,7 +22,7 @@ type EthtoolReader struct { ethHandle EthtoolInterface } -func NewEthtoolReader(opts *EthtoolOpts, ethHandle EthtoolInterface) *EthtoolReader { +func NewEthtoolReader(opts *EthtoolOpts, ethHandle EthtoolInterface, unsupportedInterfacesCache *lru.Cache[string, struct{}]) *EthtoolReader { if ethHandle == nil { var err error ethHandle, err = ethtool.NewEthtool() @@ -31,7 +32,7 @@ func NewEthtoolReader(opts *EthtoolOpts, ethHandle EthtoolInterface) *EthtoolRea } } // Construct a cached ethtool handle - CachedEthHandle := NewCachedEthtool(ethHandle, opts) + CachedEthHandle := NewCachedEthtool(ethHandle, unsupportedInterfacesCache) return &EthtoolReader{ l: log.Logger().Named(string("EthtoolReader")), opts: opts, @@ -58,8 +59,6 @@ func (er *EthtoolReader) readInterfaceStats() error { return err } - defer er.ethHandle.Close() - er.data = &EthtoolStats{ stats: make(map[string]uint64), } @@ -78,8 +77,10 @@ func (er *EthtoolReader) readInterfaceStats() error { if err != nil { if errors.Is(err, errskip) { er.l.Debug("Skipping unsupported interface", zap.String("ifacename", i.Name)) + } else if strings.Contains(err.Error(), "interface not supported while retrieving stats") { + er.l.Warn("Unsupported interface detected:", zap.String("ifacename", i.Name), zap.Error(err)) } else { - er.l.Error("Error while getting ethtool:", zap.String("ifacename", i.Name), zap.Error(err)) + er.l.Error("Error while retrieving stats:", zap.String("ifacename", i.Name), zap.Error(err)) } continue } diff --git a/pkg/plugin/linuxutil/ethtool_stats_linux_test.go b/pkg/plugin/linuxutil/ethtool_stats_linux_test.go index e5213b3782..d77044be32 100644 --- a/pkg/plugin/linuxutil/ethtool_stats_linux_test.go +++ b/pkg/plugin/linuxutil/ethtool_stats_linux_test.go @@ -29,13 +29,17 @@ func TestNewEthtool(t *testing.T) { opts := &EthtoolOpts{ errOrDropKeysOnly: false, addZeroVal: false, - limit: 10, } ctrl := gomock.NewController(t) defer ctrl.Finish() + unsupportedInterfacesCache, err := lru.New[string, struct{}](10) + if err != nil { + t.Fatal("failed to create cache:", err) + } + ethHandle := NewMockEthtoolInterface(ctrl) - ethReader := NewEthtoolReader(opts, ethHandle) + ethReader := NewEthtoolReader(opts, ethHandle, unsupportedInterfacesCache) assert.NotNil(t, ethReader) } @@ -45,15 +49,19 @@ func TestNewEthtoolWithNil(t *testing.T) { opts := &EthtoolOpts{ errOrDropKeysOnly: false, addZeroVal: false, - limit: 10, } - ethReader := NewEthtoolReader(opts, nil) + unsupportedInterfacesCache, err := lru.New[string, struct{}](10) + if err != nil { + t.Fatal("failed to create cache:", err) + } + + ethReader := NewEthtoolReader(opts, nil, unsupportedInterfacesCache) assert.NotNil(t, ethReader) } func TestReadInterfaceStats(t *testing.T) { - globalCache, err := lru.New[string, struct{}](10) + unsupportedInterfacesCache, err := lru.New[string, struct{}](10) if err != nil { t.Fatal("failed to create LRU cache: ", err) } @@ -74,7 +82,6 @@ func TestReadInterfaceStats(t *testing.T) { opts: &EthtoolOpts{ errOrDropKeysOnly: false, addZeroVal: false, - limit: 10, }, statsReturn: map[string]uint64{ "rx_packets": 1, @@ -90,7 +97,6 @@ func TestReadInterfaceStats(t *testing.T) { opts: &EthtoolOpts{ errOrDropKeysOnly: false, addZeroVal: false, - limit: 10, }, statsReturn: nil, statErr: errOther, @@ -98,24 +104,21 @@ func TestReadInterfaceStats(t *testing.T) { wantErr: true, }, { - name: "test unsported interface", + name: "test unsupported interface", opts: &EthtoolOpts{ errOrDropKeysOnly: false, addZeroVal: false, - limit: 10, }, statsReturn: nil, statErr: errInterfaceNotSupported, - - result: nil, - wantErr: false, + result: nil, + wantErr: false, }, { name: "test skipped interface", opts: &EthtoolOpts{ errOrDropKeysOnly: false, addZeroVal: false, - limit: 10, }, statsReturn: nil, statErr: errInterfaceNotSupported, @@ -132,15 +135,11 @@ func TestReadInterfaceStats(t *testing.T) { ethHandle := NewMockEthtoolInterface(ctrl) - cachedEthHandle := NewCachedEthtool(ethHandle, tt.opts) - cachedEthHandle.unsupported = globalCache - - ethReader := NewEthtoolReader(tt.opts, cachedEthHandle) + ethReader := NewEthtoolReader(tt.opts, ethHandle, unsupportedInterfacesCache) assert.NotNil(t, ethReader) ethHandle.EXPECT().Stats(gomock.Any()).Return(tt.statsReturn, tt.statErr).AnyTimes() - ethHandle.EXPECT().Close().Times(1) InitalizeMetricsForTesting(ctrl) if tt.statErr == nil { @@ -160,13 +159,11 @@ func TestReadInterfaceStats(t *testing.T) { } if tt.statErr != nil && errors.Is(tt.statErr, errInterfaceNotSupported) { - assert.NotNil(t, cachedEthHandle.unsupported, "cache should not be nil") - assert.NotEqual(t, 0, cachedEthHandle.unsupported.Len(), "cache should contain interface") + assert.NotNil(t, unsupportedInterfacesCache, "cache should not be nil") + assert.NotEqual(t, 0, unsupportedInterfacesCache.Len(), "cache should contain interface") } else if tt.statErr != nil && !errors.Is(tt.statErr, errInterfaceNotSupported) { - assert.Equal(t, 0, cachedEthHandle.unsupported.Len(), "cache should not add interface for other errors") + assert.Equal(t, 0, unsupportedInterfacesCache.Len(), "cache should not add interface for other errors") } - - globalCache = cachedEthHandle.unsupported } } diff --git a/pkg/plugin/linuxutil/linuxutil_linux.go b/pkg/plugin/linuxutil/linuxutil_linux.go index 715acc358a..b96f6c698b 100644 --- a/pkg/plugin/linuxutil/linuxutil_linux.go +++ b/pkg/plugin/linuxutil/linuxutil_linux.go @@ -11,15 +11,15 @@ import ( "time" hubblev1 "github.com/cilium/cilium/pkg/hubble/api/v1" + lru "github.com/hashicorp/golang-lru/v2" kcfg "github.com/microsoft/retina/pkg/config" "github.com/microsoft/retina/pkg/log" "github.com/microsoft/retina/pkg/plugin/registry" + "github.com/pkg/errors" "github.com/safchain/ethtool" "go.uber.org/zap" ) -const defaultLimit = 2000 - func init() { registry.Add(name, New) } @@ -61,6 +61,14 @@ func (lu *linuxUtil) SetupChannel(chan *hubblev1.Event) error { func (lu *linuxUtil) run(ctx context.Context) error { lu.l.Info("Running linuxutil plugin...") + + // create a LRU cache to skip unsupported interfaces + unsupportedInterfacesCache, err := lru.New[string, struct{}](int(defaultLimit)) + if err != nil { + lu.l.Error("failed to create global LRU cache", zap.Error(err)) + return err + } + ticker := time.NewTicker(lu.cfg.MetricsInterval) defer ticker.Stop() @@ -93,20 +101,20 @@ func (lu *linuxUtil) run(ctx context.Context) error { ethtoolOpts := &EthtoolOpts{ errOrDropKeysOnly: true, addZeroVal: false, - limit: defaultLimit, } ethHandle, err := ethtool.NewEthtool() if err != nil { lu.l.Error("Error while creating ethHandle: %v\n", zap.Error(err)) - return err + return fmt.Errorf("failed to create ethHandle: %w", err) } - ethReader := NewEthtoolReader(ethtoolOpts, ethHandle) + ethReader := NewEthtoolReader(ethtoolOpts, ethHandle, unsupportedInterfacesCache) if ethReader == nil { lu.l.Error("Error while creating ethReader") - return fmt.Errorf("error while creating ethReader") + return errors.New("error while creating ethReader") } + wg.Add(1) go func() { defer wg.Done() @@ -117,6 +125,7 @@ func (lu *linuxUtil) run(ctx context.Context) error { }() wg.Wait() + ethHandle.Close() } } } diff --git a/pkg/plugin/linuxutil/types_linux.go b/pkg/plugin/linuxutil/types_linux.go index a5263c3e25..e7c20764fc 100644 --- a/pkg/plugin/linuxutil/types_linux.go +++ b/pkg/plugin/linuxutil/types_linux.go @@ -9,6 +9,7 @@ import ( ) const name = "linuxutil" +const defaultLimit = 2000 //go:generate go run go.uber.org/mock/mockgen@v0.4.0 -source=types_linux.go -destination=linuxutil_mock_generated_linux.go -package=linuxutil type linuxUtil struct { @@ -102,9 +103,6 @@ type EthtoolOpts struct { // when true will include all keys with value 0 addZeroVal bool - - // Configurable limit for unsupported interfaces cache - limit uint } type EthtoolInterface interface { From c83e40653ee1491d94bed75f998ce4a1f5ce98d1 Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Thu, 13 Feb 2025 16:00:28 +0000 Subject: [PATCH 60/87] test(mc-gke): Uncomment GKE test for retina error logs check (#1349) # Description See title. ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/Contributing/overview). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed ![Screenshot 2025-02-13 103417](https://github.com/user-attachments/assets/ce1912b7-31ab-4432-8dc6-89dd013c9000) ![Screenshot 2025-02-13 103457](https://github.com/user-attachments/assets/09e0d289-cfb4-416e-8df5-7c98ad065c9a) ![image](https://github.com/user-attachments/assets/6b34306b-9403-4aa2-9957-f3fbec108393) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- test/multicloud/test/integration/retina_gke_test.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/multicloud/test/integration/retina_gke_test.go b/test/multicloud/test/integration/retina_gke_test.go index 67140ab0ce..c9432d2366 100644 --- a/test/multicloud/test/integration/retina_gke_test.go +++ b/test/multicloud/test/integration/retina_gke_test.go @@ -21,10 +21,10 @@ func TestRetinaGKEIntegration(t *testing.T) { "machine_type": "e2-standard-4", "retina_chart_version": utils.RetinaVersion, "retina_values": map[string]interface{}{ - // Example using a public image built during testing + // Example using a public image "image": map[string]interface{}{ - "tag": "c17d5ea-linux-amd64", - "repository": "acnpublic.azurecr.io/xiaozhiche320/retina/retina-agent", + "tag": "65b6244-linux-amd64", + "repository": "ghcr.io/microsoft/retina/retina-agent", }, "operator": map[string]interface{}{ "tag": utils.RetinaVersion, @@ -71,9 +71,8 @@ func TestRetinaGKEIntegration(t *testing.T) { t.Fatalf("Retina pods did not start in time: %v\n", err) } - // TODO: uncomment once the log level for "iface not supported" is changed to WARN // check the retina pods logs for errors - // utils.CheckPodLogs(t, clientSet, retinaPodSelector) + utils.CheckPodLogs(t, clientSet, retinaPodSelector) // TODO: add more tests here } From 2a06634230d67996bdd3ace18326dd95cff19adc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 14:36:37 -0500 Subject: [PATCH 61/87] deps: bump github.com/Azure/azure-sdk-for-go/sdk/azidentity from 1.8.1 to 1.8.2 (#1350) Bumps [github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://github.com/Azure/azure-sdk-for-go) from 1.8.1 to 1.8.2.
Release notes

Sourced from github.com/Azure/azure-sdk-for-go/sdk/azidentity's releases.

sdk/azidentity/v1.8.2

1.8.2 (2025-02-12)

Other Changes

  • Upgraded dependencies
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/Azure/azure-sdk-for-go/sdk/azidentity&package-manager=go_modules&previous-version=1.8.1&new-version=1.8.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index e2752a60b8..21c0fca81c 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3 // indirect github.com/BurntSushi/toml v1.3.2 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect @@ -257,7 +257,7 @@ require ( github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.34.0 // indirect + golang.org/x/net v0.35.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect golang.org/x/sync v0.11.0 golang.org/x/sys v0.30.0 @@ -279,7 +279,7 @@ require ( github.com/Azure/azure-container-networking/zapai v0.0.3 github.com/Azure/azure-sdk-for-go v68.0.0+incompatible github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 v4.8.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dashboard/armdashboard v1.2.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.11.0 diff --git a/go.sum b/go.sum index 9132cfdce1..9ad494edba 100644 --- a/go.sum +++ b/go.sum @@ -15,10 +15,10 @@ github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0 github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 h1:g0EZJwz7xkXQiZAI5xi9f3WWFYBlX1CPTrR+NDToRkQ= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0/go.mod h1:XCW7KnZet0Opnr7HccfUw1PLc4CjHqpcaxW8DHklNkQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 h1:1mvYtZfWQAnwNah/C+Z+Jb9rQH95LPE2vlmMuWAHJk8= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1/go.mod h1:75I/mXtme1JyWFtz8GocPHVFyH421IBoZErnO16dd0k= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1 h1:Bk5uOhSAenHyR5P61D/NzeQCv+4fEVV8mOkJ82NqpWw= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1/go.mod h1:QZ4pw3or1WPmRBxf0cHd1tknzrT54WPBOQoGutCPvSU= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2 h1:F0gBpfdPLGsw+nsgk6aqqkZS1jiixa5WwFe3fk/T3Ys= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2/go.mod h1:SqINnQ9lVVdRlyC8cd1lCI0SdX4n2paeABd2K8ggfnE= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/authorization/armauthorization/v2 v2.2.0 h1:Hp+EScFOu9HeCbeW8WU2yQPJd4gGwhMgKxWe+G6jNzw= @@ -87,8 +87,8 @@ github.com/Azure/perf-tests/network/benchmarks/netperf v0.0.0-20241008140716-395 github.com/Azure/perf-tests/network/benchmarks/netperf v0.0.0-20241008140716-395a79947d2c/go.mod h1:jeV6A8q9uDVDwffTt5KBk+5g7bXfpEImYW6qLKn0E+I= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 h1:kYRSnvJju5gYVyhkij+RTJ/VR6QIUaCfWeaFm2ycsjQ= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3 h1:H5xDQaE3XowWfhZRUpnfC+rGZMEVoSiji+b+/HFAPU4= +github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= @@ -993,8 +993,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= From 9671e6f9b45c659d0209af37eab5a3da85d2a0fb Mon Sep 17 00:00:00 2001 From: Ritwik Ranjan Date: Fri, 14 Feb 2025 14:33:06 +0000 Subject: [PATCH 62/87] refactor: rename regression to delta and benchmark to baseline for perf-tests (#1335) # Description This pull request involves renaming variables and types related to performance testing to improve clarity and consistency. The changes primarily focus on replacing the term "regression" with "delta" and "benchmark" with "baseline" across various files and functions. Key changes include: ### Variable Renaming: * [`test/e2e/jobs/perf.go`](diffhunk://#diff-4569b363dc867f6945f817268ae7e84f1f8918a68111f37521a99bac771e39bfL16-R23): Renamed `benchmarkFile` to `baselineFile` and `regressionFile` to `deltaFile`. Updated corresponding references in the `RunPerfTest` function. [[1]](diffhunk://#diff-4569b363dc867f6945f817268ae7e84f1f8918a68111f37521a99bac771e39bfL16-R23) [[2]](diffhunk://#diff-4569b363dc867f6945f817268ae7e84f1f8918a68111f37521a99bac771e39bfL57-R66) ### Type and Function Renaming: * [`test/e2e/scenarios/perf/get-perf-regression-results.go`](diffhunk://#diff-dbbb79840e326c98a0ebde2aeb87f497b77a3e7eadd3ffde31298d80a06e3ea6L43-R62): Renamed `RegressionResult` to `DeltaResult`, `GetNetworkRegressionResults` to `GetNetworkDeltaResults`, and updated all related variable names and function calls accordingly. [[1]](diffhunk://#diff-dbbb79840e326c98a0ebde2aeb87f497b77a3e7eadd3ffde31298d80a06e3ea6L43-R62) [[2]](diffhunk://#diff-dbbb79840e326c98a0ebde2aeb87f497b77a3e7eadd3ffde31298d80a06e3ea6L72-R130) [[3]](diffhunk://#diff-dbbb79840e326c98a0ebde2aeb87f497b77a3e7eadd3ffde31298d80a06e3ea6L139-R145) [[4]](diffhunk://#diff-dbbb79840e326c98a0ebde2aeb87f497b77a3e7eadd3ffde31298d80a06e3ea6L170-R170) ### Functionality Updates: * [`test/e2e/scenarios/perf/publish-perf-results.go`](diffhunk://#diff-4430a454bd27bd3b15ab45451b0554ba29d0b5b5657e0e6b9fbfe6f74d1dd191L43-R43): Updated to use `DeltaResult` instead of `RegressionResult` and renamed variables to reflect the new terminology. [[1]](diffhunk://#diff-4430a454bd27bd3b15ab45451b0554ba29d0b5b5657e0e6b9fbfe6f74d1dd191L43-R43) [[2]](diffhunk://#diff-4430a454bd27bd3b15ab45451b0554ba29d0b5b5657e0e6b9fbfe6f74d1dd191L71-R73) ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --------- Signed-off-by: Ritwik Ranjan --- test/e2e/jobs/perf.go | 16 +-- .../perf/get-perf-regression-results.go | 103 +++++++++--------- .../scenarios/perf/publish-perf-results.go | 6 +- 3 files changed, 62 insertions(+), 63 deletions(-) diff --git a/test/e2e/jobs/perf.go b/test/e2e/jobs/perf.go index e3620d8441..5f7b339422 100644 --- a/test/e2e/jobs/perf.go +++ b/test/e2e/jobs/perf.go @@ -13,14 +13,14 @@ import ( func RunPerfTest(kubeConfigFilePath, chartPath, advancedValuePath, retinaMode string) *types.Job { job := types.NewJob("Run performance tests") - benchmarkFile := fmt.Sprintf("netperf-benchmark-%s.json", time.Now().Format("20060102150405")) + baselineFile := fmt.Sprintf("netperf-baseline-%s.json", time.Now().Format("20060102150405")) resultFile := fmt.Sprintf("netperf-result-%s.json", time.Now().Format("20060102150405")) - regressionFile := fmt.Sprintf("netperf-regression-%s.json", time.Now().Format("20060102150405")) + deltaFile := fmt.Sprintf("netperf-delta-%s.json", time.Now().Format("20060102150405")) job.AddStep(&perf.GetNetworkPerformanceMeasures{ KubeConfigFilePath: kubeConfigFilePath, ResultTag: "no-retina", - JsonOutputFile: benchmarkFile, + JsonOutputFile: baselineFile, }, &types.StepOptions{ SkipSavingParametersToJob: true, }) @@ -54,16 +54,16 @@ func RunPerfTest(kubeConfigFilePath, chartPath, advancedValuePath, retinaMode st SkipSavingParametersToJob: true, }) - job.AddStep(&perf.GetNetworkRegressionResults{ - BaseResultsFile: benchmarkFile, - NewResultsFile: resultFile, - RegressionResultsFile: regressionFile, + job.AddStep(&perf.GetNetworkDeltaResults{ + BaseResultsFile: baselineFile, + NewResultsFile: resultFile, + DeltaResultsFile: deltaFile, }, &types.StepOptions{ SkipSavingParametersToJob: true, }) job.AddStep(&perf.PublishPerfResults{ - ResultsFile: regressionFile, + ResultsFile: deltaFile, RetinaMode: retinaMode, }, &types.StepOptions{ SkipSavingParametersToJob: true, diff --git a/test/e2e/scenarios/perf/get-perf-regression-results.go b/test/e2e/scenarios/perf/get-perf-regression-results.go index e85103bf56..a7f0ec7b4b 100644 --- a/test/e2e/scenarios/perf/get-perf-regression-results.go +++ b/test/e2e/scenarios/perf/get-perf-regression-results.go @@ -2,7 +2,6 @@ package perf import ( "encoding/json" - "fmt" "io" "os" @@ -40,26 +39,26 @@ type TestResult struct { Result Result `json:"result"` } -type RegressionResult struct { - Label string `json:"label"` - TestInfo TestInfo `json:"test_info"` - Benchmark map[string]float64 `json:"benchmark"` - Result map[string]float64 `json:"result"` - Regressions map[string]float64 `json:"regressions"` +type DeltaResult struct { + Label string `json:"label"` + TestInfo TestInfo `json:"test_info"` + Baseline map[string]float64 `json:"baseline"` + Result map[string]float64 `json:"result"` + Deltas map[string]float64 `json:"regressions"` } -type GetNetworkRegressionResults struct { - BaseResultsFile string - NewResultsFile string - RegressionResultsFile string +type GetNetworkDeltaResults struct { + BaseResultsFile string + NewResultsFile string + DeltaResultsFile string } -func (v *GetNetworkRegressionResults) Prevalidate() error { +func (v *GetNetworkDeltaResults) Prevalidate() error { return nil } -func (v *GetNetworkRegressionResults) Run() error { - benchmarkResults, err := readJSONFile(v.BaseResultsFile) +func (v *GetNetworkDeltaResults) Run() error { + baselineResults, err := readJSONFile(v.BaseResultsFile) if err != nil { return errors.Wrap(err, "failed to read base results file") } @@ -69,65 +68,65 @@ func (v *GetNetworkRegressionResults) Run() error { return errors.Wrap(err, "failed to read new results file") } - if len(benchmarkResults) != len(newResults) { + if len(baselineResults) != len(newResults) { return errors.New("number of test results do not match") } - regressionResults := make(map[string]*RegressionResult) + regressionResults := make(map[string]*DeltaResult) - for i := range benchmarkResults { - benchmarkResult := benchmarkResults[i] + for i := range baselineResults { + baselineResult := baselineResults[i] newResult := newResults[i] - if benchmarkResult.Label != newResult.Label { + if baselineResult.Label != newResult.Label { return errors.New("test labels do not match") } - if _, exists := regressionResults[benchmarkResults[i].Label]; !exists { - regressionResults[benchmarkResults[i].Label] = &RegressionResult{ - Label: benchmarkResults[i].Label, - TestInfo: benchmarkResults[i].Result.TestInfo, - Benchmark: make(map[string]float64), - Result: make(map[string]float64), - Regressions: make(map[string]float64), + if _, exists := regressionResults[baselineResults[i].Label]; !exists { + regressionResults[baselineResults[i].Label] = &DeltaResult{ + Label: baselineResults[i].Label, + TestInfo: baselineResults[i].Result.TestInfo, + Baseline: make(map[string]float64), + Result: make(map[string]float64), + Deltas: make(map[string]float64), } } metrics := []struct { - name string - benchmark float64 - result float64 + name string + baseline float64 + result float64 }{ - {"total_throughput_gbits_sec", benchmarkResult.Result.TotalThroughput, newResult.Result.TotalThroughput}, - {"mean_rtt_ms", benchmarkResult.Result.MeanRTT, newResult.Result.MeanRTT}, - {"min_rtt_ms", benchmarkResult.Result.MinRTT, newResult.Result.MinRTT}, - {"max_rtt_ms", benchmarkResult.Result.MaxRTT, newResult.Result.MaxRTT}, - {"retransmits", float64(benchmarkResult.Result.Retransmits), float64(newResult.Result.Retransmits)}, - {"jitter_ms", benchmarkResult.Result.JitterMs, newResult.Result.JitterMs}, - {"lost_packets", float64(benchmarkResult.Result.LostPackets), float64(newResult.Result.LostPackets)}, - {"lost_percent", benchmarkResult.Result.LostPercent, newResult.Result.LostPercent}, - {"out_of_order", float64(benchmarkResult.Result.OutofOrder), float64(newResult.Result.OutofOrder)}, - {"host_total_cpu", benchmarkResult.Result.CPUUtilization.HostTotal, newResult.Result.CPUUtilization.HostTotal}, - {"remote_total_cpu", benchmarkResult.Result.CPUUtilization.RemoteTotal, newResult.Result.CPUUtilization.RemoteTotal}, + {"total_throughput_gbits_sec", baselineResult.Result.TotalThroughput, newResult.Result.TotalThroughput}, + {"mean_rtt_ms", baselineResult.Result.MeanRTT, newResult.Result.MeanRTT}, + {"min_rtt_ms", baselineResult.Result.MinRTT, newResult.Result.MinRTT}, + {"max_rtt_ms", baselineResult.Result.MaxRTT, newResult.Result.MaxRTT}, + {"retransmits", float64(baselineResult.Result.Retransmits), float64(newResult.Result.Retransmits)}, + {"jitter_ms", baselineResult.Result.JitterMs, newResult.Result.JitterMs}, + {"lost_packets", float64(baselineResult.Result.LostPackets), float64(newResult.Result.LostPackets)}, + {"lost_percent", baselineResult.Result.LostPercent, newResult.Result.LostPercent}, + {"out_of_order", float64(baselineResult.Result.OutofOrder), float64(newResult.Result.OutofOrder)}, + {"host_total_cpu", baselineResult.Result.CPUUtilization.HostTotal, newResult.Result.CPUUtilization.HostTotal}, + {"remote_total_cpu", baselineResult.Result.CPUUtilization.RemoteTotal, newResult.Result.CPUUtilization.RemoteTotal}, } for _, metric := range metrics { - if metric.benchmark != 0 || metric.result != 0 { - regressionResults[benchmarkResult.Label].Benchmark[metric.name] = metric.benchmark - regressionResults[benchmarkResult.Label].Result[metric.name] = metric.result - regressionResults[benchmarkResult.Label].Regressions[metric.name] = calculateRegression(metric.benchmark, metric.result) + if metric.baseline != 0 || metric.result != 0 { + regressionResults[baselineResult.Label].Baseline[metric.name] = metric.baseline + regressionResults[baselineResult.Label].Result[metric.name] = metric.result + regressionResults[baselineResult.Label].Deltas[metric.name] = calculateDeltaPercent(metric.baseline, metric.result) } } } - var results []RegressionResult + results := make([]DeltaResult, 0, len(regressionResults)+1) for _, result := range regressionResults { results = append(results, *result) } - file, err := os.Create(v.RegressionResultsFile) + file, err := os.Create(v.DeltaResultsFile) if err != nil { - return errors.Wrap(err, fmt.Sprintf("failed to create regression results file: %s", v.RegressionResultsFile)) + return errors.Wrap(err, "failed to create delta results file: "+v.DeltaResultsFile) } defer file.Close() @@ -136,13 +135,13 @@ func (v *GetNetworkRegressionResults) Run() error { err = encoder.Encode(results) if err != nil { - return errors.Wrap(err, "failed to encode regression results") + return errors.Wrap(err, "failed to encode delta results") } return nil } -func (v *GetNetworkRegressionResults) Stop() error { +func (v *GetNetworkDeltaResults) Stop() error { return nil } @@ -167,9 +166,9 @@ func readJSONFile(filename string) ([]TestResult, error) { return testCases, nil } -func calculateRegression(old, new float64) float64 { - if old == 0 { +func calculateDeltaPercent(baseline, result float64) float64 { + if baseline == 0 { return 100 } - return ((new - old) / old) * 100 + return ((result - baseline) / baseline) * 100 } diff --git a/test/e2e/scenarios/perf/publish-perf-results.go b/test/e2e/scenarios/perf/publish-perf-results.go index 36f56dfdf5..a141098d5f 100644 --- a/test/e2e/scenarios/perf/publish-perf-results.go +++ b/test/e2e/scenarios/perf/publish-perf-results.go @@ -40,7 +40,7 @@ func (v *PublishPerfResults) Run() error { return errors.Wrap(err, "failed to read results file") } - var results []RegressionResult + var results []DeltaResult err = json.Unmarshal(resultBytes, &results) if err != nil { return errors.Wrap(err, "failed to unmarshal results") @@ -68,9 +68,9 @@ func (v *PublishPerfResults) Run() error { fmt.Printf("Sending telemetry data to app insights\n") for _, result := range results { - publishResultEvent(telemetryClient, result.Label, "benchmark", result.Benchmark) + publishResultEvent(telemetryClient, result.Label, "baseline", result.Baseline) publishResultEvent(telemetryClient, result.Label, "result", result.Result) - publishResultEvent(telemetryClient, result.Label, "regression", result.Regressions) + publishResultEvent(telemetryClient, result.Label, "delta", result.Deltas) } return nil } From 8d9170474d7574cf48e712cb133de2d07a4c348d Mon Sep 17 00:00:00 2001 From: kamilprz <36544756+kamilprz@users.noreply.github.com> Date: Fri, 14 Feb 2025 16:16:39 +0000 Subject: [PATCH 63/87] fix(docs): Fix lack of space in title (#1357) # Description The recent addition to our docs by #1326 introduced a title without a space, this PR fixes that. ## Related Issue N/A ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/Contributing/overview). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Before/Current ![image](https://github.com/user-attachments/assets/83d22b68-7941-4007-9e40-56f69f1a5056) New ![image](https://github.com/user-attachments/assets/0b50ef40-28a6-4f2e-b969-318e3da7fd32) --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Kamil --- docs/{07-Consumingtools => 07-Consuming Tools}/vscode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename docs/{07-Consumingtools => 07-Consuming Tools}/vscode.md (96%) diff --git a/docs/07-Consumingtools/vscode.md b/docs/07-Consuming Tools/vscode.md similarity index 96% rename from docs/07-Consumingtools/vscode.md rename to docs/07-Consuming Tools/vscode.md index e5caf8ad3d..92f0dd133c 100644 --- a/docs/07-Consumingtools/vscode.md +++ b/docs/07-Consuming Tools/vscode.md @@ -1,4 +1,4 @@ -# Retina Integration in AKS VS Code Extension +# AKS VS Code Extension ## Overview From 1437cf850c3caa64f88f048d09b7c33d319814e7 Mon Sep 17 00:00:00 2001 From: Beegii Khurelsukh <72892628+BeegiiK@users.noreply.github.com> Date: Fri, 14 Feb 2025 16:19:10 +0000 Subject: [PATCH 64/87] fix(bug): Update logging for uninitialized VFP stats from warn to debug (#958) # Description Add node level metric for no VFPCounters. Tested the new metric works by calling the metrics endpoint inside the node of the windows retina pod: ``` curl.exe http://10.224.0.9:10093/metrics ... # HELP networkobservability_windows_hns_stats Include many different metrics from packets sent/received to closed connections # TYPE networkobservability_windows_hns_stats gauge networkobservability_windows_hns_stats{direction="win_packets_recv_count"} 12 networkobservability_windows_hns_stats{direction="win_packets_sent_count"} 84 # HELP networkobservability_windows_vfp_stats Include many different metrics from packets sent/received to closed connections # TYPE networkobservability_windows_vfp_stats gauge networkobservability_windows_vfp_stats{state="uninitialized"} 36 ``` ## Related Issue https://github.com/microsoft/retina/issues/933 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes The metric was generated as it brought outside the conditional statement for testing purposes only, i.e. metric can be compiled and incremented. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- pkg/metrics/metrics.go | 2 +- pkg/metrics/types.go | 3 ++- pkg/plugin/hnsstats/hnsstats_windows.go | 6 +++--- pkg/utils/attr_utils.go | 4 ---- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go index fde18e4ab6..190ae2360f 100644 --- a/pkg/metrics/metrics.go +++ b/pkg/metrics/metrics.go @@ -40,7 +40,7 @@ func InitializeMetrics() { utils.ForwardBytesGaugeName, forwardBytesGaugeDescription, utils.Direction) - WindowsGauge = exporter.CreatePrometheusGaugeVecForMetric( + HNSStatsGauge = exporter.CreatePrometheusGaugeVecForMetric( exporter.DefaultRegistry, hnsStats, hnsStatsDescription, diff --git a/pkg/metrics/types.go b/pkg/metrics/types.go index cff5c28884..562d8612e7 100644 --- a/pkg/metrics/types.go +++ b/pkg/metrics/types.go @@ -56,7 +56,8 @@ var ( ForwardPacketsGauge GaugeVec ForwardBytesGauge GaugeVec - WindowsGauge GaugeVec + // Windows + HNSStatsGauge GaugeVec // Common gauges across os distributions NodeConnectivityStatusGauge GaugeVec diff --git a/pkg/plugin/hnsstats/hnsstats_windows.go b/pkg/plugin/hnsstats/hnsstats_windows.go index a668dce4f9..dd93db438f 100644 --- a/pkg/plugin/hnsstats/hnsstats_windows.go +++ b/pkg/plugin/hnsstats/hnsstats_windows.go @@ -174,14 +174,14 @@ func notifyHnsStats(h *hnsstats, stats *HnsStatsData) { metrics.ForwardBytesGauge.WithLabelValues(ingressLabel).Set(float64(stats.hnscounters.BytesReceived)) h.l.Debug("emitting bytes received count metric", zap.Uint64(BytesReceived, stats.hnscounters.BytesReceived)) - metrics.WindowsGauge.WithLabelValues(PacketsReceived).Set(float64(stats.hnscounters.PacketsReceived)) - metrics.WindowsGauge.WithLabelValues(PacketsSent).Set(float64(stats.hnscounters.PacketsSent)) + metrics.HNSStatsGauge.WithLabelValues(PacketsReceived).Set(float64(stats.hnscounters.PacketsReceived)) + metrics.HNSStatsGauge.WithLabelValues(PacketsSent).Set(float64(stats.hnscounters.PacketsSent)) metrics.DropPacketsGauge.WithLabelValues(utils.Endpoint, egressLabel).Set(float64(stats.hnscounters.DroppedPacketsOutgoing)) metrics.DropPacketsGauge.WithLabelValues(utils.Endpoint, ingressLabel).Set(float64(stats.hnscounters.DroppedPacketsIncoming)) if stats.vfpCounters == nil { - h.l.Warn("will not record some metrics since VFP port counters failed to be set") + h.l.Debug("will not record some metrics since VFP port counters failed to be set") return } diff --git a/pkg/utils/attr_utils.go b/pkg/utils/attr_utils.go index 6826db74c9..e5266e9b02 100644 --- a/pkg/utils/attr_utils.go +++ b/pkg/utils/attr_utils.go @@ -6,10 +6,6 @@ import ( "go.opentelemetry.io/otel/attribute" ) -const ( - unknown = "__uknown__" -) - var ( pluginKey = attribute.Key("plugin") eventTypeKey = attribute.Key("event_type") From f4d8f1610a54dc282282cdd3ac14c7f1291388c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 19:17:06 +0000 Subject: [PATCH 65/87] deps: bump github.com/golangci/golangci-lint from 1.64.2 to 1.64.5 in /hack/tools (#1354) Bumps [github.com/golangci/golangci-lint](https://github.com/golangci/golangci-lint) from 1.64.2 to 1.64.5.
Release notes

Sourced from github.com/golangci/golangci-lint's releases.

v1.64.5

golangci-lint is a free and open-source project built by volunteers.

If you value it, consider supporting us, the maintainers and linter authors.

We appreciate it! :heart:

For key updates, see the changelog.

Changelog

  • a43c84c5543785870617ec578d29a3d4fc58b720 build(deps): bump github.com/gostaticanalysis/forcetypeassert from 0.1.0 to 0.2.0 (#5409)
  • 4be8bf8053eaef5d8c5aef0a3771c75e16a0d8b7 build(deps): bump github.com/securego/gosec/v2 from 2.22.0 to 2.22.1 (#5410)
  • e352220b9c3016dbd40243ce2701fc32fa2654e9 build(deps): bump github.com/tdakkota/asciicheck from 0.3.0 to 0.4.0 (#5411)
  • 0a603e49e5e9870f5f9f2035bcbe42cd9620a9d5 fix: add missing new-from-merge-base flag (#5412)

v1.64.4

golangci-lint is a free and open-source project built by volunteers.

If you value it, consider supporting us, the maintainers and linter authors.

We appreciate it! :heart:

For key updates, see the changelog.

Changelog

  • 04aec4f787c25a737641f3d434059880d2af0f53 gci: fix section parsing (#5407)

v1.64.3

golangci-lint is a free and open-source project built by volunteers.

If you value it, consider supporting us, the maintainers and linter authors.

We appreciate it! :heart:

For key updates, see the changelog.

Changelog

  • b8920ddc2352bf2a679c2424db16d2b36c2dbbce build(deps): bump github.com/go-critic/go-critic from 0.11.5 to 0.12.0 (#5400)
  • 1a0b85b0ff9f5c90b72a5b20d34dd1620d860181 build(deps): bump github.com/mgechev/revive from 1.6.0 to 1.6.1 (#5399)
  • 750e1abb31ec7883586d87e10722645a244317fb build(deps): bump github.com/nunnatsa/ginkgolinter from 0.18.4 to 0.19.0 (#5404)
  • 08ae8055872f911072dd2c29b1454fc46a914245 gci: fix standard packages list for go1.24 (#5402)
Changelog

Sourced from github.com/golangci/golangci-lint's changelog.

v1.64.5

  1. Bug fixes
    • Add missing flag new-from-merge-base-flag
  2. Linters bug fixes
    • asciicheck: from 0.3.0 to 0.4.0
    • forcetypeassert: from 0.1.0 to 0.2.0
    • gosec: from 2.22.0 to 2.22.1

v1.64.4

  1. Linters bug fixes
    • gci: fix standard packages list for go1.24

v1.64.3

  1. Linters bug fixes
    • ginkgolinter: from 0.18.4 to 0.19.0
    • go-critic: from 0.11.5 to 0.12.0
    • revive: from 1.6.0 to 1.6.1
    • gci: fix standard packages list for go1.24
  2. Misc.
    • Build Docker images with go1.24
Commits
  • 0a603e4 fix: add missing new-from-merge-base flag (#5412)
  • a43c84c build(deps): bump github.com/gostaticanalysis/forcetypeassert from 0.1.0 to 0...
  • e352220 build(deps): bump github.com/tdakkota/asciicheck from 0.3.0 to 0.4.0 (#5411)
  • 4be8bf8 build(deps): bump github.com/securego/gosec/v2 from 2.22.0 to 2.22.1 (#5410)
  • b59bd60 docs: update GitHub Action assets (#5408)
  • 04aec4f gci: fix section parsing (#5407)
  • 5984eab docs: update GitHub Action assets (#5406)
  • 09167d7 dev: update Docker base images (#5405)
  • 750e1ab build(deps): bump github.com/nunnatsa/ginkgolinter from 0.18.4 to 0.19.0 (#5404)
  • 08ae805 gci: fix standard packages list for go1.24 (#5402)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/golangci/golangci-lint&package-manager=go_modules&previous-version=1.64.2&new-version=1.64.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- hack/tools/go.mod | 51 ++++++++++++----------- hack/tools/go.sum | 103 +++++++++++++++++++++++----------------------- 2 files changed, 78 insertions(+), 76 deletions(-) diff --git a/hack/tools/go.mod b/hack/tools/go.mod index b98d325b08..8f20ff1cac 100644 --- a/hack/tools/go.mod +++ b/hack/tools/go.mod @@ -4,7 +4,7 @@ go 1.22.1 toolchain go1.23.4 require ( - github.com/golangci/golangci-lint v1.64.2 + github.com/golangci/golangci-lint v1.64.5 github.com/goreleaser/goreleaser v1.26.2 github.com/onsi/ginkgo v1.16.5 go.uber.org/mock v0.5.0 @@ -16,10 +16,10 @@ require ( require ( 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect 4d63.com/gochecknoglobals v0.2.2 // indirect - cel.dev/expr v0.18.0 // indirect + cel.dev/expr v0.19.0 // indirect cloud.google.com/go v0.116.0 // indirect - cloud.google.com/go/auth v0.13.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect + cloud.google.com/go/auth v0.14.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect cloud.google.com/go/compute/metadata v0.6.0 // indirect cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/kms v1.20.1 // indirect @@ -176,7 +176,7 @@ require ( github.com/gabriel-vasile/mimetype v1.4.2 // indirect github.com/ghostiam/protogetter v0.3.9 // indirect github.com/github/smimesign v0.2.0 // indirect - github.com/go-critic/go-critic v0.11.5 // indirect + github.com/go-critic/go-critic v0.12.0 // indirect github.com/go-fed/httpsig v1.1.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.1 // indirect @@ -226,7 +226,7 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/ko v0.15.4 // indirect github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a // indirect - github.com/google/s2a-go v0.1.8 // indirect + github.com/google/s2a-go v0.1.9 // indirect github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/google/wire v0.6.0 // indirect @@ -239,7 +239,7 @@ require ( github.com/gorilla/websocket v1.5.1 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.4.2 // indirect - github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect + github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -306,7 +306,7 @@ require ( github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-mastodon v0.0.8 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/mgechev/revive v1.6.0 // indirect + github.com/mgechev/revive v1.6.1 // indirect github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -334,7 +334,7 @@ require ( github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.18.4 // indirect + github.com/nunnatsa/ginkgolinter v0.19.0 // indirect github.com/nxadm/tail v1.4.8 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect @@ -373,7 +373,7 @@ require ( github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e // indirect github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect - github.com/securego/gosec/v2 v2.22.0 // indirect + github.com/securego/gosec/v2 v2.22.1 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/shopspring/decimal v1.2.0 // indirect github.com/sigstore/cosign/v2 v2.2.4 // indirect @@ -398,7 +398,7 @@ require ( github.com/stretchr/objx v0.5.2 // indirect github.com/stretchr/testify v1.10.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/tdakkota/asciicheck v0.3.0 // indirect + github.com/tdakkota/asciicheck v0.4.0 // indirect github.com/tetafro/godot v1.4.20 // indirect github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect github.com/timonwong/loggercheck v0.10.1 // indirect @@ -429,14 +429,15 @@ require ( go-simpler.org/sloglint v0.9.0 // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.29.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect - go.opentelemetry.io/otel v1.29.0 // indirect - go.opentelemetry.io/otel/metric v1.29.0 // indirect - go.opentelemetry.io/otel/sdk v1.29.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect - go.opentelemetry.io/otel/trace v1.29.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.32.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -444,7 +445,7 @@ require ( gocloud.dev v0.37.0 // indirect golang.org/x/crypto v0.33.0 // indirect golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect - golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f // indirect + golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.23.0 // indirect golang.org/x/net v0.35.0 // indirect golang.org/x/oauth2 v0.25.0 // indirect @@ -452,15 +453,15 @@ require ( golang.org/x/sys v0.30.0 // indirect golang.org/x/term v0.29.0 // indirect golang.org/x/text v0.22.0 // indirect - golang.org/x/time v0.8.0 // indirect + golang.org/x/time v0.9.0 // indirect golang.org/x/tools v0.30.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - google.golang.org/api v0.215.0 // indirect + google.golang.org/api v0.220.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect - google.golang.org/grpc v1.67.3 // indirect - google.golang.org/protobuf v1.36.1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287 // indirect + google.golang.org/grpc v1.70.0 // indirect + google.golang.org/protobuf v1.36.4 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/hack/tools/go.sum b/hack/tools/go.sum index c59e014b72..6b04adf9c0 100644 --- a/hack/tools/go.sum +++ b/hack/tools/go.sum @@ -2,15 +2,15 @@ 4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= 4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= 4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= -cel.dev/expr v0.18.0 h1:CJ6drgk+Hf96lkLikr4rFf19WrU0BOWEihyZnI2TAzo= -cel.dev/expr v0.18.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.19.0 h1:lXuo+nDhpyJSpWxpPVi5cPUwzKb+dsdOiw6IreM5yt0= +cel.dev/expr v0.19.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= -cloud.google.com/go/auth v0.13.0 h1:8Fu8TZy167JkW8Tj3q7dIkr2v4cndv41ouecJx0PAHs= -cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q= -cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= -cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= +cloud.google.com/go/auth v0.14.1 h1:AwoJbzUdxA/whv1qj3TLKwh3XX5sikny2fc40wUl+h0= +cloud.google.com/go/auth v0.14.1/go.mod h1:4JHUxlGXisL0AW8kXPtUF6ztuOksyfUQNFjfsOCXkPM= +cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= +cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/iam v1.2.2 h1:ozUSofHUGf/F4tCNy/mu9tHLTaxZFLOUiKzjcgWHGIA= @@ -400,8 +400,8 @@ github.com/github/smimesign v0.2.0 h1:Hho4YcX5N1I9XNqhq0fNx0Sts8MhLonHd+HRXVGNjv github.com/github/smimesign v0.2.0/go.mod h1:iZiiwNT4HbtGRVqCQu7uJPEZCuEE5sfSSttcnePkDl4= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= -github.com/go-critic/go-critic v0.11.5 h1:TkDTOn5v7EEngMxu8KbuFqFR43USaaH8XRJLz1jhVYA= -github.com/go-critic/go-critic v0.11.5/go.mod h1:wu6U7ny9PiaHaZHcvMDmdysMqvDem162Rh3zWTrqk8M= +github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w= +github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= github.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI= github.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= @@ -517,8 +517,8 @@ github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUP github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= -github.com/golangci/golangci-lint v1.64.2 h1:+os/Y7xzFKmVfYRzYayEpVItp/8eTR4VDODaCgcGOHA= -github.com/golangci/golangci-lint v1.64.2/go.mod h1:NTiG5Pmn7rkG6TuTPLcyT18Qbfijzcwir4NRiOoVcpw= +github.com/golangci/golangci-lint v1.64.5 h1:5omC86XFBKXZgCrVdUWU+WNHKd+CWCxNx717KXnzKZY= +github.com/golangci/golangci-lint v1.64.5/go.mod h1:WZnwq8TF0z61h3jLQ7Sk5trcP7b3kUFxLD6l1ivtdvU= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= @@ -565,8 +565,8 @@ github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAx github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a h1:JJBdjSfqSy3mnDT0940ASQFghwcZ4y4cb6ttjAoXqwE= github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a/go.mod h1:uqVAUVQLq8UY2hCDfmJ/+rtO3aw7qyhc90rCVEabEfI= -github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= -github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 h1:SJ+NtwL6QaZ21U+IrK7d0gGgpjGGvd2kz+FzTHVzdqI= github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2/go.mod h1:Tv1PlzqC9t8wNnpPdctvtSUOPUUg4SHeE6vR1Ir2hmg= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= @@ -606,8 +606,8 @@ github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/o github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= -github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= -github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= +github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= +github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= @@ -785,8 +785,8 @@ github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRC github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mgechev/revive v1.6.0 h1:NsdaDzYcWZd3ikrWbdbFsvk+DvEAmP6A21LAdZEomZg= -github.com/mgechev/revive v1.6.0/go.mod h1:YpafN9JKjfKxG/UDGUHU1kPJKalHx7fHIgclT04SjBs= +github.com/mgechev/revive v1.6.1 h1:ncK0ZCMWtb8GXwVAmk+IeWF2ULIDsvRxSRfg5sTwQ2w= +github.com/mgechev/revive v1.6.1/go.mod h1:/2tfHWVO8UQi/hqJsIYNEKELi+DJy/e+PQpLgTB1v88= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= @@ -854,8 +854,8 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.18.4 h1:zmX4KUR+6fk/vhUFt8DOP6KwznekhkmVSzzVJve2vyM= -github.com/nunnatsa/ginkgolinter v0.18.4/go.mod h1:AMEane4QQ6JwFz5GgjI5xLUM9S/CylO+UyM97fN2iBI= +github.com/nunnatsa/ginkgolinter v0.19.0 h1:CnHRFAeBS3LdLI9h+Jidbcc5KH71GKOmaBZQk8Srnto= +github.com/nunnatsa/ginkgolinter v0.19.0/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -969,8 +969,8 @@ github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e h1:7q6NSFZDeGfvv github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs= github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= -github.com/securego/gosec/v2 v2.22.0 h1:bV/Ii5YSQtbobXuIFBXrfr91l5N4qslEdFHE9E0I/10= -github.com/securego/gosec/v2 v2.22.0/go.mod h1:sR5n3LzZ/52rn4xxRBJk38iPe/hjiA0CkVcyiAHNCrM= +github.com/securego/gosec/v2 v2.22.1 h1:IcBt3TpI5Y9VN1YlwjSpM2cHu0i3Iw52QM+PQeg7jN8= +github.com/securego/gosec/v2 v2.22.1/go.mod h1:4bb95X4Jz7VSEPdVjC0hD7C/yR6kdeUBvCPOy9gDQ0g= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= @@ -1046,8 +1046,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/tdakkota/asciicheck v0.3.0 h1:LqDGgZdholxZMaJgpM6b0U9CFIjDCbFdUF00bDnBKOQ= -github.com/tdakkota/asciicheck v0.3.0/go.mod h1:KoJKXuX/Z/lt6XzLo8WMBfQGzak0SrAKZlvRr4tg8Ac= +github.com/tdakkota/asciicheck v0.4.0 h1:VZ13Itw4k1i7d+dpDSNS8Op645XgGHpkCEh/WHicgWw= +github.com/tdakkota/asciicheck v0.4.0/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= @@ -1132,28 +1132,30 @@ go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/detectors/gcp v1.29.0 h1:TiaiXB4DpGD3sdzNlYQxruQngn5Apwzi1X0DRhuGvDQ= -go.opentelemetry.io/contrib/detectors/gcp v1.29.0/go.mod h1:GW2aWZNwR2ZxDLdv8OyC2G8zkRoQBuURgV7RPQgcPoU= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= -go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= -go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/detectors/gcp v1.32.0 h1:P78qWqkLSShicHmAzfECaTgvslqHxblNE9j62Ws1NK8= +go.opentelemetry.io/contrib/detectors/gcp v1.32.0/go.mod h1:TVqo0Sda4Cv8gCIixd7LuLwW4EylumVWfhjZJjDD4DU= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 h1:PS8wXpbyaDJQ2VDHHncMe9Vct0Zn1fEjpsjrLxGJoSc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0 h1:FyjCyI9jVEfqhUh2MoSkmolPjfh5fp2hnV0b0irxH4Q= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0/go.mod h1:hYwym2nDEeZfG/motx0p7L7J1N1vyzIThemQsb4g2qY= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= -go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= -go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= -go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= -go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= -go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= -go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= -go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= -go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1203,8 +1205,8 @@ golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWB golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f h1:WTyX8eCCyfdqiPYkRGm0MqElSfYFH3yR1+rl/mct9sA= -golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= +golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -1327,13 +1329,12 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= -golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= -golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= +golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -1369,8 +1370,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -google.golang.org/api v0.215.0 h1:jdYF4qnyczlEz2ReWIsosNLDuzXyvFHJtI5gcr0J7t0= -google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY= +google.golang.org/api v0.220.0 h1:3oMI4gdBgB72WFVwE1nerDD8W3HUOS4kypK6rRLbGns= +google.golang.org/api v0.220.0/go.mod h1:26ZAlY6aN/8WgpCzjPNy18QpYaz7Zgg1h0qe1GkZEmY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -1380,15 +1381,15 @@ google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287 h1:J1H9f+LEdWAfHcez/4cvaVBox7cOYT+IU6rgqj5x++8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.67.3 h1:OgPcDAFKHnH8X3O4WcO4XUc8GRDeKsKReqbQtiCj7N8= -google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1400,8 +1401,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= -google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From c7f590739abb428e8bef6b339ff31a7c7b62d618 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 17:31:02 -0500 Subject: [PATCH 66/87] deps: bump github.com/cilium/workerpool from 1.2.0 to 1.3.0 (#1356) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/cilium/workerpool](https://github.com/cilium/workerpool) from 1.2.0 to 1.3.0.
Release notes

Sourced from github.com/cilium/workerpool's releases.

v1.3.0

There are no major changes with this new release except that the required Go version was updated from v1.15 to v1.22.

What's Changed

Full Changelog: https://github.com/cilium/workerpool/compare/v1.2.0...v1.3.0

Commits
  • edbcbe4 update min Go version to v1.22
  • d439420 ci: update golangci-lint to v1.64.5
  • 158ac7b check Close errors in tests
  • 001f726 ci: Bump golangci/golangci-lint-action from 6.3.2 to 6.3.3
  • 11014ff ci: Bump golangci/golangci-lint-action from 6.3.0 to 6.3.2
  • d21eeaa ci: Bump golangci/golangci-lint-action from 6.2.0 to 6.3.0
  • 14dcc5f ci: Bump actions/setup-go from 5.2.0 to 5.3.0
  • 325ca91 ci: Bump golangci/golangci-lint-action from 6.1.1 to 6.2.0
  • ae18827 ci: Bump actions/setup-go from 5.1.0 to 5.2.0
  • bf4db0a ci: Bump actions/setup-go from 5.0.2 to 5.1.0
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/cilium/workerpool&package-manager=go_modules&previous-version=1.2.0&new-version=1.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 21c0fca81c..82959645c7 100644 --- a/go.mod +++ b/go.mod @@ -297,7 +297,7 @@ require ( github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 github.com/cilium/proxy v0.0.0-20231031145409-f19708f3d018 - github.com/cilium/workerpool v1.2.0 + github.com/cilium/workerpool v1.3.0 github.com/florianl/go-tc v0.4.4 github.com/go-logr/zapr v1.3.0 github.com/google/gopacket v1.1.19 diff --git a/go.sum b/go.sum index 9ad494edba..03cfa4a6ad 100644 --- a/go.sum +++ b/go.sum @@ -214,8 +214,8 @@ github.com/cilium/proxy v0.0.0-20231031145409-f19708f3d018 h1:R/QlThqx099hS6req1 github.com/cilium/proxy v0.0.0-20231031145409-f19708f3d018/go.mod h1:p044XccCmONGIUbx3bJ7qvHXK0RcrdvIvbTGiu/RjUA= github.com/cilium/stream v0.0.0-20240226091623-f979d32855f8 h1:j6VF1s6gz3etRH5ObCr0UUyJblP9cK5fbgkQTz8fTRA= github.com/cilium/stream v0.0.0-20240226091623-f979d32855f8/go.mod h1:/e83AwqvNKpyg4n3C41qmnmj1x2G9DwzI+jb7GkF4lI= -github.com/cilium/workerpool v1.2.0 h1:Wc2iOPTvCgWKQXeq4L5tnx4QFEI+z5q1+bSpSS0cnAY= -github.com/cilium/workerpool v1.2.0/go.mod h1:GOYJhwlnIjR+jWSDNBb5kw47G1H/XA9X4WOBpgr4pQU= +github.com/cilium/workerpool v1.3.0 h1:7BhHxoqNtpqtmce6MxZdgWODze4lYHbWkEUQ+3xEu8M= +github.com/cilium/workerpool v1.3.0/go.mod h1:0evs6P39nORTphjRtTtHLXTyCPQUwelXCK4wBJmVP7g= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= From c1c2ea2d4443ea71d00dcc59dc53f4b5cca8055d Mon Sep 17 00:00:00 2001 From: Amilcar Aponte Date: Tue, 18 Feb 2025 22:14:57 +0000 Subject: [PATCH 67/87] fix(lint-ci): Removing golang-lint govet deprecated parameter (#1359) # Description After [deps: bump github.com/golangci/golangci-lint from 1.64.2 to 1.64.5 in /hack/tools](https://github.com/microsoft/retina/commit/f4d8f1610a54dc282282cdd3ac14c7f1291388c0), all PR started failing the golangci-lint workflow. This PR removes a parameter that has been deprecated by golanci-lint. ## Related Issue No issue created. ## Checklist - [X] I have read the [contributing documentation](https://retina.sh/docs/Contributing/overview). - [X] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [X] I have correctly attributed the author(s) of the code. - [X] I have tested the changes locally. - [X] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed See workflow below. ![image](https://github.com/user-attachments/assets/c1b0021d-5c02-4b21-bddd-e09171c91736) ## Additional Notes Syntax updated as per golang-lint documentation https://golangci-lint.run/usage/linters/#govet ![image](https://github.com/user-attachments/assets/f4e96ce2-7694-4dd6-b7bf-59be1767e271) ![image](https://github.com/user-attachments/assets/a0da406b-36d9-48f1-9dbf-a8a0824b0efb) https://github.com/golangci/golangci-lint/blob/a8b68a590a88bbde93b27f8bf02031cb1db78b2b/pkg/config/loader.go#L402-L407 ![image](https://github.com/user-attachments/assets/75eea0c1-1b19-468d-a511-35db13c0bd9e) --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- .golangci.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.golangci.yaml b/.golangci.yaml index 71aceef58c..453bdcb027 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -45,6 +45,7 @@ linters-settings: disabled-checks: - "hugeParam" govet: - check-shadowing: true + enable: + - shadow lll: line-length: 200 From 70aff2fac262985ceae94af37ae2a8394537aee8 Mon Sep 17 00:00:00 2001 From: Alex Castilio Date: Wed, 19 Feb 2025 11:24:40 +0000 Subject: [PATCH 68/87] fix(dashboard): fix hubble dashboards: dns.json, pod-flows-namespace.json (#1369) # Description Fix hubble dashboards: dns.json, pod-flows-namespace.json Adjust dashboards cluster.json and pod-flows-workload.json for consistency on variables ## Related Issue #811 ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/Contributing/overview). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed dns.json: ![image](https://github.com/user-attachments/assets/9b7e638c-20ab-4f99-bd18-511490018a25) ![image](https://github.com/user-attachments/assets/0cd9fd33-e01d-4dd7-b525-75e2dc9a1a07) pod-flows-namespace.json: ![image](https://github.com/user-attachments/assets/d3c9808c-5c1f-4214-ac52-6322ea2bdaf1) ![image](https://github.com/user-attachments/assets/eec743fa-8373-4bbd-87c1-29d7e1f3acf5) ![image](https://github.com/user-attachments/assets/d80a637e-9402-43dd-abc1-bceb26859541) ![image](https://github.com/user-attachments/assets/8eb2a0b0-0347-431c-9d57-53f44524baf3) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --------- Signed-off-by: Alex Castilio dos Santos --- .../hubble/grafana/dashboards/clusters.json | 8 +- deploy/hubble/grafana/dashboards/dns.json | 58 ++++----- .../dashboards/pod-flows-namespace.json | 114 +++++++++--------- .../dashboards/pod-flows-workload.json | 8 +- 4 files changed, 94 insertions(+), 94 deletions(-) diff --git a/deploy/hubble/grafana/dashboards/clusters.json b/deploy/hubble/grafana/dashboards/clusters.json index 05eaa8c6c4..e2ab5e8785 100644 --- a/deploy/hubble/grafana/dashboards/clusters.json +++ b/deploy/hubble/grafana/dashboards/clusters.json @@ -3666,7 +3666,7 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info, cluster)", + "definition": "label_values(up, cluster)", "hide": 0, "includeAll": false, "label": "Cluster", @@ -3674,7 +3674,7 @@ "name": "cluster", "options": [], "query": { - "query": "label_values(kube_node_info, cluster)", + "query": "label_values(up, cluster)", "refId": "StandardVariableQuery" }, "refresh": 2, @@ -3690,7 +3690,7 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info{cluster=\"$cluster\"},node)", + "definition": "label_values(up{cluster=\"$cluster\"},instance)", "hide": 0, "includeAll": true, "label": "Nodes", @@ -3698,7 +3698,7 @@ "name": "Nodes", "options": [], "query": { - "query": "label_values(kube_node_info{cluster=\"$cluster\"},node)", + "query": "label_values(up{cluster=\"$cluster\"},instance)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "refresh": 2, diff --git a/deploy/hubble/grafana/dashboards/dns.json b/deploy/hubble/grafana/dashboards/dns.json index d2ad642910..3cb2e2ccdc 100644 --- a/deploy/hubble/grafana/dashboards/dns.json +++ b/deploy/hubble/grafana/dashboards/dns.json @@ -140,8 +140,8 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum (rate(networkobservability_dns_request_count{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (query_type) > 0", - "legendFormat": "{{query_type}}", + "expr": "sum (rate(hubble_dns_queries_total{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (qtypes) > 0", + "legendFormat": "{{qtypes}}", "range": true, "refId": "A" } @@ -230,8 +230,8 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum (rate(networkobservability_dns_response_count{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (query_type) > 0", - "legendFormat": "{{query_type}}", + "expr": "sum (rate(hubble_dns_queries_total{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (qtypes) > 0", + "legendFormat": "{{qtypes}}", "range": true, "refId": "A" } @@ -320,8 +320,8 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "(\r\n 1 - (\r\n sum (networkobservability_dns_response_count{cluster=\"$cluster\", instance=~\"$Nodes\"}) by (query_type) / sum (networkobservability_dns_request_count{cluster=\"$cluster\", instance=~\"$Nodes\"}) by (query_type)\r\n )\r\n) * 100 * (\r\n (\r\n sum (rate(networkobservability_dns_response_count{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (query_type)\r\n ) > bool 0\r\n) > 0", - "legendFormat": "{{query_type}}", + "expr": "(\r\n 1 - (\r\n sum (hubble_dns_responses_total{cluster=\"$cluster\", instance=~\"$Nodes\"}) by (qtypes) / sum (hubble_dns_queries_total{cluster=\"$cluster\", instance=~\"$Nodes\"}) by (qtypes)\r\n )\r\n) * 100 * (\r\n (\r\n sum (rate(hubble_dns_responses_total{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (qtypes)\r\n ) > bool 0\r\n) > 0", + "legendFormat": "{{qtypes}}", "range": true, "refId": "A" } @@ -414,8 +414,8 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum(rate(networkobservability_dns_response_count{cluster=\"$cluster\", instance=~\"$Nodes\", return_code=\"NoError\"}[$__rate_interval])) by (num_response) > 0", - "legendFormat": "{{num_response}}", + "expr": "sum(rate(hubble_dns_responses_total{cluster=\"$cluster\", instance=~\"$Nodes\", rcode=\"No Error\"}[$__rate_interval])) by (ips_returned) > 0", + "legendFormat": "{{ips_returned}}", "range": true, "refId": "A" } @@ -504,8 +504,8 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "label_replace(\r\n label_replace(\r\n sum by (return_code, query_type) (\r\n rate(networkobservability_dns_response_count{cluster=\"$cluster\", instance=~\"$Nodes\", return_code!=\"NoError\"}[$__rate_interval])\r\n ) > 0, \"return_code\", \"non-existent domain\", \"return_code\", \"nxdomain\"\r\n ), \"return_code\", \"server failure\", \"return_code\", \"servfail\"\r\n)", - "legendFormat": "{{return_code}} ({{query_type}})", + "expr": "label_replace(\r\n label_replace(\r\n sum by (rcode, qtypes) (\r\n rate(hubble_dns_responses_total{cluster=\"$cluster\", instance=~\"$Nodes\", rcode!=\"NoError\"}[$__rate_interval])\r\n ) > 0, \"rcode\", \"non-existent domain\", \"rcode\", \"nxdomain\"\r\n ), \"rcode\", \"server failure\", \"rcode\", \"servfail\"\r\n)", + "legendFormat": "{{rcode}} ({{qtypes}})", "range": true, "refId": "A" } @@ -599,9 +599,9 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(topk(10, sum (60*rate(networkobservability_dns_request_count{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (query, query_type)), 1)", + "expr": "round(topk(10, sum (60*rate(hubble_dns_queries_total{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (query, qtypes)), 1)", "interval": "", - "legendFormat": "{{query}} ({{query_type}})", + "legendFormat": "{{query}} ({{qtypes}})", "range": true, "refId": "A" } @@ -694,9 +694,9 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(topk(10, sum (60*rate(networkobservability_dns_response_count{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (query, query_type)), 1)", + "expr": "round(topk(10, sum (60*rate(hubble_dns_responses_total{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) by (query, qtypes)), 1)", "interval": "", - "legendFormat": "{{query}} ({{query_type}})", + "legendFormat": "{{query}} ({{qtypes}})", "range": true, "refId": "A" } @@ -775,7 +775,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "label_replace(\r\n label_replace(\r\n sum by (query, query_type, response, return_code) (\r\n 60*rate(networkobservability_dns_response_count{cluster=\"$cluster\", instance=~\"$Nodes\", num_response!=\"0\", response!=\"\"}[$__rate_interval])\r\n ), \"return_code\", \"non-existent domain\", \"return_code\", \"nxdomain\"\r\n ), \"return_code\", \"success\", \"return_code\", \"noerror\"\r\n)", + "expr": "label_replace(\r\n label_replace(\r\n sum by (query, qtypes, response, rcode) (\r\n 60*rate(hubble_dns_responses_total{cluster=\"$cluster\", instance=~\"$Nodes\", ips_returned!=\"0\"}[$__rate_interval])\r\n ), \"rcode\", \"non-existent domain\", \"rcode\", \"nxdomain\"\r\n ), \"rcode\", \"success\", \"rcode\", \"noerror\"\r\n)", "instant": true, "interval": "", "legendFormat": "__auto", @@ -789,11 +789,11 @@ "id": "labelsToFields", "options": { "keepLabels": [ - "num_response", + "ips_returned", "query", - "query_type", + "qtypes", "response", - "return_code" + "rcode" ] } }, @@ -811,19 +811,19 @@ "indexByName": { "Time": 0, "Value": 1, - "num_response": 5, + "ips_returned": 5, "query": 2, - "query_type": 3, + "qtypes": 3, "response": 6, - "return_code": 4 + "rcode": 4 }, "renameByName": { "Value": "Responses/Min", - "num_response": "IPs in Response", + "ips_returned": "IPs in Response", "query": "Query", - "query_type": "Type", + "qtypes": "Type", "response": "Response", - "return_code": "Return Code" + "rcode": "Return Code" } } } @@ -914,7 +914,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum(rate(hubble_dns_responses_total{cluster=\"$cluster\", instance=~\"$Nodes\", rcode=\"No Error\", destination=~\"/\"}[1m])) by (destination)", + "expr": "sum(rate(hubble_dns_responses_total{cluster=\"$cluster\", instance=~\"$Nodes\", rcode!=\"No Error\", destination=~\".*/.*\"}[1m])) by (destination)", "interval": "", "legendFormat": "{{destination}}", "range": true, @@ -955,7 +955,7 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info, cluster)", + "definition": "label_values(up, cluster)", "hide": 0, "includeAll": true, "label": "Cluster", @@ -963,7 +963,7 @@ "name": "cluster", "options": [], "query": { - "query": "label_values(kube_node_info, cluster)", + "query": "label_values(up, cluster)", "refId": "StandardVariableQuery" }, "refresh": 2, @@ -978,7 +978,7 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info, node)", + "definition": "label_values(up{cluster=\"$cluster\"}, instance)", "hide": 0, "includeAll": true, "label": "Nodes", @@ -986,7 +986,7 @@ "name": "Nodes", "options": [], "query": { - "query": "label_values(kube_node_info, node)", + "query": "label_values(up{cluster=\"$cluster\"}, instance)", "refId": "StandardVariableQuery" }, "refresh": 2, diff --git a/deploy/hubble/grafana/dashboards/pod-flows-namespace.json b/deploy/hubble/grafana/dashboards/pod-flows-namespace.json index 76480447d6..ee8977708f 100644 --- a/deploy/hubble/grafana/dashboards/pod-flows-namespace.json +++ b/deploy/hubble/grafana/dashboards/pod-flows-namespace.json @@ -142,7 +142,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "topk(\r\n 10, round(sum by (namespace) (\r\n label_replace(\r\n sum by (source) (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"/\"}[$__rate_interval])),\r\n \"namespace\", \"$1\", \"source\", \"([-a-z0-9]+)/.+\"\r\n )\r\n ), 0.01)\r\n) > 0", + "expr": "topk(\r\n 10, round(sum by (namespace) (\r\n label_replace(\r\n sum by (source) (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\".*/.*\"}[$__rate_interval])),\r\n \"namespace\", \"$1\", \"source\", \"([-a-z0-9]+)/.+\"\r\n )\r\n ), 0.01)\r\n) > 0", "hide": false, "instant": true, "legendFormat": "__auto", @@ -211,7 +211,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "topk(\r\n 10, round(sum by (namespace) (\r\n label_replace(\r\n sum by (destination) (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"/\"}[$__rate_interval])),\r\n \"namespace\", \"$1\", \"destination\", \"([-a-z0-9]+)/.+\"\r\n )\r\n ), 0.01)\r\n) > 0", + "expr": "topk(\r\n 10, round(sum by (namespace) (\r\n label_replace(\r\n sum by (destination) (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\".*/.*\"}[$__rate_interval])),\r\n \"namespace\", \"$1\", \"destination\", \"([-a-z0-9]+)/.+\"\r\n )\r\n ), 0.01)\r\n) > 0", "hide": false, "instant": true, "legendFormat": "__auto", @@ -281,7 +281,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "topk(\r\n 10, round(sum by (namespace) (\r\n label_replace(\r\n sum by (source) (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"/\", verdict=\"dropped\"}[$__rate_interval])),\r\n \"namespace\", \"$1\", \"source\", \"([-a-z0-9]+)/.+\"\r\n )\r\n ), 0.01)\r\n) > 0", + "expr": "topk(\r\n 10, round(sum by (namespace) (\r\n label_replace(\r\n sum by (source) (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\".*/.*\", verdict=\"DROPPED\"}[$__rate_interval])),\r\n \"namespace\", \"$1\", \"source\", \"([-a-z0-9]+)/.+\"\r\n )\r\n ), 0.01)\r\n) > 0", "hide": false, "instant": true, "legendFormat": "__auto", @@ -351,7 +351,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "topk(\r\n 10, round(sum by (namespace) (\r\n label_replace(\r\n sum by (destination) (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"/\", verdict=\"dropped\"}[$__rate_interval])),\r\n \"namespace\", \"$1\", \"destination\", \"([-a-z0-9]+)/.+\"\r\n )\r\n ), 0.01)\r\n) > 0", + "expr": "topk(\r\n 10, round(sum by (namespace) (\r\n label_replace(\r\n sum by (destination) (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\".*/.*\", verdict=\"DROPPED\"}[$__rate_interval])),\r\n \"namespace\", \"$1\", \"destination\", \"([-a-z0-9]+)/.+\"\r\n )\r\n ), 0.01)\r\n) > 0", "hide": false, "instant": true, "legendFormat": "__auto", @@ -430,7 +430,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count(\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", verdict=\"forwarded\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count(\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", verdict=\"FORWARDED\"}[10m])\r\n ) >= 0.01\r\n)", "hide": false, "instant": true, "legendFormat": "Pods with Outgoing Traffic", @@ -497,7 +497,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", verdict=\"forwarded\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", verdict=\"FORWARDED\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Max Outgoing Traffic", @@ -564,7 +564,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", verdict=\"forwarded\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", verdict=\"FORWARDED\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Min Outgoing Traffic", @@ -631,7 +631,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count(\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", verdict=\"forwarded\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count(\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", verdict=\"FORWARDED\"}[10m])\r\n ) >= 0.01\r\n)", "hide": false, "instant": true, "legendFormat": "Pods with Incoming Traffic", @@ -698,7 +698,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", verdict=\"forwarded\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", verdict=\"FORWARDED\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Max Incoming Traffic", @@ -765,7 +765,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", verdict=\"forwarded\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", verdict=\"FORWARDED\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Min Incoming Traffic", @@ -832,7 +832,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count (\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", verdict=\"dropped\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count (\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", verdict=\"DROPPED\"}[10m])\r\n ) >= 0.01\r\n)", "hide": false, "instant": true, "legendFormat": "Pods with Outgoing Drops", @@ -899,7 +899,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"dropped\", cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"DROPPED\", cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Max Outgoing Drops", @@ -966,7 +966,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"dropped\", cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"DROPPED\", cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Min Outgoing Drops", @@ -1033,7 +1033,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count (\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", verdict=\"dropped\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count (\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", verdict=\"DROPPED\"}[10m])\r\n ) >= 0.01\r\n)", "hide": false, "instant": true, "legendFormat": "Pods with Incoming Drops", @@ -1100,7 +1100,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"dropped\", cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"DROPPED\", cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Max Incoming Drops", @@ -1167,7 +1167,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"dropped\", cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\"}[$__rate_interval])), 0.01)", + "expr": "round(sum (rate(hubble_flows_processed_total{verdict=\"DROPPED\", cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\"}[$__rate_interval])), 0.01)", "hide": false, "instant": false, "legendFormat": "Min Incoming Drops", @@ -1274,7 +1274,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum(rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\"}[$__rate_interval])) by (type, subtype)", + "expr": "sum(rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\"}[$__rate_interval])) by (type, subtype)", "legendFormat": "{{type}}/{{subtype}}", "range": true, "refId": "A" @@ -1365,7 +1365,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum(rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\"}[$__rate_interval])) by (type, subtype)", + "expr": "sum(rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\"}[$__rate_interval])) by (type, subtype)", "legendFormat": "{{type}}/{{subtype}}", "range": true, "refId": "A" @@ -1455,7 +1455,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum(rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\"}[$__rate_interval])) by (verdict)", + "expr": "sum(rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\"}[$__rate_interval])) by (verdict)", "legendFormat": "{{verdict}}", "range": true, "refId": "A" @@ -1545,7 +1545,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum(rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\"}[$__rate_interval])) by (verdict)", + "expr": "sum(rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\"}[$__rate_interval])) by (verdict)", "legendFormat": "{{verdict}}", "range": true, "refId": "A" @@ -1625,7 +1625,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -1706,7 +1706,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{destination}}", "range": true, @@ -1807,7 +1807,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\"}[$__rate_interval])\r\n), 0.01) > 0", + "expr": "round(sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\"}[$__rate_interval])\r\n), 0.01) > 0", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -1908,7 +1908,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\"}[$__rate_interval])\r\n), 0.01) > 0", + "expr": "round(sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\"}[$__rate_interval])\r\n), 0.01) > 0", "hide": false, "legendFormat": "{{destination}}", "range": true, @@ -1999,7 +1999,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", verdict=\"dropped\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", verdict=\"DROPPED\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -2080,7 +2080,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", verdict=\"dropped\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", verdict=\"DROPPED\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{destination}}", "range": true, @@ -2181,7 +2181,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", verdict=\"dropped\"}[$__rate_interval])\r\n ), 0.01\r\n)", + "expr": "round(\r\n sum by (source) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", verdict=\"DROPPED\"}[$__rate_interval])\r\n ), 0.01\r\n)", "legendFormat": "{{destination}}", "range": true, "refId": "A" @@ -2281,7 +2281,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", verdict=\"dropped\"}[$__rate_interval])\r\n ), 0.01\r\n)", + "expr": "round(\r\n sum by (destination) (\r\n rate(hubble_flows_processed_total{cluster=\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", verdict=\"DROPPED\"}[$__rate_interval])\r\n ), 0.01\r\n)", "legendFormat": "{{destination}}", "range": true, "refId": "A" @@ -2356,7 +2356,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count (\r\n (\r\n (sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"SYN\"}[10m])\r\n ) by (source) > 0) - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"SYN-ACK\"}[10m])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination)\r\n ) >= 0.01\r\n)", + "expr": "count (\r\n (\r\n (sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"SYN\"}[10m])\r\n ) by (source) > 0) - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"SYN-ACK\"}[10m])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination)\r\n ) >= 0.01\r\n)", "instant": true, "legendFormat": "Pods Missing SYN-ACKs", "range": false, @@ -2418,7 +2418,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"SYN\"}[$__rate_interval])\r\n ) by (source) > 0 - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"SYN-ACK\"}[$__rate_interval])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination)\r\n), 0.01)", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"SYN\"}[$__rate_interval])\r\n ) by (source) > 0 - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"SYN-ACK\"}[$__rate_interval])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination)\r\n), 0.01)", "legendFormat": "Max Packets Missing SYN-ACKs", "range": true, "refId": "A" @@ -2479,7 +2479,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"SYN\"}[$__rate_interval])\r\n ) by (source) > 0 - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"SYN-ACK\"}[$__rate_interval])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination)\r\n), 0.01) > 0", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"SYN\"}[$__rate_interval])\r\n ) by (source) > 0 - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"SYN-ACK\"}[$__rate_interval])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination)\r\n), 0.01) > 0", "legendFormat": "Min Packets Missing SYN-ACKs", "range": true, "refId": "A" @@ -2560,7 +2560,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"SYN\"}[$__rate_interval])\r\n ) by (source) > 0 - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"SYN-ACK\"}[$__rate_interval])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination), 0.01\r\n)) > 0", + "expr": "topk(10, round(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"SYN\"}[$__rate_interval])\r\n ) by (source) > 0 - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"SYN-ACK\"}[$__rate_interval])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination), 0.01\r\n)) > 0", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -2660,7 +2660,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"SYN\"}[$__rate_interval])\r\n ) by (source) > 0 - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"SYN-ACK\"}[$__rate_interval])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination), 0.01\r\n)", + "expr": "round(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"SYN\"}[$__rate_interval])\r\n ) by (source) > 0 - sum(\r\n label_replace(\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"SYN-ACK\"}[$__rate_interval])\r\n ) by (destination), \"source\", \"$1\", \"destination\", \"(.*)\"\r\n )\r\n ) without (destination), 0.01\r\n)", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -2722,7 +2722,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count (\r\n sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"RST\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count (\r\n sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"RST\"}[10m])\r\n ) >= 0.01\r\n)", "instant": true, "legendFormat": "Pods with Outgoing RST", "range": false, @@ -2785,7 +2785,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"RST\"}[$__rate_interval])\r\n )\r\n), 0.01)", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"RST\"}[$__rate_interval])\r\n )\r\n), 0.01)", "legendFormat": "Max Outgoing RST Packets", "range": true, "refId": "A" @@ -2847,7 +2847,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"RST\"}[$__rate_interval])\r\n )\r\n), 0.01)", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"RST\"}[$__rate_interval])\r\n )\r\n), 0.01)", "legendFormat": "Min Outgoing RST Packets", "range": true, "refId": "A" @@ -2909,7 +2909,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count (\r\n sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"RST\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count (\r\n sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"RST\"}[10m])\r\n ) >= 0.01\r\n)", "instant": true, "legendFormat": "Pods with Incoming RST", "range": false, @@ -2972,7 +2972,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"RST\"}[$__rate_interval])\r\n )\r\n), 0.01)", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"RST\"}[$__rate_interval])\r\n )\r\n), 0.01)", "legendFormat": "Max Incoming RST Packets", "range": true, "refId": "A" @@ -3033,7 +3033,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"RST\"}[$__rate_interval])\r\n )\r\n), 0.01)", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"RST\"}[$__rate_interval])\r\n )\r\n), 0.01)", "legendFormat": "Min Incoming RST Packets", "range": true, "refId": "A" @@ -3114,7 +3114,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"RST\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"RST\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -3195,7 +3195,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"RST\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"RST\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{destination}}", "range": true, @@ -3295,7 +3295,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"RST\"}[$__rate_interval])\r\n), 0.01)", + "expr": "round(sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"RST\"}[$__rate_interval])\r\n), 0.01)", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -3395,7 +3395,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"RST\"}[$__rate_interval])\r\n), 0.01)", + "expr": "round(sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"RST\"}[$__rate_interval])\r\n), 0.01)", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -3457,7 +3457,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count (\r\n sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"FIN\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count (\r\n sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"FIN\"}[10m])\r\n ) >= 0.01\r\n)", "instant": true, "legendFormat": "Pods with Outgoing FIN", "range": false, @@ -3520,7 +3520,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"FIN\"}[$__rate_interval])\r\n )\r\n), 0.01)", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"FIN\"}[$__rate_interval])\r\n )\r\n), 0.01)", "legendFormat": "Max Outgoing FIN Packets", "range": true, "refId": "A" @@ -3582,7 +3582,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"FIN\"}[$__rate_interval])\r\n )\r\n), 0.01)", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"FIN\"}[$__rate_interval])\r\n )\r\n), 0.01)", "legendFormat": "Min Outgoing FIN Packets", "range": true, "refId": "A" @@ -3644,7 +3644,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "count (\r\n sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"FIN\"}[10m])\r\n ) >= 0.01\r\n)", + "expr": "count (\r\n sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"FIN\"}[10m])\r\n ) >= 0.01\r\n)", "instant": true, "legendFormat": "Pods with Incoming FIN", "range": false, @@ -3707,7 +3707,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"FIN\"}[$__rate_interval])\r\n )\r\n), 0.01)", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"FIN\"}[$__rate_interval])\r\n )\r\n), 0.01)", "legendFormat": "Max Incoming FIN Packets", "range": true, "refId": "A" @@ -3768,7 +3768,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"FIN\"}[$__rate_interval])\r\n )\r\n), 0.01)", + "expr": "round(sum (\r\n sum(\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"FIN\"}[$__rate_interval])\r\n )\r\n), 0.01)", "legendFormat": "Min Incoming FIN Packets", "range": true, "refId": "A" @@ -3849,7 +3849,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"FIN\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"FIN\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -3930,7 +3930,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"FIN\"}[$__rate_interval])\r\n), 0.01)) > 0", + "expr": "topk(10, round(sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"FIN\"}[$__rate_interval])\r\n), 0.01)) > 0", "hide": false, "legendFormat": "{{destination}}", "range": true, @@ -4030,7 +4030,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/\", flag=\"FIN\"}[$__rate_interval])\r\n), 0.01)", + "expr": "round(sum by (source) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", source=~\"^$namespace/.*\", flag=\"FIN\"}[$__rate_interval])\r\n), 0.01)", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -4130,7 +4130,7 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "round(sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/\", flag=\"FIN\"}[$__rate_interval])\r\n), 0.01)", + "expr": "round(sum by (destination) (\r\n rate(hubble_tcp_flags_total{cluster=~\"$cluster\", instance=~\"$Nodes\", destination=~\"^$namespace/.*\", flag=\"FIN\"}[$__rate_interval])\r\n), 0.01)", "hide": false, "legendFormat": "{{source}}", "range": true, @@ -4176,7 +4176,7 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info, cluster)", + "definition": "label_values(up, cluster)", "hide": 0, "includeAll": false, "label": "Cluster", @@ -4184,7 +4184,7 @@ "name": "cluster", "options": [], "query": { - "query": "label_values(kube_node_info, cluster)", + "query": "label_values(up, cluster)", "refId": "StandardVariableQuery" }, "refresh": 2, @@ -4200,7 +4200,7 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info{cluster=\"$cluster\"},node)", + "definition": "label_values(up{cluster=\"$cluster\"},instance)", "hide": 0, "includeAll": true, "label": "Nodes", @@ -4208,7 +4208,7 @@ "name": "Nodes", "options": [], "query": { - "query": "label_values(kube_node_info{cluster=\"$cluster\"},node)", + "query": "label_values(up{cluster=\"$cluster\"},instance)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "refresh": 2, diff --git a/deploy/hubble/grafana/dashboards/pod-flows-workload.json b/deploy/hubble/grafana/dashboards/pod-flows-workload.json index 0556acc142..4045f902b2 100644 --- a/deploy/hubble/grafana/dashboards/pod-flows-workload.json +++ b/deploy/hubble/grafana/dashboards/pod-flows-workload.json @@ -3901,14 +3901,14 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(hubble_flows_processed_total, cluster)", + "definition": "label_values(up, cluster)", "hide": 0, "includeAll": false, "label": "Cluster", "multi": false, "name": "cluster", "options": [], - "query": "label_values(hubble_flows_processed_total, cluster)", + "query": "label_values(up, cluster)", "refresh": 2, "regex": "", "skipUrlSync": false, @@ -3922,14 +3922,14 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(hubble_flows_processed_total{cluster=\"$cluster\"}, instance)", + "definition": "label_values(up{cluster=\"$cluster\"}, instance)", "hide": 0, "includeAll": true, "label": "Nodes", "multi": true, "name": "Nodes", "options": [], - "query": "label_values(hubble_flows_processed_total{cluster=\"$cluster\"}, instance)", + "query": "label_values(up{cluster=\"$cluster\"}, instance)", "refresh": 2, "regex": "", "skipUrlSync": false, From d76cd1c28d606d4a20f70c813cf46282ed76d4a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2025 19:03:43 +0000 Subject: [PATCH 69/87] deps: bump github.com/aws/aws-sdk-go-v2 from 1.36.1 to 1.36.2 (#1373) Bumps [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) from 1.36.1 to 1.36.2.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2&package-manager=go_modules&previous-version=1.36.1&new-version=1.36.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 82959645c7..ff5944e839 100644 --- a/go.mod +++ b/go.mod @@ -289,7 +289,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0 github.com/Microsoft/hcsshim v0.12.0-rc.3 github.com/Sytten/logrus-zap-hook v0.1.0 - github.com/aws/aws-sdk-go-v2 v1.36.1 + github.com/aws/aws-sdk-go-v2 v1.36.2 github.com/aws/aws-sdk-go-v2/config v1.29.6 github.com/aws/aws-sdk-go-v2/credentials v1.17.59 github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1 diff --git a/go.sum b/go.sum index 03cfa4a6ad..0421fae876 100644 --- a/go.sum +++ b/go.sum @@ -129,8 +129,8 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.36.1 h1:iTDl5U6oAhkNPba0e1t1hrwAo02ZMqbrGq4k5JBWM5E= -github.com/aws/aws-sdk-go-v2 v1.36.1/go.mod h1:5PMILGVKiW32oDzjj6RU52yrNrDPUHcbZQYr1sM7qmM= +github.com/aws/aws-sdk-go-v2 v1.36.2 h1:Ub6I4lq/71+tPb/atswvToaLGVMxKZvjYDVOWEExOcU= +github.com/aws/aws-sdk-go-v2 v1.36.2/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCdoiQp2uZ9k1LsZvmAnoTBeZPXom0= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= github.com/aws/aws-sdk-go-v2/config v1.29.6 h1:fqgqEKK5HaZVWLQoLiC9Q+xDlSp+1LYidp6ybGE2OGg= From f6ba5470798674783cc3fd8863f62461f3adaaf3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2025 19:04:26 +0000 Subject: [PATCH 70/87] deps: bump github.com/spf13/cobra from 1.8.1 to 1.9.1 (#1362) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.8.1 to 1.9.1.
Release notes

Sourced from github.com/spf13/cobra's releases.

v1.9.1

🐛 Fixes

Full Changelog: https://github.com/spf13/cobra/compare/v1.9.0...v1.9.1

v1.9.0

✨ Features

🐛 Fixes

🤖 Completions

🧪 Testing

✍🏼 Documentation

🔧 Dependency upgrades

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/spf13/cobra&package-manager=go_modules&previous-version=1.8.1&new-version=1.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index ff5944e839..4d080eb2ba 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/go-chi/chi/v5 v5.2.1 github.com/google/uuid v1.6.0 github.com/prometheus/client_golang v1.20.5 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 go.uber.org/zap v1.27.0 k8s.io/client-go v0.30.3 sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.16 diff --git a/go.sum b/go.sum index 0421fae876..2587aaa699 100644 --- a/go.sum +++ b/go.sum @@ -249,7 +249,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -819,9 +819,8 @@ github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNo github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= From 83d78e4435f4eb537215ac475f8927fc674fd43d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2025 20:07:43 +0000 Subject: [PATCH 71/87] deps: bump azure/setup-helm from 4.2.0 to 4.3.0 (#1368) Bumps [azure/setup-helm](https://github.com/azure/setup-helm) from 4.2.0 to 4.3.0.
Release notes

Sourced from azure/setup-helm's releases.

v4.3.0

  • #152 feat: log when restoring from cache
  • #157 Dependencies Update
  • #137 Add dependabot
Changelog

Sourced from azure/setup-helm's changelog.

[4.3.0] - 2025-02-15

  • #152 feat: log when restoring from cache
  • #157 Dependencies Update
  • #137 Add dependabot
Commits
  • b9e5190 build
  • 0e8654b Release setup-helm version 4.3.0 (#162)
  • b48e1df feat: log when restoring from cache (#152)
  • 855ae7a Bump the actions group across 1 directory with 3 updates (#159)
  • 124c6d8 Dependencies Update (#157)
  • 048f4e7 Bump the actions group across 1 directory with 2 updates (#151)
  • 8618769 Bump the actions group across 1 directory with 4 updates (#149)
  • 4eb898e Bump the actions group across 1 directory with 2 updates (#145)
  • 7a2001c Bump the actions group across 1 directory with 2 updates (#143)
  • e90c86c Bump the actions group across 1 directory with 9 updates (#141)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=azure/setup-helm&package-manager=github_actions&previous-version=4.2.0&new-version=4.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release-charts.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-charts.yaml b/.github/workflows/release-charts.yaml index 8ee52157e3..883cd67125 100644 --- a/.github/workflows/release-charts.yaml +++ b/.github/workflows/release-charts.yaml @@ -23,7 +23,7 @@ jobs: with: fetch-depth: 0 - - uses: azure/setup-helm@v4.2.0 + - uses: azure/setup-helm@v4.3.0 id: install - name: Install Cosign From c5a67adcd056b1ca99132cfcabc7d435e053cd79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 00:23:36 -0500 Subject: [PATCH 72/87] deps: bump sigs.k8s.io/cloud-provider-azure/pkg/azclient from 0.4.16 to 0.5.0 (#1364) Bumps [sigs.k8s.io/cloud-provider-azure/pkg/azclient](https://github.com/kubernetes-sigs/cloud-provider-azure) from 0.4.16 to 0.5.0.
Commits
  • 9211028 Merge pull request #324 from wawa0210/master
  • 3e13122 Merge pull request #325 from nilo19/fix-grep-exit-1
  • f2e4a4e Fix grep exit with an error code.
  • afc324b replace beta label to GA label for kubernetes
  • bc6ebd1 Merge pull request #323 from ialidzhikov/legacy-cloud-providers@v0.18.0
  • cc8e039 Vendor kubernetes/kubernetes@9e991415386e
  • 608b607 Merge pull request #322 from nilo19/fix-self-add
  • cb702f9 fix self add
  • 30d3e37 Merge pull request #321 from nilo19/fix-hollow-nodes-count
  • 42b0cc7 Fix calculating ready hollow nodes and all more logs.
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigs.k8s.io/cloud-provider-azure/pkg/azclient&package-manager=go_modules&previous-version=0.4.16&new-version=0.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 12 +++++++----- go.sum | 24 ++++++++++++++---------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 4d080eb2ba..4e48ea296b 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/spf13/cobra v1.9.1 go.uber.org/zap v1.27.0 k8s.io/client-go v0.30.3 - sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.16 + sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.0 sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 ) @@ -28,8 +28,8 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerregistry/armcontainerregistry v1.2.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/keyvault/armkeyvault v1.4.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.3.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.29 // indirect @@ -99,7 +99,7 @@ require ( github.com/fatih/camelcase v1.0.0 // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect @@ -269,7 +269,7 @@ require ( k8s.io/apimachinery v0.30.3 k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 // indirect - k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 + k8s.io/utils v0.0.0-20241210054802-24370beab758 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.4.0 @@ -341,6 +341,8 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v6 v6.3.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/msi/armmsi v1.2.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6 v6.2.0 // indirect + github.com/Azure/msi-dataplane v0.4.0 // indirect + github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect ) diff --git a/go.sum b/go.sum index 2587aaa699..1e7ffdcf3b 100644 --- a/go.sum +++ b/go.sum @@ -57,10 +57,10 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1. github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0/go.mod h1:5kakwfW5CjC9KK+Q4wjXAg+ShuIm2mBMua0ZFj2C8PE= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0 h1:PiSrjRPpkQNjrM8H0WwKMnZUdu1RGMtd/LdGKUrOo+c= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0/go.mod h1:oDrbWx4ewMylP7xHivfgixbfGBT6APAwsSoHRKotnIc= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.0 h1:WLUIpeyv04H0RCcQHaA4TNoyrQ39Ox7V+re+iaqzTe0= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.0/go.mod h1:hd8hTTIY3VmUVPRHNH7GVCHO3SHgXkJKZHReby/bnUQ= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.0 h1:eXnN9kaS8TiDwXjoie3hMRLuwdUBUMW9KRgOqB3mCaw= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.0/go.mod h1:XIpam8wumeZ5rVMuhdDQLMfIPDf1WO3IzrCRO3e3e3o= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.1 h1:mrkDCdkMsD4l9wjFGhofFHFrV43Y3c53RSLKOCJ5+Ow= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.1/go.mod h1:hPv41DbqMmnxcGralanA/kVlfdH5jv3T4LxGku2E1BY= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1 h1:bFWuoEKg+gImo7pvkiQEFAc8ocibADgXeiLAxWhWmkI= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1/go.mod h1:Vih/3yc6yac2JzU4hzpaDupBJP0Flaia9rXXrU8xyww= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0 h1:UXT0o77lXQrikd1kgwIPQOUect7EoR/+sbP4wQKdzxM= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0/go.mod h1:cTvi54pg19DoT07ekoeMgE/taAwNtCShVeZqA+Iv2xI= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= @@ -83,6 +83,8 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/Azure/msi-dataplane v0.4.0 h1:lofdhX74IgMEvIe6cw8tdwr3zfZkdk77TXetFv0/By8= +github.com/Azure/msi-dataplane v0.4.0/go.mod h1:y+euhWbc8/wgVM1hyJLQf4DnByegnwxAcDV0OKNM9+k= github.com/Azure/perf-tests/network/benchmarks/netperf v0.0.0-20241008140716-395a79947d2c h1:TMXh4Z1Z98o4Ob7JYhiNHocITQXHqJSsrB5ts4uwKl8= github.com/Azure/perf-tests/network/benchmarks/netperf v0.0.0-20241008140716-395a79947d2c/go.mod h1:jeV6A8q9uDVDwffTt5KBk+5g7bXfpEImYW6qLKn0E+I= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= @@ -119,6 +121,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= +github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= @@ -320,8 +324,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -1216,12 +1220,12 @@ k8s.io/kubectl v0.30.3 h1:YIBBvMdTW0xcDpmrOBzcpUVsn+zOgjMYIu7kAq+yqiI= k8s.io/kubectl v0.30.3/go.mod h1:IcR0I9RN2+zzTRUa1BzZCm4oM0NLOawE6RzlDvd1Fpo= k8s.io/metrics v0.30.3 h1:gKCpte5zykrOmQhZ8qmsxyJslMdiLN+sqbBfIWNpbGM= k8s.io/metrics v0.30.3/go.mod h1:W06L2nXRhOwPkFYDJYWdEIS3u6JcJy3ebIPYbndRs6A= -k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 h1:MDF6h2H/h4tbzmtIKTuctcwZmY0tY9mD9fNT47QO6HI= -k8s.io/utils v0.0.0-20240921022957-49e7df575cb6/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0= +k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.16 h1:4i5YbA1l5CZdL2dovH9kQqwrTl2VNFH5BshD08carlU= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.4.16/go.mod h1:T0rXo+yw4LxGKCZ2k9ywYMQketwK83I5xDs3XRUSUJo= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.0 h1:OQOL3+xhy8ZXr9CUAre3g22NFTWQ8m6E+GEOvGR9DKY= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.0/go.mod h1:hJBb8wrJacIpnViSbKvyA/5C9oAi2pM9bGjkI43+tYE= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 h1:jeEFfNxq9uJqkkxhd6WaWNsKNjKhJBcVuWTSgJoXXHM= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20/go.mod h1:5evhIg+6KdZLaezvJPN1rMcn/EY+GypQh/7gNZHD97Y= sigs.k8s.io/controller-runtime v0.18.5 h1:nTHio/W+Q4aBlQMgbnC5hZb4IjIidyrizMai9P6n4Rk= From 0db1237ed20dd22bf73ce2c3334ef8bd6c106202 Mon Sep 17 00:00:00 2001 From: Amilcar Aponte Date: Thu, 20 Feb 2025 08:39:04 +0000 Subject: [PATCH 73/87] chore(dashboards): Updating grafana dashboards and adding them to Grafana Portal (#1285) # Description This PR cover multiple aspects regarding Grafana Dashboards. - It updates the Grafana dashboards for the Retina project and adds them to the Grafana Portal. - Retina Dashboards and JSON files have been renamed to reflect which ones are meant to work with Standard or Hubble control plane, as well as control plane agnostic. - All files have been moved to a new common folder `deploy/grafana-dashboards/` - Simplified dashboard test has been modified to fail in case the folder structure is changed in the future. - Documentation has been updated. ## Related Issue [pods and dns dashboards are not part of the published Grafana dashboards #178](https://github.com/microsoft/retina/issues/178) ## Screenshots (if applicable) or Testing Completed Only names are changed on the dashboards. Layouts and queries remain the same. ![image](https://github.com/user-attachments/assets/8d2390ea-462b-4567-a43a-f9143fbe6e7d) ![image](https://github.com/user-attachments/assets/1a9eb497-d667-46a0-b3b3-d068b87b14b8) ![image](https://github.com/user-attachments/assets/7a2d7f1f-dd32-4116-bb17-2b0bfbcbe369) ![image](https://github.com/user-attachments/assets/7f73a372-41c1-493d-9c23-a849cfd41188) ![image](https://github.com/user-attachments/assets/75d8cd96-3901-47ad-9101-236ba217b461) ## Checklist - [X] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [X] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [X] I have correctly attributed the author(s) of the code. - [X] I have tested the changes locally. - [X] I have followed the project's style guidelines. - [X] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Additional Notes New Retina Grafana account has been created as part of this PR. Also, the scope has been extended to cover dashboards for Hubble control plane which was not mentioned in the original issue. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- .../clusters.json | 23 +- .../hubble-dns.json} | 12 +- .../hubble-pod-flows-namespace.json} | 12 +- .../hubble-pod-flows-workload.json} | 12 +- .../standard-dns.json} | 12 +- .../standard-pod-level.json} | 12 +- deploy/hubble/grafana/dashboards/README.md | 3 - .../hubble/grafana/dashboards/clusters.json | 3734 ----------------- .../simplify-grafana-overwrite_test.go | 6 +- .../dashboards/simplify-grafana_test.go | 6 +- docs/02-Installation/05-grafana.md | 12 +- 11 files changed, 61 insertions(+), 3783 deletions(-) rename deploy/{standard/grafana/dashboards => grafana-dashboards}/clusters.json (99%) rename deploy/{hubble/grafana/dashboards/dns.json => grafana-dashboards/hubble-dns.json} (98%) rename deploy/{hubble/grafana/dashboards/pod-flows-namespace.json => grafana-dashboards/hubble-pod-flows-namespace.json} (99%) rename deploy/{hubble/grafana/dashboards/pod-flows-workload.json => grafana-dashboards/hubble-pod-flows-workload.json} (99%) rename deploy/{standard/grafana/dashboards/dns.json => grafana-dashboards/standard-dns.json} (98%) rename deploy/{standard/grafana/dashboards/pod-level.json => grafana-dashboards/standard-pod-level.json} (98%) mode change 100755 => 100644 delete mode 100644 deploy/hubble/grafana/dashboards/README.md delete mode 100644 deploy/hubble/grafana/dashboards/clusters.json diff --git a/deploy/standard/grafana/dashboards/clusters.json b/deploy/grafana-dashboards/clusters.json similarity index 99% rename from deploy/standard/grafana/dashboards/clusters.json rename to deploy/grafana-dashboards/clusters.json index c5045314c9..a0f4e86381 100644 --- a/deploy/standard/grafana/dashboards/clusters.json +++ b/deploy/grafana-dashboards/clusters.json @@ -48,10 +48,10 @@ "includeVars": true, "keepTime": true, "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "targetBlank": false, - "title": "Dashboards: Network Observability", + "title": "Dashboards: Retina Network Observability", "tooltip": "", "type": "dashboards", "url": "" @@ -66,7 +66,7 @@ "title": "Documentation", "tooltip": "", "type": "link", - "url": "https://www.retina.sh" + "url": "https://retina.sh/docs/Introduction/intro" } ], "liveNow": true, @@ -3669,7 +3669,7 @@ "schemaVersion": 38, "style": "dark", "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "templating": { "list": [ @@ -3695,7 +3695,7 @@ "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info, cluster)", + "definition": "label_values(up, cluster)", "hide": 0, "includeAll": false, "label": "Cluster", @@ -3703,7 +3703,7 @@ "name": "cluster", "options": [], "query": { - "query": "label_values(kube_node_info, cluster)", + "query": "label_values(up, cluster)", "refId": "StandardVariableQuery" }, "refresh": 2, @@ -3713,19 +3713,20 @@ "type": "query" }, { + "allValue": "(.*)", "current": {}, "datasource": { "type": "prometheus", "uid": "${datasource}" }, - "definition": "label_values(kube_node_info{cluster=\"$cluster\"}, node)", + "definition": "label_values(up{cluster=\"$cluster\"},instance)", "hide": 0, "includeAll": true, "label": "Nodes", "multi": true, "name": "Nodes", "options": [], - "query": "label_values(kube_node_info{cluster=\"$cluster\"}, node)", + "query": "label_values(up{cluster=\"$cluster\"},instance)", "refresh": 2, "regex": "", "skipUrlSync": false, @@ -3753,7 +3754,7 @@ ] }, "timezone": "", - "title": "Kubernetes / Networking / Clusters", - "uid": "Retina11", - "version": 1 + "title": "Kubernetes / Networking / Retina / Clusters", + "uid": "RetinaClusters", + "version": 2 } diff --git a/deploy/hubble/grafana/dashboards/dns.json b/deploy/grafana-dashboards/hubble-dns.json similarity index 98% rename from deploy/hubble/grafana/dashboards/dns.json rename to deploy/grafana-dashboards/hubble-dns.json index 3cb2e2ccdc..64aa6dbbb4 100644 --- a/deploy/hubble/grafana/dashboards/dns.json +++ b/deploy/grafana-dashboards/hubble-dns.json @@ -36,10 +36,10 @@ "includeVars": true, "keepTime": true, "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "targetBlank": false, - "title": "Dashboards: Network Observability", + "title": "Dashboards: Retina Network Observability", "tooltip": "", "type": "dashboards", "url": "" @@ -54,7 +54,7 @@ "title": "Documentation", "tooltip": "", "type": "link", - "url": "https://aka.ms/NetObsAddonDoc" + "url": "https://retina.sh/docs/Introduction/intro" } ], "liveNow": true, @@ -930,7 +930,7 @@ "schemaVersion": 38, "style": "dark", "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "templating": { "list": [ @@ -1016,7 +1016,7 @@ ] }, "timezone": "", - "title": "Kubernetes / Networking / DNS", - "uid": "NetObsDNS6741", + "title": "Kubernetes / Networking / Retina (Hubble) / DNS", + "uid": "RetinaHubbleDNS", "version": 1 } diff --git a/deploy/hubble/grafana/dashboards/pod-flows-namespace.json b/deploy/grafana-dashboards/hubble-pod-flows-namespace.json similarity index 99% rename from deploy/hubble/grafana/dashboards/pod-flows-namespace.json rename to deploy/grafana-dashboards/hubble-pod-flows-namespace.json index ee8977708f..6eeb70134b 100644 --- a/deploy/hubble/grafana/dashboards/pod-flows-namespace.json +++ b/deploy/grafana-dashboards/hubble-pod-flows-namespace.json @@ -48,10 +48,10 @@ "includeVars": true, "keepTime": true, "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "targetBlank": false, - "title": "Dashboards: Network Observability", + "title": "Dashboards: Retina Network Observability", "tooltip": "", "type": "dashboards", "url": "" @@ -66,7 +66,7 @@ "title": "Documentation", "tooltip": "Documentation", "type": "link", - "url": "https://aka.ms/NetObsAddonDoc" + "url": "https://retina.sh/docs/Introduction/intro" } ], "liveNow": true, @@ -4150,7 +4150,7 @@ "schemaVersion": 38, "style": "dark", "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "templating": { "list": [ @@ -4263,7 +4263,7 @@ ] }, "timezone": "", - "title": "Kubernetes / Networking / Pod Flows (Namespace)", - "uid": "NetObsFlowsNamespace6739", + "title": "Kubernetes / Networking / Retina (Hubble) / Pod Flows (Namespace)", + "uid": "RetinaHubblePodFlowsNamespace", "version": 1 } diff --git a/deploy/hubble/grafana/dashboards/pod-flows-workload.json b/deploy/grafana-dashboards/hubble-pod-flows-workload.json similarity index 99% rename from deploy/hubble/grafana/dashboards/pod-flows-workload.json rename to deploy/grafana-dashboards/hubble-pod-flows-workload.json index 4045f902b2..7ccde97272 100644 --- a/deploy/hubble/grafana/dashboards/pod-flows-workload.json +++ b/deploy/grafana-dashboards/hubble-pod-flows-workload.json @@ -42,10 +42,10 @@ "includeVars": true, "keepTime": true, "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "targetBlank": false, - "title": "Dashboards: Network Observability", + "title": "Dashboards: Retina Network Observability", "tooltip": "", "type": "dashboards", "url": "" @@ -60,7 +60,7 @@ "title": "Documentation", "tooltip": "Documentation", "type": "link", - "url": "https://aka.ms/NetObsAddonDoc" + "url": "https://retina.sh/docs/Introduction/intro" } ], "liveNow": true, @@ -3875,7 +3875,7 @@ "schemaVersion": 38, "style": "dark", "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "templating": { "list": [ @@ -4004,7 +4004,7 @@ ] }, "timezone": "", - "title": "Kubernetes / Networking / Pod Flows (Workload)", - "uid": "NetObsFlowsWorkload6740", + "title": "Kubernetes / Networking / Retina (Hubble) / Pod Flows (Workload)", + "uid": "RetinaHubblePodFlowsWorkload", "version": 1 } diff --git a/deploy/standard/grafana/dashboards/dns.json b/deploy/grafana-dashboards/standard-dns.json similarity index 98% rename from deploy/standard/grafana/dashboards/dns.json rename to deploy/grafana-dashboards/standard-dns.json index 542e4c9a64..48f1bc3ace 100644 --- a/deploy/standard/grafana/dashboards/dns.json +++ b/deploy/grafana-dashboards/standard-dns.json @@ -36,10 +36,10 @@ "includeVars": true, "keepTime": true, "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "targetBlank": false, - "title": "Dashboards: Network Observability", + "title": "Dashboards: Retina Network Observability", "tooltip": "", "type": "dashboards", "url": "" @@ -54,7 +54,7 @@ "title": "Documentation", "tooltip": "", "type": "link", - "url": "https://www.retina.sh" + "url": "https://retina.sh/docs/Introduction/intro" } ], "liveNow": true, @@ -836,7 +836,7 @@ "schemaVersion": 38, "style": "dark", "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "templating": { "list": [ @@ -920,7 +920,7 @@ ] }, "timezone": "", - "title": "Kubernetes / Networking / DNS", - "uid": "Retina55", + "title": "Kubernetes / Networking / Retina (Standard) / DNS", + "uid": "RetinaStandardDNS", "version": 1 } diff --git a/deploy/standard/grafana/dashboards/pod-level.json b/deploy/grafana-dashboards/standard-pod-level.json old mode 100755 new mode 100644 similarity index 98% rename from deploy/standard/grafana/dashboards/pod-level.json rename to deploy/grafana-dashboards/standard-pod-level.json index 7ccfdf970a..5436b63348 --- a/deploy/standard/grafana/dashboards/pod-level.json +++ b/deploy/grafana-dashboards/standard-pod-level.json @@ -36,10 +36,10 @@ "includeVars": true, "keepTime": true, "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "targetBlank": false, - "title": "Dashboards: Network Observability", + "title": "Dashboards: Retina Network Observability", "tooltip": "", "type": "dashboards", "url": "" @@ -54,7 +54,7 @@ "title": "Documentation", "tooltip": "", "type": "link", - "url": "https://www.retina.sh" + "url": "https://retina.sh/docs/Introduction/intro" } ], "liveNow": false, @@ -1058,7 +1058,7 @@ "schemaVersion": 38, "style": "dark", "tags": [ - "k8s:network-observability" + "k8s:retina-network-observability" ], "templating": { "list": [ @@ -1108,7 +1108,7 @@ }, "timepicker": {}, "timezone": "", - "title": "Kubernetes / Networking / Pod Traffic", - "uid": "Retina22", + "title": "Kubernetes / Networking / Retina (Standard) / Pod Traffic", + "uid": "RetinaStandardPodTraffic", "version": 1 } diff --git a/deploy/hubble/grafana/dashboards/README.md b/deploy/hubble/grafana/dashboards/README.md deleted file mode 100644 index aaf58c0147..0000000000 --- a/deploy/hubble/grafana/dashboards/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# DAshboards - -Dashboards here are a copy of dashboards in the Dashboard [https://msazure.visualstudio.com/One/_git/Azure-Observability-ECG-Grafana-DashboardAuthoring?path=/Azure%20Dashboards/Managed%20Prometheus/Network-Observability] Authoring Repo. diff --git a/deploy/hubble/grafana/dashboards/clusters.json b/deploy/hubble/grafana/dashboards/clusters.json deleted file mode 100644 index e2ab5e8785..0000000000 --- a/deploy/hubble/grafana/dashboards/clusters.json +++ /dev/null @@ -1,3734 +0,0 @@ -{ - "__elements": {}, - "__inputs": [], - "__requires": [ - { - "id": "grafana", - "name": "Grafana", - "type": "grafana", - "version": "9.5.15" - }, - { - "id": "prometheus", - "name": "Prometheus", - "type": "datasource", - "version": "1.0.0" - }, - { - "id": "stat", - "name": "Stat", - "type": "panel", - "version": "" - }, - { - "id": "table", - "name": "Table", - "type": "panel", - "version": "" - }, - { - "id": "text", - "name": "Text", - "type": "panel", - "version": "" - }, - { - "id": "timeseries", - "name": "Time series", - "type": "panel", - "version": "" - } - ], - "editable": true, - "id": null, - "links": [ - { - "asDropdown": true, - "icon": "external link", - "includeVars": true, - "keepTime": true, - "tags": [ - "k8s:network-observability" - ], - "targetBlank": false, - "title": "Dashboards: Network Observability", - "tooltip": "", - "type": "dashboards", - "url": "" - }, - { - "asDropdown": false, - "icon": "info", - "includeVars": false, - "keepTime": false, - "tags": [], - "targetBlank": true, - "title": "Documentation", - "tooltip": "", - "type": "link", - "url": "https://aka.ms/NetObsAddonDoc" - } - ], - "liveNow": true, - "panels": [ - { - "gridPos": { - "h": 4, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 35, - "options": { - "code": { - "language": "plaintext", - "showLineNumbers": false, - "showMiniMap": false - }, - "content": "# Network Observability Metrics\n\nUse this dashboard to visualise metrics from the Network Observability add-on for AKS. Dashboard displays metrics from Linux and Windows Clusters. To hide the irrelevant metrics, simply collapse the unwanted sections. Alternatively, you can edit the dashboard to delete unwanted panels. For any questions or issues, please see [our documentation](https://aka.ms/NetObsAddonDoc).", - "mode": "markdown" - }, - "type": "text" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 4 - }, - "id": 155, - "panels": [], - "title": "Fleet View", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "left", - "cellOptions": { - "type": "auto" - }, - "filterable": false, - "inspect": false - }, - "decimals": 1, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 5 - }, - "id": 156, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "enablePagination": false, - "fields": "", - "reducer": [ - "max" - ], - "show": false - }, - "showHeader": true, - "sortBy": [ - { - "desc": true, - "displayName": "Bytes Forwarded" - } - ] - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum by (cluster) (\r\n rate(networkobservability_forward_bytes[$__rate_interval])\r\n or\r\n rate(kappie_forward_bytes[$__rate_interval])\r\n or\r\n rate(cilium_forward_bytes_total[$__rate_interval])\r\n)", - "format": "table", - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "A" - } - ], - "title": "Current Traffic by Cluster", - "transformations": [ - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true - }, - "indexByName": {}, - "renameByName": { - "Value": "Bytes Forwarded", - "cluster": "Cluster" - } - } - } - ], - "transparent": true, - "type": "table" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "semi-dark-blue", - "mode": "continuous-BlYlRd" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 18, - "x": 6, - "y": 5 - }, - "id": 123, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by(cluster) (\r\n rate(networkobservability_forward_count{instance=~\"$Nodes\"}[$__rate_interval])\r\n or\r\n on(cluster)\r\n rate(kappie_forward_count{instance=~\"$Nodes\"}[$__rate_interval])\r\n or\r\n on(cluster)\r\n rate(cilium_forward_count_total{instance=~\"$Nodes\"}[$__rate_interval])\r\n)", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Bytes Forwarded by Cluster", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "left", - "cellOptions": { - "type": "auto" - }, - "filterable": false, - "inspect": false - }, - "decimals": 1, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 12 - }, - "id": 158, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "enablePagination": false, - "fields": "", - "reducer": [ - "max" - ], - "show": false - }, - "showHeader": true, - "sortBy": [ - { - "desc": true, - "displayName": "Bytes Dropped" - } - ] - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum by (cluster) (\r\n rate(networkobservability_drop_bytes[$__rate_interval])\r\n or\r\n rate(kappie_drop_bytes[$__rate_interval])\r\n or\r\n rate(cilium_drop_bytes_total[$__rate_interval])\r\n)", - "format": "table", - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "A" - } - ], - "title": "Current Dropped Traffic by Cluster", - "transformations": [ - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true - }, - "indexByName": {}, - "renameByName": { - "Value": "Bytes Dropped", - "cluster": "Cluster" - } - } - } - ], - "transparent": true, - "type": "table" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 9, - "x": 6, - "y": 12 - }, - "id": 129, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by(cluster) (rate(networkobservability_drop_bytes[$__rate_interval]))\r\nor\r\nsum by(cluster) (rate(kappie_drop_bytes[$__rate_interval]))\r\nor\r\nsum by(cluster) (rate(cilium_drop_bytes_total[$__rate_interval]))", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Bytes Dropped by Cluster", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 9, - "x": 15, - "y": 12 - }, - "id": 130, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by(cluster) (rate(networkobservability_drop_count[$__rate_interval]))\r\nor\r\nsum by(cluster) (rate(kappie_drop_count[$__rate_interval]))\r\nor\r\nsum by(cluster) (rate(cilium_drop_count_total[$__rate_interval]))", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Packets Dropped By Cluster", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 19 - }, - "id": 57, - "panels": [], - "title": "Traffic (on $cluster)", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "decimals": 1, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "blue", - "value": null - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 0, - "y": 20 - }, - "id": 141, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "max" - ], - "fields": "", - "values": false - }, - "textMode": "value_and_name" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_bytes{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_bytes{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_bytes_total{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Max Egress Bytes", - "range": true, - "refId": "A" - } - ], - "transparent": true, - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "decimals": 1, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "super-light-blue", - "value": null - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 3, - "y": 20 - }, - "id": 145, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "min" - ], - "fields": "", - "values": false - }, - "textMode": "value_and_name" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum(rate(networkobservability_forward_bytes{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_bytes{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_bytes_total{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "format": "time_series", - "instant": false, - "legendFormat": "Min Egress Bytes", - "range": true, - "refId": "A" - } - ], - "transparent": true, - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "blue", - "value": null - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 6, - "y": 20 - }, - "id": 120, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "max" - ], - "fields": "", - "values": false - }, - "textMode": "value_and_name" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_count{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_count{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_count_total{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Max Egress Packets", - "range": true, - "refId": "A" - } - ], - "transparent": true, - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "super-light-blue", - "value": null - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 9, - "y": 20 - }, - "id": 146, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "min" - ], - "fields": "", - "values": false - }, - "textMode": "value_and_name" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_count{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_count{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_count_total{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Min Egress Packets", - "range": true, - "refId": "A" - } - ], - "transparent": true, - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "decimals": 1, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "blue", - "value": null - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 12, - "y": 20 - }, - "id": 147, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "max" - ], - "fields": "", - "values": false - }, - "textMode": "value_and_name" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_bytes{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_bytes{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_bytes_total{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Max Ingress Bytes", - "range": true, - "refId": "A" - } - ], - "transparent": true, - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "decimals": 1, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "super-light-blue", - "value": null - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 15, - "y": 20 - }, - "id": 148, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "min" - ], - "fields": "", - "values": false - }, - "textMode": "value_and_name" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_bytes{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_bytes{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_bytes_total{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Min Ingress Bytes", - "range": true, - "refId": "A" - } - ], - "transparent": true, - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "blue", - "value": null - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 18, - "y": 20 - }, - "id": 149, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "max" - ], - "fields": "", - "values": false - }, - "textMode": "value_and_name" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_count{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_count{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_count_total{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Max Ingress Packets", - "range": true, - "refId": "A" - } - ], - "transparent": true, - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "super-light-blue", - "value": null - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 21, - "y": 20 - }, - "id": 150, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "min" - ], - "fields": "", - "values": false - }, - "textMode": "value_and_name" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_count{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_count{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_count_total{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Min Ingress Packets", - "range": true, - "refId": "A" - } - ], - "transparent": true, - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "super-light-blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 15, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 6, - "x": 0, - "y": 24 - }, - "id": 119, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "right", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_bytes{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_bytes{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_bytes_total{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Egress Bytes", - "range": true, - "refId": "A" - } - ], - "title": "Egress Bytes", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "super-light-blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 15, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 6, - "x": 6, - "y": 24 - }, - "id": 143, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_count{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_count{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_count_total{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Egress Packets", - "range": true, - "refId": "A" - } - ], - "title": "Egress Packets", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "super-light-blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 15, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 6, - "x": 12, - "y": 24 - }, - "id": 142, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_bytes{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_bytes{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_bytes_total{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Ingress Bytes", - "range": true, - "refId": "A" - } - ], - "title": "Ingress Bytes", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "super-light-blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 15, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 6, - "x": 18, - "y": 24 - }, - "id": 144, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_forward_count{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_forward_count{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_forward_count_total{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Ingress Packets", - "range": true, - "refId": "A" - } - ], - "title": "Ingress Packets", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 30 - }, - "id": 55, - "panels": [], - "title": "Drops (on $cluster)", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "red", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 31 - }, - "id": 124, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_drop_count{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_drop_count{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_drop_count_total{direction=\"egress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Dropped Packets (Egress)", - "range": true, - "refId": "A" - } - ], - "title": "Packets Dropped - Egress", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "red", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 31 - }, - "id": 125, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_drop_count{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_drop_count{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(cilium_drop_count_total{direction=\"ingress\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "Dropped Packets (Ingress)", - "range": true, - "refId": "A" - } - ], - "title": "Packets Dropped - Ingress", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "red", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 31 - }, - "id": 114, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_drop_count{direction=\"unknown\", instance=~\"$Nodes\", cluster=\"$cluster\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_drop_count{direction=\"unknown\", instance=~\"$Nodes\", cluster=\"$cluster\"}[$__rate_interval]))", - "legendFormat": "Dropped Packets (Unknown)", - "range": true, - "refId": "A" - } - ], - "title": "Packets Dropped - Unknown", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Values:\n- Non-Cilium (Linux):\n - iptable_rule_drop: packet dropped in iptables, e.g., because of a NetworkPolicy if using --network-policy=azure\n - iptable_nat_drop: packet dropped in iptables during NAT (Network Address Translation)\n - tcp_connect_basic: packet dropped by tcp connect\n - tcp_accept_basic: packet dropped by tcp accept\n - tcp_close_basic: packet dropped by tcp close\n - conntrack_add_drop: packet dropped while conntrack (connection tracking) was adding the connection\n- Cilium (Linux):\n - Many possible values", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-YlRd" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 38 - }, - "id": 86, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (reason) (rate(networkobservability_drop_bytes{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by (reason) (rate(kappie_drop_bytes{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by (reason) (rate(cilium_drop_bytes_total{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Bytes Dropped by Reason", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Values:\n- Non-Cilium (Linux):\n - iptable_rule_drop: packet dropped in iptables, e.g., because of a NetworkPolicy if using --network-policy=azure\n - iptable_nat_drop: packet dropped in iptables during NAT (Network Address Translation)\n - tcp_connect_basic: packet dropped by tcp connect\n - tcp_accept_basic: packet dropped by tcp accept\n - tcp_close_basic: packet dropped by tcp close\n - conntrack_add_drop: packet dropped while conntrack (connection tracking) was adding the connection\n - rx_dropped: an interface dropped a received packet\n - tx_dropped: an interface dropped a transmitted packet\n- Non-Cilium (Windows):\n - aclrule: dropped by an ACL rule in VFP, e.g., because of a NetworkPolicy\n - endpoint: dropped by an HNS Pod Endpoint \n- Cilium (Linux):\n - Many possible values", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-YlRd" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 38 - }, - "id": 88, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (reason) (rate(networkobservability_drop_count{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by (reason) (rate(kappie_drop_count{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by (reason) (rate(cilium_drop_count_total{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by (reason) (\r\n label_replace(\r\n rate(networkobservability_interface_stats{statistic_name=\"rx_dropped\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]),\r\n \"reason\",\r\n \"$1\",\r\n \"statistic_name\",\r\n \"(.*)\"\r\n )\r\n)\r\nor # cannot combine these interface_stats expressions into one using regex, since regex would capture anything with rx_dropped or tx_dropped in it\r\nsum by (reason) (\r\n label_replace(\r\n rate(networkobservability_interface_stats{statistic_name=\"tx_dropped\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]),\r\n \"reason\",\r\n \"$1\",\r\n \"statistic_name\",\r\n \"(.*)\"\r\n )\r\n)", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Packets Dropped by Reason", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-BlYlRd" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 46 - }, - "id": 131, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by(instance) (rate(networkobservability_drop_bytes{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by(instance) (rate(kappie_drop_bytes{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by(instance) (rate(cilium_drop_bytes_total{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Bytes Dropped by Node", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-YlRd" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 46 - }, - "id": 132, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by(instance) (rate(networkobservability_drop_count{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by(instance) (rate(kappie_drop_count{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by(instance) (rate(cilium_drop_count_total{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Packets Dropped by Node", - "type": "timeseries" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 54 - }, - "id": 59, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 15, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 8 - }, - "id": 64, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by(state) (networkobservability_tcp_state{cluster=\"$cluster\", instance=~\"$Nodes\"})\r\nor\r\nsum by(state) (kappie_tcp_state{cluster=\"$cluster\", instance=~\"$Nodes\"})", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "TCP Active Connections by State", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 15, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 8 - }, - "id": 68, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by(address) (networkobservability_tcp_connection_remote{cluster=\"$cluster\", instance=~\"$Nodes\", address!~\"127.0.0.1|0.0.0.0\"})\r\nor\r\nsum by(address) (kappie_tcp_connection_remote{cluster=\"$cluster\", instance=~\"$Nodes\", address!~\"127.0.0.1|0.0.0.0\"})", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "TCP Active Connections by Remote Addr", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-BlPu" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 10, - "x": 0, - "y": 16 - }, - "id": 65, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_tcp_connection_stats{statistic_name=\"tcptimeouts\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_tcp_connection_stats{statistic_name=\"tcptimeouts\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "TCP Timeouts", - "range": true, - "refId": "A" - } - ], - "title": "TCP Connection Timeouts", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-BlPu" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 7, - "x": 10, - "y": 16 - }, - "id": 66, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_tcp_connection_stats{statistic_name=\"resetcount\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_tcp_connection_stats{statistic_name=\"resetcount\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "TCP Resets", - "range": true, - "refId": "A" - } - ], - "title": "TCP Connection Resets", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-BlPu" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 7, - "x": 17, - "y": 16 - }, - "id": 69, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_tcp_connection_stats{statistic_name=\"tcptsreorder\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_tcp_connection_stats{statistic_name=\"tcptsreorder\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "TCP Reorders", - "range": true, - "refId": "A" - } - ], - "title": "TCP Connection Reorders", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Windows Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-BlPu" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 24 - }, - "id": 61, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_tcp_flag_counters{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_tcp_flag_counters{cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "TCP packets", - "range": true, - "refId": "A" - } - ], - "title": "Windows TCP Packets", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Windows Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-BlPu" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 24 - }, - "id": 62, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_tcp_flag_counters{flag=\"rst\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_tcp_flag_counters{flag=\"rst\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "TCP Reset Packets", - "range": true, - "refId": "A" - } - ], - "title": "Windows TCP RST Packets", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Windows Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-BlPu" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 24 - }, - "id": 70, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(networkobservability_tcp_flag_counters{flag=\"synack\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum(rate(kappie_tcp_flag_counters{flag=\"synack\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "TCP SYN-ACK packets", - "range": true, - "refId": "A" - } - ], - "title": "Windows TCP SYN-ACK Packets", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-BlPu" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 15, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 32 - }, - "id": 72, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(networkobservability_udp_connection_stats{statistic_name=\"active\", cluster=\"$cluster\", instance=~\"$Nodes\"})\r\nor\r\nsum(kappie_udp_connection_stats{statistic_name=\"active\", cluster=\"$cluster\", instance=~\"$Nodes\"})", - "legendFormat": "Total UDP Connections", - "range": true, - "refId": "A" - } - ], - "title": "UDP Connections", - "type": "timeseries" - } - ], - "title": "Connections (on $cluster)", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 55 - }, - "id": 74, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 0, - "y": 33 - }, - "id": 76, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (interface_name) (rate(networkobservability_interface_stats{statistic_name=\"rx_packets\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum by (interface_name) (rate(kappie_interface_stats{statistic_name=\"rx_packets\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "{{interface_name}}", - "range": true, - "refId": "A" - } - ], - "title": "RX Packets by Interface", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 6, - "y": 33 - }, - "id": 77, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (interface_name) (rate(networkobservability_interface_stats{statistic_name=\"tx_packets\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))\r\nor\r\nsum by (interface_name) (rate(kappie_interface_stats{statistic_name=\"tx_packets\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval]))", - "legendFormat": "{{interface_name}}", - "range": true, - "refId": "A" - } - ], - "title": "TX Packets by Interface", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 12, - "y": 33 - }, - "id": 94, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (instance) (rate(networkobservability_interface_stats{statistic_name=~\"rx[0-9]+_cache_full\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by (instance) (rate(kappie_interface_stats{statistic_name=~\"rx[0-9]+_cache_full\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0", - "legendFormat": "{{instance}}", - "range": true, - "refId": "A" - } - ], - "title": "Rx Cache Full error", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 18, - "y": 33 - }, - "id": 93, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (instance) (rate(networkobservability_interface_stats{statistic_name=~\"tx[0-9]+_nop\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by (instance) (rate(kappie_interface_stats{statistic_name=~\"tx[0-9]+_nop\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0", - "hide": false, - "legendFormat": "{{instance}}", - "range": true, - "refId": "B" - } - ], - "title": "Tx No Op Errors", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 0, - "y": 41 - }, - "id": 161, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (instance) (rate(networkobservability_interface_stats{statistic_name=\"rx_dropped\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0", - "legendFormat": "{{instance}}", - "range": true, - "refId": "A" - } - ], - "title": "Dropped Rx Packets", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 6, - "y": 41 - }, - "id": 162, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (instance) (rate(networkobservability_interface_stats{statistic_name=\"tx_dropped\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0", - "legendFormat": "{{instance}}", - "range": true, - "refId": "A" - } - ], - "title": "Dropped Tx Packets", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 12, - "y": 41 - }, - "id": 160, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (instance) (rate(networkobservability_interface_stats{statistic_name=\"rx_comp_full\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by (instance) (rate(kappie_interface_stats{statistic_name=\"rx_comp_full\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0", - "legendFormat": "{{instance}}", - "range": true, - "refId": "A" - } - ], - "title": "Rx Comp Full Errors", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Non-Cilium only", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "hue", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "pps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 18, - "y": 41 - }, - "id": 159, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (instance) (rate(networkobservability_interface_stats{statistic_name=\"tx_send_full\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0\r\nor\r\nsum by (instance) (rate(kappie_interface_stats{statistic_name=\"tx_send_full\", cluster=\"$cluster\", instance=~\"$Nodes\"}[$__rate_interval])) > 0", - "legendFormat": "{{instance}}", - "range": true, - "refId": "A" - } - ], - "title": "Tx Send Full Errors", - "type": "timeseries" - } - ], - "title": "Interfaces/Nodes (on $cluster)", - "type": "row" - } - ], - "refresh": "", - "revision": 1, - "schemaVersion": 38, - "style": "dark", - "tags": [ - "k8s:network-observability" - ], - "templating": { - "list": [ - { - "current": {}, - "hide": 0, - "includeAll": false, - "label": "Data Source", - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "allValue": "(.*)", - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(up, cluster)", - "hide": 0, - "includeAll": false, - "label": "Cluster", - "multi": false, - "name": "cluster", - "options": [], - "query": { - "query": "label_values(up, cluster)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "type": "query" - }, - { - "allValue": "(.*)", - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(up{cluster=\"$cluster\"},instance)", - "hide": 0, - "includeAll": true, - "label": "Nodes", - "multi": true, - "name": "Nodes", - "options": [], - "query": { - "query": "label_values(up{cluster=\"$cluster\"},instance)", - "refId": "PrometheusVariableQueryEditor-VariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "type": "query" - } - ] - }, - "time": { - "from": "now-30m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Kubernetes / Networking / Clusters", - "uid": "NetObs6738", - "version": 39 -} diff --git a/deploy/testutils/grafana/dashboards/simplify-grafana-overwrite_test.go b/deploy/testutils/grafana/dashboards/simplify-grafana-overwrite_test.go index 493f2021aa..499d6f51c8 100644 --- a/deploy/testutils/grafana/dashboards/simplify-grafana-overwrite_test.go +++ b/deploy/testutils/grafana/dashboards/simplify-grafana-overwrite_test.go @@ -10,12 +10,16 @@ import ( // TestOverwriteDashboards simplifies and overwrites Grafana dashboards in deploy folder variants func TestOverwriteDashboards(t *testing.T) { // get all json's in various generation deploly folders - files, err := filepath.Glob("../../../*/grafana/dashboards/*.json") + files, err := filepath.Glob("../../../grafana-dashboards/*.json") if err != nil { t.Fatal(err) } + if len(files) != 6 { + t.Fatal("Some JSON files are not found or new files have been addedd") + } + for _, file := range files { t.Logf("simplifying/overwriting dashboard: %s", file) diff --git a/deploy/testutils/grafana/dashboards/simplify-grafana_test.go b/deploy/testutils/grafana/dashboards/simplify-grafana_test.go index db99ec6343..2c8e271d26 100644 --- a/deploy/testutils/grafana/dashboards/simplify-grafana_test.go +++ b/deploy/testutils/grafana/dashboards/simplify-grafana_test.go @@ -11,12 +11,16 @@ import ( // TestDashboardsAreSimplified ensures that all dashboards are simplified func TestDashboardsAreSimplified(t *testing.T) { // get all json's in this folder - files, err := filepath.Glob("../../../*/grafana/dashboards/*.json") + files, err := filepath.Glob("../../../grafana-dashboards/*.json") if err != nil { t.Fatal(err) } + if len(files) != 6 { + t.Fatal("Some JSON files are not found or new files have been addedd") + } + for _, file := range files { t.Logf("verifying that dashboard is simplified: %s", file) diff --git a/docs/02-Installation/05-grafana.md b/docs/02-Installation/05-grafana.md index 1f476b7525..4725d61997 100644 --- a/docs/02-Installation/05-grafana.md +++ b/docs/02-Installation/05-grafana.md @@ -34,18 +34,24 @@ If you followed the steps to install and configure [Prometheus](./04-prometheus. ![Grafana datasources](./img/grafana-datasources.png) -5. Import the [kubernetes-networking-observability](https://grafana.com/grafana/dashboards/18814/) dashboard by id `18814` at [localhost:8080/dashboard/import](http://localhost:8080/dashboard/import) +5. Import the [kubernetes-networking-retina-cluster](https://grafana.com/grafana/dashboards/22835/) dashboard by id `22835` at [localhost:8080/dashboard/import](http://localhost:8080/dashboard/import). This dashboard is agnostic to the control plane used in Retina (Standard or Hubble). ![Grafana import](./img/grafana-import.png) + Some other available dashboards for Retina Standard are: + - [kubernetes-networking-retina-standard-DNS](https://grafana.com/grafana/dashboards/22836/) dashboard (id `22836`) + - [kubernetes-networking-retina-standard-PodTraffic](https://grafana.com/grafana/dashboards/22837/) dashboard (id `22837`) + 6. Kubernetes cluster metrics shouold be visible ![Grafana kubernetes-networking-observability dashboard](./img/grafana-kubernetes-networking-dash.png) ## Retina Dashboards -There is a set of Retina dashboards that you can import directly into Grafana as json files. The dashboards are found under `deploy/standard/grafana/dashboards/` if you installed retina standard controlplane, and under `deploy/hubble/grafana/dashboards/` if you installed retina hubble controlplane. +There is a set of Retina dashboards that you can import directly into Grafana as json files. The dashboards are found under `deploy/grafana-dashboards/`. -Here is an example of the Retina `dns.json` dashboard. +Here is an example of the Retina `standard-dns.json` dashboard. ![Grafana retina DNS dashboard](./img/grafana-retina-dns-dash.png) + +These dashboards are also available at the [Grafana Portal Retina Page](https://grafana.com/orgs/retina1/dashboards) From 0cf6b508d5cba480e53cc01af662ffb23399225c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 17:23:38 -0500 Subject: [PATCH 74/87] deps: bump github.com/prometheus/client_golang from 1.20.5 to 1.21.0 (#1376) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.20.5 to 1.21.0.
Release notes

Sourced from github.com/prometheus/client_golang's releases.

v1.21.0 / 2025-02-19

:warning: This release contains potential breaking change if you upgrade github.com/prometheus/common to 0.62+ together with client_golang (and depend on the strict, legacy validation for the label names). New common version changes model.NameValidationScheme global variable, which relaxes the validation of label names and metric name, allowing all UTF-8 characters. Typically, this should not break any user, unless your test or usage expects strict certain names to panic/fail on client_golang metric registration, gathering or scrape. In case of problems change model.NameValidationScheme to old model.LegacyValidation value in your project init function. :warning:

  • [BUGFIX] gocollector: Fix help message for runtime/metric metrics. #1583
  • [BUGFIX] prometheus: Fix Desc.String() method for no labels case. #1687
  • [PERF] prometheus: Optimize popular prometheus.BuildFQName function; now up to 30% faster. #1665
  • [PERF] prometheus: Optimize Inc, Add and Observe cumulative metrics; now up to 50% faster under high concurrent contention. #1661
  • [CHANGE] Upgrade prometheus/common to 0.62.0 which changes model.NameValidationScheme global variable. #1712
  • [CHANGE] Add support for Go 1.23. #1602
  • [FEATURE] process_collector: Add support for Darwin systems. #1600 #1616 #1625 #1675 #1715
  • [FEATURE] api: Add ability to invoke CloseIdleConnections on api.Client using api.Client.(CloseIdler).CloseIdleConnections() casting. #1513
  • [FEATURE] promhttp: Add promhttp.HandlerOpts.EnableOpenMetricsTextCreatedSamples option to create OpenMetrics _created lines. Not recommended unless you want to use opt-in Created Timestamp feature. Community works on OpenMetrics 2.0 format that should make those lines obsolete (they increase cardinality significantly). #1408
  • [FEATURE] prometheus: Add NewConstNativeHistogram function. #1654

... (truncated)

Changelog

Sourced from github.com/prometheus/client_golang's changelog.

1.21.0 / 2025-02-17

:warning: This release contains potential breaking change if you upgrade github.com/prometheus/common to 0.62+ together with client_golang. :warning:

New common version changes model.NameValidationScheme global variable, which relaxes the validation of label names and metric name, allowing all UTF-8 characters. Typically, this should not break any user, unless your test or usage expects strict certain names to panic/fail on client_golang metric registration, gathering or scrape. In case of problems change model.NameValidationScheme to old model.LegacyValidation value in your project init function.

  • [BUGFIX] gocollector: Fix help message for runtime/metric metrics. #1583
  • [BUGFIX] prometheus: Fix Desc.String() method for no labels case. #1687
  • [ENHANCEMENT] prometheus: Optimize popular prometheus.BuildFQName function; now up to 30% faster. #1665
  • [ENHANCEMENT] prometheus: Optimize Inc, Add and Observe cumulative metrics; now up to 50% faster under high concurrent contention. #1661
  • [CHANGE] Upgrade prometheus/common to 0.62.0 which changes model.NameValidationScheme global variable. #1712
  • [CHANGE] Add support for Go 1.23. #1602
  • [FEATURE] process_collector: Add support for Darwin systems. #1600 #1616 #1625 #1675 #1715
  • [FEATURE] api: Add ability to invoke CloseIdleConnections on api.Client using api.Client.(CloseIdler).CloseIdleConnections() casting. #1513
  • [FEATURE] promhttp: Add promhttp.HandlerOpts.EnableOpenMetricsTextCreatedSamples option to create OpenMetrics _created lines. Not recommended unless you want to use opt-in Created Timestamp feature. Community works on OpenMetrics 2.0 format that should make those lines obsolete (they increase cardinality significantly). #1408
  • [FEATURE] prometheus: Add NewConstNativeHistogram function. #1654
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/prometheus/client_golang&package-manager=go_modules&previous-version=1.20.5&new-version=1.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 4e48ea296b..d666f35b15 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.23.4 require ( github.com/go-chi/chi/v5 v5.2.1 github.com/google/uuid v1.6.0 - github.com/prometheus/client_golang v1.20.5 + github.com/prometheus/client_golang v1.21.0 github.com/spf13/cobra v1.9.1 go.uber.org/zap v1.27.0 k8s.io/client-go v0.30.3 @@ -148,7 +148,7 @@ require ( github.com/jmoiron/sqlx v1.3.5 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/josharian/native v1.1.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect diff --git a/go.sum b/go.sum index 1e7ffdcf3b..646a7a9e90 100644 --- a/go.sum +++ b/go.sum @@ -578,8 +578,8 @@ github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6 h1:IsMZxCuZqKu github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6/go.mod h1:3VeWNIJaW+O5xpRQbPp0Ybqu1vJd/pm7s2F473HRrkw= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -764,8 +764,8 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= +github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= From d480bca15c6f0db6d2bd48f0b6e4dab54c6df07b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 17:23:59 -0500 Subject: [PATCH 75/87] deps: bump github.com/aws/aws-sdk-go-v2/credentials from 1.17.59 to 1.17.60 (#1375) Bumps [github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2) from 1.17.59 to 1.17.60.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/credentials&package-manager=go_modules&previous-version=1.17.59&new-version=1.17.60)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 18 +++++++++--------- go.sum | 36 ++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/go.mod b/go.mod index d666f35b15..01d713c5e6 100644 --- a/go.mod +++ b/go.mod @@ -48,18 +48,18 @@ require ( github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.28 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.29 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.33 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.33 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.14 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.14 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.16 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.15 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.15 // indirect github.com/aws/smithy-go v1.22.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect @@ -291,7 +291,7 @@ require ( github.com/Sytten/logrus-zap-hook v0.1.0 github.com/aws/aws-sdk-go-v2 v1.36.2 github.com/aws/aws-sdk-go-v2/config v1.29.6 - github.com/aws/aws-sdk-go-v2/credentials v1.17.59 + github.com/aws/aws-sdk-go-v2/credentials v1.17.60 github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb diff --git a/go.sum b/go.sum index 646a7a9e90..898e0cc398 100644 --- a/go.sum +++ b/go.sum @@ -139,34 +139,34 @@ github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCd github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= github.com/aws/aws-sdk-go-v2/config v1.29.6 h1:fqgqEKK5HaZVWLQoLiC9Q+xDlSp+1LYidp6ybGE2OGg= github.com/aws/aws-sdk-go-v2/config v1.29.6/go.mod h1:Ft+WLODzDQmCTHDvqAH1JfC2xxbZ0MxpZAcJqmE1LTQ= -github.com/aws/aws-sdk-go-v2/credentials v1.17.59 h1:9btwmrt//Q6JcSdgJOLI98sdr5p7tssS9yAsGe8aKP4= -github.com/aws/aws-sdk-go-v2/credentials v1.17.59/go.mod h1:NM8fM6ovI3zak23UISdWidyZuI1ghNe2xjzUZAyT+08= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.28 h1:KwsodFKVQTlI5EyhRSugALzsV6mG/SGrdjlMXSZSdso= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.28/go.mod h1:EY3APf9MzygVhKuPXAc5H+MkGb8k/DOSQjWS0LgkKqI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32 h1:BjUcr3X3K0wZPGFg2bxOWW3VPN8rkE3/61zhP+IHviA= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32/go.mod h1:80+OGC/bgzzFFTUmcuwD0lb4YutwQeKLFpmt6hoWapU= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32 h1:m1GeXHVMJsRsUAqG6HjZWx9dj7F5TR+cF1bjyfYyBd4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32/go.mod h1:IitoQxGfaKdVLNg0hD8/DXmAqNy0H4K2H2Sf91ti8sI= +github.com/aws/aws-sdk-go-v2/credentials v1.17.60 h1:1dq+ELaT5ogfmqtV1eocq8SpOK1NRsuUfmhQtD/XAh4= +github.com/aws/aws-sdk-go-v2/credentials v1.17.60/go.mod h1:HDes+fn/xo9VeszXqjBVkxOo/aUy8Mc6QqKvZk32GlE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.29 h1:JO8pydejFKmGcUNiiwt75dzLHRWthkwApIvPoyUtXEg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.29/go.mod h1:adxZ9i9DRmB8zAT0pO0yGnsmu0geomp5a3uq5XpgOJ8= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.33 h1:knLyPMw3r3JsU8MFHWctE4/e2qWbPaxDYLlohPvnY8c= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.33/go.mod h1:EBp2HQ3f+XCB+5J+IoEbGhoV7CpJbnrsd4asNXmTL0A= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.33 h1:K0+Ne08zqti8J9jwENxZ5NoUyBnaFDTu3apwQJWrwwA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.33/go.mod h1:K97stwwzaWzmqxO8yLGHhClbVW1tC6VT1pDLk1pGrq4= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 h1:OIHj/nAhVzIXGzbAE+4XmZ8FPvro3THr6NlqErJc3wY= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32/go.mod h1:LiBEsDo34OJXqdDlRGsilhlIiXR7DL+6Cx2f4p1EgzI= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0 h1:kT2WeWcFySdYpPgyqJMSUE7781Qucjtn6wBvrgm9P+M= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0/go.mod h1:WYH1ABybY7JK9TITPnk6ZlP7gQB8psI4c9qDmMsnLSA= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 h1:SYVGSFQHlchIcy6e7x12bsrxClCXSP5et8cqVhL8cuw= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13/go.mod h1:kizuDaLX37bG5WZaoxGPQR/LNFXpxp0vsUnqfkWXfNE= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.14 h1:2scbY6//jy/s8+5vGrk7l1+UtHl0h9A4MjOO2k/TM2E= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.14/go.mod h1:bRpZPHZpSe5YRHmPfK3h1M7UBFCn2szHzyx0rw04zro= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13 h1:OBsrtam3rk8NfBEq7OLOMm5HtQ9Yyw32X4UQMya/wjw= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13/go.mod h1:3U4gFA5pmoCOja7aq4nSaIAGbaOHv2Yl2ug018cmC+Q= github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1 h1:d4ZG8mELlLeUWFBMCqPtRfEP3J6aQgg/KTC9jLSlkMs= github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1/go.mod h1:uZoEIR6PzGOZEjgAZE4hfYfsqK2zOHhq68JLKEvvXj4= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 h1:/eE3DogBjYlvlbhd2ssWyeuovWunHLxfgw3s/OJa4GQ= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.15/go.mod h1:2PCJYpi7EKeA5SkStAmZlF6fi0uUABuhtF8ILHjGc3Y= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 h1:M/zwXiL2iXUrHputuXgmO94TVNmcenPHxgLXLutodKE= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14/go.mod h1:RVwIw3y/IqxC2YEXSIkAzRDdEU1iRabDPaYjpGCbCGQ= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.14 h1:TzeR06UCMUq+KA3bDkujxK1GVGy+G8qQN/QVYzGLkQE= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.14/go.mod h1:dspXf/oYWGWo6DEvj98wpaTeqt5+DMidZD0A9BYTizc= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.16 h1:YV6xIKDJp6U7YB2bxfud9IENO1LRpGhe2Tv/OKtPrOQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.16/go.mod h1:DvbmMKgtpA6OihFJK13gHMZOZrCHttz8wPHGKXqU+3o= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.15 h1:kMyK3aKotq1aTBsj1eS8ERJLjqYRRRcsmP33ozlCvlk= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.15/go.mod h1:5uPZU7vSNzb8Y0dm75xTikinegPYK3uJmIHQZFq5Aqo= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.15 h1:ht1jVmeeo2anR7zDiYJLSnRYnO/9NILXXu42FP3rJg0= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.15/go.mod h1:xWZ5cOiFe3czngChE4LhCBqUxNwgfwndEF7XlYP/yD8= github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= From e4427126cb97813d5267a0f4618931447606aeb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 19:09:08 -0500 Subject: [PATCH 76/87] deps: bump actions/upload-artifact from 4.6.0 to 4.6.1 (#1382) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.1.
Release notes

Sourced from actions/upload-artifact's releases.

v4.6.1

What's Changed

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.1

Commits
  • 4cec3d8 Merge pull request #673 from actions/yacaovsnc/artifact_2.2.2
  • e9fad96 license cache update for artifact
  • b26fd06 Update to use artifact 2.2.2 package
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=4.6.0&new-version=4.6.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index dbea9d30f0..9b7ee48126 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -36,7 +36,7 @@ jobs: make test-image IMAGE_NAMESPACE=${{ github.repository }} PLATFORM=linux/amd64 - name: Upload Artifacts - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: coverage-files path: ./artifacts/coverage* From 7d3dff3869e16a2c94a911fa03fcac94246ecb38 Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Tue, 25 Feb 2025 08:27:10 +0000 Subject: [PATCH 77/87] test(release): Add release validation workflow (#1380) # Description Add workflow to validate retina release. This workflow is dependent on successful run of images and helm release workflows. The job includes steps which validate the following: 1. All retina images can be pulled 2. Helm chart can be pulled 3. `kubectl krew install retina` works 4. go package version exist ## Related Issue If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request. ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/Contributing/overview). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed * I have tested the workflow dependency in my own fork * I have tested every job step in my own fork using latest tag v0.0.26 ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- .github/workflows/release-validation.yaml | 72 +++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/release-validation.yaml diff --git a/.github/workflows/release-validation.yaml b/.github/workflows/release-validation.yaml new file mode 100644 index 0000000000..03ff8503de --- /dev/null +++ b/.github/workflows/release-validation.yaml @@ -0,0 +1,72 @@ +name: Release Validation + +on: + workflow_run: + workflows: + - Release Retina Charts + - Release Retina Container Images + types: + - completed + +jobs: + release_validation: + name: Release Validation + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4.2.2 + + - name: Get latest tag + id: get_latest_tag + run: | + TAG=$(curl -s https://api.github.com/repos/microsoft/retina/releases | jq -r '.[0].name') + echo "TAG=$TAG" >> $GITHUB_ENV + + - name: Test Docker images pull + run: | + TAG=${{ env.TAG }} + images=( + "retina-agent" + "retina-init" + "retina-operator" + "kubectl-retina" + "retina-shell" + ) + for image in "${images[@]}"; do + echo "Checking image: ghcr.io/microsoft/$image:$TAG" + if curl --head --silent --fail "https://ghcr.io/v2/microsoft/$image/manifests/$TAG"; then + docker pull "ghcr.io/microsoft/$image:$TAG" + else + echo "Image ghcr.io/microsoft/$image:$TAG does not exist or you do not have access." + fi + done + + - name: Test Helm chart pull + run: | + helm pull oci://ghcr.io/microsoft/retina/charts/retina-hubble --version ${{ env.TAG }} + helm pull oci://ghcr.io/microsoft/retina/charts/retina --version ${{ env.TAG }} + + - name: Setup kind cluster + uses: helm/kind-action@v1.12.0 + + # krew does not support installing a specific verison + # so if this step fails it means there was something wrong + # with the krew index update as part of the release + - name: Test krew install retina + run: | + ( + set -x; cd "$(mktemp -d)" && + OS="$(uname | tr '[:upper:]' '[:lower:]')" && + ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && + KREW="krew-${OS}_${ARCH}" && + curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && + tar zxvf "${KREW}.tar.gz" && + ./"${KREW}" install krew + echo 'export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"' >> ~/.bashrc + source ~/.bashrc + kubectl krew install retina + ) + + - name: Check Go package version + run: | + go list -m github.com/microsoft/retina@{{ env.TAG }} From b19b0ac946b6e97bb4a1b496835f46af80028e00 Mon Sep 17 00:00:00 2001 From: Alex Castilio Date: Tue, 25 Feb 2025 09:34:56 +0000 Subject: [PATCH 78/87] test: enable heartbeat in scale test (#1345) # Description Enable heartbeat in scale test. ## Related Issue #1040 ## Checklist - [ ] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [ ] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [ ] I have correctly attributed the author(s) of the code. - [ ] I have tested the changes locally. - [ ] I have followed the project's style guidelines. - [ ] I have updated the documentation, if necessary. - [ ] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Please add any relevant screenshots or GIFs to showcase the changes made. ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --------- Signed-off-by: Alex Castilio dos Santos --- test/e2e/framework/kubernetes/install-retina-helm.go | 6 ++++++ test/e2e/jobs/jobs.go | 3 ++- test/e2e/scale_test.go | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/test/e2e/framework/kubernetes/install-retina-helm.go b/test/e2e/framework/kubernetes/install-retina-helm.go index ba74d64eac..5b03d65ccb 100644 --- a/test/e2e/framework/kubernetes/install-retina-helm.go +++ b/test/e2e/framework/kubernetes/install-retina-helm.go @@ -33,6 +33,7 @@ type InstallHelmChart struct { KubeConfigFilePath string ChartPath string TagEnv string + EnableHeartbeat bool } func (i *InstallHelmChart) Run() error { @@ -85,6 +86,11 @@ func (i *InstallHelmChart) Run() error { }, } + if i.EnableHeartbeat { + chart.Values["enableTelemetry"] = i.EnableHeartbeat + chart.Values["logLevel"] = "error" + } + chart.Values["image"].(map[string]interface{})["tag"] = tag chart.Values["image"].(map[string]interface{})["pullPolicy"] = "Always" chart.Values["operator"].(map[string]interface{})["tag"] = tag diff --git a/test/e2e/jobs/jobs.go b/test/e2e/jobs/jobs.go index 81b64118a0..f08ad80737 100644 --- a/test/e2e/jobs/jobs.go +++ b/test/e2e/jobs/jobs.go @@ -72,7 +72,7 @@ func DeleteTestInfra(subID, rg, location string, deleteInfra bool) *types.Job { return job } -func InstallRetina(kubeConfigFilePath, chartPath string) *types.Job { +func InstallRetina(kubeConfigFilePath, chartPath string, enableHeartBeat bool) *types.Job { job := types.NewJob("Install and test Retina with basic metrics") job.AddStep(&kubernetes.InstallHelmChart{ @@ -81,6 +81,7 @@ func InstallRetina(kubeConfigFilePath, chartPath string) *types.Job { KubeConfigFilePath: kubeConfigFilePath, ChartPath: chartPath, TagEnv: generic.DefaultTagEnv, + EnableHeartbeat: enableHeartBeat, }, nil) return job diff --git a/test/e2e/scale_test.go b/test/e2e/scale_test.go index 3922971c73..817b34b853 100644 --- a/test/e2e/scale_test.go +++ b/test/e2e/scale_test.go @@ -90,7 +90,7 @@ func TestE2ERetina_Scale(t *testing.T) { opt.AdditionalTelemetryProperty["clusterFqdn"] = fqdn // Install Retina - installRetina := types.NewRunner(t, jobs.InstallRetina(common.KubeConfigFilePath(rootDir), common.RetinaChartPath(rootDir))) + installRetina := types.NewRunner(t, jobs.InstallRetina(common.KubeConfigFilePath(rootDir), common.RetinaChartPath(rootDir), true)) installRetina.Run(ctx) scale := types.NewRunner(t, jobs.ScaleTest(&opt)) From 158b9cde9b869beee47dfd403adac3c5376da1ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 17:41:47 -0500 Subject: [PATCH 79/87] deps: bump sigs.k8s.io/cloud-provider-azure/pkg/azclient from 0.5.0 to 0.5.2 (#1384) Bumps [sigs.k8s.io/cloud-provider-azure/pkg/azclient](https://github.com/kubernetes-sigs/cloud-provider-azure) from 0.5.0 to 0.5.2.
Commits
  • e02283c build(deps): bump golang.org/x/crypto in /pkg/azclient in the all group (#8402)
  • efd34de fix: add http timeout to avoid connection stuck (#8383)
  • debe0f5 build(deps): bump sigs.k8s.io/cloud-provider-azure/pkg/azclient/cache (#8367)
  • d18517b build(deps): bump k8s.io/component-base (#8313)
  • 4cc9f2b build(deps): bump the all group in /kubetest2-aks with 2 updates (#8303)
  • b4aebbe build(deps): bump sigs.k8s.io/cloud-provider-azure/pkg/azclient (#8368)
  • 923e5b2 build(deps): bump github.com/spf13/cobra (#8359)
  • 19af51f build(deps): bump k8s.io/client-go (#8317)
  • e0d4d23 build(deps): bump the all group across 1 directory with 13 updates (#8357)
  • 7b709a0 build(deps): bump the all group (#8318)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigs.k8s.io/cloud-provider-azure/pkg/azclient&package-manager=go_modules&previous-version=0.5.0&new-version=0.5.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 01d713c5e6..388c746e74 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/spf13/cobra v1.9.1 go.uber.org/zap v1.27.0 k8s.io/client-go v0.30.3 - sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.0 + sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.2 sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 ) @@ -224,7 +224,7 @@ require ( go.starlark.net v0.0.0-20230814145427-12f4cb8177e4 // indirect go.uber.org/dig v1.17.1 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect - golang.org/x/crypto v0.33.0 // indirect + golang.org/x/crypto v0.34.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/time v0.10.0 // indirect diff --git a/go.sum b/go.sum index 898e0cc398..c1eabd493b 100644 --- a/go.sum +++ b/go.sum @@ -946,8 +946,8 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.34.0 h1:+/C6tk6rf/+t5DhUketUbD1aNGqiSX3j15Z6xuIDlBA= +golang.org/x/crypto v0.34.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= @@ -1224,8 +1224,8 @@ k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJ k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.0 h1:OQOL3+xhy8ZXr9CUAre3g22NFTWQ8m6E+GEOvGR9DKY= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.0/go.mod h1:hJBb8wrJacIpnViSbKvyA/5C9oAi2pM9bGjkI43+tYE= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.2 h1:w/GkZK6zrRVOp2KiCseJGYKLclvBwpnt8alLNnL/6Js= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.2/go.mod h1:v+L8fSlY6pMNfQlGLFlzEhnM6LCO1eRTMEq3egT+4eo= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 h1:jeEFfNxq9uJqkkxhd6WaWNsKNjKhJBcVuWTSgJoXXHM= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20/go.mod h1:5evhIg+6KdZLaezvJPN1rMcn/EY+GypQh/7gNZHD97Y= sigs.k8s.io/controller-runtime v0.18.5 h1:nTHio/W+Q4aBlQMgbnC5hZb4IjIidyrizMai9P6n4Rk= From a1e63a812b2ba974df00139911c06ebe1f6019f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 20:53:04 -0500 Subject: [PATCH 80/87] deps: bump sigstore/cosign-installer from 3.8.0 to 3.8.1 (#1378) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.8.0 to 3.8.1.
Release notes

Sourced from sigstore/cosign-installer's releases.

v3.8.1

What's Changed

Full Changelog: https://github.com/sigstore/cosign-installer/compare/v3...v3.8.1

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigstore/cosign-installer&package-manager=github_actions&previous-version=3.8.0&new-version=3.8.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release-charts.yaml | 2 +- .github/workflows/release-images.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release-charts.yaml b/.github/workflows/release-charts.yaml index 883cd67125..af71392d4e 100644 --- a/.github/workflows/release-charts.yaml +++ b/.github/workflows/release-charts.yaml @@ -27,7 +27,7 @@ jobs: id: install - name: Install Cosign - uses: sigstore/cosign-installer@v3.8.0 + uses: sigstore/cosign-installer@v3.8.1 - name: Log in to registry (Helm for pushing chart, Docker for signing and push signature) run: | diff --git a/.github/workflows/release-images.yaml b/.github/workflows/release-images.yaml index 8e2f28c1c2..be1ed87095 100644 --- a/.github/workflows/release-images.yaml +++ b/.github/workflows/release-images.yaml @@ -32,7 +32,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.8.0 + uses: sigstore/cosign-installer@v3.8.1 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -78,7 +78,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.8.0 + uses: sigstore/cosign-installer@v3.8.1 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -124,7 +124,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.8.0 + uses: sigstore/cosign-installer@v3.8.1 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -169,7 +169,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.8.0 + uses: sigstore/cosign-installer@v3.8.1 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -212,7 +212,7 @@ jobs: - run: go version - name: Install Cosign - uses: sigstore/cosign-installer@v3.8.0 + uses: sigstore/cosign-installer@v3.8.1 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -260,7 +260,7 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Install Cosign - uses: sigstore/cosign-installer@v3.8.0 + uses: sigstore/cosign-installer@v3.8.1 - name: Log in to registry run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin From 99dd881de6258890cbc5fcdc5680992f2618fff8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2025 01:10:34 -0500 Subject: [PATCH 81/87] deps: bump github.com/google/go-cmp from 0.6.0 to 0.7.0 (#1383) Bumps [github.com/google/go-cmp](https://github.com/google/go-cmp) from 0.6.0 to 0.7.0.
Release notes

Sourced from github.com/google/go-cmp's releases.

v0.7.0

New API:

  • (#367) Support compare functions with SortSlices and SortMaps

Panic messaging:

  • (#370) Detect proto.Message types when failing to export a field
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/google/go-cmp&package-manager=go_modules&previous-version=0.6.0&new-version=0.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 388c746e74..8330c3b80e 100644 --- a/go.mod +++ b/go.mod @@ -248,7 +248,7 @@ require ( github.com/go-logr/logr v1.4.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/go-cmp v0.6.0 + github.com/google/go-cmp v0.7.0 github.com/google/gofuzz v1.2.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/json-iterator/go v1.1.12 // indirect diff --git a/go.sum b/go.sum index c1eabd493b..2e8c1c5022 100644 --- a/go.sum +++ b/go.sum @@ -442,8 +442,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= From af8de2c3515c05711c957c794e800c7a79d089f3 Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Wed, 26 Feb 2025 16:30:58 +0000 Subject: [PATCH 82/87] test(release): Fix workflow for release validation. (#1392) # Description * Use array format to define workflow names for readability * Enclose in double-quotes to prevent trailing space issues * Fix docker pull, simplify step and just pull images * Fix krew index step, export PATH after krew installation * Fix issue with TAG in go package version check ## Related Issue * Related to PR https://github.com/microsoft/retina/pull/1380 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/Contributing/overview). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Test on upstream `test-sr` branch ![image](https://github.com/user-attachments/assets/72e6f252-a8d2-4005-9492-e9a317d6b637) Link to job run: https://github.com/microsoft/retina/actions/runs/13548239168/job/37865147112 ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- .github/workflows/release-validation.yaml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release-validation.yaml b/.github/workflows/release-validation.yaml index 03ff8503de..45f303f9c5 100644 --- a/.github/workflows/release-validation.yaml +++ b/.github/workflows/release-validation.yaml @@ -2,9 +2,7 @@ name: Release Validation on: workflow_run: - workflows: - - Release Retina Charts - - Release Retina Container Images + workflows: ["Release Retina Charts", "Release Retina Container Images"] types: - completed @@ -33,12 +31,7 @@ jobs: "retina-shell" ) for image in "${images[@]}"; do - echo "Checking image: ghcr.io/microsoft/$image:$TAG" - if curl --head --silent --fail "https://ghcr.io/v2/microsoft/$image/manifests/$TAG"; then - docker pull "ghcr.io/microsoft/$image:$TAG" - else - echo "Image ghcr.io/microsoft/$image:$TAG does not exist or you do not have access." - fi + docker pull "ghcr.io/microsoft/retina/$image:$TAG" done - name: Test Helm chart pull @@ -62,11 +55,11 @@ jobs: curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && tar zxvf "${KREW}.tar.gz" && ./"${KREW}" install krew - echo 'export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"' >> ~/.bashrc - source ~/.bashrc + export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" kubectl krew install retina ) - name: Check Go package version run: | - go list -m github.com/microsoft/retina@{{ env.TAG }} + TAG=${{ env.TAG }} + go list -m "github.com/microsoft/retina@${TAG}" From caa7f38fa944df9553fda912fe6d95d21997210c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2025 16:22:35 -0500 Subject: [PATCH 83/87] deps: bump github.com/aws/aws-sdk-go-v2/config from 1.29.6 to 1.29.7 (#1377) Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.29.6 to 1.29.7.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/config&package-manager=go_modules&previous-version=1.29.6&new-version=1.29.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 8330c3b80e..da050c71ef 100644 --- a/go.mod +++ b/go.mod @@ -51,7 +51,7 @@ require ( github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.29 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.33 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.33 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0 // indirect @@ -290,7 +290,7 @@ require ( github.com/Microsoft/hcsshim v0.12.0-rc.3 github.com/Sytten/logrus-zap-hook v0.1.0 github.com/aws/aws-sdk-go-v2 v1.36.2 - github.com/aws/aws-sdk-go-v2/config v1.29.6 + github.com/aws/aws-sdk-go-v2/config v1.29.7 github.com/aws/aws-sdk-go-v2/credentials v1.17.60 github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 diff --git a/go.sum b/go.sum index 2e8c1c5022..23b107edf0 100644 --- a/go.sum +++ b/go.sum @@ -137,8 +137,8 @@ github.com/aws/aws-sdk-go-v2 v1.36.2 h1:Ub6I4lq/71+tPb/atswvToaLGVMxKZvjYDVOWEEx github.com/aws/aws-sdk-go-v2 v1.36.2/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCdoiQp2uZ9k1LsZvmAnoTBeZPXom0= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= -github.com/aws/aws-sdk-go-v2/config v1.29.6 h1:fqgqEKK5HaZVWLQoLiC9Q+xDlSp+1LYidp6ybGE2OGg= -github.com/aws/aws-sdk-go-v2/config v1.29.6/go.mod h1:Ft+WLODzDQmCTHDvqAH1JfC2xxbZ0MxpZAcJqmE1LTQ= +github.com/aws/aws-sdk-go-v2/config v1.29.7 h1:71nqi6gUbAUiEQkypHQcNVSFJVUFANpSeUNShiwWX2M= +github.com/aws/aws-sdk-go-v2/config v1.29.7/go.mod h1:yqJQ3nh2HWw/uxd56bicyvmDW4KSc+4wN6lL8pYjynU= github.com/aws/aws-sdk-go-v2/credentials v1.17.60 h1:1dq+ELaT5ogfmqtV1eocq8SpOK1NRsuUfmhQtD/XAh4= github.com/aws/aws-sdk-go-v2/credentials v1.17.60/go.mod h1:HDes+fn/xo9VeszXqjBVkxOo/aUy8Mc6QqKvZk32GlE= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.29 h1:JO8pydejFKmGcUNiiwt75dzLHRWthkwApIvPoyUtXEg= @@ -147,8 +147,8 @@ github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.33 h1:knLyPMw3r3JsU8MFH github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.33/go.mod h1:EBp2HQ3f+XCB+5J+IoEbGhoV7CpJbnrsd4asNXmTL0A= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.33 h1:K0+Ne08zqti8J9jwENxZ5NoUyBnaFDTu3apwQJWrwwA= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.33/go.mod h1:K97stwwzaWzmqxO8yLGHhClbVW1tC6VT1pDLk1pGrq4= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 h1:OIHj/nAhVzIXGzbAE+4XmZ8FPvro3THr6NlqErJc3wY= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32/go.mod h1:LiBEsDo34OJXqdDlRGsilhlIiXR7DL+6Cx2f4p1EgzI= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= From 2fb09caf70c19792e434c041579bab9175ba328c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2025 21:04:58 -0500 Subject: [PATCH 84/87] deps: bump github.com/go-jose/go-jose/v3 from 3.0.3 to 3.0.4 in the go_modules group (#1393) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the go_modules group with 1 update: [github.com/go-jose/go-jose/v3](https://github.com/go-jose/go-jose). Updates `github.com/go-jose/go-jose/v3` from 3.0.3 to 3.0.4
Release notes

Sourced from github.com/go-jose/go-jose/v3's releases.

v3.0.4

What's Changed

Backport fix for GHSA-c6gw-w398-hv78 CVE-2025-27144 go-jose/go-jose#174

Full Changelog: https://github.com/go-jose/go-jose/compare/v3.0.3...v3.0.4

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-jose/go-jose/v3&package-manager=go_modules&previous-version=3.0.3&new-version=3.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/retina/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index da050c71ef..47843e0d5b 100644 --- a/go.mod +++ b/go.mod @@ -103,7 +103,7 @@ require ( github.com/fvbommel/sortorder v1.1.0 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.3 // indirect + github.com/go-jose/go-jose/v3 v3.0.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.23.0 // indirect github.com/go-openapi/errors v0.22.0 // indirect diff --git a/go.sum b/go.sum index 23b107edf0..929740ebe9 100644 --- a/go.sum +++ b/go.sum @@ -337,8 +337,8 @@ github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxI github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= -github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= -github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= +github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY= +github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= From 81dfd2094900d8f403bd2adfa662d637c580da7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2025 23:38:05 -0500 Subject: [PATCH 85/87] deps: bump sigs.k8s.io/cloud-provider-azure/pkg/azclient from 0.5.2 to 0.5.3 (#1388) Bumps [sigs.k8s.io/cloud-provider-azure/pkg/azclient](https://github.com/kubernetes-sigs/cloud-provider-azure) from 0.5.2 to 0.5.3.
Commits
  • 3bb0e92 build(deps): bump the all group across 1 directory with 3 updates (#8443)
  • 497c46d build(deps): bump sigs.k8s.io/cloud-provider-azure/pkg/azclient (#8435)
  • 695b934 build(deps): bump the all group across 1 directory with 2 updates (#8442)
  • a8fe413 Merge pull request #8426 from MartinForReal/shafan/fixlinter
  • c08e8f3 fix linter config
  • 01e8d0f Merge pull request #8407 from kubernetes-sigs/dependabot/github_actions/all-b...
  • 78638bd send patch vm requests to channel (#8268)
  • 5372e53 build(deps): bump sigs.k8s.io/cloud-provider-azure/pkg/azclient (#8404)
  • 167e477 build(deps): bump the all group across 1 directory with 6 updates
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigs.k8s.io/cloud-provider-azure/pkg/azclient&package-manager=go_modules&previous-version=0.5.2&new-version=0.5.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 47843e0d5b..d3a04d6ede 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/spf13/cobra v1.9.1 go.uber.org/zap v1.27.0 k8s.io/client-go v0.30.3 - sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.2 + sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.3 sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 ) @@ -37,7 +37,7 @@ require ( github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.4.0 // indirect github.com/BurntSushi/toml v1.3.2 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect @@ -224,7 +224,7 @@ require ( go.starlark.net v0.0.0-20230814145427-12f4cb8177e4 // indirect go.uber.org/dig v1.17.1 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect - golang.org/x/crypto v0.34.0 // indirect + golang.org/x/crypto v0.35.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/time v0.10.0 // indirect @@ -338,10 +338,10 @@ require ( require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v6 v6.3.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v6 v6.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v6 v6.4.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/msi/armmsi v1.2.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6 v6.2.0 // indirect - github.com/Azure/msi-dataplane v0.4.0 // indirect + github.com/Azure/msi-dataplane v0.4.1 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect diff --git a/go.sum b/go.sum index 929740ebe9..844064c159 100644 --- a/go.sum +++ b/go.sum @@ -31,8 +31,8 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontai github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 v4.8.0/go.mod h1:gYq8wyDgv6JLhGbAU6gg8amCPgQWRE+aCvrV2gyzdfs= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v5 v5.0.0 h1:5n7dPVqsWfVKw+ZiEKSd3Kzu7gwBkbEBkeXb8rgaE9Q= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v5 v5.0.0/go.mod h1:HcZY0PHPo/7d75p99lB6lK0qYOP4vLRJUBpiehYXtLQ= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v6 v6.3.0 h1:4ZTvMq5AWtRIPM06RzdfKwKyVJ0eUOfm4QUBVDQFqQ4= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v6 v6.3.0/go.mod h1:drbnYtukMoZqUQq9hJASf41w3RB4VoTJPoPpe+XDHPU= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v6 v6.4.0 h1:Fq2CrvgmaYGTAL4LdKF/rmGCMXb2n/61LwMVOlHj5Dc= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v6 v6.4.0/go.mod h1:jEpP2jjzNDVWS0Aay8nyoyVIK/MQBSX2NQv6r9FcVMk= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dashboard/armdashboard v1.2.0 h1:MRPU8Bge2f9tkfG3PCr4vEnqXl8XOSjlhuK3l+8Hvkc= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dashboard/armdashboard v1.2.0/go.mod h1:xYrOYxajQvXMlp6M1E3amlaqPDXspyJxmjqTsGo6Jmw= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -83,14 +83,14 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/Azure/msi-dataplane v0.4.0 h1:lofdhX74IgMEvIe6cw8tdwr3zfZkdk77TXetFv0/By8= -github.com/Azure/msi-dataplane v0.4.0/go.mod h1:y+euhWbc8/wgVM1hyJLQf4DnByegnwxAcDV0OKNM9+k= +github.com/Azure/msi-dataplane v0.4.1 h1:nKTPIyNbNHljQGobHm5BX/nnTmFSe56wxGIykdlZK1g= +github.com/Azure/msi-dataplane v0.4.1/go.mod h1:yAfxdJyvcnvSDfSyOFV9qm4fReEQDl+nZLGeH2ZWSmw= github.com/Azure/perf-tests/network/benchmarks/netperf v0.0.0-20241008140716-395a79947d2c h1:TMXh4Z1Z98o4Ob7JYhiNHocITQXHqJSsrB5ts4uwKl8= github.com/Azure/perf-tests/network/benchmarks/netperf v0.0.0-20241008140716-395a79947d2c/go.mod h1:jeV6A8q9uDVDwffTt5KBk+5g7bXfpEImYW6qLKn0E+I= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3 h1:H5xDQaE3XowWfhZRUpnfC+rGZMEVoSiji+b+/HFAPU4= -github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.4.0 h1:MUkXAnvvDHgvPItl0nBj0hgk0f7hnnQbGm0h0+YxbN4= +github.com/AzureAD/microsoft-authentication-library-for-go v1.4.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= @@ -947,8 +947,8 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.34.0 h1:+/C6tk6rf/+t5DhUketUbD1aNGqiSX3j15Z6xuIDlBA= -golang.org/x/crypto v0.34.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= @@ -1225,8 +1225,8 @@ k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJ k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.2 h1:w/GkZK6zrRVOp2KiCseJGYKLclvBwpnt8alLNnL/6Js= -sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.2/go.mod h1:v+L8fSlY6pMNfQlGLFlzEhnM6LCO1eRTMEq3egT+4eo= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.3 h1:bFkLaehTS9c2qw3ujvPdEsa2z3X82OCGGRgAmzEdxK4= +sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.3/go.mod h1:1VEz2aRXDiGDLjbwcI2Zu3Tk43MZ4fFsGNFhsgU+9q8= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20 h1:jeEFfNxq9uJqkkxhd6WaWNsKNjKhJBcVuWTSgJoXXHM= sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.20/go.mod h1:5evhIg+6KdZLaezvJPN1rMcn/EY+GypQh/7gNZHD97Y= sigs.k8s.io/controller-runtime v0.18.5 h1:nTHio/W+Q4aBlQMgbnC5hZb4IjIidyrizMai9P6n4Rk= From 6883d416fe3c97c10572ecc21a93083ab423e782 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2025 23:38:24 -0500 Subject: [PATCH 86/87] deps: bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.76.1 to 1.77.1 (#1374) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.76.1 to 1.77.1.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.76.1&new-version=1.77.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index d3a04d6ede..a52033b2d5 100644 --- a/go.mod +++ b/go.mod @@ -47,16 +47,16 @@ require ( github.com/Microsoft/go-winio v0.6.1 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.10 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.29 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.33 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.33 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.33 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.14 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.14 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.24.16 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.15 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.33.15 // indirect @@ -292,7 +292,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.36.2 github.com/aws/aws-sdk-go-v2/config v1.29.7 github.com/aws/aws-sdk-go-v2/credentials v1.17.60 - github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1 + github.com/aws/aws-sdk-go-v2/service/s3 v1.77.1 github.com/cakturk/go-netstat v0.0.0-20200220111822-e5b49efee7a5 github.com/cilium/cilium v1.16.0-pre.1.0.20240403152809-b9853ecbcaeb github.com/cilium/ebpf v0.16.0 diff --git a/go.sum b/go.sum index 844064c159..a1150c55db 100644 --- a/go.sum +++ b/go.sum @@ -135,8 +135,8 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3d github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go-v2 v1.36.2 h1:Ub6I4lq/71+tPb/atswvToaLGVMxKZvjYDVOWEExOcU= github.com/aws/aws-sdk-go-v2 v1.36.2/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCdoiQp2uZ9k1LsZvmAnoTBeZPXom0= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.10 h1:zAybnyUQXIZ5mok5Jqwlf58/TFE7uvd3IAsa1aF9cXs= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.10/go.mod h1:qqvMj6gHLR/EXWZw4ZbqlPbQUyenf4h82UQUlKc+l14= github.com/aws/aws-sdk-go-v2/config v1.29.7 h1:71nqi6gUbAUiEQkypHQcNVSFJVUFANpSeUNShiwWX2M= github.com/aws/aws-sdk-go-v2/config v1.29.7/go.mod h1:yqJQ3nh2HWw/uxd56bicyvmDW4KSc+4wN6lL8pYjynU= github.com/aws/aws-sdk-go-v2/credentials v1.17.60 h1:1dq+ELaT5ogfmqtV1eocq8SpOK1NRsuUfmhQtD/XAh4= @@ -149,18 +149,18 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.33 h1:K0+Ne08zqti8J9jwEN github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.33/go.mod h1:K97stwwzaWzmqxO8yLGHhClbVW1tC6VT1pDLk1pGrq4= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32 h1:OIHj/nAhVzIXGzbAE+4XmZ8FPvro3THr6NlqErJc3wY= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.32/go.mod h1:LiBEsDo34OJXqdDlRGsilhlIiXR7DL+6Cx2f4p1EgzI= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.33 h1:/frG8aV09yhCVSOEC2pzktflJJO48NwY3xntHBwxHiA= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.33/go.mod h1:8vwASlAcV366M+qxZnjNzCjeastk1Rt1bpSRaGZanGU= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0 h1:kT2WeWcFySdYpPgyqJMSUE7781Qucjtn6wBvrgm9P+M= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.0/go.mod h1:WYH1ABybY7JK9TITPnk6ZlP7gQB8psI4c9qDmMsnLSA= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.1 h1:7SuukGpyIgF5EiAbf1dZRxP+xSnY1WjiHBjL08fjJeE= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.6.1/go.mod h1:k+Vce/8R28tSozjdWphkrNhK8zLmdS9RgiDNZl6p8Rw= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.14 h1:2scbY6//jy/s8+5vGrk7l1+UtHl0h9A4MjOO2k/TM2E= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.14/go.mod h1:bRpZPHZpSe5YRHmPfK3h1M7UBFCn2szHzyx0rw04zro= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13 h1:OBsrtam3rk8NfBEq7OLOMm5HtQ9Yyw32X4UQMya/wjw= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.13/go.mod h1:3U4gFA5pmoCOja7aq4nSaIAGbaOHv2Yl2ug018cmC+Q= -github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1 h1:d4ZG8mELlLeUWFBMCqPtRfEP3J6aQgg/KTC9jLSlkMs= -github.com/aws/aws-sdk-go-v2/service/s3 v1.76.1/go.mod h1:uZoEIR6PzGOZEjgAZE4hfYfsqK2zOHhq68JLKEvvXj4= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.14 h1:fgdkfsxTehqPcIQa24G/Omwv9RocTq2UcONNX/OnrZI= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.14/go.mod h1:wMxQ3OE8fiM8z2YRAeb2J8DLTTWMvRyYYuQOs26AbTQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.77.1 h1:5bI9tJL2Z0FGFtp/LPDv0eyliFBHCn7LAhqpQuL+7kk= +github.com/aws/aws-sdk-go-v2/service/s3 v1.77.1/go.mod h1:njj3tSJONkfdLt4y6X8pyqeM6sJLNZxmzctKKV+n1GM= github.com/aws/aws-sdk-go-v2/service/sso v1.24.16 h1:YV6xIKDJp6U7YB2bxfud9IENO1LRpGhe2Tv/OKtPrOQ= github.com/aws/aws-sdk-go-v2/service/sso v1.24.16/go.mod h1:DvbmMKgtpA6OihFJK13gHMZOZrCHttz8wPHGKXqU+3o= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.15 h1:kMyK3aKotq1aTBsj1eS8ERJLjqYRRRcsmP33ozlCvlk= From 3fdf4a5198ebda3de4abeb0169836696cc23cad3 Mon Sep 17 00:00:00 2001 From: Simone Rodigari <32323373+SRodi@users.noreply.github.com> Date: Thu, 27 Feb 2025 14:11:41 +0000 Subject: [PATCH 87/87] test(multicloud): Add EKS module, demo stack and tests (#1390) # Description * Create EKS module * Create EKS example * Create EKS unit and integration test with retina * Create live/retina-eks to demo multi-cloud * Update docs * Update diagrams * Update Makefile for this sub-project test/multicloud ## Related Issue #1267 ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/Contributing/overview). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed Grafana Hubble DNS dashboard for EKS cluster ![Screenshot_26-2-2025_141028_srodi grafana net](https://github.com/user-attachments/assets/d5e43699-83f9-429f-b7df-127a6e238859) EKS cluster showing AWS nodes and retina logs ![Screenshot 2025-02-26 131742](https://github.com/user-attachments/assets/2bb9ec2c-7b13-40af-b10e-607e02467ffa) ## Additional Notes Add any additional notes or context about the pull request here. --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. --- test/multicloud/Makefile | 12 + test/multicloud/README.md | 33 +- .../{mc.excalidraw => diagram-mc.excalidraw} | 993 ++++++++-- test/multicloud/diagrams/diagram-mc.svg | 4 +- test/multicloud/diagrams/diagram.excalidraw | 1653 +++++++++++++---- test/multicloud/diagrams/diagram.svg | 4 +- .../examples/eks/.terraform.lock.hcl | 20 + test/multicloud/examples/eks/main.tf | 5 + test/multicloud/examples/eks/outputs.tf | 19 + test/multicloud/examples/eks/provider.tf | 13 + test/multicloud/examples/eks/variables.tf | 9 + .../retina-eks/.terraform.lock.hcl | 38 + .../examples/integration/retina-eks/main.tf | 15 + .../integration/retina-eks/outputs.tf | 14 + .../integration/retina-eks/providers.tf | 37 + .../integration/retina-eks/variables.tf | 38 + test/multicloud/image.png | Bin 569348 -> 0 bytes test/multicloud/live/retina-aks/main.tf | 2 + .../live/retina-eks/.terraform.lock.hcl | 84 + test/multicloud/live/retina-eks/locals.tf | 27 + test/multicloud/live/retina-eks/main.tf | 56 + test/multicloud/live/retina-eks/outputs.tf | 3 + test/multicloud/live/retina-eks/providers.tf | 57 + test/multicloud/live/retina-eks/variables.tf | 4 + test/multicloud/live/retina-gke/main.tf | 2 + test/multicloud/modules/eks/main.tf | 230 +++ test/multicloud/modules/eks/outputs.tf | 19 + test/multicloud/modules/eks/provider.tf | 8 + test/multicloud/modules/eks/variables.tf | 9 + test/multicloud/modules/grafana/main.tf | 8 + test/multicloud/modules/grafana/variables.tf | 6 + .../modules/kubernetes-lb/outputs.tf | 4 + .../test/integration/retina_eks_test.go | 76 + test/multicloud/test/unit/eks_test.go | 44 + 34 files changed, 2991 insertions(+), 555 deletions(-) rename test/multicloud/diagrams/{mc.excalidraw => diagram-mc.excalidraw} (66%) create mode 100644 test/multicloud/examples/eks/.terraform.lock.hcl create mode 100644 test/multicloud/examples/eks/main.tf create mode 100644 test/multicloud/examples/eks/outputs.tf create mode 100644 test/multicloud/examples/eks/provider.tf create mode 100644 test/multicloud/examples/eks/variables.tf create mode 100644 test/multicloud/examples/integration/retina-eks/.terraform.lock.hcl create mode 100644 test/multicloud/examples/integration/retina-eks/main.tf create mode 100644 test/multicloud/examples/integration/retina-eks/outputs.tf create mode 100644 test/multicloud/examples/integration/retina-eks/providers.tf create mode 100644 test/multicloud/examples/integration/retina-eks/variables.tf delete mode 100644 test/multicloud/image.png create mode 100644 test/multicloud/live/retina-eks/.terraform.lock.hcl create mode 100644 test/multicloud/live/retina-eks/locals.tf create mode 100644 test/multicloud/live/retina-eks/main.tf create mode 100644 test/multicloud/live/retina-eks/outputs.tf create mode 100644 test/multicloud/live/retina-eks/providers.tf create mode 100644 test/multicloud/live/retina-eks/variables.tf create mode 100644 test/multicloud/modules/eks/main.tf create mode 100644 test/multicloud/modules/eks/outputs.tf create mode 100644 test/multicloud/modules/eks/provider.tf create mode 100644 test/multicloud/modules/eks/variables.tf create mode 100644 test/multicloud/test/integration/retina_eks_test.go create mode 100644 test/multicloud/test/unit/eks_test.go diff --git a/test/multicloud/Makefile b/test/multicloud/Makefile index 64a5e25a10..3f416ea1f6 100644 --- a/test/multicloud/Makefile +++ b/test/multicloud/Makefile @@ -11,7 +11,15 @@ apply: cd live/$(STACK_NAME) && \ tofu apply --auto-approve +check-env-vars: + @if [ -z "$(GRAFANA_AUTH)" ]; then echo "GRAFANA_AUTH is not set"; exit 1; fi + @if [ -z "$(STACK_NAME)" ]; then echo "STACK_NAME is not set"; exit 1; fi + @if [ "$(STACK_NAME)" = "retina-gke" ] && [ -z "$(GOOGLE_APPLICATION_CREDENTIALS)" ]; then echo "GOOGLE_APPLICATION_CREDENTIALS is not set"; exit 1; fi + @if [ "$(STACK_NAME)" = "retina-eks" ] && [ -z "$(AWS_SECRET_ACCESS_KEY)" ]; then echo "AWS_SECRET_ACCESS_KEY is not set"; exit 1; fi + @if [ "$(STACK_NAME)" = "retina-eks" ] && [ -z "$(AWS_ACCESS_KEY_ID)" ]; then echo "AWS_ACCESS_KEY_ID is not set"; exit 1; fi + quick: + @make check-env-vars @make plan @make apply @@ -23,6 +31,10 @@ aks: export STACK_NAME=$(PREFIX)-aks aks: @make quick +eks: export STACK_NAME=$(PREFIX)-eks +eks: + @make quick + kind: export STACK_NAME=$(PREFIX)-kind kind: @make quick diff --git a/test/multicloud/README.md b/test/multicloud/README.md index 287914439d..fc7b2be75e 100644 --- a/test/multicloud/README.md +++ b/test/multicloud/README.md @@ -10,6 +10,7 @@ An example Hubble UI visualization on GKE dataplane v1 (no Cilium). [See GKE net * [aks](./modules/aks/): Deploy Azure Kubernetes Service cluster. * [gke](./modules/gke/): Deploy Google Kubernetes Engine cluster. +* [eks](./modules/eks/): Deploy Elastic Kubernetes Service cluster. * [kind](./modules/kind/): Deploy KIND cluster. * [helm-release](./modules/helm-release/): Deploy a Helm Chart, used to deploy Retina and Prometheus. * [kubernetes-lb](./modules/kubernetes-lb/): Create a Kubernetes Service of type Load Balancer, used to expose Prometheus. @@ -48,6 +49,19 @@ An example Hubble UI visualization on GKE dataplane v1 (no Cilium). [See GKE net export GOOGLE_APPLICATION_CREDENTIALS=/Users/srodi/src/retina/test/multicloud/live/retina-gke/service-key.json ``` +* EKS: + 1. Create an AWS account + 2. Create a user and assign required policies to create VPC, Subnets, Security Groups, IAM roles, EKS and workers + 3. [Install AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) + 4. Create required `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` for the new user + + To deploy an EKS cluster export `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` as env variables. + + ```sh + export AWS_ACCESS_KEY_ID="..." + export AWS_SECRET_ACCESS_KEY="..." + ``` + * Grafana 1. Set up a [Grafana Cloud free account](https://grafana.com/pricing/) and start an instance. @@ -85,6 +99,12 @@ Format code, initialize OpenTofu, plan and apply the stack to create infra and d make gke ``` +* EKS: + + ```sh + make eks + ``` + * Kind: ```sh @@ -93,13 +113,13 @@ Format code, initialize OpenTofu, plan and apply the stack to create infra and d ### Clean up -To destroy the cluster specify the `STACK_NAME` and run `make clean`. +To destroy the cluster specify the `STACK_NAME` and run `make destroy`. ```sh # destroy AKS and cleanup local state files # set a different stack as needed (i.e. retina-gke, retina-kind) export STACK_NAME=retina-aks -make clean +make destroy ``` ### Test @@ -116,6 +136,7 @@ Resources documentation: * [GKE](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster) * [AKS](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster) +* [EKS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/eks_cluster) * [Kind](https://registry.terraform.io/providers/tehcyx/kind/latest/docs/resources/cluster) * [Helm Release](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) * [Kubernetes LB Service](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/service) @@ -132,12 +153,18 @@ Here is an example on how to import resources for `modules/gke`: # i.e. examples/gke tofu import module.gke.google_container_cluster.gke europe-west2/test-gke-cluster tofu import module.gke.google_service_account.default projects/mc-retina/serviceAccounts/test-gke-service-account@mc-retina.iam.gserviceaccount.com + +# i.e. examples/eks +tofu import module.eks.aws_eks_node_group.node_group mc-test-aks:mc-test-node-group +tofu import module.eks.aws_iam_role.eks_node_group_role mc-test-eks-node-group-role +tofu import module.eks.aws_iam_role_policy_attachment.eks_node_group_AmazonEKS_CNI_Policy "mc-test-eks-node-group-role/arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy" +tofu import module.eks.aws_iam_role_policy_attachment.eks_node_group_AmazonEKSWorkerNodePolicy "mc-test-eks-node-group-role/arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy" ``` >Note: each resource documentation contains a section on how to import resources into the State. [Example for google_container_cluster resource](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_cluster#import). ## Multi-Cloud -The [live/](./live/) directory contains the multi-cloud / multi-cluster stacks to deploy clusters, install Retina, install Prometheus, expose all Prometheus using load blanaces, and configure a Grafana Cloud instance to consume prometheus data sources to visualize multiple cluster in a single Grafana dashboard. +The [live/](./live/) directory contains multi-cloud / multi-cluster stacks to deploy cloud infrastructure, install Retina, install Prometheus, expose Prometheus instance using a load balancer, and configure a Grafana Cloud instance to consume Prometheus data sources to visualize Retina metrics from multiple clusters in a single Grafana dashboard. ![Architecture Diagram](./diagrams/diagram-mc.svg) diff --git a/test/multicloud/diagrams/mc.excalidraw b/test/multicloud/diagrams/diagram-mc.excalidraw similarity index 66% rename from test/multicloud/diagrams/mc.excalidraw rename to test/multicloud/diagrams/diagram-mc.excalidraw index 29933ea48e..251ce67c87 100644 --- a/test/multicloud/diagrams/mc.excalidraw +++ b/test/multicloud/diagrams/diagram-mc.excalidraw @@ -61,16 +61,11 @@ "index": "b31", "roundness": null, "seed": 191534818, - "version": 116, - "versionNonce": 1898409442, + "version": 117, + "versionNonce": 435785280, "isDeleted": false, - "boundElements": [ - { - "type": "text", - "id": "NA8oNuGt4fh3m1DthNwkE" - } - ], - "updated": 1738868692592, + "boundElements": [], + "updated": 1740581739744, "link": null, "locked": false }, @@ -127,7 +122,7 @@ "height": 76.63849765258216, "angle": 0, "strokeColor": "#1e1e1e", - "backgroundColor": "#ffec99", + "backgroundColor": "#d0bfff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", @@ -141,8 +136,8 @@ "index": "b33", "roundness": null, "seed": 438047970, - "version": 122, - "versionNonce": 1168604419, + "version": 123, + "versionNonce": 239807936, "isDeleted": false, "boundElements": [ { @@ -162,7 +157,7 @@ "type": "arrow" } ], - "updated": 1739265694968, + "updated": 1740581586650, "link": null, "locked": false }, @@ -219,7 +214,7 @@ "height": 76.63849765258216, "angle": 0, "strokeColor": "#1e1e1e", - "backgroundColor": "#ffec99", + "backgroundColor": "#96f2d7", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", @@ -233,8 +228,8 @@ "index": "b35", "roundness": null, "seed": 551666786, - "version": 123, - "versionNonce": 1419039171, + "version": 124, + "versionNonce": 1164443072, "isDeleted": false, "boundElements": [ { @@ -250,7 +245,7 @@ "type": "arrow" } ], - "updated": 1739265694968, + "updated": 1740581541941, "link": null, "locked": false }, @@ -419,52 +414,12 @@ "autoResize": true, "lineHeight": 1.25 }, - { - "id": "NA8oNuGt4fh3m1DthNwkE", - "type": "text", - "x": -1919.667890317665, - "y": -4782.864026170268, - "width": 73.51817321777344, - "height": 43.544600938967136, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [ - "8L44eYOYO7FDP2Zg1MlGt", - "fOcHMc9ibAwtyrNzv-fW2" - ], - "frameId": null, - "index": "b3A", - "roundness": null, - "seed": 1403880866, - "version": 190, - "versionNonce": 2063256126, - "isDeleted": false, - "boundElements": [], - "updated": 1738868692592, - "link": null, - "locked": false, - "text": "GKE", - "fontSize": 34.83568075117371, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "top", - "containerId": "d28sVSeqD7ZfcpnCUPhEV", - "originalText": "GKE", - "autoResize": true, - "lineHeight": 1.25 - }, { "id": "CtpnCpFfWLdxLVvedMba5", "type": "text", - "x": -1954.3762787402416, + "x": -1895.3742722094798, "y": -4727.772476874493, - "width": 191.14698791503906, + "width": 73.14297485351562, "height": 43.544600938967136, "angle": 0, "strokeColor": "#1e1e1e", @@ -482,20 +437,20 @@ "index": "b3B", "roundness": null, "seed": 1745653730, - "version": 187, - "versionNonce": 1587314850, + "version": 191, + "versionNonce": 894666304, "isDeleted": false, "boundElements": [], - "updated": 1738868692592, + "updated": 1740581744676, "link": null, "locked": false, - "text": "Deployment", + "text": "GKE", "fontSize": 34.83568075117371, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "A2RHneu8H0fGDdpLB7tBJ", - "originalText": "Deployment", + "originalText": "GKE", "autoResize": true, "lineHeight": 1.25 }, @@ -677,16 +632,11 @@ "index": "b47", "roundness": null, "seed": 1308083810, - "version": 113, - "versionNonce": 1081301630, + "version": 114, + "versionNonce": 380132800, "isDeleted": false, - "boundElements": [ - { - "type": "text", - "id": "i0rUd_n3FWos5cjK1Dnu2" - } - ], - "updated": 1738868731897, + "boundElements": [], + "updated": 1740581756088, "link": null, "locked": false }, @@ -743,7 +693,7 @@ "height": 76.63849765258216, "angle": 0, "strokeColor": "#1e1e1e", - "backgroundColor": "#ffec99", + "backgroundColor": "#d0bfff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", @@ -757,8 +707,8 @@ "index": "b49", "roundness": null, "seed": 463410658, - "version": 120, - "versionNonce": 1020224259, + "version": 121, + "versionNonce": 2134797888, "isDeleted": false, "boundElements": [ { @@ -778,7 +728,7 @@ "type": "arrow" } ], - "updated": 1739265688212, + "updated": 1740581591588, "link": null, "locked": false }, @@ -835,7 +785,7 @@ "height": 76.63849765258216, "angle": 0, "strokeColor": "#1e1e1e", - "backgroundColor": "#ffec99", + "backgroundColor": "#99e9f2", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", @@ -849,8 +799,8 @@ "index": "b4B", "roundness": null, "seed": 1280869730, - "version": 120, - "versionNonce": 1314797507, + "version": 122, + "versionNonce": 915461696, "isDeleted": false, "boundElements": [ { @@ -866,15 +816,15 @@ "type": "arrow" } ], - "updated": 1739265688212, + "updated": 1740581555240, "link": null, "locked": false }, { "id": "u9MMGbZqVWiGYV6ZaSm8e", "type": "rectangle", - "x": -2464.6578684094825, - "y": -4166.047124761817, + "x": -2021.6578684094825, + "y": -4120.047124761817, "width": 181.03667840375587, "height": 98, "angle": 0, @@ -890,8 +840,8 @@ "index": "b4G", "roundness": null, "seed": 1387194402, - "version": 118, - "versionNonce": 109556877, + "version": 295, + "versionNonce": 873930304, "isDeleted": false, "boundElements": [ { @@ -905,9 +855,13 @@ { "id": "DSjqSaeG5wuUW0oTNN6gO", "type": "arrow" + }, + { + "id": "MbgkbwcPZBeP1Q8SAPj_i", + "type": "arrow" } ], - "updated": 1739188783428, + "updated": 1740581689081, "link": null, "locked": false }, @@ -1076,52 +1030,12 @@ "autoResize": true, "lineHeight": 1.25 }, - { - "id": "i0rUd_n3FWos5cjK1Dnu2", - "type": "text", - "x": -2685.0550165418067, - "y": -4782.864026170268, - "width": 66.89585876464844, - "height": 43.544600938967136, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [ - "PaaD7t02Cbaj_dpdXMJsB", - "bt-VhRQhDFqv8jcCszqVa" - ], - "frameId": null, - "index": "b4S", - "roundness": null, - "seed": 1809712418, - "version": 187, - "versionNonce": 1955277694, - "isDeleted": false, - "boundElements": [], - "updated": 1738868731897, - "link": null, - "locked": false, - "text": "AKS", - "fontSize": 34.83568075117371, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "top", - "containerId": "aSvGjP4QbabYEHlnAgE3c", - "originalText": "AKS", - "autoResize": true, - "lineHeight": 1.25 - }, { "id": "nfObjFuMAdQeg4qWRsBsn", "type": "text", - "x": -2723.074562190946, + "x": -2660.7811280478795, "y": -4727.772476874493, - "width": 191.14698791503906, + "width": 66.56011962890625, "height": 43.544600938967136, "angle": 0, "strokeColor": "#1e1e1e", @@ -1139,20 +1053,20 @@ "index": "b4T", "roundness": null, "seed": 501551330, - "version": 184, - "versionNonce": 1303237474, + "version": 198, + "versionNonce": 125652416, "isDeleted": false, "boundElements": [], - "updated": 1738868731897, + "updated": 1740581763579, "link": null, "locked": false, - "text": "Deployment", + "text": "AKS", "fontSize": 34.83568075117371, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "gaSIjLioK91UP6ZKn02GG", - "originalText": "Deployment", + "originalText": "AKS", "autoResize": true, "lineHeight": 1.25 }, @@ -1279,8 +1193,8 @@ { "id": "wOH_Q7yt7xcYe_utGkmP1", "type": "text", - "x": -2442.5792112144404, - "y": -4160.591725700784, + "x": -1999.5792112144404, + "y": -4114.591725700784, "width": 136.87936401367188, "height": 87.08920187793427, "angle": 0, @@ -1296,11 +1210,11 @@ "index": "b4b", "roundness": null, "seed": 251432674, - "version": 188, - "versionNonce": 1864249122, + "version": 360, + "versionNonce": 1608179136, "isDeleted": false, "boundElements": [], - "updated": 1738868618892, + "updated": 1740581675245, "link": null, "locked": false, "text": "Grafana\nCloud", @@ -1316,10 +1230,10 @@ { "id": "cfQ6jN5FceKgSHuAPjtTz", "type": "arrow", - "x": -2466.210263509248, - "y": -4120.408627109235, - "width": 313, - "height": 218, + "x": -2023.2102635092479, + "y": -4073.136811537749, + "width": 756, + "height": 265.2718155714856, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#ffc9c9", @@ -1335,11 +1249,11 @@ "type": 2 }, "seed": 1379029549, - "version": 107, - "versionNonce": 824194339, + "version": 279, + "versionNonce": 1681466816, "isDeleted": false, - "boundElements": null, - "updated": 1739188774980, + "boundElements": [], + "updated": 1740581675245, "link": null, "locked": false, "points": [ @@ -1348,12 +1262,12 @@ 0 ], [ - -236, - -31 + -679, + -78.2718155714856 ], [ - -313, - -218 + -756, + -265.2718155714856 ] ], "lastCommittedPoint": null, @@ -1376,10 +1290,10 @@ { "id": "DSjqSaeG5wuUW0oTNN6gO", "type": "arrow", - "x": -2285.210263509248, - "y": -4119.408627109235, - "width": 285, - "height": 222, + "x": -1946.2102635092479, + "y": -4118.408627109235, + "width": 54, + "height": 223, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#ffc9c9", @@ -1395,11 +1309,11 @@ "type": 2 }, "seed": 1715706051, - "version": 129, - "versionNonce": 1284813517, + "version": 354, + "versionNonce": 1222555072, "isDeleted": false, - "boundElements": null, - "updated": 1739188787635, + "boundElements": [], + "updated": 1740581684447, "link": null, "locked": false, "points": [ @@ -1408,24 +1322,24 @@ 0 ], [ - 238, - -32 + -21, + -76 ], [ - 285, - -222 + -54, + -223 ] ], "lastCommittedPoint": null, "startBinding": { "elementId": "u9MMGbZqVWiGYV6ZaSm8e", - "focus": 0.1568626794957365, + "focus": -0.019066356814829447, "gap": 1, "fixedPoint": null }, "endBinding": { "elementId": "Jt3KXMwuTXW_WUfPAAo20", - "focus": -0.07796598033823895, + "focus": 0.03171224316968111, "gap": 1, "fixedPoint": null }, @@ -1458,7 +1372,7 @@ "version": 65, "versionNonce": 32516963, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1739188798896, "link": null, "locked": false, @@ -1514,7 +1428,7 @@ "version": 77, "versionNonce": 1647813123, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1739188818249, "link": null, "locked": false, @@ -1570,7 +1484,7 @@ "version": 29, "versionNonce": 1038632803, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1739265688212, "link": null, "locked": false, @@ -1626,7 +1540,7 @@ "version": 24, "versionNonce": 909877603, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1739265694968, "link": null, "locked": false, @@ -1656,6 +1570,749 @@ "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false + }, + { + "id": "kpbYHWFv1Lztml7UsTynS", + "type": "rectangle", + "x": -1488.1892467838952, + "y": -4834.864026170268, + "width": 733.8626026995305, + "height": 578.2723004694836, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4i", + "roundness": null, + "seed": 855791168, + "version": 382, + "versionNonce": 1285590592, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "2ftK8yt_m-ZFE946-gSSQ" + } + ], + "updated": 1740581516673, + "link": null, + "locked": false + }, + { + "id": "jLAVYELn3vKA5yxzFCe_f", + "type": "rectangle", + "x": -1453.3535660327216, + "y": -4791.319425231301, + "width": 664.1912411971831, + "height": 491.1830985915493, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4j", + "roundness": null, + "seed": 1155370560, + "version": 381, + "versionNonce": 828100160, + "isDeleted": false, + "boundElements": [], + "updated": 1740581735709, + "link": null, + "locked": false + }, + { + "id": "saipLntxBubbXEiTy0bRE", + "type": "rectangle", + "x": -1226.9012296184028, + "y": -4747.7748242923335, + "width": 259.4986062206573, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4k", + "roundness": null, + "seed": 1720829504, + "version": 382, + "versionNonce": 184253888, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "wcK8jxKnmRpmesI0o25BQ" + }, + { + "id": "bbpCyY5PzxTd-NbDLV1FT", + "type": "arrow" + }, + { + "id": "URdoKtmWlVm_3z0kQ9bny", + "type": "arrow" + } + ], + "updated": 1740581513512, + "link": null, + "locked": false + }, + { + "id": "gW0SxQ2Hn7FDQ-YQRwVnP", + "type": "rectangle", + "x": -1369.2444477815484, + "y": -4584.047124761817, + "width": 254.79034624413146, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#d0bfff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4l", + "roundness": null, + "seed": 889126464, + "version": 388, + "versionNonce": 1831454144, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "v3DmWrrP4u15eDMDVRZ9Z" + }, + { + "id": "bbpCyY5PzxTd-NbDLV1FT", + "type": "arrow" + }, + { + "id": "obM1GQ6gfF1e2xZOVTzIF", + "type": "arrow" + }, + { + "id": "n0PxYaWuMU2XQoE9748Mm", + "type": "arrow" + } + ], + "updated": 1740581626678, + "link": null, + "locked": false + }, + { + "id": "arPsVSDsJQ_I61VuTGpvH", + "type": "rectangle", + "x": -1027.364899659483, + "y": -4584.047124761817, + "width": 149.8206426056338, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4m", + "roundness": null, + "seed": 822425152, + "version": 385, + "versionNonce": 242134592, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "DOZgGAF3uT-_0WBkpu1N9" + }, + { + "id": "URdoKtmWlVm_3z0kQ9bny", + "type": "arrow" + }, + { + "id": "obM1GQ6gfF1e2xZOVTzIF", + "type": "arrow" + } + ], + "updated": 1740581616709, + "link": null, + "locked": false + }, + { + "id": "9UGsr2xk1jhmuwhDIfb0X", + "type": "rectangle", + "x": -1392.3911247181677, + "y": -4420.319425231301, + "width": 301.0837001173709, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#99e9f2", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4n", + "roundness": null, + "seed": 1065643584, + "version": 389, + "versionNonce": 1590480448, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "lE5nywOrEFq7nOhLFUEKL" + }, + { + "id": "n0PxYaWuMU2XQoE9748Mm", + "type": "arrow" + }, + { + "id": "MbgkbwcPZBeP1Q8SAPj_i", + "type": "arrow" + } + ], + "updated": 1740581639143, + "link": null, + "locked": false + }, + { + "id": "bbpCyY5PzxTd-NbDLV1FT", + "type": "arrow", + "x": -1165.115853124319, + "y": -4670.136326639751, + "width": 76.73309495065678, + "height": 75.98685446009404, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4o", + "roundness": { + "type": 2 + }, + "seed": 693937728, + "version": 1122, + "versionNonce": 1762069952, + "isDeleted": false, + "boundElements": [], + "updated": 1740581513512, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -76.73309495065666, + 42.54460093896695 + ], + [ + -76.73309495065678, + 75.98685446009404 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "saipLntxBubbXEiTy0bRE", + "focus": -0.01484424232328711, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "gW0SxQ2Hn7FDQ-YQRwVnP", + "focus": 0.0000025635547945955497, + "gap": 10.102347417840065, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "URdoKtmWlVm_3z0kQ9bny", + "type": "arrow", + "x": -1029.188108753331, + "y": -4670.136326639751, + "width": 76.73309495065587, + "height": 75.98685446009404, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4p", + "roundness": { + "type": 2 + }, + "seed": 460185152, + "version": 1122, + "versionNonce": 1493806656, + "isDeleted": false, + "boundElements": [], + "updated": 1740581513512, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 76.73309495065575, + 42.54460093896695 + ], + [ + 76.73309495065587, + 75.98685446009404 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "saipLntxBubbXEiTy0bRE", + "focus": 0.014844789746759934, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "arPsVSDsJQ_I61VuTGpvH", + "focus": -0.0000058128973611915395, + "gap": 10.102347417840065, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "2ftK8yt_m-ZFE946-gSSQ", + "type": "text", + "x": -1298.6296647944814, + "y": -4829.864026170268, + "width": 354.7434387207031, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4q", + "roundness": null, + "seed": 647501376, + "version": 496, + "versionNonce": 1482642880, + "isDeleted": false, + "boundElements": [], + "updated": 1740581513512, + "link": null, + "locked": false, + "text": "Amazon Web Services", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "kpbYHWFv1Lztml7UsTynS", + "originalText": "Amazon Web Services", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "wcK8jxKnmRpmesI0o25BQ", + "type": "text", + "x": -1130.9718499089531, + "y": -4731.227875935526, + "width": 67.63984680175781, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4s", + "roundness": null, + "seed": 1068992064, + "version": 455, + "versionNonce": 1113650624, + "isDeleted": false, + "boundElements": [], + "updated": 1740581728836, + "link": null, + "locked": false, + "text": "EKS", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "saipLntxBubbXEiTy0bRE", + "originalText": "EKS", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "v3DmWrrP4u15eDMDVRZ9Z", + "type": "text", + "x": -1340.3833322766702, + "y": -4567.500176405009, + "width": 197.068115234375, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4t", + "roundness": null, + "seed": 1668070976, + "version": 452, + "versionNonce": 77798976, + "isDeleted": false, + "boundElements": [], + "updated": 1740581513512, + "link": null, + "locked": false, + "text": "Prometheus", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "gW0SxQ2Hn7FDQ-YQRwVnP", + "originalText": "Prometheus", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "DOZgGAF3uT-_0WBkpu1N9", + "type": "text", + "x": -1007.694942431373, + "y": -4567.500176405009, + "width": 110.48072814941406, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4u", + "roundness": null, + "seed": 1270543936, + "version": 452, + "versionNonce": 1632953792, + "isDeleted": false, + "boundElements": [], + "updated": 1740581513512, + "link": null, + "locked": false, + "text": "Retina", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "arPsVSDsJQ_I61VuTGpvH", + "originalText": "Retina", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "lE5nywOrEFq7nOhLFUEKL", + "type": "text", + "x": -1360.9852533582127, + "y": -4403.772476874493, + "width": 238.27195739746094, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "m2HRV8Zy_PcDGzogMexZd", + "CQDtL02qDThRTQuu44ayI" + ], + "frameId": null, + "index": "b4v", + "roundness": null, + "seed": 2105683520, + "version": 452, + "versionNonce": 925193792, + "isDeleted": false, + "boundElements": [], + "updated": 1740581513512, + "link": null, + "locked": false, + "text": "Load Balancer", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "9UGsr2xk1jhmuwhDIfb0X", + "originalText": "Load Balancer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "obM1GQ6gfF1e2xZOVTzIF", + "type": "arrow", + "x": -1112.2579454341303, + "y": -4542.727875935526, + "width": 86, + "height": 1, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4w", + "roundness": { + "type": 2 + }, + "seed": 1798407744, + "version": 95, + "versionNonce": 528063936, + "isDeleted": false, + "boundElements": null, + "updated": 1740581616711, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 86, + 1 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "gW0SxQ2Hn7FDQ-YQRwVnP", + "focus": 0.03751512608181092, + "gap": 2.1961561032867394, + "fixedPoint": null + }, + "endBinding": { + "elementId": "arPsVSDsJQ_I61VuTGpvH", + "focus": -0.12396380741504817, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "n0PxYaWuMU2XQoE9748Mm", + "type": "arrow", + "x": -1245.2579454341303, + "y": -4421.727875935526, + "width": 1, + "height": 85, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4x", + "roundness": { + "type": 2 + }, + "seed": 1252677184, + "version": 50, + "versionNonce": 1650425280, + "isDeleted": false, + "boundElements": null, + "updated": 1740581626678, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -1, + -85 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "9UGsr2xk1jhmuwhDIfb0X", + "focus": -0.01947966200307908, + "gap": 1.408450704225288, + "fixedPoint": null + }, + "endBinding": { + "elementId": "gW0SxQ2Hn7FDQ-YQRwVnP", + "focus": 0.03807310958507069, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "MbgkbwcPZBeP1Q8SAPj_i", + "type": "arrow", + "x": -1836.2579454341303, + "y": -4069.727875935526, + "width": 594, + "height": 275, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4y", + "roundness": { + "type": 2 + }, + "seed": 977491392, + "version": 630, + "versionNonce": 1583871424, + "isDeleted": false, + "boundElements": null, + "updated": 1740581693999, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 439, + -68 + ], + [ + 594, + -275 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "u9MMGbZqVWiGYV6ZaSm8e", + "focus": 0.25413992416947784, + "gap": 4.363244571596283, + "fixedPoint": null + }, + "endBinding": { + "elementId": "9UGsr2xk1jhmuwhDIfb0X", + "focus": -0.15343285958429365, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false } ], "appState": { diff --git a/test/multicloud/diagrams/diagram-mc.svg b/test/multicloud/diagrams/diagram-mc.svg index 9d27baa8ad..17610e6a4c 100644 --- a/test/multicloud/diagrams/diagram-mc.svg +++ b/test/multicloud/diagrams/diagram-mc.svg @@ -1,2 +1,2 @@ -Google CloudGKEDeploymentPrometheusRetinaLoad BalancerAzureAKSDeploymentPrometheusRetinaLoad BalancerGrafanaCloud \ No newline at end of file +Google CloudGKEPrometheusRetinaLoad BalancerAzureAKSPrometheusRetinaLoad BalancerGrafanaCloudAmazon Web ServicesEKSPrometheusRetinaLoad Balancer \ No newline at end of file diff --git a/test/multicloud/diagrams/diagram.excalidraw b/test/multicloud/diagrams/diagram.excalidraw index 8049513551..e981a8ad94 100644 --- a/test/multicloud/diagrams/diagram.excalidraw +++ b/test/multicloud/diagrams/diagram.excalidraw @@ -6,10 +6,10 @@ { "id": "zghIcLCzAMCMHoPa6KCP5", "type": "rectangle", - "x": 919, + "x": 894, "y": 483, - "width": 286, - "height": 426, + "width": 308, + "height": 582, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#ffec99", @@ -25,8 +25,8 @@ "type": 3 }, "seed": 618936138, - "version": 144, - "versionNonce": 1644653718, + "version": 246, + "versionNonce": 613424576, "isDeleted": false, "boundElements": [ { @@ -42,7 +42,7 @@ "type": "arrow" } ], - "updated": 1737971092328, + "updated": 1740580756785, "link": null, "locked": false }, @@ -50,9 +50,9 @@ "id": "0S628Xmv8YIAFSDx8-05e", "type": "rectangle", "x": 1343, - "y": 443, - "width": 311, - "height": 503, + "y": 392, + "width": 317.0000000000001, + "height": 693.9999999999999, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", @@ -68,8 +68,8 @@ "type": 3 }, "seed": 1054405910, - "version": 48, - "versionNonce": 564948438, + "version": 214, + "versionNonce": 34477632, "isDeleted": false, "boundElements": [ { @@ -83,9 +83,13 @@ { "id": "o_HSEmb0pecqRgBJDEBRp", "type": "arrow" + }, + { + "id": "TxfM-J3QLXhdIlqgtcSp3", + "type": "arrow" } ], - "updated": 1737971037967, + "updated": 1740580682327, "link": null, "locked": false }, @@ -94,8 +98,8 @@ "type": "rectangle", "x": 1854.5, "y": 915.5, - "width": 311, - "height": 365.00000000000006, + "width": 309, + "height": 443, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#b2f2bb", @@ -111,8 +115,8 @@ "type": 3 }, "seed": 1560720842, - "version": 336, - "versionNonce": 747983318, + "version": 379, + "versionNonce": 303891904, "isDeleted": false, "boundElements": [ { @@ -124,7 +128,7 @@ "type": "arrow" } ], - "updated": 1737971057148, + "updated": 1740580796273, "link": null, "locked": false }, @@ -317,8 +321,8 @@ { "id": "9pGuk9pLc645Jva07NwPP", "type": "rectangle", - "x": 1417.08984375, - "y": 503, + "x": 1427.08984375, + "y": 460, "width": 143.453125, "height": 44, "angle": 0, @@ -334,8 +338,8 @@ "index": "b13", "roundness": null, "seed": 1482304918, - "version": 54, - "versionNonce": 1221402454, + "version": 120, + "versionNonce": 18433600, "isDeleted": false, "boundElements": [ { @@ -343,15 +347,15 @@ "id": "n6fgzgLn1UV2wrjYVoVDr" } ], - "updated": 1737970947812, + "updated": 1740580607119, "link": null, "locked": false }, { "id": "nlTAqIR7zMcS6PGUnUiPG", "type": "rectangle", - "x": 1420.06640625, - "y": 704, + "x": 1423.06640625, + "y": 653, "width": 154.921875, "height": 44, "angle": 0, @@ -367,8 +371,8 @@ "index": "b14", "roundness": null, "seed": 1730939606, - "version": 93, - "versionNonce": 1874844694, + "version": 114, + "versionNonce": 1144041024, "isDeleted": false, "boundElements": [ { @@ -376,17 +380,17 @@ "id": "RK06UCyMyn_5XDjMl8d_D" } ], - "updated": 1737970950262, + "updated": 1740580609003, "link": null, "locked": false }, { "id": "fz7IX_5gQKgv9w7KWCF9F", "type": "rectangle", - "x": 1415.05078125, - "y": 796, - "width": 173.296875, - "height": 44, + "x": 1425.05078125, + "y": 722, + "width": 150.29687500000003, + "height": 40, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", @@ -400,8 +404,8 @@ "index": "b15", "roundness": null, "seed": 307249174, - "version": 137, - "versionNonce": 234210442, + "version": 210, + "versionNonce": 1831241280, "isDeleted": false, "boundElements": [ { @@ -409,15 +413,15 @@ "id": "kgSbIGb4Oi7kNTwp2QkrU" } ], - "updated": 1737970951221, + "updated": 1740580621355, "link": null, "locked": false }, { "id": "oKOWo7KV9Y8J3AQR1lX-P", "type": "rectangle", - "x": 989.09765625, - "y": 805, + "x": 971.09765625, + "y": 839, "width": 153.20312500000003, "height": 44, "angle": 0, @@ -433,8 +437,8 @@ "index": "b1C", "roundness": null, "seed": 2062767318, - "version": 226, - "versionNonce": 700710410, + "version": 247, + "versionNonce": 913542720, "isDeleted": false, "boundElements": [ { @@ -442,15 +446,15 @@ "id": "YBOf_ZI3--rqMICNXDl5o" } ], - "updated": 1737970946099, + "updated": 1740580770002, "link": null, "locked": false }, { "id": "xPpUhfUnNbsMPlojZlr0W", "type": "rectangle", - "x": 980.1328125, - "y": 543, + "x": 967.1328125, + "y": 548, "width": 162.078125, "height": 44, "angle": 0, @@ -468,8 +472,8 @@ "index": "b1E", "roundness": null, "seed": 1538824022, - "version": 267, - "versionNonce": 763874250, + "version": 290, + "versionNonce": 1576126016, "isDeleted": false, "boundElements": [ { @@ -477,7 +481,7 @@ "id": "03ZfRAoP-dkIsVdwuMcGm" } ], - "updated": 1737970941082, + "updated": 1740580779903, "link": null, "locked": false }, @@ -651,8 +655,8 @@ { "id": "n6fgzgLn1UV2wrjYVoVDr", "type": "text", - "x": 1465.7064208984375, - "y": 512.5, + "x": 1475.7064208984375, + "y": 469.5, "width": 46.219970703125, "height": 25, "angle": 0, @@ -668,11 +672,11 @@ "index": "b1e", "roundness": null, "seed": 1827280854, - "version": 48, - "versionNonce": 2005438678, + "version": 114, + "versionNonce": 311852608, "isDeleted": false, "boundElements": [], - "updated": 1737970219802, + "updated": 1740580607119, "link": null, "locked": false, "text": "AKS ", @@ -688,8 +692,8 @@ { "id": "RK06UCyMyn_5XDjMl8d_D", "type": "text", - "x": 1471.6273498535156, - "y": 713.5, + "x": 1474.6273498535156, + "y": 662.5, "width": 51.79998779296875, "height": 25, "angle": 0, @@ -705,11 +709,11 @@ "index": "b1f", "roundness": null, "seed": 784641302, - "version": 94, - "versionNonce": 1999275926, + "version": 115, + "versionNonce": 1317070400, "isDeleted": false, "boundElements": [], - "updated": 1737970228691, + "updated": 1740580609003, "link": null, "locked": false, "text": "KIND", @@ -725,9 +729,9 @@ { "id": "kgSbIGb4Oi7kNTwp2QkrU", "type": "text", - "x": 1469.239242553711, - "y": 805.5, - "width": 64.91995239257812, + "x": 1439.1992721557617, + "y": 729.5, + "width": 121.99989318847656, "height": 25, "angle": 0, "strokeColor": "#1e1e1e", @@ -742,28 +746,28 @@ "index": "b1g", "roundness": null, "seed": 454728278, - "version": 136, - "versionNonce": 1384911050, + "version": 226, + "versionNonce": 351551040, "isDeleted": false, "boundElements": [], - "updated": 1737970238236, + "updated": 1740580676052, "link": null, "locked": false, - "text": "Retina", + "text": "Helm-Release", "fontSize": 20, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "fz7IX_5gQKgv9w7KWCF9F", - "originalText": "Retina", + "originalText": "Helm-Release", "autoResize": true, "lineHeight": 1.25 }, { "id": "YBOf_ZI3--rqMICNXDl5o", "type": "text", - "x": 1041.7192306518555, - "y": 814.5, + "x": 1023.7192306518555, + "y": 848.5, "width": 47.95997619628906, "height": 25, "angle": 0, @@ -779,11 +783,11 @@ "index": "b1n", "roundness": null, "seed": 1108719382, - "version": 222, - "versionNonce": 1030092746, + "version": 243, + "versionNonce": 895993408, "isDeleted": false, "boundElements": [], - "updated": 1737970255474, + "updated": 1740580770002, "link": null, "locked": false, "text": "Helm ", @@ -799,8 +803,8 @@ { "id": "03ZfRAoP-dkIsVdwuMcGm", "type": "text", - "x": 1033.291893005371, - "y": 552.5, + "x": 1020.2918930053711, + "y": 557.5, "width": 55.75996398925781, "height": 25, "angle": 0, @@ -818,11 +822,11 @@ "index": "b1p", "roundness": null, "seed": 2128046486, - "version": 267, - "versionNonce": 1559104842, + "version": 290, + "versionNonce": 1079967296, "isDeleted": false, "boundElements": [], - "updated": 1737970255474, + "updated": 1740580779903, "link": null, "locked": false, "text": "Azure", @@ -838,8 +842,8 @@ { "id": "U6X68vlOQPsistV7KGQj7", "type": "rectangle", - "x": 982.9609375, - "y": 716, + "x": 967.9609375, + "y": 765, "width": 162.078125, "height": 44, "angle": 0, @@ -857,8 +861,8 @@ "index": "b1u", "roundness": null, "seed": 1066099146, - "version": 321, - "versionNonce": 1510947478, + "version": 348, + "versionNonce": 699438656, "isDeleted": false, "boundElements": [ { @@ -866,15 +870,15 @@ "id": "n5AzOpyhjDk4cJALwlppo" } ], - "updated": 1737970944829, + "updated": 1740580771686, "link": null, "locked": false }, { "id": "n5AzOpyhjDk4cJALwlppo", "type": "text", - "x": 1038.1000061035156, - "y": 725.5, + "x": 1023.1000061035156, + "y": 774.5, "width": 51.79998779296875, "height": 25, "angle": 0, @@ -892,11 +896,11 @@ "index": "b1v", "roundness": null, "seed": 1880135818, - "version": 337, - "versionNonce": 110019274, + "version": 364, + "versionNonce": 1271123520, "isDeleted": false, "boundElements": [], - "updated": 1737970255474, + "updated": 1740580771686, "link": null, "locked": false, "text": "KIND", @@ -912,8 +916,8 @@ { "id": "6vHcegO-bhhAWthKg5DLF", "type": "rectangle", - "x": 982.9609375, - "y": 632, + "x": 968.9609375, + "y": 695, "width": 162.078125, "height": 44, "angle": 0, @@ -931,8 +935,8 @@ "index": "b1w", "roundness": null, "seed": 2042518742, - "version": 322, - "versionNonce": 2099680970, + "version": 350, + "versionNonce": 55840320, "isDeleted": false, "boundElements": [ { @@ -940,15 +944,15 @@ "id": "7FCUVEMtLqp4KBg0vB5g0" } ], - "updated": 1737970943673, + "updated": 1740580774387, "link": null, "locked": false }, { "id": "7FCUVEMtLqp4KBg0vB5g0", "type": "text", - "x": 1000.5100250244141, - "y": 641.5, + "x": 986.5100250244141, + "y": 704.5, "width": 126.97994995117188, "height": 25, "angle": 0, @@ -966,11 +970,11 @@ "index": "b1x", "roundness": null, "seed": 46682646, - "version": 338, - "versionNonce": 1151342666, + "version": 366, + "versionNonce": 305677888, "isDeleted": false, "boundElements": [], - "updated": 1737970255474, + "updated": 1740580774387, "link": null, "locked": false, "text": "Google Cloud", @@ -986,8 +990,8 @@ { "id": "cvMVx90aAz8Snv2pIMyEP", "type": "rectangle", - "x": 1422.2734375, - "y": 610, + "x": 1428.2734375, + "y": 588, "width": 143.453125, "height": 44, "angle": 0, @@ -1003,8 +1007,8 @@ "index": "b1y", "roundness": null, "seed": 504440010, - "version": 148, - "versionNonce": 1612320074, + "version": 192, + "versionNonce": 827700800, "isDeleted": false, "boundElements": [ { @@ -1012,15 +1016,15 @@ "id": "7x5KHRGKh6towsi_8LYpB" } ], - "updated": 1737970949157, + "updated": 1740580603802, "link": null, "locked": false }, { "id": "7x5KHRGKh6towsi_8LYpB", "type": "text", - "x": 1472.5700073242188, - "y": 619.5, + "x": 1478.5700073242188, + "y": 597.5, "width": 42.8599853515625, "height": 25, "angle": 0, @@ -1036,11 +1040,11 @@ "index": "b1z", "roundness": null, "seed": 518388618, - "version": 144, - "versionNonce": 1811483594, + "version": 188, + "versionNonce": 1640296000, "isDeleted": false, "boundElements": [], - "updated": 1737970242587, + "updated": 1740580603802, "link": null, "locked": false, "text": "GKE", @@ -1056,8 +1060,8 @@ { "id": "w-30O_eesbT44MY2r9VIi", "type": "text", - "x": 1544, - "y": 455, + "x": 1554, + "y": 416, "width": 76.61996459960938, "height": 25, "angle": 0, @@ -1073,8 +1077,8 @@ "index": "b21", "roundness": null, "seed": 274873098, - "version": 33, - "versionNonce": 344674902, + "version": 61, + "versionNonce": 1988062656, "isDeleted": false, "boundElements": [ { @@ -1082,7 +1086,7 @@ "type": "arrow" } ], - "updated": 1737970326763, + "updated": 1740580571316, "link": null, "locked": false, "text": "Modules", @@ -1118,7 +1122,7 @@ "version": 41, "versionNonce": 1506505930, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1737970297494, "link": null, "locked": false, @@ -1137,8 +1141,8 @@ "type": "arrow", "x": 1971.3696285377284, "y": 103, - "width": 395.36962853772843, - "height": 341, + "width": 401.3240170906747, + "height": 280, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", @@ -1154,11 +1158,11 @@ "type": 2 }, "seed": 1369408406, - "version": 163, - "versionNonce": 1645571990, + "version": 245, + "versionNonce": 1009841728, "isDeleted": false, - "boundElements": null, - "updated": 1737971184547, + "boundElements": [], + "updated": 1740580682327, "link": null, "locked": false, "points": [ @@ -1167,21 +1171,21 @@ 0 ], [ - -395.36962853772843, - 341 + -401.3240170906747, + 280 ] ], "lastCommittedPoint": null, "startBinding": { "elementId": "O4E1OnJgXZMVXYZqcHbbf", - "focus": -0.32677741038380365, + "focus": -0.3692657252216252, "gap": 1, "fixedPoint": null }, "endBinding": { - "elementId": "w-30O_eesbT44MY2r9VIi", - "focus": -0.8955844703788051, - "gap": 11, + "elementId": "0S628Xmv8YIAFSDx8-05e", + "focus": -0.6734859514211782, + "gap": 9, "fixedPoint": null }, "startArrowhead": null, @@ -1191,8 +1195,8 @@ { "id": "8AUKqnBI6Ff1R4wt0slqa", "type": "rectangle", - "x": 1930.58984375, - "y": 407.5, + "x": 1945.58984375, + "y": 400.5, "width": 143.453125, "height": 44, "angle": 0, @@ -1208,8 +1212,8 @@ "index": "b29", "roundness": null, "seed": 1981592854, - "version": 231, - "versionNonce": 1503908374, + "version": 258, + "versionNonce": 758093376, "isDeleted": false, "boundElements": [ { @@ -1217,15 +1221,15 @@ "id": "eoIm4zi0FVKJOECWWL7TP" } ], - "updated": 1737970947812, + "updated": 1740580478757, "link": null, "locked": false }, { "id": "Rg3n2f_ms7-kJ94iZVPrE", "type": "rectangle", - "x": 1933.56640625, - "y": 608.5, + "x": 1936.56640625, + "y": 641.5, "width": 154.921875, "height": 44, "angle": 0, @@ -1241,8 +1245,8 @@ "index": "b2A", "roundness": null, "seed": 1244766806, - "version": 270, - "versionNonce": 1096754902, + "version": 295, + "versionNonce": 145397312, "isDeleted": false, "boundElements": [ { @@ -1250,15 +1254,15 @@ "id": "k5JMWXVEMnO8AA6zcZaht" } ], - "updated": 1737970950262, + "updated": 1740580473222, "link": null, "locked": false }, { "id": "cK83p_ezogmd5Hf_eZwz2", "type": "rectangle", - "x": 1928.55078125, - "y": 700.5, + "x": 1929.55078125, + "y": 735.5, "width": 173.296875, "height": 44, "angle": 0, @@ -1274,8 +1278,8 @@ "index": "b2B", "roundness": null, "seed": 1068951446, - "version": 314, - "versionNonce": 497421770, + "version": 393, + "versionNonce": 1859415616, "isDeleted": false, "boundElements": [ { @@ -1283,15 +1287,15 @@ "id": "7ok5BbnOLbhPq6AgN4GYB" } ], - "updated": 1737970951221, + "updated": 1740580470838, "link": null, "locked": false }, { "id": "eoIm4zi0FVKJOECWWL7TP", "type": "text", - "x": 1979.2064208984375, - "y": 417, + "x": 1994.2064208984375, + "y": 410, "width": 46.219970703125, "height": 25, "angle": 0, @@ -1307,11 +1311,11 @@ "index": "b2C", "roundness": null, "seed": 1994491094, - "version": 226, - "versionNonce": 1844995478, + "version": 253, + "versionNonce": 123915840, "isDeleted": false, "boundElements": [], - "updated": 1737970406988, + "updated": 1740580478757, "link": null, "locked": false, "text": "AKS ", @@ -1327,8 +1331,8 @@ { "id": "k5JMWXVEMnO8AA6zcZaht", "type": "text", - "x": 1985.1273498535156, - "y": 618, + "x": 1988.1273498535156, + "y": 651, "width": 51.79998779296875, "height": 25, "angle": 0, @@ -1344,11 +1348,11 @@ "index": "b2D", "roundness": null, "seed": 1095137814, - "version": 272, - "versionNonce": 543491414, + "version": 297, + "versionNonce": 998100544, "isDeleted": false, "boundElements": [], - "updated": 1737970406988, + "updated": 1740580473222, "link": null, "locked": false, "text": "KIND", @@ -1364,9 +1368,9 @@ { "id": "7ok5BbnOLbhPq6AgN4GYB", "type": "text", - "x": 1982.739242553711, - "y": 710, - "width": 64.91995239257812, + "x": 1977.1692581176758, + "y": 745, + "width": 78.05992126464844, "height": 25, "angle": 0, "strokeColor": "#1e1e1e", @@ -1381,28 +1385,28 @@ "index": "b2E", "roundness": null, "seed": 1977272150, - "version": 314, - "versionNonce": 1165016342, + "version": 401, + "versionNonce": 1856808512, "isDeleted": false, "boundElements": [], - "updated": 1737970406988, + "updated": 1740580470838, "link": null, "locked": false, - "text": "Retina", + "text": "Grafana", "fontSize": 20, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "cK83p_ezogmd5Hf_eZwz2", - "originalText": "Retina", + "originalText": "Grafana", "autoResize": true, "lineHeight": 1.25 }, { "id": "BFUrWgvUgo1Tm7uLzxqJb", "type": "rectangle", - "x": 1935.7734375, - "y": 514.5, + "x": 1944.7734375, + "y": 560.5, "width": 143.453125, "height": 44, "angle": 0, @@ -1418,8 +1422,8 @@ "index": "b2F", "roundness": null, "seed": 1156803734, - "version": 325, - "versionNonce": 987000458, + "version": 362, + "versionNonce": 454200896, "isDeleted": false, "boundElements": [ { @@ -1427,15 +1431,15 @@ "id": "q3iv3crLU6YUmmSjnjJ7r" } ], - "updated": 1737970949157, + "updated": 1740580475673, "link": null, "locked": false }, { "id": "q3iv3crLU6YUmmSjnjJ7r", "type": "text", - "x": 1986.0700073242188, - "y": 524, + "x": 1995.0700073242188, + "y": 570, "width": 42.8599853515625, "height": 25, "angle": 0, @@ -1451,11 +1455,11 @@ "index": "b2G", "roundness": null, "seed": 205875670, - "version": 322, - "versionNonce": 995265750, + "version": 359, + "versionNonce": 774293056, "isDeleted": false, "boundElements": [], - "updated": 1737970406989, + "updated": 1740580475673, "link": null, "locked": false, "text": "GKE", @@ -1541,8 +1545,8 @@ { "id": "mIlz4x0AjaordLAqI-DWY", "type": "rectangle", - "x": 1931.56640625, - "y": 1176.5, + "x": 1933.56640625, + "y": 1242.5, "width": 154.921875, "height": 44, "angle": 0, @@ -1558,8 +1562,8 @@ "index": "b2O", "roundness": null, "seed": 1141380746, - "version": 302, - "versionNonce": 761452822, + "version": 322, + "versionNonce": 846083520, "isDeleted": false, "boundElements": [ { @@ -1567,7 +1571,7 @@ "id": "uv0MN_ZBtwcWuq7WETscI" } ], - "updated": 1737970455778, + "updated": 1740580816340, "link": null, "locked": false }, @@ -1611,8 +1615,8 @@ { "id": "uv0MN_ZBtwcWuq7WETscI", "type": "text", - "x": 1946.7973861694336, - "y": 1186, + "x": 1948.7973861694336, + "y": 1252, "width": 124.45991516113281, "height": 25, "angle": 0, @@ -1628,11 +1632,11 @@ "index": "b2R", "roundness": null, "seed": 1102015178, - "version": 318, - "versionNonce": 2098415190, + "version": 338, + "versionNonce": 983662016, "isDeleted": false, "boundElements": [], - "updated": 1737970455778, + "updated": 1740580816340, "link": null, "locked": false, "text": "Retina-KIND", @@ -1648,8 +1652,8 @@ { "id": "y5OM8zL9aH4eV1vQRfRA8", "type": "rectangle", - "x": 1933.7734375, - "y": 1082.5, + "x": 1936.7734375, + "y": 1145.5, "width": 143.453125, "height": 44, "angle": 0, @@ -1665,8 +1669,8 @@ "index": "b2T", "roundness": null, "seed": 1572257866, - "version": 357, - "versionNonce": 1858341782, + "version": 393, + "versionNonce": 950648256, "isDeleted": false, "boundElements": [ { @@ -1674,15 +1678,15 @@ "id": "cgV-AqaregAAVrxZQQPP7" } ], - "updated": 1737970455778, + "updated": 1740580818974, "link": null, "locked": false }, { "id": "cgV-AqaregAAVrxZQQPP7", "type": "text", - "x": 1948.2400436401367, - "y": 1092, + "x": 1951.2400436401367, + "y": 1155, "width": 114.51991271972656, "height": 25, "angle": 0, @@ -1698,11 +1702,11 @@ "index": "b2U", "roundness": null, "seed": 508307210, - "version": 365, - "versionNonce": 279587030, + "version": 401, + "versionNonce": 2885056, "isDeleted": false, "boundElements": [], - "updated": 1737970455778, + "updated": 1740580818974, "link": null, "locked": false, "text": "Retina-GKE", @@ -1782,7 +1786,7 @@ "version": 149, "versionNonce": 132873418, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1737971184548, "link": null, "locked": false, @@ -1878,8 +1882,8 @@ "type": "arrow", "x": 1858, "y": 607, - "width": 207, - "height": 5, + "width": 197, + "height": 12.077029271018432, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -1895,11 +1899,11 @@ "type": 2 }, "seed": 1979137814, - "version": 57, - "versionNonce": 1112572054, + "version": 223, + "versionNonce": 1014058560, "isDeleted": false, - "boundElements": null, - "updated": 1737971124821, + "boundElements": [], + "updated": 1740580682327, "link": null, "locked": false, "points": [ @@ -1908,8 +1912,8 @@ 0 ], [ - -207, - 5 + -197, + 12.077029271018432 ] ], "lastCommittedPoint": null, @@ -1952,7 +1956,7 @@ "version": 85, "versionNonce": 62722378, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1737971128309, "link": null, "locked": false, @@ -1969,9 +1973,9 @@ { "id": "VBZOWyP-GhRCxXcLTHwB_", "type": "text", - "x": 1657.180046081543, - "y": 1047.5, - "width": 125.63990783691406, + "x": 1713.180046081543, + "y": 969.5, + "width": 125.49989318847656, "height": 25, "angle": 0, "strokeColor": "#1971c2", @@ -1986,11 +1990,11 @@ "index": "b2c", "roundness": null, "seed": 739676554, - "version": 124, - "versionNonce": 2038259082, + "version": 223, + "versionNonce": 56976832, "isDeleted": false, "boundElements": [], - "updated": 1737971132189, + "updated": 1740580808806, "link": null, "locked": false, "text": "Instantiates", @@ -2007,9 +2011,9 @@ "id": "-4dHrHQZE2TDSvs-vgcAo", "type": "arrow", "x": 1853, - "y": 1104, - "width": 200, - "height": 187, + "y": 1153.4388056805246, + "width": 192, + "height": 198.33992878997913, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -2025,11 +2029,11 @@ "type": 2 }, "seed": 471021322, - "version": 35, - "versionNonce": 2134311690, + "version": 244, + "versionNonce": 1542868416, "isDeleted": false, - "boundElements": null, - "updated": 1737971136385, + "boundElements": [], + "updated": 1740580796273, "link": null, "locked": false, "points": [ @@ -2038,8 +2042,8 @@ 0 ], [ - -200, - -187 + -192, + -198.33992878997913 ] ], "lastCommittedPoint": null, @@ -2062,10 +2066,10 @@ { "id": "o_HSEmb0pecqRgBJDEBRp", "type": "arrow", - "x": 1343, - "y": 673, - "width": 136, - "height": 4, + "x": 1342, + "y": 688.5897389774251, + "width": 138, + "height": 29.766353065161184, "angle": 0, "strokeColor": "#f08c00", "backgroundColor": "#a5d8ff", @@ -2081,11 +2085,11 @@ "type": 2 }, "seed": 144078154, - "version": 29, - "versionNonce": 1175139926, + "version": 297, + "versionNonce": 1615226304, "isDeleted": false, - "boundElements": null, - "updated": 1737971114288, + "boundElements": [], + "updated": 1740580756785, "link": null, "locked": false, "points": [ @@ -2094,8 +2098,8 @@ 0 ], [ - -136, - 4 + -138, + 29.766353065161184 ] ], "lastCommittedPoint": null, @@ -2138,7 +2142,7 @@ "version": 7, "versionNonce": 591726474, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1737971117472, "link": null, "locked": false, @@ -2155,8 +2159,8 @@ { "id": "JMh5UJvRSjgcfPdc_YCR7", "type": "text", - "x": 1597.400016784668, - "y": 1134.5, + "x": 1481.400016784668, + "y": 1150.5, "width": 47.19996643066406, "height": 25, "angle": 0, @@ -2172,11 +2176,11 @@ "index": "b2g", "roundness": null, "seed": 1271206422, - "version": 3, - "versionNonce": 1160150, + "version": 37, + "versionNonce": 1392217536, "isDeleted": false, - "boundElements": null, - "updated": 1737971110710, + "boundElements": [], + "updated": 1740580692646, "link": null, "locked": false, "text": "Uses", @@ -2192,10 +2196,10 @@ { "id": "RBNxQ4pEgxmBXnHdIaBf9", "type": "arrow", - "x": 1854, - "y": 1110, - "width": 758, - "height": 242, + "x": 1845.5, + "y": 1208.6882299082126, + "width": 743.5, + "height": 136.57197734993906, "angle": 0, "strokeColor": "#f08c00", "backgroundColor": "#a5d8ff", @@ -2211,11 +2215,11 @@ "type": 2 }, "seed": 2027055370, - "version": 185, - "versionNonce": 450718806, + "version": 454, + "versionNonce": 1021070912, "isDeleted": false, - "boundElements": null, - "updated": 1737971102355, + "boundElements": [], + "updated": 1740580803208, "link": null, "locked": false, "points": [ @@ -2224,25 +2228,25 @@ 0 ], [ - -326, - 51 + -396.5, + -29.688229908212634 ], [ - -758, - -191 + -743.5, + -136.57197734993906 ] ], "lastCommittedPoint": null, "startBinding": { "elementId": "uLVKBxcndIG-qzR2NQnMF", - "focus": 0.05997730828840719, - "gap": 1, + "focus": -0.36011080214120117, + "gap": 9, "fixedPoint": null }, "endBinding": { "elementId": "zghIcLCzAMCMHoPa6KCP5", - "focus": 0.6958348470250035, - "gap": 10, + "focus": 0.831718593892729, + "gap": 7.1162525582735725, "fixedPoint": null }, "startArrowhead": null, @@ -2272,7 +2276,7 @@ "version": 3, "versionNonce": 1246659606, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1737971106415, "link": null, "locked": false, @@ -2291,7 +2295,7 @@ "type": "arrow", "x": 1858, "y": 605, - "width": 795, + "width": 777.3688543032197, "height": 311, "angle": 0, "strokeColor": "#f08c00", @@ -2308,11 +2312,11 @@ "type": 2 }, "seed": 1794620630, - "version": 236, - "versionNonce": 489375370, + "version": 338, + "versionNonce": 1186461120, "isDeleted": false, - "boundElements": null, - "updated": 1737971095964, + "boundElements": [], + "updated": 1740580756785, "link": null, "locked": false, "points": [ @@ -2325,8 +2329,8 @@ -311 ], [ - -795, - -122 + -777.3688543032197, + -123 ] ], "lastCommittedPoint": null, @@ -2371,7 +2375,7 @@ "version": 192, "versionNonce": 227064650, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1737971481423, "link": null, "locked": false, @@ -2411,8 +2415,8 @@ "type": "rectangle", "x": 2433.5, "y": 357.5, - "width": 311, - "height": 503, + "width": 316.00000000000006, + "height": 403, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", @@ -2428,8 +2432,8 @@ "type": 3 }, "seed": 507557578, - "version": 387, - "versionNonce": 1340323542, + "version": 422, + "versionNonce": 801539520, "isDeleted": false, "boundElements": [ { @@ -2441,15 +2445,15 @@ "type": "arrow" } ], - "updated": 1737971510934, + "updated": 1740581003843, "link": null, "locked": false }, { "id": "yXs1C5HAV_quiAwVGmj9-", "type": "rectangle", - "x": 2507.58984375, - "y": 417.5, + "x": 2517.58984375, + "y": 419.5, "width": 143.453125, "height": 44, "angle": 0, @@ -2465,8 +2469,8 @@ "index": "b2q", "roundness": null, "seed": 1465077130, - "version": 383, - "versionNonce": 1531846538, + "version": 388, + "versionNonce": 2086499904, "isDeleted": false, "boundElements": [ { @@ -2474,15 +2478,15 @@ "id": "c-HWcR62JO098FZH-Exyy" } ], - "updated": 1737971303713, + "updated": 1740581019178, "link": null, "locked": false }, { "id": "XKA3gCRYDhwXJMOPsnTYe", "type": "rectangle", - "x": 2510.56640625, - "y": 618.5, + "x": 2519.56640625, + "y": 663.5, "width": 154.921875, "height": 44, "angle": 0, @@ -2498,8 +2502,8 @@ "index": "b2r", "roundness": null, "seed": 1734675530, - "version": 422, - "versionNonce": 289359114, + "version": 477, + "versionNonce": 851619392, "isDeleted": false, "boundElements": [ { @@ -2507,17 +2511,17 @@ "id": "UPzd8AvyIY1ANthQMQL-2" } ], - "updated": 1737971303713, + "updated": 1740581024278, "link": null, "locked": false }, { "id": "sVoinvy16hzPyLe8OLqLD", "type": "rectangle", - "x": 2505.55078125, - "y": 710.5, - "width": 173.296875, - "height": 44, + "x": 2512.55078125, + "y": 503.5, + "width": 153.296875, + "height": 43, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", @@ -2531,8 +2535,8 @@ "index": "b2s", "roundness": null, "seed": 1951462154, - "version": 466, - "versionNonce": 1984236170, + "version": 550, + "versionNonce": 634252864, "isDeleted": false, "boundElements": [ { @@ -2540,15 +2544,15 @@ "id": "r_UUPiappL6TFrgWoMu3T" } ], - "updated": 1737971303713, + "updated": 1740581020945, "link": null, "locked": false }, { "id": "c-HWcR62JO098FZH-Exyy", "type": "text", - "x": 2556.2064208984375, - "y": 427, + "x": 2566.2064208984375, + "y": 429, "width": 46.219970703125, "height": 25, "angle": 0, @@ -2564,11 +2568,11 @@ "index": "b2t", "roundness": null, "seed": 814875082, - "version": 378, - "versionNonce": 137731658, + "version": 383, + "versionNonce": 1976872512, "isDeleted": false, "boundElements": [], - "updated": 1737971303713, + "updated": 1740581019178, "link": null, "locked": false, "text": "AKS ", @@ -2584,9 +2588,9 @@ { "id": "UPzd8AvyIY1ANthQMQL-2", "type": "text", - "x": 2562.1273498535156, - "y": 628, - "width": 51.79998779296875, + "x": 2571.3273544311523, + "y": 673, + "width": 51.39997863769531, "height": 25, "angle": 0, "strokeColor": "#1e1e1e", @@ -2601,11 +2605,11 @@ "index": "b2u", "roundness": null, "seed": 1195587722, - "version": 424, - "versionNonce": 2145784778, + "version": 480, + "versionNonce": 1911285184, "isDeleted": false, "boundElements": [], - "updated": 1737971303713, + "updated": 1740581024565, "link": null, "locked": false, "text": "KIND", @@ -2621,9 +2625,9 @@ { "id": "r_UUPiappL6TFrgWoMu3T", "type": "text", - "x": 2559.739242553711, - "y": 720, - "width": 64.91995239257812, + "x": 2569.779228210449, + "y": 512.5, + "width": 38.83998107910156, "height": 25, "angle": 0, "strokeColor": "#1e1e1e", @@ -2638,28 +2642,28 @@ "index": "b2v", "roundness": null, "seed": 1210029898, - "version": 466, - "versionNonce": 454502730, + "version": 554, + "versionNonce": 175515200, "isDeleted": false, "boundElements": [], - "updated": 1737971303713, + "updated": 1740581020945, "link": null, "locked": false, - "text": "Retina", + "text": "EKS", "fontSize": 20, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "sVoinvy16hzPyLe8OLqLD", - "originalText": "Retina", + "originalText": "EKS", "autoResize": true, "lineHeight": 1.25 }, { "id": "DTsWo6ztMP02RFmBj6e-D", "type": "rectangle", - "x": 2512.7734375, - "y": 524.5, + "x": 2522.7734375, + "y": 577.5, "width": 143.453125, "height": 44, "angle": 0, @@ -2675,8 +2679,8 @@ "index": "b2w", "roundness": null, "seed": 327294474, - "version": 477, - "versionNonce": 95907850, + "version": 555, + "versionNonce": 1424291392, "isDeleted": false, "boundElements": [ { @@ -2684,15 +2688,15 @@ "id": "pRnKaRijr0r7prQVxvfOw" } ], - "updated": 1737971303713, + "updated": 1740581034863, "link": null, "locked": false }, { "id": "pRnKaRijr0r7prQVxvfOw", "type": "text", - "x": 2563.0700073242188, - "y": 534, + "x": 2573.0700073242188, + "y": 587, "width": 42.8599853515625, "height": 25, "angle": 0, @@ -2708,11 +2712,11 @@ "index": "b2x", "roundness": null, "seed": 1181076682, - "version": 474, - "versionNonce": 706797258, + "version": 552, + "versionNonce": 1366044224, "isDeleted": false, "boundElements": [], - "updated": 1737971303713, + "updated": 1740581034863, "link": null, "locked": false, "text": "GKE", @@ -2767,8 +2771,8 @@ "type": "rectangle", "x": 2830.5, "y": 429.5, - "width": 311, - "height": 350, + "width": 343.00000000000017, + "height": 463.00000000000006, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", @@ -2784,8 +2788,8 @@ "type": 3 }, "seed": 1407292694, - "version": 536, - "versionNonce": 1282920086, + "version": 692, + "versionNonce": 1667171904, "isDeleted": false, "boundElements": [ { @@ -2793,15 +2797,15 @@ "type": "arrow" } ], - "updated": 1737971550724, + "updated": 1740580911617, "link": null, "locked": false }, { "id": "45JovtXM2WCeBgd46-RNa", "type": "rectangle", - "x": 2904.58984375, - "y": 489.5, + "x": 2933.58984375, + "y": 573.5, "width": 143.453125, "height": 44, "angle": 0, @@ -2817,8 +2821,8 @@ "index": "b30", "roundness": null, "seed": 1549435478, - "version": 516, - "versionNonce": 1433501270, + "version": 537, + "versionNonce": 260890048, "isDeleted": false, "boundElements": [ { @@ -2826,15 +2830,15 @@ "id": "KK9wBCN7chtrFnhnHDCnN" } ], - "updated": 1737971415407, + "updated": 1740580877264, "link": null, "locked": false }, { "id": "1UpFRPtuqe5oDMaRyOIOy", "type": "rectangle", - "x": 2907.56640625, - "y": 690.5, + "x": 2928.56640625, + "y": 728.5, "width": 154.921875, "height": 44, "angle": 0, @@ -2850,8 +2854,8 @@ "index": "b31", "roundness": null, "seed": 1506002838, - "version": 555, - "versionNonce": 551182550, + "version": 585, + "versionNonce": 234698304, "isDeleted": false, "boundElements": [ { @@ -2859,16 +2863,16 @@ "id": "EebjZsSTiA0RgmiXs7pw-" } ], - "updated": 1737971415407, + "updated": 1740580918951, "link": null, "locked": false }, { "id": "KK9wBCN7chtrFnhnHDCnN", "type": "text", - "x": 2917.7764587402344, - "y": 499, - "width": 117.07989501953125, + "x": 2950.066452026367, + "y": 583, + "width": 110.49990844726562, "height": 25, "angle": 0, "strokeColor": "#1e1e1e", @@ -2883,28 +2887,28 @@ "index": "b33", "roundness": null, "seed": 630938134, - "version": 548, - "versionNonce": 245056406, + "version": 572, + "versionNonce": 1303061952, "isDeleted": false, "boundElements": [], - "updated": 1737971415407, + "updated": 1740580877264, "link": null, "locked": false, - "text": "Retina-AKS ", + "text": "Retina-EKS", "fontSize": 20, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "45JovtXM2WCeBgd46-RNa", - "originalText": "Retina-AKS ", + "originalText": "Retina-EKS", "autoResize": true, "lineHeight": 1.25 }, { "id": "EebjZsSTiA0RgmiXs7pw-", "type": "text", - "x": 2922.7973861694336, - "y": 700, + "x": 2943.7973861694336, + "y": 738, "width": 124.45991516113281, "height": 25, "angle": 0, @@ -2920,11 +2924,11 @@ "index": "b34", "roundness": null, "seed": 1016309590, - "version": 594, - "versionNonce": 1875105302, + "version": 624, + "versionNonce": 1031564864, "isDeleted": false, "boundElements": [], - "updated": 1737971415407, + "updated": 1740580918951, "link": null, "locked": false, "text": "Retina-KIND", @@ -2940,8 +2944,8 @@ { "id": "fnS2X4EuJY-tTrtQBIe8A", "type": "rectangle", - "x": 2909.7734375, - "y": 596.5, + "x": 2930.7734375, + "y": 648.5, "width": 143.453125, "height": 44, "angle": 0, @@ -2957,8 +2961,8 @@ "index": "b36", "roundness": null, "seed": 1648773590, - "version": 610, - "versionNonce": 609002326, + "version": 641, + "versionNonce": 695518656, "isDeleted": false, "boundElements": [ { @@ -2966,15 +2970,15 @@ "id": "82dXVu6Pnfd0kT49q4C9w" } ], - "updated": 1737971415407, + "updated": 1740580875030, "link": null, "locked": false }, { "id": "82dXVu6Pnfd0kT49q4C9w", "type": "text", - "x": 2924.2400436401367, - "y": 606, + "x": 2945.2400436401367, + "y": 658, "width": 114.51991271972656, "height": 25, "angle": 0, @@ -2990,11 +2994,11 @@ "index": "b37", "roundness": null, "seed": 1305124630, - "version": 644, - "versionNonce": 13224086, + "version": 675, + "versionNonce": 844500416, "isDeleted": false, "boundElements": [], - "updated": 1737971415407, + "updated": 1740580875030, "link": null, "locked": false, "text": "Retina-GKE", @@ -3054,7 +3058,7 @@ "type": "arrow", "x": 2560, "y": 138, - "width": 0, + "width": 0.9623785216449505, "height": 217, "angle": 0, "strokeColor": "#1e1e1e", @@ -3071,11 +3075,11 @@ "type": 2 }, "seed": 328428886, - "version": 28, - "versionNonce": 1900773450, + "version": 63, + "versionNonce": 141544896, "isDeleted": false, - "boundElements": null, - "updated": 1737971470062, + "boundElements": [], + "updated": 1740581003843, "link": null, "locked": false, "points": [ @@ -3084,7 +3088,7 @@ 0 ], [ - 0, + 0.9623785216449505, 217 ] ], @@ -3130,7 +3134,7 @@ "version": 62, "versionNonce": 1354947210, "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1737971477960, "link": null, "locked": false, @@ -3169,9 +3173,9 @@ "id": "1G4RvWl5j3Eq0orLwRNb1", "type": "arrow", "x": 2429, - "y": 587, + "y": 558.7461958472302, "width": 262, - "height": 17, + "height": 45.25380415276982, "angle": 0, "strokeColor": "#e03131", "backgroundColor": "transparent", @@ -3187,11 +3191,11 @@ "type": 2 }, "seed": 383119562, - "version": 49, - "versionNonce": 607055690, + "version": 84, + "versionNonce": 212866496, "isDeleted": false, - "boundElements": null, - "updated": 1737971531455, + "boundElements": [], + "updated": 1740581003843, "link": null, "locked": false, "points": [ @@ -3201,7 +3205,7 @@ ], [ -262, - 17 + 45.25380415276982 ] ], "lastCommittedPoint": null, @@ -3224,8 +3228,8 @@ { "id": "ia3p_InHfk6eqkomGTQVy", "type": "text", - "x": 2352, - "y": 558, + "x": 2356, + "y": 529, "width": 47.19996643066406, "height": 25, "angle": 0, @@ -3241,11 +3245,11 @@ "index": "b3C", "roundness": null, "seed": 1107965066, - "version": 79, - "versionNonce": 1846142166, + "version": 124, + "versionNonce": 1562392128, "isDeleted": false, - "boundElements": null, - "updated": 1737971535976, + "boundElements": [], + "updated": 1740581007577, "link": null, "locked": false, "text": "Uses", @@ -3261,8 +3265,8 @@ { "id": "RYcoP2a7h3PmEmilpAoEr", "type": "text", - "x": 2890.400016784668, - "y": 971.5, + "x": 2786.400016784668, + "y": 1041.5, "width": 47.19996643066406, "height": 25, "angle": 0, @@ -3278,11 +3282,11 @@ "index": "b3D", "roundness": null, "seed": 422145994, - "version": 82, - "versionNonce": 1186784906, + "version": 113, + "versionNonce": 2009851456, "isDeleted": false, "boundElements": [], - "updated": 1737971541173, + "updated": 1740580958588, "link": null, "locked": false, "text": "Uses", @@ -3298,10 +3302,10 @@ { "id": "JenUnqPQU9n29FUsRjstV", "type": "arrow", - "x": 2993, - "y": 780, - "width": 828, - "height": 228, + "x": 3003.3438111578926, + "y": 894.5, + "width": 827.3438111578926, + "height": 377, "angle": 0, "strokeColor": "#e03131", "backgroundColor": "transparent", @@ -3317,11 +3321,11 @@ "type": 2 }, "seed": 1211336010, - "version": 277, - "versionNonce": 439205910, + "version": 659, + "versionNonce": 1916069440, "isDeleted": false, - "boundElements": null, - "updated": 1737971555301, + "boundElements": [], + "updated": 1740580955465, "link": null, "locked": false, "points": [ @@ -3330,30 +3334,919 @@ 0 ], [ - -77, - 228 + -210.34381115789256, + 197.5 ], [ - -828, - 6 + -827.3438111578926, + -179.5 ] ], "lastCommittedPoint": null, "startBinding": { "elementId": "GdXv0Fvpyz0tdxI9bskx0", - "focus": -0.3088045944123118, - "gap": 1, + "focus": -0.5980764108208921, + "gap": 2, "fixedPoint": null }, "endBinding": { "elementId": "R4AeEioM2INhMP9rnYnHe", - "focus": 0.4765988876330307, - "gap": 1, + "focus": 0.045575517191380685, + "gap": 8.5, "fixedPoint": null }, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false + }, + { + "id": "-q7YTz77V7rTNBYEd_HIK", + "type": "rectangle", + "x": 1944.4453125, + "y": 484, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3F", + "roundness": null, + "seed": 1613798848, + "version": 405, + "versionNonce": 1013055040, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "O2r1No3BaVKg_stUiS7Lg" + } + ], + "updated": 1740580480840, + "link": null, + "locked": false + }, + { + "id": "O2r1No3BaVKg_stUiS7Lg", + "type": "text", + "x": 1996.7518844604492, + "y": 493.5, + "width": 38.83998107910156, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3G", + "roundness": null, + "seed": 1406592448, + "version": 406, + "versionNonce": 1409824320, + "isDeleted": false, + "boundElements": [], + "updated": 1740580480840, + "link": null, + "locked": false, + "text": "EKS", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "-q7YTz77V7rTNBYEd_HIK", + "originalText": "EKS", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "yYvAmExn0UN5QfJ6yMLU6", + "type": "rectangle", + "x": 1426.4453125, + "y": 522, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3H", + "roundness": null, + "seed": 1197680064, + "version": 202, + "versionNonce": 1199242816, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "os3zZBg77A6OJF1KQAaPh" + } + ], + "updated": 1740580605436, + "link": null, + "locked": false + }, + { + "id": "os3zZBg77A6OJF1KQAaPh", + "type": "text", + "x": 1478.7518844604492, + "y": 531.5, + "width": 38.83998107910156, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3I", + "roundness": null, + "seed": 1131965888, + "version": 199, + "versionNonce": 335623744, + "isDeleted": false, + "boundElements": [], + "updated": 1740580605436, + "link": null, + "locked": false, + "text": "EKS", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "yYvAmExn0UN5QfJ6yMLU6", + "originalText": "EKS", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "FtRltkUuXtHMf99oQmxVI", + "type": "rectangle", + "x": 1426.4453125, + "y": 789, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3J", + "roundness": null, + "seed": 649334336, + "version": 249, + "versionNonce": 206470720, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "Yx-kj5bC9CuTe1U_FVEQt" + } + ], + "updated": 1740580628304, + "link": null, + "locked": false + }, + { + "id": "Yx-kj5bC9CuTe1U_FVEQt", + "type": "text", + "x": 1439.471923828125, + "y": 798.5, + "width": 117.39990234375, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3K", + "roundness": null, + "seed": 1234716224, + "version": 261, + "versionNonce": 1919202880, + "isDeleted": false, + "boundElements": [], + "updated": 1740580628304, + "link": null, + "locked": false, + "text": "GKE-firewall", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "FtRltkUuXtHMf99oQmxVI", + "originalText": "GKE-firewall", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "prvxs2s_ROIQbz0xeynXl", + "type": "rectangle", + "x": 1427.4453125, + "y": 855, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3L", + "roundness": null, + "seed": 908350912, + "version": 377, + "versionNonce": 306320832, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "IdM4q-kQ4zsAa6cfswwoC" + } + ], + "updated": 1740580697730, + "link": null, + "locked": false + }, + { + "id": "IdM4q-kQ4zsAa6cfswwoC", + "type": "text", + "x": 1459.7119140625, + "y": 864.5, + "width": 78.919921875, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3M", + "roundness": null, + "seed": 580099520, + "version": 396, + "versionNonce": 888757696, + "isDeleted": false, + "boundElements": [], + "updated": 1740580697730, + "link": null, + "locked": false, + "text": "AKS-nsg", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "prvxs2s_ROIQbz0xeynXl", + "originalText": "AKS-nsg", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "Inqp8H7gRsjVYSQdIaG0t", + "type": "rectangle", + "x": 1422.4453125, + "y": 917, + "width": 159.453125, + "height": 60, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3N", + "roundness": null, + "seed": 1073354304, + "version": 464, + "versionNonce": 1417666112, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "09_QamTlFbmEADkABanHH" + } + ], + "updated": 1740580700228, + "link": null, + "locked": false + }, + { + "id": "09_QamTlFbmEADkABanHH", + "type": "text", + "x": 1431.7119445800781, + "y": 934.5, + "width": 140.91986083984375, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3O", + "roundness": null, + "seed": 1558007360, + "version": 509, + "versionNonce": 1835669056, + "isDeleted": false, + "boundElements": [], + "updated": 1740580700228, + "link": null, + "locked": false, + "text": "Kubernetes-LB", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Inqp8H7gRsjVYSQdIaG0t", + "originalText": "Kubernetes-LB", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "XzJm4NWVTebnV07UUPxLP", + "type": "rectangle", + "x": 1428.4453125, + "y": 1005, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3P", + "roundness": null, + "seed": 58637888, + "version": 423, + "versionNonce": 951451200, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "HmF0bWrFlgMOs9ggrL_Jy" + } + ], + "updated": 1740580707979, + "link": null, + "locked": false + }, + { + "id": "HmF0bWrFlgMOs9ggrL_Jy", + "type": "text", + "x": 1461.1419143676758, + "y": 1014.5, + "width": 78.05992126464844, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3Q", + "roundness": null, + "seed": 428668480, + "version": 451, + "versionNonce": 1311940160, + "isDeleted": false, + "boundElements": [], + "updated": 1740580714574, + "link": null, + "locked": false, + "text": "Grafana", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "XzJm4NWVTebnV07UUPxLP", + "originalText": "Grafana", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "mTyUW_OJXsDR5M_1U7gfW", + "type": "rectangle", + "x": 968.1328125, + "y": 912, + "width": 162.078125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "TYof4mVq28GFPxFFxrzag" + ], + "frameId": null, + "index": "b3R", + "roundness": null, + "seed": 796792384, + "version": 387, + "versionNonce": 2060461632, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "9QIvVinrdkVNYX8HgBq_w" + } + ], + "updated": 1740580768169, + "link": null, + "locked": false + }, + { + "id": "9QIvVinrdkVNYX8HgBq_w", + "type": "text", + "x": 995.8619232177734, + "y": 921.5, + "width": 106.61990356445312, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "TYof4mVq28GFPxFFxrzag" + ], + "frameId": null, + "index": "b3S", + "roundness": null, + "seed": 1004621376, + "version": 414, + "versionNonce": 1920032320, + "isDeleted": false, + "boundElements": [], + "updated": 1740580768169, + "link": null, + "locked": false, + "text": "Kubernetes", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "mTyUW_OJXsDR5M_1U7gfW", + "originalText": "Kubernetes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "OLDewduCAl7HIsiq5pffg", + "type": "rectangle", + "x": 965.1328125, + "y": 986, + "width": 162.078125, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "AlNxLkry8Gt3wJHUO797V" + ], + "frameId": null, + "index": "b3T", + "roundness": null, + "seed": 952985152, + "version": 356, + "versionNonce": 99509824, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "7MW_vUbQku8tWfPnzpXQy" + } + ], + "updated": 1740580763285, + "link": null, + "locked": false + }, + { + "id": "7MW_vUbQku8tWfPnzpXQy", + "type": "text", + "x": 1007.1419143676758, + "y": 991, + "width": 78.05992126464844, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "AlNxLkry8Gt3wJHUO797V" + ], + "frameId": null, + "index": "b3U", + "roundness": null, + "seed": 2126945856, + "version": 381, + "versionNonce": 2143788608, + "isDeleted": false, + "boundElements": [], + "updated": 1740580763285, + "link": null, + "locked": false, + "text": "Grafana", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "OLDewduCAl7HIsiq5pffg", + "originalText": "Grafana", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "rlYmyHL1IXwaHsTpEo841", + "type": "rectangle", + "x": 970.1328125, + "y": 624, + "width": 162.078125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "_rZHSq_6Bd400gxOAMPO8" + ], + "frameId": null, + "index": "b3V", + "roundness": null, + "seed": 1518403136, + "version": 385, + "versionNonce": 1134546496, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "E_PwqDAKLb0CXn-dj0xV2" + } + ], + "updated": 1740580778236, + "link": null, + "locked": false + }, + { + "id": "E_PwqDAKLb0CXn-dj0xV2", + "type": "text", + "x": 1030.3318939208984, + "y": 633.5, + "width": 41.679962158203125, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "_rZHSq_6Bd400gxOAMPO8" + ], + "frameId": null, + "index": "b3W", + "roundness": null, + "seed": 1447507520, + "version": 405, + "versionNonce": 1393296960, + "isDeleted": false, + "boundElements": [], + "updated": 1740580778236, + "link": null, + "locked": false, + "text": "AWS", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "rlYmyHL1IXwaHsTpEo841", + "originalText": "AWS", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "WPUwETobElv1gvm3kbyld", + "type": "rectangle", + "x": 1934.4453125, + "y": 1062, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3X", + "roundness": null, + "seed": 778544704, + "version": 443, + "versionNonce": 306044480, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "-i4dKitm4F_iLMzXiy_ir" + } + ], + "updated": 1740580823559, + "link": null, + "locked": false + }, + { + "id": "-i4dKitm4F_iLMzXiy_ir", + "type": "text", + "x": 1950.9219207763672, + "y": 1071.5, + "width": 110.49990844726562, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3Y", + "roundness": null, + "seed": 1192812096, + "version": 455, + "versionNonce": 408038976, + "isDeleted": false, + "boundElements": [], + "updated": 1740580826947, + "link": null, + "locked": false, + "text": "Retina-EKS", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "WPUwETobElv1gvm3kbyld", + "originalText": "Retina-EKS", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "257HPVXWrNcRtVnY8s6YS", + "type": "rectangle", + "x": 2932.4453125, + "y": 494, + "width": 143.453125, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3a", + "roundness": null, + "seed": 1179647424, + "version": 596, + "versionNonce": 1462343104, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "vGs-Ngj72TJL0gUzLwY7G" + } + ], + "updated": 1740580892698, + "link": null, + "locked": false + }, + { + "id": "vGs-Ngj72TJL0gUzLwY7G", + "type": "text", + "x": 2949.6319274902344, + "y": 503.5, + "width": 109.07989501953125, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3b", + "roundness": null, + "seed": 2131379648, + "version": 636, + "versionNonce": 1894833600, + "isDeleted": false, + "boundElements": [], + "updated": 1740580892698, + "link": null, + "locked": false, + "text": "Retina-AKS", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "257HPVXWrNcRtVnY8s6YS", + "originalText": "Retina-AKS", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "v4d9W-IY2q381qD7h7yMA", + "type": "rectangle", + "x": 2915.7109375, + "y": 802, + "width": 194.92187500000003, + "height": 60, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3c", + "roundness": null, + "seed": 1426953664, + "version": 678, + "versionNonce": 1877034432, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "yvYzeEdPzGxjqRs1NBzXb" + } + ], + "updated": 1740580934885, + "link": null, + "locked": false + }, + { + "id": "yvYzeEdPzGxjqRs1NBzXb", + "type": "text", + "x": 2926.7819290161133, + "y": 819.5, + "width": 172.77989196777344, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3d", + "roundness": null, + "seed": 307551680, + "version": 729, + "versionNonce": 1999801792, + "isDeleted": false, + "boundElements": [], + "updated": 1740580934885, + "link": null, + "locked": false, + "text": "Prometheus-KIND", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "v4d9W-IY2q381qD7h7yMA", + "originalText": "Prometheus-KIND", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "HaGdM-rthIgT0UDzqb08d", + "type": "text", + "x": 2179.171875, + "y": 1155, + "width": 555.6195678710938, + "height": 100, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b3g", + "roundness": null, + "seed": 19166784, + "version": 351, + "versionNonce": 1881728576, + "isDeleted": false, + "boundElements": null, + "updated": 1740581235941, + "link": null, + "locked": false, + "text": "Live environments consist in the deployment of \nclusters, Retina, Prometheus, Kubernetes Load Balancers\nand Grafana data-sources configuration to demo\nRetina multi-cloud on a single pane of glass", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Live environments consist in the deployment of \nclusters, Retina, Prometheus, Kubernetes Load Balancers\nand Grafana data-sources configuration to demo\nRetina multi-cloud on a single pane of glass", + "autoResize": true, + "lineHeight": 1.25 } ], "appState": { diff --git a/test/multicloud/diagrams/diagram.svg b/test/multicloud/diagrams/diagram.svg index afa9a3c21b..bb9800a552 100644 --- a/test/multicloud/diagrams/diagram.svg +++ b/test/multicloud/diagrams/diagram.svg @@ -1,2 +1,2 @@ -Multi-Cloud ProjectOpenTofu IaCGO TestingFrameworkAKS KINDRetinaHelm AzureKINDGoogle CloudGKEModulesProvidersAKS KINDRetinaGKEExamplesRetina-AKSRetina-KINDRetina-GKELiveInstantiatesInstantiatesUsesUsesUsesAKS KINDRetinaGKEUnitRetina-AKS Retina-KINDRetina-GKEIntegrationUsesUses \ No newline at end of file +Multi-Cloud ProjectOpenTofu IaCGO TestingFrameworkAKS KINDHelm-ReleaseHelm AzureKINDGoogle CloudGKEModulesProvidersAKS KINDGrafanaGKEExamplesRetina-AKSRetina-KINDRetina-GKELiveInstantiatesInstantiatesUsesUsesUsesAKS KINDEKSGKEUnitRetina-EKSRetina-KINDRetina-GKEIntegrationUsesUsesEKSEKSGKE-firewallAKS-nsgKubernetes-LBGrafanaKubernetesGrafanaAWSRetina-EKSRetina-AKSPrometheus-KINDLive environments consist in the deployment of clusters, Retina, Prometheus, Kubernetes Load Balancersand Grafana data-sources configuration to demoRetina multi-cloud on a single pane of glass \ No newline at end of file diff --git a/test/multicloud/examples/eks/.terraform.lock.hcl b/test/multicloud/examples/eks/.terraform.lock.hcl new file mode 100644 index 0000000000..b0bac7aea9 --- /dev/null +++ b/test/multicloud/examples/eks/.terraform.lock.hcl @@ -0,0 +1,20 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/aws" { + version = "5.88.0" + constraints = "5.88.0" + hashes = [ + "h1:KjdFkIHjFWoq9D3AqHRBB0cHltoQYzuHEFWLB20Z2hw=", + "zh:0c78bb975ec21b8fc4953a9e2afbe2d63eb620594df4002ca4c7bde9e508348a", + "zh:0f3a76c0e720c13874c83de89d6ce634cdd85a361994752e573b062ed9011192", + "zh:288deee7ede0e90090b5381cf36ba68d7fa0f6d136b8d12ae71a2d78f31444ff", + "zh:57195d120a4f5359206c0d3fa5ac69469bf20c6840299afe77cb45adb44ff82c", + "zh:643cc8ddfdc6686972619dc1837bde4760d9c46ad4f4b47690dab4167d2429f7", + "zh:7439fea847e3d38418a2a3a52f3c17f179972f83131b27997b1dbe704114202d", + "zh:c48a364cc1b89ffd18ef759bc77a25ab545485b63da0c311757c339d43e26dc4", + "zh:c890c07ce4829eac2fe860b76f737cb3112775cd47001b9b138767bf81f308c5", + "zh:cca81b0a024c2bf126dc604366ee4e5e5e116b68a5662e661f62d0771fd247c0", + "zh:f8c9aa5a07b5597d6d9c408a6f7461e1d5ac9c2bc8aee7d1179d7d54646523de", + ] +} diff --git a/test/multicloud/examples/eks/main.tf b/test/multicloud/examples/eks/main.tf new file mode 100644 index 0000000000..7dcbe9a8b9 --- /dev/null +++ b/test/multicloud/examples/eks/main.tf @@ -0,0 +1,5 @@ +module "eks" { + source = "../../modules/eks" + prefix = var.prefix + region = var.region +} \ No newline at end of file diff --git a/test/multicloud/examples/eks/outputs.tf b/test/multicloud/examples/eks/outputs.tf new file mode 100644 index 0000000000..38b0914c45 --- /dev/null +++ b/test/multicloud/examples/eks/outputs.tf @@ -0,0 +1,19 @@ +output "aws_get_kubeconfig" { + value = module.eks.aws_get_kubeconfig + description = "Run this command to fetch the kubeconfig for your EKS cluster" +} + +output "access_token" { + value = module.eks.access_token + sensitive = true +} + +output "host" { + value = module.eks.host + sensitive = true +} + +output "cluster_ca_certificate" { + value = module.eks.cluster_ca_certificate + sensitive = true +} \ No newline at end of file diff --git a/test/multicloud/examples/eks/provider.tf b/test/multicloud/examples/eks/provider.tf new file mode 100644 index 0000000000..2be63a93f7 --- /dev/null +++ b/test/multicloud/examples/eks/provider.tf @@ -0,0 +1,13 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "5.88.0" + } + } +} + +# Configure the AWS Provider +provider "aws" { + region = var.region +} diff --git a/test/multicloud/examples/eks/variables.tf b/test/multicloud/examples/eks/variables.tf new file mode 100644 index 0000000000..1f5c8809d8 --- /dev/null +++ b/test/multicloud/examples/eks/variables.tf @@ -0,0 +1,9 @@ +variable "prefix" { + description = "A prefix to add to all resources." + type = string +} + +variable "region" { + description = "The AWS region to deploy to." + type = string +} \ No newline at end of file diff --git a/test/multicloud/examples/integration/retina-eks/.terraform.lock.hcl b/test/multicloud/examples/integration/retina-eks/.terraform.lock.hcl new file mode 100644 index 0000000000..cc5adad05a --- /dev/null +++ b/test/multicloud/examples/integration/retina-eks/.terraform.lock.hcl @@ -0,0 +1,38 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/hashicorp/aws" { + version = "5.88.0" + constraints = "5.88.0" + hashes = [ + "h1:KjdFkIHjFWoq9D3AqHRBB0cHltoQYzuHEFWLB20Z2hw=", + "zh:0c78bb975ec21b8fc4953a9e2afbe2d63eb620594df4002ca4c7bde9e508348a", + "zh:0f3a76c0e720c13874c83de89d6ce634cdd85a361994752e573b062ed9011192", + "zh:288deee7ede0e90090b5381cf36ba68d7fa0f6d136b8d12ae71a2d78f31444ff", + "zh:57195d120a4f5359206c0d3fa5ac69469bf20c6840299afe77cb45adb44ff82c", + "zh:643cc8ddfdc6686972619dc1837bde4760d9c46ad4f4b47690dab4167d2429f7", + "zh:7439fea847e3d38418a2a3a52f3c17f179972f83131b27997b1dbe704114202d", + "zh:c48a364cc1b89ffd18ef759bc77a25ab545485b63da0c311757c339d43e26dc4", + "zh:c890c07ce4829eac2fe860b76f737cb3112775cd47001b9b138767bf81f308c5", + "zh:cca81b0a024c2bf126dc604366ee4e5e5e116b68a5662e661f62d0771fd247c0", + "zh:f8c9aa5a07b5597d6d9c408a6f7461e1d5ac9c2bc8aee7d1179d7d54646523de", + ] +} + +provider "registry.opentofu.org/hashicorp/helm" { + version = "2.17.0" + constraints = "2.17.0" + hashes = [ + "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", + "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", + "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", + "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", + "zh:3976400ceba6dda4636e1d297e3097e1831de5628afa534a166de98a70d1dcbe", + "zh:54440ef14f342b41d75c1aded7487bfcc3f76322b75894235b47b7e89ac4bfa4", + "zh:6512e2ab9f2fa31cbb90d9249647b5c5798f62eb1215ec44da2cdaa24e38ad25", + "zh:795f327ca0b8c5368af0ed03d5d4f6da7260692b4b3ca0bd004ed542e683464d", + "zh:ba659e1d94f224bc3f1fd34cbb9d2663e3a8e734108e5a58eb49eda84b140978", + "zh:c5c8575c4458835c2acbc3d1ed5570589b14baa2525d8fbd04295c097caf41eb", + "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", + ] +} diff --git a/test/multicloud/examples/integration/retina-eks/main.tf b/test/multicloud/examples/integration/retina-eks/main.tf new file mode 100644 index 0000000000..4516f0a051 --- /dev/null +++ b/test/multicloud/examples/integration/retina-eks/main.tf @@ -0,0 +1,15 @@ +module "eks" { + source = "../../../modules/eks" + prefix = var.prefix + region = var.region +} + +module "retina" { + depends_on = [module.eks] + source = "../../../modules/helm-release" + release_name = var.retina_release_name + repository_url = var.retina_repository_url + chart_version = var.retina_chart_version + chart_name = var.retina_chart_name + values = var.retina_values +} diff --git a/test/multicloud/examples/integration/retina-eks/outputs.tf b/test/multicloud/examples/integration/retina-eks/outputs.tf new file mode 100644 index 0000000000..1d7f092b6a --- /dev/null +++ b/test/multicloud/examples/integration/retina-eks/outputs.tf @@ -0,0 +1,14 @@ +output "access_token" { + value = module.eks.access_token + sensitive = true +} + +output "host" { + value = module.eks.host + sensitive = true +} + +output "cluster_ca_certificate" { + value = module.eks.cluster_ca_certificate + sensitive = true +} \ No newline at end of file diff --git a/test/multicloud/examples/integration/retina-eks/providers.tf b/test/multicloud/examples/integration/retina-eks/providers.tf new file mode 100644 index 0000000000..1769db9f20 --- /dev/null +++ b/test/multicloud/examples/integration/retina-eks/providers.tf @@ -0,0 +1,37 @@ +terraform { + required_version = "1.8.3" + required_providers { + aws = { + source = "hashicorp/aws" + version = "5.88.0" + } + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + } +} + +# Configure the AWS Provider +provider "aws" { + region = var.region +} + +data "aws_eks_cluster_auth" "eks" { + name = "${var.prefix}-eks" + depends_on = [module.eks] +} + +data "aws_eks_cluster" "eks" { + name = "${var.prefix}-eks" + depends_on = [module.eks] +} + +# Initialize the Helm provider +provider "helm" { + kubernetes { + token = data.aws_eks_cluster_auth.eks.token + host = data.aws_eks_cluster.eks.endpoint + cluster_ca_certificate = base64decode(data.aws_eks_cluster.eks.certificate_authority[0].data) + } +} \ No newline at end of file diff --git a/test/multicloud/examples/integration/retina-eks/variables.tf b/test/multicloud/examples/integration/retina-eks/variables.tf new file mode 100644 index 0000000000..ce65eb2927 --- /dev/null +++ b/test/multicloud/examples/integration/retina-eks/variables.tf @@ -0,0 +1,38 @@ +variable "prefix" { + description = "A prefix to add to all resources." + type = string +} + +variable "region" { + description = "The AWS region to deploy to." + type = string +} + +variable "retina_release_name" { + description = "The name of the Helm release." + type = string + default = "retina" +} + +variable "retina_repository_url" { + description = "The URL of the Helm repository." + type = string + default = "oci://ghcr.io/microsoft/retina/charts" +} + +variable "retina_chart_version" { + description = "The version of the Helm chart to install." + type = string + default = "v0.0.24" +} + +variable "retina_chart_name" { + description = "The name of the Helm chart to install." + type = string + default = "retina" +} + +variable "retina_values" { + description = "This corresponds to Helm values.yaml" + type = any +} diff --git a/test/multicloud/image.png b/test/multicloud/image.png deleted file mode 100644 index 4e24e1841dbfd2010d12f941ddb7e380c952649c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 569348 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

o*3ynY{dO#aA3Y0j~0g{!5W9IMt-&TN| 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 z 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�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

CK~rVFVCY+|Fcz2Qz3Oe%pq1nP_lrG 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

#k=&GvK`0JPmukYpTejoIWozIoUx< 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

e!QXgE+;-9bWdJwc52cy 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 ZXyEyD^z65XKN9dGFQY77Drpk(e*pMkudM(8 diff --git a/test/multicloud/live/retina-aks/main.tf b/test/multicloud/live/retina-aks/main.tf index c8b1b6b69b..fd3039ca4c 100644 --- a/test/multicloud/live/retina-aks/main.tf +++ b/test/multicloud/live/retina-aks/main.tf @@ -50,4 +50,6 @@ module "grafana" { prometheus_endpoints = { aks = "http://${module.prometheus_lb_aks.ip}:9090" } + # All dashboards are deployed as part of live/retina-eks + dashboards = {} } \ No newline at end of file diff --git a/test/multicloud/live/retina-eks/.terraform.lock.hcl b/test/multicloud/live/retina-eks/.terraform.lock.hcl new file mode 100644 index 0000000000..d52bddf534 --- /dev/null +++ b/test/multicloud/live/retina-eks/.terraform.lock.hcl @@ -0,0 +1,84 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/grafana/grafana" { + version = "3.18.3" + constraints = "3.18.3" + hashes = [ + "h1:h8jsFjj3XT5GveS9eb8+KxgErmQLE8ZKe0Cdgbi+11Q=", + "zh:15f8db87fb9d9627b2d94c7d578f96dbfd1bd8e178e984cfd1ff619ac4b2312e", + "zh:202cb8bb6b0f99b57847d7bd463c7d465e7a5f6ebd8930563b77a564a263232f", + "zh:2589bc9d77c3004b79caa9cb82821034b92cb771f9e77dbbc2717d16ee010877", + "zh:4d0811400a9d8c5147f56e6e6365649464b9d939c8e4b3e804fa33a7172e615d", + "zh:576c93474d7a7a15133e443b742a09e73c49ba8397dd1db0a3bc1615e8ed941f", + "zh:659ba97fbfaf2971b4206442aad9950ef80a9d184ee9acb1353d4bd744ef76c4", + "zh:695cbbcaaf0fb51576383ace67e75b80c2fae6c0ee9c2acf427265390dd9400a", + "zh:6dbea832d760eedffb37ee1a87c179b6ede7f236a48c85e569fccbf17ceb44e1", + "zh:786d51a46995dc81b574049f1257fc9c60137949bb1fc65ebc8b9a99537d0333", + "zh:80243a2876c4c499da80caf13fc38be2d13ec4fbcf83b150a4243a671cb25854", + "zh:8d395cd587e3f2587f90dca698cfe498577a606b27cdc83b75d35ab2425ad092", + "zh:a7a209802774b24aebec6ad4d1cf98257f30270c3493e551b7129f076a8f2198", + "zh:ac269db542be25bb525a5a9dd398ef7a72f2a81a21543182e7d2b7855e10b0de", + "zh:c8669f217de2878a9b503caa465941576155002ce9f0f48c071ecc9348a4b0ab", + "zh:d2b6205399085d22ed81345b78ebc66e8ca8703e93da6c3f1e418174ecdc71f0", + "zh:ddde96484350a433f16d23cf7649d142aa5764e122cf5f7f12d3d2b162960b56", + "zh:de14ef67291555620720bb067754d16c8a4a457ca0ea52907479ea5d91f0e9b3", + "zh:e84f064e3cf21c2445bf064a1a98d3e7cd092f8dc3a78812e4fb8a8bcde935d3", + "zh:e9281573351e6ecddf72bbec9bcd9d6f30003fdbf675a02b0b60bd0ce6a70b04", + "zh:ff3b499b47a69f3c2ad27ad8b5a6ccd0b437cae126a9b9e99d0f97d349bf5cfd", + ] +} + +provider "registry.opentofu.org/hashicorp/aws" { + version = "5.88.0" + constraints = "5.88.0" + hashes = [ + "h1:KjdFkIHjFWoq9D3AqHRBB0cHltoQYzuHEFWLB20Z2hw=", + "zh:0c78bb975ec21b8fc4953a9e2afbe2d63eb620594df4002ca4c7bde9e508348a", + "zh:0f3a76c0e720c13874c83de89d6ce634cdd85a361994752e573b062ed9011192", + "zh:288deee7ede0e90090b5381cf36ba68d7fa0f6d136b8d12ae71a2d78f31444ff", + "zh:57195d120a4f5359206c0d3fa5ac69469bf20c6840299afe77cb45adb44ff82c", + "zh:643cc8ddfdc6686972619dc1837bde4760d9c46ad4f4b47690dab4167d2429f7", + "zh:7439fea847e3d38418a2a3a52f3c17f179972f83131b27997b1dbe704114202d", + "zh:c48a364cc1b89ffd18ef759bc77a25ab545485b63da0c311757c339d43e26dc4", + "zh:c890c07ce4829eac2fe860b76f737cb3112775cd47001b9b138767bf81f308c5", + "zh:cca81b0a024c2bf126dc604366ee4e5e5e116b68a5662e661f62d0771fd247c0", + "zh:f8c9aa5a07b5597d6d9c408a6f7461e1d5ac9c2bc8aee7d1179d7d54646523de", + ] +} + +provider "registry.opentofu.org/hashicorp/helm" { + version = "2.17.0" + constraints = "2.17.0" + hashes = [ + "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", + "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", + "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", + "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", + "zh:3976400ceba6dda4636e1d297e3097e1831de5628afa534a166de98a70d1dcbe", + "zh:54440ef14f342b41d75c1aded7487bfcc3f76322b75894235b47b7e89ac4bfa4", + "zh:6512e2ab9f2fa31cbb90d9249647b5c5798f62eb1215ec44da2cdaa24e38ad25", + "zh:795f327ca0b8c5368af0ed03d5d4f6da7260692b4b3ca0bd004ed542e683464d", + "zh:ba659e1d94f224bc3f1fd34cbb9d2663e3a8e734108e5a58eb49eda84b140978", + "zh:c5c8575c4458835c2acbc3d1ed5570589b14baa2525d8fbd04295c097caf41eb", + "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", + ] +} + +provider "registry.opentofu.org/hashicorp/kubernetes" { + version = "2.35.1" + constraints = "2.35.1" + hashes = [ + "h1:HvgGiweJx159xJsHIgkMQl1eVTcISwGvd8ADXFU46Rk=", + "zh:0a569918d9e81755bdacb2380e70ed304c442e957a029984cbcd9ec88e5d3635", + "zh:1d4d1241cf51d7d4a036c774add1384bb1ba9ca16146334d17c730e1b41ad3e0", + "zh:243219f415f5d8caf32a4e6b6bf596c11cf7db5501ccb4ae77cc0b084bb5d108", + "zh:2f3a33cba73918adc6f580c76b252881f22beb75277df8ca26a01eb5411348f9", + "zh:3b5247f69e72d1e94ac965fa570f448436cedb278f3f29836f6a345aa1bbd5b6", + "zh:4206bca7bf30708e235535af50529565b14f30262dc43142153a1774ee5086af", + "zh:490c80454b8808bb937498aea98e4076a74887446b05feb6e200015613b5e065", + "zh:5e39824289f7b29711681bce98fbb6c27ed221b071a8c78fd0de7f6c2dae4371", + "zh:a7bf7892217bdb0464664f62485d89d014874b0dfb564e99c364fc6dd20c6a3b", + "zh:e8251170bad1c3e2d9c22d0f4dae7239f1a364f05732f7dff5c8e4ec76a95c5a", + ] +} diff --git a/test/multicloud/live/retina-eks/locals.tf b/test/multicloud/live/retina-eks/locals.tf new file mode 100644 index 0000000000..65f4f70001 --- /dev/null +++ b/test/multicloud/live/retina-eks/locals.tf @@ -0,0 +1,27 @@ +locals { + prefix = "mc" + region = "eu-west-1" + + retina_release_name = "retina" + retina_repository_url = "oci://ghcr.io/microsoft/retina/charts" + retina_chart_version = "v0.0.24" + retina_release_namespace = "kube-system" + retina_chart_name = "retina-hubble" + retina_values = yamldecode(file("../files/retina-hubble.yaml")) + + prometheus_release_name = "prometheus" + prometheus_repository_url = "https://prometheus-community.github.io/helm-charts" + prometheus_chart_version = "68.4.3" + prometheus_chart_name = "kube-prometheus-stack" + prometheus_release_namespace = "kube-system" + prometheus_values = yamldecode(file("../../../../deploy/hubble/prometheus/values.yaml")) + + dashboards = { + "clusters" = "clusters.json" + "hubble-dns" = "hubble-dns.json" + "hubble-pod-flows-namespace" = "hubble-pod-flows-namespace.json" + "hubble-pod-flows-workload" = "hubble-pod-flows-workload.json" + "standard-dns" = "standard-dns.json" + "standard-pod-level" = "standard-pod-level.json" + } +} \ No newline at end of file diff --git a/test/multicloud/live/retina-eks/main.tf b/test/multicloud/live/retina-eks/main.tf new file mode 100644 index 0000000000..6068df89fc --- /dev/null +++ b/test/multicloud/live/retina-eks/main.tf @@ -0,0 +1,56 @@ +module "eks" { + source = "../../modules/eks" + region = local.region + prefix = local.prefix +} + +module "retina_eks" { + depends_on = [module.eks] + source = "../../modules/helm-release" + chart_version = local.retina_chart_version + release_name = local.retina_release_name + release_namespace = local.retina_release_namespace + repository_url = local.retina_repository_url + chart_name = local.retina_chart_name + values = local.retina_values +} + +module "prometheus_eks" { + depends_on = [module.eks] + source = "../../modules/helm-release" + chart_version = local.prometheus_chart_version + values = local.prometheus_values + release_name = local.prometheus_release_name + release_namespace = local.prometheus_release_namespace + repository_url = local.prometheus_repository_url + chart_name = local.prometheus_chart_name +} + +module "prometheus_lb_eks" { + depends_on = [ + module.eks, + module.prometheus_eks + ] + source = "../../modules/kubernetes-lb" +} + +# module "eks_firewall" { +# depends_on = [module.eks] +# source = "../../modules/eks-firewall" +# prefix = local.prefix +# inbound_firewall_rule = local.gke_firewall_rules.inbound +# outbound_firewall_rule = local.gke_firewall_rules.outbound +# } + +module "grafana" { + depends_on = [module.prometheus_lb_eks] + source = "../../modules/grafana" + prometheus_endpoints = { + eks = "http://${module.prometheus_lb_eks.hostname}:9090" # Note: EKS uses hostname instead of IP + } + # Make sure dashboards are deployed only once + # if any values is passed here, then + # live/retina-aks and live/retina-gke shuould + # be set to empty map (default) + dashboards = local.dashboards +} \ No newline at end of file diff --git a/test/multicloud/live/retina-eks/outputs.tf b/test/multicloud/live/retina-eks/outputs.tf new file mode 100644 index 0000000000..c1bc691c35 --- /dev/null +++ b/test/multicloud/live/retina-eks/outputs.tf @@ -0,0 +1,3 @@ +output "kubeconfig_command" { + value = module.eks.aws_get_kubeconfig +} diff --git a/test/multicloud/live/retina-eks/providers.tf b/test/multicloud/live/retina-eks/providers.tf new file mode 100644 index 0000000000..bce652b648 --- /dev/null +++ b/test/multicloud/live/retina-eks/providers.tf @@ -0,0 +1,57 @@ +terraform { + required_version = "1.8.3" + required_providers { + aws = { + source = "hashicorp/aws" + version = "5.88.0" + } + helm = { + source = "hashicorp/helm" + version = "2.17.0" + } + kubernetes = { + source = "hashicorp/kubernetes" + version = "2.35.1" + } + grafana = { + source = "grafana/grafana" + version = "3.18.3" + } + } +} + +# Configure the AWS Provider +provider "aws" { + region = local.region +} + +data "aws_eks_cluster_auth" "eks" { + name = "${local.prefix}-eks" + depends_on = [module.eks] +} + +data "aws_eks_cluster" "eks" { + name = "${local.prefix}-eks" + depends_on = [module.eks] +} + +# Initialize the Helm provider +provider "helm" { + kubernetes { + token = data.aws_eks_cluster_auth.eks.token + host = data.aws_eks_cluster.eks.endpoint + cluster_ca_certificate = base64decode(data.aws_eks_cluster.eks.certificate_authority[0].data) + } +} + +# Initialize the Kubernetes provider for GKE +provider "kubernetes" { + token = data.aws_eks_cluster_auth.eks.token + host = data.aws_eks_cluster.eks.endpoint + cluster_ca_certificate = base64decode(data.aws_eks_cluster.eks.certificate_authority[0].data) +} + +# Initialize the Grafana provider +provider "grafana" { + url = var.grafana_url +} diff --git a/test/multicloud/live/retina-eks/variables.tf b/test/multicloud/live/retina-eks/variables.tf new file mode 100644 index 0000000000..b20a8b01ee --- /dev/null +++ b/test/multicloud/live/retina-eks/variables.tf @@ -0,0 +1,4 @@ +variable "grafana_url" { + description = "The URL of the Grafana instance" + type = string +} \ No newline at end of file diff --git a/test/multicloud/live/retina-gke/main.tf b/test/multicloud/live/retina-gke/main.tf index e8894c205f..27e8c3e40b 100644 --- a/test/multicloud/live/retina-gke/main.tf +++ b/test/multicloud/live/retina-gke/main.tf @@ -50,4 +50,6 @@ module "grafana" { prometheus_endpoints = { gke = "http://${module.prometheus_lb_gke.ip}:9090" } + # All dashboards are deployed as part of live/retina-eks + dashboards = {} } \ No newline at end of file diff --git a/test/multicloud/modules/eks/main.tf b/test/multicloud/modules/eks/main.tf new file mode 100644 index 0000000000..c1d78e630b --- /dev/null +++ b/test/multicloud/modules/eks/main.tf @@ -0,0 +1,230 @@ +resource "aws_vpc" "vpc" { + cidr_block = "10.0.0.0/16" +} + +# Public subnet for NAT Gateway +resource "aws_subnet" "subnet1_private" { + vpc_id = aws_vpc.vpc.id + cidr_block = "10.0.1.0/24" + availability_zone = "${var.region}a" +} + +resource "aws_subnet" "subnet2_private" { + vpc_id = aws_vpc.vpc.id + cidr_block = "10.0.2.0/24" + availability_zone = "${var.region}b" +} + +resource "aws_subnet" "subnet3_public" { + vpc_id = aws_vpc.vpc.id + cidr_block = "10.0.3.0/24" + availability_zone = "${var.region}c" + map_public_ip_on_launch = true +} + +# Internet Gateway +resource "aws_internet_gateway" "internet_gateway" { + vpc_id = aws_vpc.vpc.id +} + +resource "aws_route_table" "public_route_table" { + vpc_id = aws_vpc.vpc.id + + # route public traffic to Internet Gateway + route { + cidr_block = "0.0.0.0/0" + gateway_id = aws_internet_gateway.internet_gateway.id + } +} + +resource "aws_route_table_association" "public_route_table_association" { + subnet_id = aws_subnet.subnet3_public.id + route_table_id = aws_route_table.public_route_table.id +} + +# NAT Gateway for private workers to access the internet +resource "aws_eip" "nat" {} + +resource "aws_nat_gateway" "nat_gateway" { + allocation_id = aws_eip.nat.id + subnet_id = aws_subnet.subnet3_public.id # NAT in public subnet +} + +resource "aws_route_table" "private_route_table" { + vpc_id = aws_vpc.vpc.id + + # route private traffic to NAT Gateway + route { + cidr_block = "0.0.0.0/0" + nat_gateway_id = aws_nat_gateway.nat_gateway.id + } +} + +resource "aws_route_table_association" "private_route_table_association1" { + subnet_id = aws_subnet.subnet1_private.id + route_table_id = aws_route_table.private_route_table.id +} + +resource "aws_route_table_association" "private_route_table_association2" { + subnet_id = aws_subnet.subnet2_private.id + route_table_id = aws_route_table.private_route_table.id +} + +resource "aws_iam_role" "eks_cluster_role" { + name = "eks-cluster-example" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = [ + "sts:AssumeRole", + "sts:TagSession" + ] + Effect = "Allow" + Principal = { + Service = "eks.amazonaws.com" + } + }, + ] + }) +} + +resource "aws_iam_role_policy_attachment" "eks_cluster_AmazonEKSClusterPolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy" + role = aws_iam_role.eks_cluster_role.name +} + +resource "aws_iam_role_policy_attachment" "eks_cluster_AmazonEKSVPCResourceController" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSVPCResourceController" + role = aws_iam_role.eks_cluster_role.name +} + +# EKS Security Group +resource "aws_security_group" "eks" { + vpc_id = aws_vpc.vpc.id +} + +# Security Group for worker nodes +resource "aws_security_group" "eks_worker" { + vpc_id = aws_vpc.vpc.id + + # Allow worker nodes to communicate with the EKS control plane + egress { + description = "allow-outbound" + from_port = 443 + to_port = 443 + protocol = "tcp" + security_groups = [aws_security_group.eks.id] + } + # Allow EKS control plane to communicate with worker nodes + ingress { + description = "allow-inbound" + from_port = 1025 + to_port = 65535 + protocol = "tcp" + security_groups = [aws_security_group.eks.id] + } +} + +resource "aws_eks_cluster" "eks" { + name = "${var.prefix}-eks" + + access_config { + authentication_mode = "API" + bootstrap_cluster_creator_admin_permissions = true + } + + role_arn = aws_iam_role.eks_cluster_role.arn + version = "1.31" + + remote_network_config { + remote_node_networks { + cidrs = ["172.16.0.0/18"] + } + remote_pod_networks { + cidrs = ["172.16.64.0/18"] + } + } + + vpc_config { + security_group_ids = [ + aws_security_group.eks.id, + aws_security_group.eks_worker.id, + ] + subnet_ids = [ + aws_subnet.subnet1_private.id, + aws_subnet.subnet2_private.id, + aws_subnet.subnet3_public.id, + ] + } + + # Ensure that IAM Role permissions are created before and deleted + # after EKS Cluster handling. Otherwise, EKS will not be able to + # properly delete EKS managed EC2 infrastructure such as Security Groups. + depends_on = [ + aws_iam_role_policy_attachment.eks_cluster_AmazonEKSClusterPolicy, + aws_iam_role_policy_attachment.eks_cluster_AmazonEKSVPCResourceController, + ] +} + +resource "aws_iam_role" "eks_node_group_role" { + name = "${var.prefix}-eks-node-group-role" + + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Effect = "Allow" + Principal = { + Service = "ec2.amazonaws.com" + } + Action = "sts:AssumeRole" + } + ] + }) +} + +resource "aws_iam_role_policy_attachment" "eks_node_group_AmazonEKSWorkerNodePolicy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy" + role = aws_iam_role.eks_node_group_role.name +} + +resource "aws_iam_role_policy_attachment" "eks_node_group_AmazonEKS_CNI_Policy" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy" + role = aws_iam_role.eks_node_group_role.name +} + +resource "aws_iam_role_policy_attachment" "eks_node_group_AmazonEC2ContainerRegistryReadOnly" { + policy_arn = "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly" + role = aws_iam_role.eks_node_group_role.name +} + +resource "aws_eks_node_group" "node_group" { + cluster_name = aws_eks_cluster.eks.name + node_group_name = "${var.prefix}-node-group" + node_role_arn = aws_iam_role.eks_node_group_role.arn + subnet_ids = aws_eks_cluster.eks.vpc_config[0].subnet_ids + + # Ensure that IAM Role permissions are created before and deleted + scaling_config { + desired_size = 2 + max_size = 3 + min_size = 1 + } + + instance_types = ["t3.medium"] + + depends_on = [ + aws_iam_role_policy_attachment.eks_node_group_AmazonEKSWorkerNodePolicy, + aws_iam_role_policy_attachment.eks_node_group_AmazonEKS_CNI_Policy, + aws_iam_role_policy_attachment.eks_node_group_AmazonEC2ContainerRegistryReadOnly, + ] +} + +data "aws_eks_cluster_auth" "eks" { + name = aws_eks_cluster.eks.name +} + +data "aws_eks_cluster" "eks" { + name = aws_eks_cluster.eks.name +} diff --git a/test/multicloud/modules/eks/outputs.tf b/test/multicloud/modules/eks/outputs.tf new file mode 100644 index 0000000000..029d2122fe --- /dev/null +++ b/test/multicloud/modules/eks/outputs.tf @@ -0,0 +1,19 @@ +output "aws_get_kubeconfig" { + value = "aws eks update-kubeconfig --name ${aws_eks_cluster.eks.name} --region ${var.region}" + description = "Run this command to fetch the kubeconfig for your EKS cluster" +} + +output "access_token" { + value = data.aws_eks_cluster_auth.eks.token + sensitive = true +} + +output "host" { + value = data.aws_eks_cluster.eks.endpoint + sensitive = true +} + +output "cluster_ca_certificate" { + value = data.aws_eks_cluster.eks.certificate_authority[0].data + sensitive = true +} diff --git a/test/multicloud/modules/eks/provider.tf b/test/multicloud/modules/eks/provider.tf new file mode 100644 index 0000000000..04eb26062a --- /dev/null +++ b/test/multicloud/modules/eks/provider.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "5.88.0" + } + } +} diff --git a/test/multicloud/modules/eks/variables.tf b/test/multicloud/modules/eks/variables.tf new file mode 100644 index 0000000000..1f5c8809d8 --- /dev/null +++ b/test/multicloud/modules/eks/variables.tf @@ -0,0 +1,9 @@ +variable "prefix" { + description = "A prefix to add to all resources." + type = string +} + +variable "region" { + description = "The AWS region to deploy to." + type = string +} \ No newline at end of file diff --git a/test/multicloud/modules/grafana/main.tf b/test/multicloud/modules/grafana/main.tf index fda875b6d4..135daf00cb 100644 --- a/test/multicloud/modules/grafana/main.tf +++ b/test/multicloud/modules/grafana/main.tf @@ -4,4 +4,12 @@ resource "grafana_data_source" "prometheus" { name = each.key type = "prometheus" url = each.value +} + +resource "grafana_dashboard" "dashboard" { + for_each = var.dashboards + + # hardcoded for simplicity, but we might want to make this + # configurable in the future + config_json = file("../../../../deploy/grafana-dashboards/${each.value}") } \ No newline at end of file diff --git a/test/multicloud/modules/grafana/variables.tf b/test/multicloud/modules/grafana/variables.tf index 873c3124aa..0c7238c40e 100644 --- a/test/multicloud/modules/grafana/variables.tf +++ b/test/multicloud/modules/grafana/variables.tf @@ -2,3 +2,9 @@ variable "prometheus_endpoints" { description = "A map of Prometheus endpoints to add as data sources." type = map(string) } + +variable "dashboards" { + description = "A map of dashboards to add." + type = map(string) + default = {} +} diff --git a/test/multicloud/modules/kubernetes-lb/outputs.tf b/test/multicloud/modules/kubernetes-lb/outputs.tf index c7d3e1ec2e..c5f88eff7d 100644 --- a/test/multicloud/modules/kubernetes-lb/outputs.tf +++ b/test/multicloud/modules/kubernetes-lb/outputs.tf @@ -1,3 +1,7 @@ output "ip" { value = element(kubernetes_service.load_balancer_service.status[0].load_balancer[0].ingress, 0).ip } + +output "hostname" { + value = element(kubernetes_service.load_balancer_service.status[0].load_balancer[0].ingress, 0).hostname +} diff --git a/test/multicloud/test/integration/retina_eks_test.go b/test/multicloud/test/integration/retina_eks_test.go new file mode 100644 index 0000000000..58efe41526 --- /dev/null +++ b/test/multicloud/test/integration/retina_eks_test.go @@ -0,0 +1,76 @@ +package test + +import ( + "testing" + "time" + + "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/microsoft/retina/test/multicloud/test/utils" +) + +func TestRetinaEKSIntegration(t *testing.T) { + t.Parallel() + + opts := &terraform.Options{ + TerraformDir: utils.ExamplesPath + "integration/retina-eks", + + Vars: map[string]interface{}{ + "prefix": "test", + "region": "eu-west-1", // Dublin + "retina_chart_version": utils.RetinaVersion, + "retina_values": map[string]interface{}{ + // Example using a public image + "image": map[string]interface{}{ + "tag": "65b6244-linux-amd64", + "repository": "ghcr.io/microsoft/retina/retina-agent", + }, + "operator": map[string]interface{}{ + "tag": utils.RetinaVersion, + }, + "logLevel": "info", + }, + }, + } + + // clean up at the end of the test + defer terraform.Destroy(t, opts) + terraform.InitAndApply(t, opts) + + // get outputs + caCert := utils.FetchSensitiveOutput(t, opts, "cluster_ca_certificate") + host := utils.FetchSensitiveOutput(t, opts, "host") + token := utils.FetchSensitiveOutput(t, opts, "access_token") + + // decode the base64 encoded cert + caCertString := utils.DecodeBase64(t, caCert) + + // build the REST config + restConfig := utils.CreateRESTConfigWithBearer(caCertString, token, host) + + // create a Kubernetes clientset + clientSet, err := utils.BuildClientSet(restConfig) + if err != nil { + t.Fatalf("Failed to create Kubernetes clientset: %v", err) + } + + // test the cluster is accessible + utils.TestClusterAccess(t, clientSet) + + retinaPodSelector := utils.PodSelector{ + Namespace: "kube-system", + LabelSelector: "k8s-app=retina", + ContainerName: "retina", + } + + timeOut := time.Duration(90) * time.Second + // check the retina pods are running + result, err := utils.ArePodsRunning(clientSet, retinaPodSelector, timeOut) + if !result { + t.Fatalf("Retina pods did not start in time: %v\n", err) + } + + // check the retina pods logs for errors + utils.CheckPodLogs(t, clientSet, retinaPodSelector) + + // TODO: add more tests here +} diff --git a/test/multicloud/test/unit/eks_test.go b/test/multicloud/test/unit/eks_test.go new file mode 100644 index 0000000000..ee9a0783df --- /dev/null +++ b/test/multicloud/test/unit/eks_test.go @@ -0,0 +1,44 @@ +package test + +import ( + "testing" + + "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/microsoft/retina/test/multicloud/test/utils" +) + +func TestEKSExample(t *testing.T) { + t.Parallel() + + opts := &terraform.Options{ + TerraformDir: utils.ExamplesPath + "eks", + Vars: map[string]interface{}{ + "prefix": "mc-test", + "region": "eu-west-1", + }, + } + + // clean up at the end of the test + defer terraform.Destroy(t, opts) + terraform.InitAndApply(t, opts) + + // get outputs + caCert := utils.FetchSensitiveOutput(t, opts, "cluster_ca_certificate") + host := utils.FetchSensitiveOutput(t, opts, "host") + token := utils.FetchSensitiveOutput(t, opts, "access_token") + + // decode the base64 encoded cert + caCertString := utils.DecodeBase64(t, caCert) + + // build the REST config + restConfig := utils.CreateRESTConfigWithBearer(caCertString, token, host) + + // create a Kubernetes clientset + clientSet, err := utils.BuildClientSet(restConfig) + if err != nil { + t.Fatalf("Failed to create Kubernetes clientset: %v", err) + } + + // test the cluster is accessible + utils.TestClusterAccess(t, clientSet) +}

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 ZXyEyD^z65XKN9dGFQY77Drpk(e*pMkudM(8 literal 0 HcmV?d00001 diff --git a/test/multicloud/live/files/retina-hubble.yaml b/test/multicloud/live/files/retina-hubble.yaml new file mode 100644 index 0000000000..c2befab118 --- /dev/null +++ b/test/multicloud/live/files/retina-hubble.yaml @@ -0,0 +1,30 @@ +# hubble control-plane +operator: + enabled: true + tag: v0.0.24 + repository: ghcr.io/microsoft/retina/retina-operator + +agent: + enabled: true + repository: ghcr.io/microsoft/retina/retina-agent + tag: v0.0.24 + + init: + enabled: true + repository: ghcr.io/microsoft/retina/retina-init + tag: v0.0.24 + +hubble: + relay: + tls: + server: + enabled: false + tls: + enabled: false + auto: + enabled: false + method: cronJob + certValidityDuration: 1 + schedule: "*/10 * * * *" # every 10 minutes + +enabledPlugin_linux: '["packetparser","dropreason","packetforward","linuxutil","dns"]' diff --git a/test/multicloud/live/files/retina-standard-advanced-local-operator.yaml b/test/multicloud/live/files/retina-standard-advanced-local-operator.yaml new file mode 100644 index 0000000000..b66e396261 --- /dev/null +++ b/test/multicloud/live/files/retina-standard-advanced-local-operator.yaml @@ -0,0 +1,16 @@ +# advanced/pod-level mode designed for scale +# metrics are aggregated by "local" Pod (source for outgoing traffic, destination for incoming traffic) +image: + repository: ghcr.io/microsoft/retina/retina-agent + initRepository: ghcr.io/microsoft/retina/retina-init + tag: v0.0.24 + +operator: + enabled: true + enableRetinaEndpoint: true + tag: v0.0.24 + repository: ghcr.io/microsoft/retina/retina-operator + +enabledPlugin_linux: '["packetparser","dropreason","packetforward","linuxutil","dns"]' +enablePodLevel: true +enableAnnotations: true diff --git a/test/multicloud/live/files/retina-standard-advanced-remote-operator.yaml b/test/multicloud/live/files/retina-standard-advanced-remote-operator.yaml new file mode 100644 index 0000000000..f752cb2b2a --- /dev/null +++ b/test/multicloud/live/files/retina-standard-advanced-remote-operator.yaml @@ -0,0 +1,17 @@ +# advanced/pod-level mode with scale limitations +# metrics are aggregated by source and destination Pod +image: + repository: ghcr.io/microsoft/retina/retina-agent + initRepository: ghcr.io/microsoft/retina/retina-init + tag: v0.0.24 + +operator: + enabled: true + enableRetinaEndpoint: true + tag: v0.0.24 + repository: ghcr.io/microsoft/retina/retina-operator + +enabledPlugin_linux: '["packetparser","dropreason","packetforward","linuxutil","dns"]' +enablePodLevel: true +enableAnnotations: true +remoteContext: true diff --git a/test/multicloud/live/files/retina-standard-basic-mode.yaml b/test/multicloud/live/files/retina-standard-basic-mode.yaml new file mode 100644 index 0000000000..b873e00860 --- /dev/null +++ b/test/multicloud/live/files/retina-standard-basic-mode.yaml @@ -0,0 +1,6 @@ +# basic/node-level mode +image: + rag: v0.0.24 +operator: + tag: v0.0.24 +enabledPlugin_linux: '["dropreason","packetforward","linuxutil","dns"]' diff --git a/test/multicloud/live/retina-aks/.terraform.lock.hcl b/test/multicloud/live/retina-aks/.terraform.lock.hcl index 5c20d26e2a..ddcb5ac6b1 100644 --- a/test/multicloud/live/retina-aks/.terraform.lock.hcl +++ b/test/multicloud/live/retina-aks/.terraform.lock.hcl @@ -1,11 +1,38 @@ # This file is maintained automatically by "tofu init". # Manual edits may be lost in future updates. +provider "registry.opentofu.org/grafana/grafana" { + version = "3.18.3" + constraints = "3.18.3" + hashes = [ + "h1:h8jsFjj3XT5GveS9eb8+KxgErmQLE8ZKe0Cdgbi+11Q=", + "zh:15f8db87fb9d9627b2d94c7d578f96dbfd1bd8e178e984cfd1ff619ac4b2312e", + "zh:202cb8bb6b0f99b57847d7bd463c7d465e7a5f6ebd8930563b77a564a263232f", + "zh:2589bc9d77c3004b79caa9cb82821034b92cb771f9e77dbbc2717d16ee010877", + "zh:4d0811400a9d8c5147f56e6e6365649464b9d939c8e4b3e804fa33a7172e615d", + "zh:576c93474d7a7a15133e443b742a09e73c49ba8397dd1db0a3bc1615e8ed941f", + "zh:659ba97fbfaf2971b4206442aad9950ef80a9d184ee9acb1353d4bd744ef76c4", + "zh:695cbbcaaf0fb51576383ace67e75b80c2fae6c0ee9c2acf427265390dd9400a", + "zh:6dbea832d760eedffb37ee1a87c179b6ede7f236a48c85e569fccbf17ceb44e1", + "zh:786d51a46995dc81b574049f1257fc9c60137949bb1fc65ebc8b9a99537d0333", + "zh:80243a2876c4c499da80caf13fc38be2d13ec4fbcf83b150a4243a671cb25854", + "zh:8d395cd587e3f2587f90dca698cfe498577a606b27cdc83b75d35ab2425ad092", + "zh:a7a209802774b24aebec6ad4d1cf98257f30270c3493e551b7129f076a8f2198", + "zh:ac269db542be25bb525a5a9dd398ef7a72f2a81a21543182e7d2b7855e10b0de", + "zh:c8669f217de2878a9b503caa465941576155002ce9f0f48c071ecc9348a4b0ab", + "zh:d2b6205399085d22ed81345b78ebc66e8ca8703e93da6c3f1e418174ecdc71f0", + "zh:ddde96484350a433f16d23cf7649d142aa5764e122cf5f7f12d3d2b162960b56", + "zh:de14ef67291555620720bb067754d16c8a4a457ca0ea52907479ea5d91f0e9b3", + "zh:e84f064e3cf21c2445bf064a1a98d3e7cd092f8dc3a78812e4fb8a8bcde935d3", + "zh:e9281573351e6ecddf72bbec9bcd9d6f30003fdbf675a02b0b60bd0ce6a70b04", + "zh:ff3b499b47a69f3c2ad27ad8b5a6ccd0b437cae126a9b9e99d0f97d349bf5cfd", + ] +} + provider "registry.opentofu.org/hashicorp/azurerm" { version = "4.15.0" - constraints = ">= 2.0.0" + constraints = "4.15.0" hashes = [ - "h1:0YxkmS5jTUl1LIG+71sgKg/YdlgAoHNr3wyyZjJO8vY=", "h1:xE74Yb3iZZF2F1hQy4B8YVCk0gLAp99pJgZX4eIXYMg=", "zh:0a104acfc45de410d9786bdbf540009dbb7db5632fe7c6846fdb5f865007d0b4", "zh:186f20452ca913e84de0fc9b2dc7872c6480813afe11ea076bd60c45aa2d66d0", @@ -25,7 +52,6 @@ provider "registry.opentofu.org/hashicorp/helm" { constraints = "2.17.0" hashes = [ "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", - "h1:ShIag7wqd5Rs+zYpVMpjAh+T0ozr4XGYfSTKWqceQBY=", "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", @@ -38,3 +64,21 @@ provider "registry.opentofu.org/hashicorp/helm" { "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", ] } + +provider "registry.opentofu.org/hashicorp/kubernetes" { + version = "2.35.1" + constraints = "2.35.1" + hashes = [ + "h1:HvgGiweJx159xJsHIgkMQl1eVTcISwGvd8ADXFU46Rk=", + "zh:0a569918d9e81755bdacb2380e70ed304c442e957a029984cbcd9ec88e5d3635", + "zh:1d4d1241cf51d7d4a036c774add1384bb1ba9ca16146334d17c730e1b41ad3e0", + "zh:243219f415f5d8caf32a4e6b6bf596c11cf7db5501ccb4ae77cc0b084bb5d108", + "zh:2f3a33cba73918adc6f580c76b252881f22beb75277df8ca26a01eb5411348f9", + "zh:3b5247f69e72d1e94ac965fa570f448436cedb278f3f29836f6a345aa1bbd5b6", + "zh:4206bca7bf30708e235535af50529565b14f30262dc43142153a1774ee5086af", + "zh:490c80454b8808bb937498aea98e4076a74887446b05feb6e200015613b5e065", + "zh:5e39824289f7b29711681bce98fbb6c27ed221b071a8c78fd0de7f6c2dae4371", + "zh:a7bf7892217bdb0464664f62485d89d014874b0dfb564e99c364fc6dd20c6a3b", + "zh:e8251170bad1c3e2d9c22d0f4dae7239f1a364f05732f7dff5c8e4ec76a95c5a", + ] +} diff --git a/test/multicloud/live/retina-aks/locals.tf b/test/multicloud/live/retina-aks/locals.tf new file mode 100644 index 0000000000..e4f4a942e9 --- /dev/null +++ b/test/multicloud/live/retina-aks/locals.tf @@ -0,0 +1,55 @@ +locals { + location = "uksouth" + resource_group_name = "mc-rg" + prefix = "mc" + + retina_release_name = "retina" + retina_release_namespace = "kube-system" + retina_repository_url = "oci://ghcr.io/microsoft/retina/charts" + retina_chart_version = "v0.0.24" + retina_chart_name = "retina-hubble" + retina_values = yamldecode(file("../files/retina-hubble.yaml")) + + prometheus_release_name = "prometheus" + prometheus_release_namespace = "kube-system" + prometheus_repository_url = "https://prometheus-community.github.io/helm-charts" + prometheus_chart_version = "68.4.3" + prometheus_chart_name = "kube-prometheus-stack" + prometheus_values = yamldecode(file("../../../../deploy/hubble/prometheus/values.yaml")) + + aks_security_rules = [ + { + name = "Allow_Prometheus_Inbound" + priority = 100 + direction = "Inbound" + access = "Allow" + protocol = "Tcp" + source_port_range = "*" + source_address_prefix = "*" + destination_port_range = "9090" + destination_address_prefix = module.prometheus_lb_aks.ip + }, + { + name = "Allow_Prometheus_Outbound" + priority = 100 + direction = "Outbound" + access = "Allow" + protocol = "Tcp" + source_port_range = "9090" + source_address_prefix = module.prometheus_lb_aks.ip + destination_port_range = "*" + destination_address_prefix = "*" + }, + ] + + default_node_pool = { + name = "agentpool" + node_count = 3 + vm_size = "standard_a2_v2" + os_disk_size_gb = 128 + os_disk_type = "Managed" + max_pods = 110 + type = "VirtualMachineScaleSets" + node_labels = {} + } +} \ No newline at end of file diff --git a/test/multicloud/live/retina-aks/main.tf b/test/multicloud/live/retina-aks/main.tf index 60a7200e6c..c8b1b6b69b 100644 --- a/test/multicloud/live/retina-aks/main.tf +++ b/test/multicloud/live/retina-aks/main.tf @@ -1,21 +1,53 @@ module "aks" { source = "../../modules/aks" - location = var.location - resource_group_name = var.resource_group_name - prefix = var.prefix - labels = var.labels + location = local.location + resource_group_name = local.resource_group_name + prefix = local.prefix + default_node_pool = local.default_node_pool } -module "retina" { - depends_on = [module.aks] - source = "../../modules/helm-release" - release_name = var.retina_release_name - repository_url = var.retina_repository_url - chart_version = var.retina_chart_version - chart_name = var.retina_chart_name - values = var.retina_values +module "retina_aks" { + depends_on = [module.aks] + source = "../../modules/helm-release" + chart_version = local.retina_chart_version + release_name = local.retina_release_name + release_namespace = local.retina_release_namespace + repository_url = local.retina_repository_url + chart_name = local.retina_chart_name + values = local.retina_values } -output "kubeconfig_command" { - value = module.aks.azure_get_kubeconfig +module "prometheus_aks" { + depends_on = [module.aks] + source = "../../modules/helm-release" + chart_version = local.prometheus_chart_version + values = local.prometheus_values + release_name = local.prometheus_release_name + release_namespace = local.prometheus_release_namespace + repository_url = local.prometheus_repository_url + chart_name = local.prometheus_chart_name } + +module "prometheus_lb_aks" { + depends_on = [ + module.aks, + module.prometheus_aks + ] + source = "../../modules/kubernetes-lb" +} + +module "aks_nsg" { + depends_on = [module.aks] + source = "../../modules/aks-nsg" + prefix = local.prefix + resource_group_name = local.resource_group_name + security_rules = local.aks_security_rules +} + +module "grafana" { + depends_on = [module.prometheus_lb_aks] + source = "../../modules/grafana" + prometheus_endpoints = { + aks = "http://${module.prometheus_lb_aks.ip}:9090" + } +} \ No newline at end of file diff --git a/test/multicloud/live/retina-aks/outputs.tf b/test/multicloud/live/retina-aks/outputs.tf index 154ce0721b..55d6e04bd4 100644 --- a/test/multicloud/live/retina-aks/outputs.tf +++ b/test/multicloud/live/retina-aks/outputs.tf @@ -1,19 +1,3 @@ -output "host" { - value = module.aks.host - sensitive = true +output "kubeconfig_command" { + value = module.aks.azure_get_kubeconfig } - -output "client_certificate" { - value = module.aks.client_certificate - sensitive = true -} - -output "client_key" { - value = module.aks.client_key - sensitive = true -} - -output "cluster_ca_certificate" { - value = module.aks.cluster_ca_certificate - sensitive = true -} \ No newline at end of file diff --git a/test/multicloud/live/retina-aks/providers.tf b/test/multicloud/live/retina-aks/providers.tf index 264d724c95..9fd6fbc9c8 100644 --- a/test/multicloud/live/retina-aks/providers.tf +++ b/test/multicloud/live/retina-aks/providers.tf @@ -9,6 +9,14 @@ terraform { source = "hashicorp/helm" version = "2.17.0" } + kubernetes = { + source = "hashicorp/kubernetes" + version = "2.35.1" + } + grafana = { + source = "grafana/grafana" + version = "3.18.3" + } } } @@ -32,3 +40,16 @@ provider "helm" { cluster_ca_certificate = base64decode(module.aks.cluster_ca_certificate) } } + +# Initialize the Kubernetes provider +provider "kubernetes" { + host = module.aks.host + client_certificate = base64decode(module.aks.client_certificate) + client_key = base64decode(module.aks.client_key) + cluster_ca_certificate = base64decode(module.aks.cluster_ca_certificate) +} + +# Initialize the Grafana provider +provider "grafana" { + url = var.grafana_url +} diff --git a/test/multicloud/live/retina-aks/variables.tf b/test/multicloud/live/retina-aks/variables.tf index 901734c889..b74d1f9594 100644 --- a/test/multicloud/live/retina-aks/variables.tf +++ b/test/multicloud/live/retina-aks/variables.tf @@ -8,72 +8,7 @@ variable "tenant_id" { type = string } -variable "location" { - description = "The Azure Cloud location where AKS will be deployed to." +variable "grafana_url" { + description = "The URL of the Grafana instance" type = string - default = "uksouth" -} - -variable "resource_group_name" { - description = "The name of the resource group." - type = string - default = "mc-rg" -} - -variable "prefix" { - description = "A prefix to add to all resources." - type = string - default = "mc" -} - -variable "labels" { - description = "A map of labels to add to all resources." - type = map(string) - default = {} -} - -variable "retina_release_name" { - description = "The name of the Helm release." - type = string - default = "retina" -} - -variable "retina_repository_url" { - description = "The URL of the Helm repository." - type = string - default = "oci://ghcr.io/microsoft/retina/charts" -} - -variable "retina_chart_version" { - description = "The version of the Helm chart to install." - type = string - default = "v0.0.24" -} - -variable "retina_chart_name" { - description = "The name of the Helm chart to install." - type = string - default = "retina" -} - -variable "retina_values" { - description = "Configuration for set blocks, this corresponds to Helm values.yaml" - type = list(object({ - name = string - value = string - })) - default = [ - { - name = "image.tag" - value = "v0.0.24" - }, - { - name = "operator.tag" - value = "v0.0.24" - }, - { - name = "logLevel" - value = "info" - } - ] -} +} \ No newline at end of file diff --git a/test/multicloud/live/retina-gke/.terraform.lock.hcl b/test/multicloud/live/retina-gke/.terraform.lock.hcl index ed3aacfe1c..4b286d4122 100644 --- a/test/multicloud/live/retina-gke/.terraform.lock.hcl +++ b/test/multicloud/live/retina-gke/.terraform.lock.hcl @@ -1,11 +1,38 @@ # This file is maintained automatically by "tofu init". # Manual edits may be lost in future updates. +provider "registry.opentofu.org/grafana/grafana" { + version = "3.18.3" + constraints = "3.18.3" + hashes = [ + "h1:h8jsFjj3XT5GveS9eb8+KxgErmQLE8ZKe0Cdgbi+11Q=", + "zh:15f8db87fb9d9627b2d94c7d578f96dbfd1bd8e178e984cfd1ff619ac4b2312e", + "zh:202cb8bb6b0f99b57847d7bd463c7d465e7a5f6ebd8930563b77a564a263232f", + "zh:2589bc9d77c3004b79caa9cb82821034b92cb771f9e77dbbc2717d16ee010877", + "zh:4d0811400a9d8c5147f56e6e6365649464b9d939c8e4b3e804fa33a7172e615d", + "zh:576c93474d7a7a15133e443b742a09e73c49ba8397dd1db0a3bc1615e8ed941f", + "zh:659ba97fbfaf2971b4206442aad9950ef80a9d184ee9acb1353d4bd744ef76c4", + "zh:695cbbcaaf0fb51576383ace67e75b80c2fae6c0ee9c2acf427265390dd9400a", + "zh:6dbea832d760eedffb37ee1a87c179b6ede7f236a48c85e569fccbf17ceb44e1", + "zh:786d51a46995dc81b574049f1257fc9c60137949bb1fc65ebc8b9a99537d0333", + "zh:80243a2876c4c499da80caf13fc38be2d13ec4fbcf83b150a4243a671cb25854", + "zh:8d395cd587e3f2587f90dca698cfe498577a606b27cdc83b75d35ab2425ad092", + "zh:a7a209802774b24aebec6ad4d1cf98257f30270c3493e551b7129f076a8f2198", + "zh:ac269db542be25bb525a5a9dd398ef7a72f2a81a21543182e7d2b7855e10b0de", + "zh:c8669f217de2878a9b503caa465941576155002ce9f0f48c071ecc9348a4b0ab", + "zh:d2b6205399085d22ed81345b78ebc66e8ca8703e93da6c3f1e418174ecdc71f0", + "zh:ddde96484350a433f16d23cf7649d142aa5764e122cf5f7f12d3d2b162960b56", + "zh:de14ef67291555620720bb067754d16c8a4a457ca0ea52907479ea5d91f0e9b3", + "zh:e84f064e3cf21c2445bf064a1a98d3e7cd092f8dc3a78812e4fb8a8bcde935d3", + "zh:e9281573351e6ecddf72bbec9bcd9d6f30003fdbf675a02b0b60bd0ce6a70b04", + "zh:ff3b499b47a69f3c2ad27ad8b5a6ccd0b437cae126a9b9e99d0f97d349bf5cfd", + ] +} + provider "registry.opentofu.org/hashicorp/google" { version = "6.17.0" - constraints = ">= 6.17.0" + constraints = "6.17.0" hashes = [ - "h1:7m+L8x7ClWUFAd4uJJENXp9O4K8HtpL50434jPR9pqs=", "h1:aZkLSXbqbNThCCLAX1x0g8KTJANQAIosYq3xpy8JhFQ=", "zh:0614cc52deb5914795253aecf19b4cbb5aa7e8a186839a33907ce5c35e23d537", "zh:0b28ea31ec3b119aafc4c37a5992c29266c876db288dfc5bbfbde36631a533f1", @@ -25,7 +52,6 @@ provider "registry.opentofu.org/hashicorp/helm" { constraints = "2.17.0" hashes = [ "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", - "h1:ShIag7wqd5Rs+zYpVMpjAh+T0ozr4XGYfSTKWqceQBY=", "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", @@ -38,3 +64,21 @@ provider "registry.opentofu.org/hashicorp/helm" { "zh:e0877a5dac3de138e61eefa26b2f5a13305a17259779465899880f70e11314e0", ] } + +provider "registry.opentofu.org/hashicorp/kubernetes" { + version = "2.35.1" + constraints = "2.35.1" + hashes = [ + "h1:HvgGiweJx159xJsHIgkMQl1eVTcISwGvd8ADXFU46Rk=", + "zh:0a569918d9e81755bdacb2380e70ed304c442e957a029984cbcd9ec88e5d3635", + "zh:1d4d1241cf51d7d4a036c774add1384bb1ba9ca16146334d17c730e1b41ad3e0", + "zh:243219f415f5d8caf32a4e6b6bf596c11cf7db5501ccb4ae77cc0b084bb5d108", + "zh:2f3a33cba73918adc6f580c76b252881f22beb75277df8ca26a01eb5411348f9", + "zh:3b5247f69e72d1e94ac965fa570f448436cedb278f3f29836f6a345aa1bbd5b6", + "zh:4206bca7bf30708e235535af50529565b14f30262dc43142153a1774ee5086af", + "zh:490c80454b8808bb937498aea98e4076a74887446b05feb6e200015613b5e065", + "zh:5e39824289f7b29711681bce98fbb6c27ed221b071a8c78fd0de7f6c2dae4371", + "zh:a7bf7892217bdb0464664f62485d89d014874b0dfb564e99c364fc6dd20c6a3b", + "zh:e8251170bad1c3e2d9c22d0f4dae7239f1a364f05732f7dff5c8e4ec76a95c5a", + ] +} diff --git a/test/multicloud/live/retina-gke/locals.tf b/test/multicloud/live/retina-gke/locals.tf new file mode 100644 index 0000000000..a8d67fe6c0 --- /dev/null +++ b/test/multicloud/live/retina-gke/locals.tf @@ -0,0 +1,35 @@ +locals { + prefix = "mc" + location = "europe-west2" + + machine_type = "e2-standard-4" + + retina_release_name = "retina" + retina_repository_url = "oci://ghcr.io/microsoft/retina/charts" + retina_chart_version = "v0.0.24" + retina_release_namespace = "kube-system" + retina_chart_name = "retina-hubble" + retina_values = yamldecode(file("../files/retina-hubble.yaml")) + + prometheus_release_name = "prometheus" + prometheus_repository_url = "https://prometheus-community.github.io/helm-charts" + prometheus_chart_version = "68.4.3" + prometheus_chart_name = "kube-prometheus-stack" + prometheus_release_namespace = "kube-system" + prometheus_values = yamldecode(file("../../../../deploy/hubble/prometheus/values.yaml")) + + gke_firewall_rules = { + inbound = { + protocol = "tcp" + ports = ["9090"] + source_ranges = [module.prometheus_lb_gke.ip] + destination_ranges = ["0.0.0.0/0"] + } + outbound = { + protocol = "tcp" + ports = ["9090"] + source_ranges = ["0.0.0.0/0"] + destination_ranges = [module.prometheus_lb_gke.ip] + } + } +} \ No newline at end of file diff --git a/test/multicloud/live/retina-gke/main.tf b/test/multicloud/live/retina-gke/main.tf index 3862ba858d..e8894c205f 100644 --- a/test/multicloud/live/retina-gke/main.tf +++ b/test/multicloud/live/retina-gke/main.tf @@ -1,17 +1,53 @@ module "gke" { source = "../../modules/gke" - location = var.location - prefix = var.prefix + location = local.location + prefix = local.prefix project = var.project - machine_type = var.machine_type + machine_type = local.machine_type } -module "retina" { - depends_on = [module.gke] - source = "../../modules/helm-release" - release_name = var.retina_release_name - repository_url = var.retina_repository_url - chart_version = var.retina_chart_version - chart_name = var.retina_chart_name - values = var.retina_values +module "retina_gke" { + depends_on = [module.gke] + source = "../../modules/helm-release" + chart_version = local.retina_chart_version + release_name = local.retina_release_name + release_namespace = local.retina_release_namespace + repository_url = local.retina_repository_url + chart_name = local.retina_chart_name + values = local.retina_values } + +module "prometheus_gke" { + depends_on = [module.gke] + source = "../../modules/helm-release" + chart_version = local.prometheus_chart_version + values = local.prometheus_values + release_name = local.prometheus_release_name + release_namespace = local.prometheus_release_namespace + repository_url = local.prometheus_repository_url + chart_name = local.prometheus_chart_name +} + +module "prometheus_lb_gke" { + depends_on = [ + module.gke, + module.prometheus_gke + ] + source = "../../modules/kubernetes-lb" +} + +module "gke_firewall" { + depends_on = [module.gke] + source = "../../modules/gke-firewall" + prefix = local.prefix + inbound_firewall_rule = local.gke_firewall_rules.inbound + outbound_firewall_rule = local.gke_firewall_rules.outbound +} + +module "grafana" { + depends_on = [module.prometheus_lb_gke] + source = "../../modules/grafana" + prometheus_endpoints = { + gke = "http://${module.prometheus_lb_gke.ip}:9090" + } +} \ No newline at end of file diff --git a/test/multicloud/live/retina-gke/providers.tf b/test/multicloud/live/retina-gke/providers.tf index ac23c59c0e..77fdc2ebe6 100644 --- a/test/multicloud/live/retina-gke/providers.tf +++ b/test/multicloud/live/retina-gke/providers.tf @@ -9,16 +9,23 @@ terraform { source = "hashicorp/helm" version = "2.17.0" } + kubernetes = { + source = "hashicorp/kubernetes" + version = "2.35.1" + } + grafana = { + source = "grafana/grafana" + version = "3.18.3" + } } } # Initialize the Google provider provider "google" { project = var.project - region = var.location + region = local.location } -data "google_client_config" "current" {} # Initialize the Helm provider provider "helm" { @@ -27,4 +34,18 @@ provider "helm" { host = module.gke.host cluster_ca_certificate = base64decode(module.gke.cluster_ca_certificate) } -} \ No newline at end of file +} + +data "google_client_config" "current" {} + +# Initialize the Kubernetes provider for GKE +provider "kubernetes" { + token = data.google_client_config.current.access_token + host = module.gke.host + cluster_ca_certificate = base64decode(module.gke.cluster_ca_certificate) +} + +# Initialize the Grafana provider +provider "grafana" { + url = var.grafana_url +} diff --git a/test/multicloud/live/retina-gke/variables.tf b/test/multicloud/live/retina-gke/variables.tf index c9299aa6ba..224f66b35d 100644 --- a/test/multicloud/live/retina-gke/variables.tf +++ b/test/multicloud/live/retina-gke/variables.tf @@ -1,69 +1,9 @@ variable "project" { - description = "The Google Cloud project where resources will be deployed." + description = "Project ID" type = string - default = "mc-retina" } -variable "location" { - description = "The Google Cloud location where GKE will be deployed to." +variable "grafana_url" { + description = "The URL of the Grafana instance" type = string - default = "eu-central1" -} - -variable "prefix" { - description = "A prefix to add to all resources." - type = string - default = "mc" -} - -variable "machine_type" { - description = "The machine type to use for the GKE nodes." - type = string - default = "e2-standard-4" -} - -variable "retina_release_name" { - description = "The name of the Helm release." - type = string - default = "retina" -} - -variable "retina_repository_url" { - description = "The URL of the Helm repository." - type = string - default = "oci://ghcr.io/microsoft/retina/charts" -} - -variable "retina_chart_version" { - description = "The version of the Helm chart to install." - type = string - default = "v0.0.24" -} - -variable "retina_chart_name" { - description = "The name of the Helm chart to install." - type = string - default = "retina" -} - -variable "retina_values" { - description = "Configuration for set blocks, this corresponds to Helm values.yaml" - type = list(object({ - name = string - value = string - })) - default = [ - { - name = "image.tag" - value = "v0.0.24" - }, - { - name = "operator.tag" - value = "v0.0.24" - }, - { - name = "logLevel" - value = "info" - } - ] -} +} \ No newline at end of file diff --git a/test/multicloud/live/retina-kind/.terraform.lock.hcl b/test/multicloud/live/retina-kind/.terraform.lock.hcl index afc28ace1d..a641109262 100644 --- a/test/multicloud/live/retina-kind/.terraform.lock.hcl +++ b/test/multicloud/live/retina-kind/.terraform.lock.hcl @@ -6,7 +6,6 @@ provider "registry.opentofu.org/hashicorp/helm" { constraints = "2.17.0" hashes = [ "h1:69PnHoYrrDrm7C8+8PiSvRGPI55taqL14SvQR/FGM+g=", - "h1:ShIag7wqd5Rs+zYpVMpjAh+T0ozr4XGYfSTKWqceQBY=", "zh:02690815e35131a42cb9851f63a3369c216af30ad093d05b39001d43da04b56b", "zh:27a62f12b29926387f4d71aeeee9f7ffa0ccb81a1b6066ee895716ad050d1b7a", "zh:2d0a5babfa73604b3fefc9dab9c87f91c77fce756c2e32b294e9f1290aed26c0", @@ -24,7 +23,6 @@ provider "registry.opentofu.org/tehcyx/kind" { version = "0.7.0" constraints = "0.7.0" hashes = [ - "h1:9ci1+3JBxvMRZ0pnzoVNmw7NrBCAfzqOPyhm+I8Rxag=", "h1:nFhFHmE5+dCd9S9dEMwnMNWzyxoVipYobkhXYoDbhgA=", "zh:171a2fb0137bfbdebd56cd65afd2e0e2167315fe4cb6a07a218db40cb17339c3", "zh:3260b078b7997ddfd03845326ffaeed7f678eeaaf7918430356f22e299e36f22", diff --git a/test/multicloud/live/retina-kind/locals.tf b/test/multicloud/live/retina-kind/locals.tf new file mode 100644 index 0000000000..04979c8605 --- /dev/null +++ b/test/multicloud/live/retina-kind/locals.tf @@ -0,0 +1,17 @@ +locals { + prefix = "mc" + + retina_release_name = "retina" + retina_release_namespace = "kube-system" + retina_repository_url = "oci://ghcr.io/microsoft/retina/charts" + retina_chart_version = "v0.0.24" + retina_chart_name = "retina" + retina_values = yamldecode(file("../files/retina-standard-advanced-remote-operator.yaml")) + + prometheus_release_name = "prometheus" + prometheus_release_namespace = "kube-system" + prometheus_repository_url = "https://prometheus-community.github.io/helm-charts" + prometheus_chart_version = "68.4.3" + prometheus_chart_name = "kube-prometheus-stack" + prometheus_values = yamldecode(file("../../../../deploy/standard/prometheus/values.yaml")) +} \ No newline at end of file diff --git a/test/multicloud/live/retina-kind/main.tf b/test/multicloud/live/retina-kind/main.tf index 256374b30c..c847e53e84 100644 --- a/test/multicloud/live/retina-kind/main.tf +++ b/test/multicloud/live/retina-kind/main.tf @@ -1,14 +1,26 @@ module "kind" { source = "../../modules/kind" - prefix = var.prefix + prefix = local.prefix } -module "retina" { - depends_on = [module.kind] - source = "../../modules/helm-release" - release_name = var.retina_release_name - repository_url = var.retina_repository_url - chart_version = var.retina_chart_version - chart_name = var.retina_chart_name - values = var.retina_values +module "retina_kind" { + depends_on = [module.kind] + source = "../../modules/helm-release" + chart_version = local.retina_chart_version + release_name = local.retina_release_name + release_namespace = local.retina_release_namespace + repository_url = local.retina_repository_url + chart_name = local.retina_chart_name + values = local.retina_values +} + +module "prometheus_kind" { + depends_on = [module.kind] + source = "../../modules/helm-release" + chart_version = local.prometheus_chart_version + values = local.prometheus_values + release_name = local.prometheus_release_name + release_namespace = local.prometheus_release_namespace + repository_url = local.prometheus_repository_url + chart_name = local.prometheus_chart_name } diff --git a/test/multicloud/live/retina-kind/variables.tf b/test/multicloud/live/retina-kind/variables.tf deleted file mode 100644 index 06b49ab3ab..0000000000 --- a/test/multicloud/live/retina-kind/variables.tf +++ /dev/null @@ -1,51 +0,0 @@ -variable "prefix" { - description = "A prefix to add to all resources." - type = string - default = "mc" -} - -variable "retina_release_name" { - description = "The name of the Helm release." - type = string - default = "retina" -} - -variable "retina_repository_url" { - description = "The URL of the Helm repository." - type = string - default = "oci://ghcr.io/microsoft/retina/charts" -} - -variable "retina_chart_version" { - description = "The version of the Helm chart to install." - type = string - default = "v0.0.24" -} - -variable "retina_chart_name" { - description = "The name of the Helm chart to install." - type = string - default = "retina" -} - -variable "retina_values" { - description = "Configuration for set blocks, this corresponds to Helm values.yaml" - type = list(object({ - name = string - value = string - })) - default = [ - { - name = "image.tag" - value = "v0.0.24" - }, - { - name = "operator.tag" - value = "v0.0.24" - }, - { - name = "logLevel" - value = "info" - } - ] -} diff --git a/test/multicloud/modules/aks-nsg/main.tf b/test/multicloud/modules/aks-nsg/main.tf new file mode 100644 index 0000000000..d688a7985b --- /dev/null +++ b/test/multicloud/modules/aks-nsg/main.tf @@ -0,0 +1,35 @@ +data "azurerm_resource_group" "aks_rg" { + name = var.resource_group_name +} + +data "azurerm_subnet" "aks_subnet" { + name = "${var.prefix}-subnet" + resource_group_name = var.resource_group_name + virtual_network_name = "${var.prefix}-vnet" +} + +resource "azurerm_network_security_group" "aks_nsg" { + name = "${var.prefix}-nsg" + location = data.azurerm_resource_group.aks_rg.location + resource_group_name = data.azurerm_resource_group.aks_rg.name + + dynamic "security_rule" { + for_each = var.security_rules + content { + name = security_rule.value.name + priority = security_rule.value.priority + direction = security_rule.value.direction + access = security_rule.value.access + protocol = security_rule.value.protocol + source_port_range = security_rule.value.source_port_range + destination_port_range = security_rule.value.destination_port_range + source_address_prefix = security_rule.value.source_address_prefix + destination_address_prefix = security_rule.value.destination_address_prefix + } + } +} + +resource "azurerm_subnet_network_security_group_association" "aks_subnet_nsg" { + subnet_id = data.azurerm_subnet.aks_subnet.id + network_security_group_id = azurerm_network_security_group.aks_nsg.id +} \ No newline at end of file diff --git a/test/multicloud/modules/aks-nsg/provider.tf b/test/multicloud/modules/aks-nsg/provider.tf new file mode 100644 index 0000000000..33705925cf --- /dev/null +++ b/test/multicloud/modules/aks-nsg/provider.tf @@ -0,0 +1,9 @@ +terraform { + required_version = "1.8.3" + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = "4.15.0" + } + } +} diff --git a/test/multicloud/modules/aks-nsg/variables.tf b/test/multicloud/modules/aks-nsg/variables.tf new file mode 100644 index 0000000000..c8a59f995d --- /dev/null +++ b/test/multicloud/modules/aks-nsg/variables.tf @@ -0,0 +1,25 @@ +variable "resource_group_name" { + description = "The name of the resource group." + type = string +} + +variable "prefix" { + description = "A prefix to add to all resources." + type = string +} + +variable "security_rules" { + description = "A list of security rules to add to the network security group." + type = list(object({ + name = string + priority = number + direction = string + access = string + protocol = string + source_port_range = string + destination_port_range = string + source_address_prefix = string + destination_address_prefix = string + })) + default = [] +} \ No newline at end of file diff --git a/test/multicloud/modules/aks/main.tf b/test/multicloud/modules/aks/main.tf index a7352bd589..082b7a9947 100644 --- a/test/multicloud/modules/aks/main.tf +++ b/test/multicloud/modules/aks/main.tf @@ -3,6 +3,20 @@ resource "azurerm_resource_group" "aks_rg" { location = var.location } +resource "azurerm_virtual_network" "aks_vnet" { + name = "${var.prefix}-vnet" + address_space = var.vnet_address_space + location = azurerm_resource_group.aks_rg.location + resource_group_name = azurerm_resource_group.aks_rg.name +} + +resource "azurerm_subnet" "aks_subnet" { + name = "${var.prefix}-subnet" + resource_group_name = azurerm_resource_group.aks_rg.name + virtual_network_name = azurerm_virtual_network.aks_vnet.name + address_prefixes = var.subnet_address_space +} + resource "azurerm_kubernetes_cluster" "aks" { name = "${var.prefix}-aks" location = azurerm_resource_group.aks_rg.location @@ -21,6 +35,7 @@ resource "azurerm_kubernetes_cluster" "aks" { max_pods = default_node_pool.value.max_pods type = default_node_pool.value.type node_labels = default_node_pool.value.node_labels + vnet_subnet_id = azurerm_subnet.aks_subnet.id } } diff --git a/test/multicloud/modules/aks/variables.tf b/test/multicloud/modules/aks/variables.tf index d5a5ebb597..e2d89fded9 100644 --- a/test/multicloud/modules/aks/variables.tf +++ b/test/multicloud/modules/aks/variables.tf @@ -1,7 +1,6 @@ variable "location" { - description = "The VM location." + description = "Location of the AKS cluster." type = string - default = "UK South" } variable "resource_group_name" { @@ -12,7 +11,6 @@ variable "resource_group_name" { variable "prefix" { description = "A prefix to add to all resources." type = string - default = "example-vm" } variable "labels" { @@ -41,8 +39,8 @@ variable "network_profile" { managed_outbound_ip_count = 1 } pod_cidr = "10.244.0.0/16" - service_cidr = "10.0.0.0/16" - dns_service_ip = "10.0.0.10" + service_cidr = "10.1.0.0/16" + dns_service_ip = "10.1.0.10" outbound_type = "loadBalancer" } } @@ -71,6 +69,18 @@ variable "default_node_pool" { } } +variable "vnet_address_space" { + description = "The address space for the virtual network." + type = list(string) + default = ["10.0.0.0/16"] +} + +variable "subnet_address_space" { + description = "The address space for the subnet." + type = list(string) + default = ["10.0.1.0/24"] +} + variable "kubernetes_version" { description = "The version of Kubernetes to use for the AKS cluster." type = string diff --git a/test/multicloud/modules/gke-firewall/main.tf b/test/multicloud/modules/gke-firewall/main.tf new file mode 100644 index 0000000000..329edab896 --- /dev/null +++ b/test/multicloud/modules/gke-firewall/main.tf @@ -0,0 +1,31 @@ +data "google_compute_network" "vpc_network" { + name = "${var.prefix}-vpc-network" +} + +resource "google_compute_firewall" "gke_inbound_rule" { + name = "${var.prefix}-gke-inbound" + network = data.google_compute_network.vpc_network.id + + allow { + protocol = var.inbound_firewall_rule.protocol + ports = var.inbound_firewall_rule.ports + } + + source_ranges = var.inbound_firewall_rule.source_ranges + destination_ranges = var.inbound_firewall_rule.destination_ranges + target_tags = ["${var.prefix}-gke-cluster"] +} + +resource "google_compute_firewall" "gke_outbound_rule" { + name = "${var.prefix}-gke-outbound" + network = data.google_compute_network.vpc_network.id + + allow { + protocol = var.outbound_firewall_rule.protocol + ports = var.outbound_firewall_rule.ports + } + + source_ranges = var.outbound_firewall_rule.source_ranges + destination_ranges = var.outbound_firewall_rule.destination_ranges + target_tags = ["${var.prefix}-gke-cluster"] +} \ No newline at end of file diff --git a/test/multicloud/modules/gke-firewall/variables.tf b/test/multicloud/modules/gke-firewall/variables.tf new file mode 100644 index 0000000000..20cd31fa0a --- /dev/null +++ b/test/multicloud/modules/gke-firewall/variables.tf @@ -0,0 +1,36 @@ +variable "prefix" { + description = "Prefix for resource names" + type = string +} + +variable "inbound_firewall_rule" { + description = "Configuration for inbound firewall rule" + type = object({ + protocol = string + ports = list(string) + source_ranges = list(string) + destination_ranges = list(string) + }) + default = { + protocol = "tcp" + ports = [] + source_ranges = [] + destination_ranges = [] + } +} + +variable "outbound_firewall_rule" { + description = "Configuration for outbound firewall rule" + type = object({ + protocol = string + ports = list(string) + source_ranges = list(string) + destination_ranges = list(string) + }) + default = { + protocol = "tcp" + ports = [] + source_ranges = [] + destination_ranges = [] + } +} diff --git a/test/multicloud/modules/gke/main.tf b/test/multicloud/modules/gke/main.tf index 8de256d40e..8828006e59 100644 --- a/test/multicloud/modules/gke/main.tf +++ b/test/multicloud/modules/gke/main.tf @@ -3,6 +3,20 @@ resource "google_service_account" "default" { display_name = "GKE Service Account for ${var.project}" } +// Create VPC network +resource "google_compute_network" "vpc_network" { + name = "${var.prefix}-vpc-network" + auto_create_subnetworks = false +} + +// Create subnet within the VPC network +resource "google_compute_subnetwork" "subnet" { + name = "${var.prefix}-subnet" + ip_cidr_range = var.subnet_cidr + region = var.location + network = google_compute_network.vpc_network.id +} + // https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview resource "google_container_cluster" "gke" { name = "${var.prefix}-gke-cluster" @@ -14,6 +28,9 @@ resource "google_container_cluster" "gke" { remove_default_node_pool = true initial_node_count = 1 deletion_protection = false + + network = google_compute_network.vpc_network.id + subnetwork = google_compute_subnetwork.subnet.id } resource "google_container_node_pool" "gke_preemptible_nodes" { @@ -32,4 +49,4 @@ resource "google_container_node_pool" "gke_preemptible_nodes" { "https://www.googleapis.com/auth/cloud-platform" ] } -} \ No newline at end of file +} diff --git a/test/multicloud/modules/gke/variables.tf b/test/multicloud/modules/gke/variables.tf index 9971acce00..41bf0a1a1f 100644 --- a/test/multicloud/modules/gke/variables.tf +++ b/test/multicloud/modules/gke/variables.tf @@ -1,19 +1,25 @@ +variable "prefix" { + description = "Prefix for resource names" + type = string +} + variable "project" { - description = "The Google Cloud project where resources will be deployed." + description = "Project ID" type = string } variable "location" { - description = "The Google Cloud location where GKE will be deployed to." + description = "Region for the GKE cluster and subnet" type = string } -variable "prefix" { - description = "A prefix to add to all resources." +variable "machine_type" { + description = "Machine type for the GKE node pool" type = string } -variable "machine_type" { - description = "The machine type to use for the GKE nodes." +variable "subnet_cidr" { + description = "CIDR range for the subnet" type = string -} \ No newline at end of file + default = "10.0.0.0/24" +} diff --git a/test/multicloud/modules/grafana/main.tf b/test/multicloud/modules/grafana/main.tf new file mode 100644 index 0000000000..fda875b6d4 --- /dev/null +++ b/test/multicloud/modules/grafana/main.tf @@ -0,0 +1,7 @@ +resource "grafana_data_source" "prometheus" { + for_each = var.prometheus_endpoints + + name = each.key + type = "prometheus" + url = each.value +} \ No newline at end of file diff --git a/test/multicloud/modules/grafana/providers.tf b/test/multicloud/modules/grafana/providers.tf new file mode 100644 index 0000000000..358ffc729c --- /dev/null +++ b/test/multicloud/modules/grafana/providers.tf @@ -0,0 +1,10 @@ +# Terraform Grafana provider configuration +terraform { + required_version = "1.8.3" + required_providers { + grafana = { + source = "grafana/grafana" + version = "3.18.3" + } + } +} diff --git a/test/multicloud/modules/grafana/variables.tf b/test/multicloud/modules/grafana/variables.tf new file mode 100644 index 0000000000..873c3124aa --- /dev/null +++ b/test/multicloud/modules/grafana/variables.tf @@ -0,0 +1,4 @@ +variable "prometheus_endpoints" { + description = "A map of Prometheus endpoints to add as data sources." + type = map(string) +} diff --git a/test/multicloud/modules/helm-release/main.tf b/test/multicloud/modules/helm-release/main.tf index 26d03457b7..790a2acbb2 100644 --- a/test/multicloud/modules/helm-release/main.tf +++ b/test/multicloud/modules/helm-release/main.tf @@ -1,14 +1,8 @@ resource "helm_release" "release" { name = var.release_name + namespace = var.release_namespace repository = var.repository_url chart = var.chart_name version = var.chart_version - - dynamic "set" { - for_each = var.values - content { - name = set.value.name - value = set.value.value - } - } + values = [jsonencode(var.values)] } \ No newline at end of file diff --git a/test/multicloud/modules/helm-release/variables.tf b/test/multicloud/modules/helm-release/variables.tf index d2c9caa3aa..fcf86fb2de 100644 --- a/test/multicloud/modules/helm-release/variables.tf +++ b/test/multicloud/modules/helm-release/variables.tf @@ -3,6 +3,12 @@ variable "release_name" { type = string } +variable "release_namespace" { + description = "The namespace to install the Helm chart." + type = string + default = "default" +} + variable "repository_url" { description = "The URL of the Helm repository." type = string @@ -19,9 +25,6 @@ variable "chart_name" { } variable "values" { - description = "Configuration for set blocks, this corresponds to Helm values.yaml" - type = list(object({ - name = string - value = string - })) + description = "This corresponds to Helm values.yaml" + type = any } diff --git a/test/multicloud/modules/kubernetes-lb/main.tf b/test/multicloud/modules/kubernetes-lb/main.tf new file mode 100644 index 0000000000..76c28e721b --- /dev/null +++ b/test/multicloud/modules/kubernetes-lb/main.tf @@ -0,0 +1,18 @@ +resource "kubernetes_service" "load_balancer_service" { + metadata { + name = var.name + namespace = var.namespace + } + + spec { + type = "LoadBalancer" + + port { + port = var.port + target_port = var.port + protocol = "TCP" + } + + selector = var.label_selector + } +} \ No newline at end of file diff --git a/test/multicloud/modules/kubernetes-lb/outputs.tf b/test/multicloud/modules/kubernetes-lb/outputs.tf new file mode 100644 index 0000000000..c7d3e1ec2e --- /dev/null +++ b/test/multicloud/modules/kubernetes-lb/outputs.tf @@ -0,0 +1,3 @@ +output "ip" { + value = element(kubernetes_service.load_balancer_service.status[0].load_balancer[0].ingress, 0).ip +} diff --git a/test/multicloud/modules/kubernetes-lb/providers.tf b/test/multicloud/modules/kubernetes-lb/providers.tf new file mode 100644 index 0000000000..749c77ee69 --- /dev/null +++ b/test/multicloud/modules/kubernetes-lb/providers.tf @@ -0,0 +1,9 @@ +terraform { + required_version = "1.8.3" + required_providers { + kubernetes = { + source = "hashicorp/kubernetes" + version = "2.35.1" + } + } +} diff --git a/test/multicloud/modules/kubernetes-lb/variables.tf b/test/multicloud/modules/kubernetes-lb/variables.tf new file mode 100644 index 0000000000..4b7a9fe849 --- /dev/null +++ b/test/multicloud/modules/kubernetes-lb/variables.tf @@ -0,0 +1,25 @@ +variable "name" { + description = "Name for the LoadBalancer service" + type = string + default = "prometheus" +} + +variable "namespace" { + description = "Namespace for the LoadBalancer service" + type = string + default = "kube-system" +} + +variable "label_selector" { + description = "Label selector for the backend pods" + type = map(string) + default = { + "app.kubernetes.io/name" = "prometheus" + } +} + +variable "port" { + description = "Port for the LoadBalancer service and targetPort for the pod" + type = number + default = 9090 +} \ No newline at end of file diff --git a/test/multicloud/test/integration/prometheus_kind_test.go b/test/multicloud/test/integration/prometheus_kind_test.go index 12071bfb5c..962b1efc86 100644 --- a/test/multicloud/test/integration/prometheus_kind_test.go +++ b/test/multicloud/test/integration/prometheus_kind_test.go @@ -11,11 +11,23 @@ import ( func TestPrometheusKindIntegration(t *testing.T) { t.Parallel() + jsonValues := utils.SerializeYAMLtoJSONstring(t, utils.PrometheusHelmValuesStandard) + opts := &terraform.Options{ TerraformDir: utils.ExamplesPath + "integration/prometheus-kind", Vars: map[string]interface{}{ - "prefix": "test-integration", + "prefix": "test-integration", + "prometheus_values": jsonValues, + "retina_values": map[string]interface{}{ + "image": map[string]interface{}{ + "tag": "v0.0.24", + }, + "operator": map[string]interface{}{ + "tag": "v0.0.24", + }, + "logLevel": "debug", + }, }, } diff --git a/test/multicloud/test/integration/retina_gke_test.go b/test/multicloud/test/integration/retina_gke_test.go index b2fd0c1ea9..67140ab0ce 100644 --- a/test/multicloud/test/integration/retina_gke_test.go +++ b/test/multicloud/test/integration/retina_gke_test.go @@ -20,24 +20,16 @@ func TestRetinaGKEIntegration(t *testing.T) { "project": "mc-retina", // TODO: replace with actual project once we get gcloud access "machine_type": "e2-standard-4", "retina_chart_version": utils.RetinaVersion, - "retina_values": []map[string]interface{}{ - { - "name": "logLevel", - "value": "info", - }, - { - "name": "operator.tag", - "value": utils.RetinaVersion, - }, + "retina_values": map[string]interface{}{ // Example using a public image built during testing - { - "name": "image.repository", - "value": "acnpublic.azurecr.io/xiaozhiche320/retina/retina-agent", + "image": map[string]interface{}{ + "tag": "c17d5ea-linux-amd64", + "repository": "acnpublic.azurecr.io/xiaozhiche320/retina/retina-agent", }, - { - "name": "image.tag", - "value": "c17d5ea-linux-amd64", + "operator": map[string]interface{}{ + "tag": utils.RetinaVersion, }, + "logLevel": "info", }, }, } diff --git a/test/multicloud/test/integration/retina_kind_test.go b/test/multicloud/test/integration/retina_kind_test.go index 8afc5a3ccd..8c21c2b033 100644 --- a/test/multicloud/test/integration/retina_kind_test.go +++ b/test/multicloud/test/integration/retina_kind_test.go @@ -17,6 +17,15 @@ func TestRetinaKindIntegration(t *testing.T) { Vars: map[string]interface{}{ "prefix": "test-integration", "retina_chart_version": utils.RetinaVersion, + "retina_values": map[string]interface{}{ + "image": map[string]interface{}{ + "tag": "v0.0.24", + }, + "operator": map[string]interface{}{ + "tag": "v0.0.24", + }, + "logLevel": "debug", + }, }, } diff --git a/test/multicloud/test/utils/types.go b/test/multicloud/test/utils/types.go index dc07ee8608..fabd9d0e7b 100644 --- a/test/multicloud/test/utils/types.go +++ b/test/multicloud/test/utils/types.go @@ -1,8 +1,9 @@ package utils const ( - ExamplesPath = "../../examples/" - RetinaVersion = "v0.0.24" + ExamplesPath = "../../examples/" + RetinaVersion = "v0.0.24" + PrometheusHelmValuesStandard = "../../../../deploy/standard/prometheus/values.yaml" ) type PodSelector struct { diff --git a/test/multicloud/test/utils/utils.go b/test/multicloud/test/utils/utils.go index ab03fec485..8f4e5d1291 100644 --- a/test/multicloud/test/utils/utils.go +++ b/test/multicloud/test/utils/utils.go @@ -4,8 +4,10 @@ import ( "bufio" "context" "encoding/base64" + "encoding/json" "fmt" "io" + "os" "strings" "testing" "time" @@ -15,6 +17,7 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/apimachinery/pkg/util/yaml" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" ) @@ -165,3 +168,32 @@ func ArePodsRunning(clientset kubernetes.Interface, podSelector PodSelector, tim } return true, nil } + +// readYAMLFile reads a YAML file from the given filename and unmarshals it into a map[string]interface{}. +// It returns the unmarshaled map and any error encountered during the process. +func readYAMLFile(filename string) (map[string]interface{}, error) { + data, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + + var result map[string]interface{} + err = yaml.Unmarshal(data, &result) + if err != nil { + return nil, err + } + return result, nil +} + +func SerializeYAMLtoJSONstring(t *testing.T, fileName string) string { + values, err := readYAMLFile(fileName) + if err != nil { + t.Fatalf("Failed to read values.yaml: %v", err) + } + + jsonValues, err := json.Marshal(values) + if err != nil { + t.Fatalf("Failed to serialize YAML to JSON: %v", err) + } + return string(jsonValues) +} From 5f69d6439859741a6daed4abe908b4115e9b632f Mon Sep 17 00:00:00 2001 From: Will Daly Date: Tue, 11 Feb 2025 09:53:42 -0800 Subject: [PATCH 47/87] docs: update note about retina-shell and iptables (#1338) # Description azlinux3 now uses iptables-nft by default, so update the documentation to reflect that. ## Related Issue N/A ## Checklist - [x] I have read the [contributing documentation](https://retina.sh/docs/contributing). - [x] I signed and signed-off the commits (`git commit -S -s ...`). See [this documentation](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification) on signing commits. - [x] I have correctly attributed the author(s) of the code. - [x] I have tested the changes locally. - [x] I have followed the project's style guidelines. - [x] I have updated the documentation, if necessary. - [x] I have added tests, if applicable. ## Screenshots (if applicable) or Testing Completed N/A ## Additional Notes N/A --- Please refer to the [CONTRIBUTING.md](../CONTRIBUTING.md) file for more information on how to contribute to this project. Signed-off-by: Will Daly --- docs/06-Troubleshooting/shell.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/06-Troubleshooting/shell.md b/docs/06-Troubleshooting/shell.md index bfdbbab492..36ac9ca716 100644 --- a/docs/06-Troubleshooting/shell.md +++ b/docs/06-Troubleshooting/shell.md @@ -180,6 +180,6 @@ kubectl retina shell node0001 # this will use the image "example.azurecr.io/reti * Windows nodes and pods are not yet supported. * `bpftool` and `bpftrace` are not supported. -* The shell image link `iptables` commands to `iptables-legacy`, even if the node itself links to `iptables-nft`. +* The shell image links `iptables` commands to `iptables-nft`, even if the node itself links to `iptables-legacy`. * `nsenter` is not supported. * `ip netns` will not work without `chroot` to the host filesystem. From 03a60c02c0e81e8c807007781be9ac707be61a30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2025 12:59:59 -0500 Subject: [PATCH 48/87] deps: bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.76.0 to 1.76.1 (#1334) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.76.0 to 1.76.1.

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 ZXyEyD^z65XKN9dGFQY77Drpk(e*pMkudM(8 literal 0 HcmV?d00001 diff --git a/test/multicloud/diagrams/mc.excalidraw b/test/multicloud/diagrams/mc.excalidraw new file mode 100644 index 0000000000..29933ea48e --- /dev/null +++ b/test/multicloud/diagrams/mc.excalidraw @@ -0,0 +1,1668 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "5_W8BA86fmJwBrO8OOuPX", + "type": "rectangle", + "x": -2249.8401050585435, + "y": -4831.408627109235, + "width": 733.8626026995305, + "height": 578.2723004694836, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b30", + "roundness": null, + "seed": 1293699874, + "version": 116, + "versionNonce": 615131390, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "Ob0OCX23MOiEbsyYw09Q_" + } + ], + "updated": 1738868692592, + "link": null, + "locked": false + }, + { + "id": "d28sVSeqD7ZfcpnCUPhEV", + "type": "rectangle", + "x": -2215.00442430737, + "y": -4787.864026170268, + "width": 664.1912411971831, + "height": 491.1830985915493, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b31", + "roundness": null, + "seed": 191534818, + "version": 116, + "versionNonce": 1898409442, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "NA8oNuGt4fh3m1DthNwkE" + } + ], + "updated": 1738868692592, + "link": null, + "locked": false + }, + { + "id": "A2RHneu8H0fGDdpLB7tBJ", + "type": "rectangle", + "x": -1988.5520878930506, + "y": -4744.319425231301, + "width": 259.4986062206573, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b32", + "roundness": null, + "seed": 1134922018, + "version": 118, + "versionNonce": 699947326, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "CtpnCpFfWLdxLVvedMba5" + }, + { + "id": "kDU7e25YwdEMqvAFaCfwu", + "type": "arrow" + }, + { + "id": "oALAJlovVFoi_38XF4DOW", + "type": "arrow" + } + ], + "updated": 1738868692592, + "link": null, + "locked": false + }, + { + "id": "aCskzcYN27x7cynUC4saW", + "type": "rectangle", + "x": -2130.895306056196, + "y": -4580.591725700784, + "width": 254.79034624413146, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b33", + "roundness": null, + "seed": 438047970, + "version": 122, + "versionNonce": 1168604419, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "yQK62_6M8KI3F6JJLR9LS" + }, + { + "id": "kDU7e25YwdEMqvAFaCfwu", + "type": "arrow" + }, + { + "id": "jeot-u8S5-vTtE_yHkMI5", + "type": "arrow" + }, + { + "id": "Fwx5NZsMkIR2630Y4XWgt", + "type": "arrow" + } + ], + "updated": 1739265694968, + "link": null, + "locked": false + }, + { + "id": "YMdaT_7SIJWQw88SC4lKI", + "type": "rectangle", + "x": -1789.0157579341305, + "y": -4580.591725700784, + "width": 149.8206426056338, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b34", + "roundness": null, + "seed": 1095444642, + "version": 119, + "versionNonce": 251383747, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "hf32z2Siv6dHsHwUnDoa9" + }, + { + "id": "oALAJlovVFoi_38XF4DOW", + "type": "arrow" + }, + { + "id": "jeot-u8S5-vTtE_yHkMI5", + "type": "arrow" + } + ], + "updated": 1739188806761, + "link": null, + "locked": false + }, + { + "id": "Jt3KXMwuTXW_WUfPAAo20", + "type": "rectangle", + "x": -2154.041982992816, + "y": -4416.864026170268, + "width": 301.0837001173709, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b35", + "roundness": null, + "seed": 551666786, + "version": 123, + "versionNonce": 1419039171, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "uCkY73YAeDCRobquy1ap_" + }, + { + "id": "DSjqSaeG5wuUW0oTNN6gO", + "type": "arrow" + }, + { + "id": "Fwx5NZsMkIR2630Y4XWgt", + "type": "arrow" + } + ], + "updated": 1739265694968, + "link": null, + "locked": false + }, + { + "id": "kDU7e25YwdEMqvAFaCfwu", + "type": "arrow", + "x": -1926.766711398967, + "y": -4666.680927578718, + "width": 76.73309495065678, + "height": 75.98685446009404, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b36", + "roundness": { + "type": 2 + }, + "seed": 1318111010, + "version": 336, + "versionNonce": 1023779262, + "isDeleted": false, + "boundElements": [], + "updated": 1738868692592, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -76.73309495065666, + 42.54460093896695 + ], + [ + -76.73309495065678, + 75.98685446009404 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "A2RHneu8H0fGDdpLB7tBJ", + "focus": -0.014844242323280478, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "aCskzcYN27x7cynUC4saW", + "focus": 0.0000025635547945955497, + "gap": 10.102347417840065, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "oALAJlovVFoi_38XF4DOW", + "type": "arrow", + "x": -1790.838967027979, + "y": -4666.680927578718, + "width": 76.73309495065587, + "height": 75.98685446009404, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b37", + "roundness": { + "type": 2 + }, + "seed": 1626313442, + "version": 336, + "versionNonce": 955048226, + "isDeleted": false, + "boundElements": [], + "updated": 1738868692592, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 76.73309495065575, + 42.54460093896695 + ], + [ + 76.73309495065587, + 75.98685446009404 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "A2RHneu8H0fGDdpLB7tBJ", + "focus": 0.014844789746762505, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "YMdaT_7SIJWQw88SC4lKI", + "focus": -0.000005812897364906603, + "gap": 10.102347417840065, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "Ob0OCX23MOiEbsyYw09Q_", + "type": "text", + "x": -1993.1568582131727, + "y": -4826.408627109235, + "width": 220.49610900878906, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b39", + "roundness": null, + "seed": 952504802, + "version": 210, + "versionNonce": 481848546, + "isDeleted": false, + "boundElements": [], + "updated": 1738868692592, + "link": null, + "locked": false, + "text": "Google Cloud", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "5_W8BA86fmJwBrO8OOuPX", + "originalText": "Google Cloud", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "NA8oNuGt4fh3m1DthNwkE", + "type": "text", + "x": -1919.667890317665, + "y": -4782.864026170268, + "width": 73.51817321777344, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b3A", + "roundness": null, + "seed": 1403880866, + "version": 190, + "versionNonce": 2063256126, + "isDeleted": false, + "boundElements": [], + "updated": 1738868692592, + "link": null, + "locked": false, + "text": "GKE", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "d28sVSeqD7ZfcpnCUPhEV", + "originalText": "GKE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "CtpnCpFfWLdxLVvedMba5", + "type": "text", + "x": -1954.3762787402416, + "y": -4727.772476874493, + "width": 191.14698791503906, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b3B", + "roundness": null, + "seed": 1745653730, + "version": 187, + "versionNonce": 1587314850, + "isDeleted": false, + "boundElements": [], + "updated": 1738868692592, + "link": null, + "locked": false, + "text": "Deployment", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "A2RHneu8H0fGDdpLB7tBJ", + "originalText": "Deployment", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "yQK62_6M8KI3F6JJLR9LS", + "type": "text", + "x": -2103.0778459468256, + "y": -4564.044777343976, + "width": 199.15542602539062, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b3C", + "roundness": null, + "seed": 292832162, + "version": 187, + "versionNonce": 1206047358, + "isDeleted": false, + "boundElements": [], + "updated": 1738868692592, + "link": null, + "locked": false, + "text": "Prometheus", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "aCskzcYN27x7cynUC4saW", + "originalText": "Prometheus", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "hf32z2Siv6dHsHwUnDoa9", + "type": "text", + "x": -1770.3147643290677, + "y": -4564.044777343976, + "width": 112.41865539550781, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b3D", + "roundness": null, + "seed": 1664057186, + "version": 187, + "versionNonce": 977804386, + "isDeleted": false, + "boundElements": [], + "updated": 1738868692592, + "link": null, + "locked": false, + "text": "Retina", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "YMdaT_7SIJWQw88SC4lKI", + "originalText": "Retina", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "uCkY73YAeDCRobquy1ap_", + "type": "text", + "x": -2122.9611314692866, + "y": -4400.31707781346, + "width": 238.9219970703125, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "8L44eYOYO7FDP2Zg1MlGt", + "fOcHMc9ibAwtyrNzv-fW2" + ], + "frameId": null, + "index": "b3E", + "roundness": null, + "seed": 428688162, + "version": 187, + "versionNonce": 52417214, + "isDeleted": false, + "boundElements": [], + "updated": 1738868692592, + "link": null, + "locked": false, + "text": "Load Balancer", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Jt3KXMwuTXW_WUfPAAo20", + "originalText": "Load Balancer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "ySLiFMO4r4b4LlrRsv9sX", + "type": "rectangle", + "x": -3018.538388509248, + "y": -4831.408627109235, + "width": 733.8626026995305, + "height": 578.2723004694836, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b46", + "roundness": null, + "seed": 1232693922, + "version": 111, + "versionNonce": 1820238718, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "0k-vgU5nVIbAPjb0Tq7r8" + } + ], + "updated": 1738868697737, + "link": null, + "locked": false + }, + { + "id": "aSvGjP4QbabYEHlnAgE3c", + "type": "rectangle", + "x": -2983.702707758074, + "y": -4787.864026170268, + "width": 664.1912411971831, + "height": 491.1830985915493, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b47", + "roundness": null, + "seed": 1308083810, + "version": 113, + "versionNonce": 1081301630, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "i0rUd_n3FWos5cjK1Dnu2" + } + ], + "updated": 1738868731897, + "link": null, + "locked": false + }, + { + "id": "gaSIjLioK91UP6ZKn02GG", + "type": "rectangle", + "x": -2757.250371343755, + "y": -4744.319425231301, + "width": 259.4986062206573, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b48", + "roundness": null, + "seed": 833923618, + "version": 115, + "versionNonce": 920917090, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "nfObjFuMAdQeg4qWRsBsn" + }, + { + "id": "wLDFKwCFlsFH2rDkYCIj-", + "type": "arrow" + }, + { + "id": "B2ZybM6g3eqzdDPBOWFx6", + "type": "arrow" + } + ], + "updated": 1738868731897, + "link": null, + "locked": false + }, + { + "id": "P0mrMQhq0Ho30iSPherV-", + "type": "rectangle", + "x": -2899.5935895069006, + "y": -4580.591725700784, + "width": 254.79034624413146, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b49", + "roundness": null, + "seed": 463410658, + "version": 120, + "versionNonce": 1020224259, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "tscBhKdnq7GYtaDZARFAx" + }, + { + "id": "wLDFKwCFlsFH2rDkYCIj-", + "type": "arrow" + }, + { + "id": "zWFufuHJi7CLphBMnMldg", + "type": "arrow" + }, + { + "id": "YEMWrrusmwSNpbwxTPjiY", + "type": "arrow" + } + ], + "updated": 1739265688212, + "link": null, + "locked": false + }, + { + "id": "K47BC13LcdrvsNLazxRE7", + "type": "rectangle", + "x": -2557.7140413848347, + "y": -4580.591725700784, + "width": 149.8206426056338, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4A", + "roundness": null, + "seed": 2093353378, + "version": 116, + "versionNonce": 2117781251, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "l1Vvgj_0UQDsc3lRNN_Dj" + }, + { + "id": "B2ZybM6g3eqzdDPBOWFx6", + "type": "arrow" + }, + { + "id": "zWFufuHJi7CLphBMnMldg", + "type": "arrow" + } + ], + "updated": 1739188798896, + "link": null, + "locked": false + }, + { + "id": "yKavBaPFLcmv_bmePHGVO", + "type": "rectangle", + "x": -2922.7402664435203, + "y": -4416.864026170268, + "width": 301.0837001173709, + "height": 76.63849765258216, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4B", + "roundness": null, + "seed": 1280869730, + "version": 120, + "versionNonce": 1314797507, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "MGMD6CcTmmrjeH1zsUf44" + }, + { + "id": "cfQ6jN5FceKgSHuAPjtTz", + "type": "arrow" + }, + { + "id": "YEMWrrusmwSNpbwxTPjiY", + "type": "arrow" + } + ], + "updated": 1739265688212, + "link": null, + "locked": false + }, + { + "id": "u9MMGbZqVWiGYV6ZaSm8e", + "type": "rectangle", + "x": -2464.6578684094825, + "y": -4166.047124761817, + "width": 181.03667840375587, + "height": 98, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4G", + "roundness": null, + "seed": 1387194402, + "version": 118, + "versionNonce": 109556877, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "wOH_Q7yt7xcYe_utGkmP1" + }, + { + "id": "cfQ6jN5FceKgSHuAPjtTz", + "type": "arrow" + }, + { + "id": "DSjqSaeG5wuUW0oTNN6gO", + "type": "arrow" + } + ], + "updated": 1739188783428, + "link": null, + "locked": false + }, + { + "id": "wLDFKwCFlsFH2rDkYCIj-", + "type": "arrow", + "x": -2695.464777126667, + "y": -4666.680927578718, + "width": 76.73309495065632, + "height": 75.98685446009404, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4H", + "roundness": { + "type": 2 + }, + "seed": 1587647458, + "version": 333, + "versionNonce": 1270560418, + "isDeleted": false, + "boundElements": [], + "updated": 1738868731898, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -76.73309495065621, + 42.54460093896695 + ], + [ + -76.73309495065632, + 75.98685446009404 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "gaSIjLioK91UP6ZKn02GG", + "focus": -0.014845337170242176, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "P0mrMQhq0Ho30iSPherV-", + "focus": 0.000004272591324920846, + "gap": 10.102347417840065, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "B2ZybM6g3eqzdDPBOWFx6", + "type": "arrow", + "x": -2559.537032755679, + "y": -4666.680927578718, + "width": 76.73309495065632, + "height": 75.98685446009404, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4I", + "roundness": { + "type": 2 + }, + "seed": 1992869794, + "version": 333, + "versionNonce": 1042289250, + "isDeleted": false, + "boundElements": [], + "updated": 1738868731898, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 76.73309495065621, + 42.54460093896695 + ], + [ + 76.73309495065632, + 75.98685446009404 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "gaSIjLioK91UP6ZKn02GG", + "focus": 0.014843694899800591, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "K47BC13LcdrvsNLazxRE7", + "focus": -0.0000029064486854885798, + "gap": 10.102347417840065, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "0k-vgU5nVIbAPjb0Tq7r8", + "type": "text", + "x": -2699.7111063245216, + "y": -4826.408627109235, + "width": 96.20803833007812, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4R", + "roundness": null, + "seed": 1357939042, + "version": 187, + "versionNonce": 385620578, + "isDeleted": false, + "boundElements": [], + "updated": 1738868697737, + "link": null, + "locked": false, + "text": "Azure", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "ySLiFMO4r4b4LlrRsv9sX", + "originalText": "Azure", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "i0rUd_n3FWos5cjK1Dnu2", + "type": "text", + "x": -2685.0550165418067, + "y": -4782.864026170268, + "width": 66.89585876464844, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4S", + "roundness": null, + "seed": 1809712418, + "version": 187, + "versionNonce": 1955277694, + "isDeleted": false, + "boundElements": [], + "updated": 1738868731897, + "link": null, + "locked": false, + "text": "AKS", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "top", + "containerId": "aSvGjP4QbabYEHlnAgE3c", + "originalText": "AKS", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "nfObjFuMAdQeg4qWRsBsn", + "type": "text", + "x": -2723.074562190946, + "y": -4727.772476874493, + "width": 191.14698791503906, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4T", + "roundness": null, + "seed": 501551330, + "version": 184, + "versionNonce": 1303237474, + "isDeleted": false, + "boundElements": [], + "updated": 1738868731897, + "link": null, + "locked": false, + "text": "Deployment", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "gaSIjLioK91UP6ZKn02GG", + "originalText": "Deployment", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "tscBhKdnq7GYtaDZARFAx", + "type": "text", + "x": -2871.77612939753, + "y": -4564.044777343976, + "width": 199.15542602539062, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4U", + "roundness": null, + "seed": 1519690914, + "version": 184, + "versionNonce": 190122942, + "isDeleted": false, + "boundElements": [], + "updated": 1738868731897, + "link": null, + "locked": false, + "text": "Prometheus", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "P0mrMQhq0Ho30iSPherV-", + "originalText": "Prometheus", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "l1Vvgj_0UQDsc3lRNN_Dj", + "type": "text", + "x": -2539.0130477797716, + "y": -4564.044777343976, + "width": 112.41865539550781, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4V", + "roundness": null, + "seed": 1268498530, + "version": 184, + "versionNonce": 1226905378, + "isDeleted": false, + "boundElements": [], + "updated": 1738868731897, + "link": null, + "locked": false, + "text": "Retina", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "K47BC13LcdrvsNLazxRE7", + "originalText": "Retina", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "MGMD6CcTmmrjeH1zsUf44", + "type": "text", + "x": -2891.659414919991, + "y": -4400.31707781346, + "width": 238.9219970703125, + "height": 43.544600938967136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "PaaD7t02Cbaj_dpdXMJsB", + "bt-VhRQhDFqv8jcCszqVa" + ], + "frameId": null, + "index": "b4W", + "roundness": null, + "seed": 214524962, + "version": 184, + "versionNonce": 645456894, + "isDeleted": false, + "boundElements": [], + "updated": 1738868731897, + "link": null, + "locked": false, + "text": "Load Balancer", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "yKavBaPFLcmv_bmePHGVO", + "originalText": "Load Balancer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "wOH_Q7yt7xcYe_utGkmP1", + "type": "text", + "x": -2442.5792112144404, + "y": -4160.591725700784, + "width": 136.87936401367188, + "height": 87.08920187793427, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4b", + "roundness": null, + "seed": 251432674, + "version": 188, + "versionNonce": 1864249122, + "isDeleted": false, + "boundElements": [], + "updated": 1738868618892, + "link": null, + "locked": false, + "text": "Grafana\nCloud", + "fontSize": 34.83568075117371, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "u9MMGbZqVWiGYV6ZaSm8e", + "originalText": "Grafana Cloud", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "cfQ6jN5FceKgSHuAPjtTz", + "type": "arrow", + "x": -2466.210263509248, + "y": -4120.408627109235, + "width": 313, + "height": 218, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4c", + "roundness": { + "type": 2 + }, + "seed": 1379029549, + "version": 107, + "versionNonce": 824194339, + "isDeleted": false, + "boundElements": null, + "updated": 1739188774980, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -236, + -31 + ], + [ + -313, + -218 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "u9MMGbZqVWiGYV6ZaSm8e", + "focus": -0.14341464045019223, + "gap": 1.5523950997653628, + "fixedPoint": null + }, + "endBinding": { + "elementId": "yKavBaPFLcmv_bmePHGVO", + "focus": 0.14152504609275607, + "gap": 1.8169014084505761, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "DSjqSaeG5wuUW0oTNN6gO", + "type": "arrow", + "x": -2285.210263509248, + "y": -4119.408627109235, + "width": 285, + "height": 222, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4d", + "roundness": { + "type": 2 + }, + "seed": 1715706051, + "version": 129, + "versionNonce": 1284813517, + "isDeleted": false, + "boundElements": null, + "updated": 1739188787635, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 238, + -32 + ], + [ + 285, + -222 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "u9MMGbZqVWiGYV6ZaSm8e", + "focus": 0.1568626794957365, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "Jt3KXMwuTXW_WUfPAAo20", + "focus": -0.07796598033823895, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "zWFufuHJi7CLphBMnMldg", + "type": "arrow", + "x": -2644.210263509248, + "y": -4542.408627109235, + "width": 85, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4e", + "roundness": { + "type": 2 + }, + "seed": 226747427, + "version": 65, + "versionNonce": 32516963, + "isDeleted": false, + "boundElements": null, + "updated": 1739188798896, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 85, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "P0mrMQhq0Ho30iSPherV-", + "focus": -0.0035530507228614863, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "K47BC13LcdrvsNLazxRE7", + "focus": 0.0035530507228614863, + "gap": 1.4962221244131797, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "jeot-u8S5-vTtE_yHkMI5", + "type": "arrow", + "x": -1876.2102635092479, + "y": -4539.408627109235, + "width": 85, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4f", + "roundness": { + "type": 2 + }, + "seed": 1289027853, + "version": 77, + "versionNonce": 1647813123, + "isDeleted": false, + "boundElements": null, + "updated": 1739188818249, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 85, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "aCskzcYN27x7cynUC4saW", + "focus": 0.07473658417054697, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "YMdaT_7SIJWQw88SC4lKI", + "focus": -0.07473658417054699, + "gap": 2.194505575117205, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "YEMWrrusmwSNpbwxTPjiY", + "type": "arrow", + "x": -2785.210263509248, + "y": -4417.408627109235, + "width": 2, + "height": 83, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4g", + "roundness": { + "type": 2 + }, + "seed": 513863011, + "version": 29, + "versionNonce": 1038632803, + "isDeleted": false, + "boundElements": null, + "updated": 1739265688212, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 2, + -83 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "yKavBaPFLcmv_bmePHGVO", + "focus": -0.09208930453946242, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "P0mrMQhq0Ho30iSPherV-", + "focus": 0.07795506834372791, + "gap": 3.5446009389670508, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "Fwx5NZsMkIR2630Y4XWgt", + "type": "arrow", + "x": -2004.2102635092479, + "y": -4417.408627109235, + "width": 2, + "height": 88, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "b4h", + "roundness": { + "type": 2 + }, + "seed": 1315153165, + "version": 24, + "versionNonce": 909877603, + "isDeleted": false, + "boundElements": null, + "updated": 1739265694968, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -2, + -88 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "Jt3KXMwuTXW_WUfPAAo20", + "focus": 0.001143488555546266, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "aCskzcYN27x7cynUC4saW", + "focus": 0.027660826256840885, + "gap": 1, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + } + ], + "appState": { + "gridSize": 20, + "gridStep": 5, + "gridModeEnabled": false, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/test/multicloud/examples/grafana/.terraform.lock.hcl b/test/multicloud/examples/grafana/.terraform.lock.hcl new file mode 100644 index 0000000000..814d628dca --- /dev/null +++ b/test/multicloud/examples/grafana/.terraform.lock.hcl @@ -0,0 +1,30 @@ +# This file is maintained automatically by "tofu init". +# Manual edits may be lost in future updates. + +provider "registry.opentofu.org/grafana/grafana" { + version = "3.18.3" + constraints = "3.18.3" + hashes = [ + "h1:h8jsFjj3XT5GveS9eb8+KxgErmQLE8ZKe0Cdgbi+11Q=", + "zh:15f8db87fb9d9627b2d94c7d578f96dbfd1bd8e178e984cfd1ff619ac4b2312e", + "zh:202cb8bb6b0f99b57847d7bd463c7d465e7a5f6ebd8930563b77a564a263232f", + "zh:2589bc9d77c3004b79caa9cb82821034b92cb771f9e77dbbc2717d16ee010877", + "zh:4d0811400a9d8c5147f56e6e6365649464b9d939c8e4b3e804fa33a7172e615d", + "zh:576c93474d7a7a15133e443b742a09e73c49ba8397dd1db0a3bc1615e8ed941f", + "zh:659ba97fbfaf2971b4206442aad9950ef80a9d184ee9acb1353d4bd744ef76c4", + "zh:695cbbcaaf0fb51576383ace67e75b80c2fae6c0ee9c2acf427265390dd9400a", + "zh:6dbea832d760eedffb37ee1a87c179b6ede7f236a48c85e569fccbf17ceb44e1", + "zh:786d51a46995dc81b574049f1257fc9c60137949bb1fc65ebc8b9a99537d0333", + "zh:80243a2876c4c499da80caf13fc38be2d13ec4fbcf83b150a4243a671cb25854", + "zh:8d395cd587e3f2587f90dca698cfe498577a606b27cdc83b75d35ab2425ad092", + "zh:a7a209802774b24aebec6ad4d1cf98257f30270c3493e551b7129f076a8f2198", + "zh:ac269db542be25bb525a5a9dd398ef7a72f2a81a21543182e7d2b7855e10b0de", + "zh:c8669f217de2878a9b503caa465941576155002ce9f0f48c071ecc9348a4b0ab", + "zh:d2b6205399085d22ed81345b78ebc66e8ca8703e93da6c3f1e418174ecdc71f0", + "zh:ddde96484350a433f16d23cf7649d142aa5764e122cf5f7f12d3d2b162960b56", + "zh:de14ef67291555620720bb067754d16c8a4a457ca0ea52907479ea5d91f0e9b3", + "zh:e84f064e3cf21c2445bf064a1a98d3e7cd092f8dc3a78812e4fb8a8bcde935d3", + "zh:e9281573351e6ecddf72bbec9bcd9d6f30003fdbf675a02b0b60bd0ce6a70b04", + "zh:ff3b499b47a69f3c2ad27ad8b5a6ccd0b437cae126a9b9e99d0f97d349bf5cfd", + ] +} diff --git a/test/multicloud/examples/grafana/main.tf b/test/multicloud/examples/grafana/main.tf new file mode 100644 index 0000000000..4ff0c9f541 --- /dev/null +++ b/test/multicloud/examples/grafana/main.tf @@ -0,0 +1,9 @@ +module "grafana" { + source = "../../modules/grafana" + prometheus_endpoints = { + # This is obviously wrong, but it's just an example + # and you can check on GrafanaCloud to validate the + # data source was created + some = "http://example.com:1234" + } +} \ No newline at end of file diff --git a/test/multicloud/examples/grafana/providers.tf b/test/multicloud/examples/grafana/providers.tf new file mode 100644 index 0000000000..1b8a0eb7ba --- /dev/null +++ b/test/multicloud/examples/grafana/providers.tf @@ -0,0 +1,15 @@ +# Terraform Grafana provider configuration +terraform { + required_version = "1.8.3" + required_providers { + grafana = { + source = "grafana/grafana" + version = "3.18.3" + } + } +} + +# Initialize the Grafana provider +provider "grafana" { + url = var.grafana_url +} \ No newline at end of file diff --git a/test/multicloud/examples/grafana/variables.tf b/test/multicloud/examples/grafana/variables.tf new file mode 100644 index 0000000000..5eeb127cf9 --- /dev/null +++ b/test/multicloud/examples/grafana/variables.tf @@ -0,0 +1,4 @@ +variable "grafana_url" { + description = "The URL of the Grafana instance" + type = string +} diff --git a/test/multicloud/examples/integration/prometheus-kind/main.tf b/test/multicloud/examples/integration/prometheus-kind/main.tf index 41dd85efd9..2372d3d74a 100644 --- a/test/multicloud/examples/integration/prometheus-kind/main.tf +++ b/test/multicloud/examples/integration/prometheus-kind/main.tf @@ -3,9 +3,22 @@ module "kind" { prefix = var.prefix } -module "prometheus" { +module "retina" { depends_on = [module.kind] source = "../../../modules/helm-release" + release_name = var.retina_release_name + repository_url = var.retina_repository_url + chart_version = var.retina_chart_version + chart_name = var.retina_chart_name + values = var.retina_values +} + +module "prometheus" { + depends_on = [ + module.kind, + module.retina + ] + source = "../../../modules/helm-release" release_name = var.prometheus_release_name repository_url = var.prometheus_repository_url chart_version = var.prometheus_chart_version diff --git a/test/multicloud/examples/integration/prometheus-kind/variables.tf b/test/multicloud/examples/integration/prometheus-kind/variables.tf index 887d5d925d..eb37f49968 100644 --- a/test/multicloud/examples/integration/prometheus-kind/variables.tf +++ b/test/multicloud/examples/integration/prometheus-kind/variables.tf @@ -29,19 +29,35 @@ variable "prometheus_chart_name" { } variable "prometheus_values" { - description = "Configuration for set blocks, this corresponds to Helm values.yaml" - type = list(object({ - name = string - value = string - })) - default = [ - { - name = "global.prometheus.enabled" - value = "true" - }, - { - name = "global.grafana.enabled" - value = "true" - } - ] -} \ No newline at end of file + description = "This corresponds to Helm values.yaml" + type = any +} + +variable "retina_release_name" { + description = "The name of the Helm release." + type = string + default = "retina" +} + +variable "retina_repository_url" { + description = "The URL of the Helm repository." + type = string + default = "oci://ghcr.io/microsoft/retina/charts" +} + +variable "retina_chart_version" { + description = "The version of the Helm chart to install." + type = string + default = "v0.0.24" +} + +variable "retina_chart_name" { + description = "The name of the Helm chart to install." + type = string + default = "retina" +} + +variable "retina_values" { + description = "This corresponds to Helm values.yaml" + type = any +} diff --git a/test/multicloud/examples/integration/retina-gke/variables.tf b/test/multicloud/examples/integration/retina-gke/variables.tf index 04f390204e..b3eebe843d 100644 --- a/test/multicloud/examples/integration/retina-gke/variables.tf +++ b/test/multicloud/examples/integration/retina-gke/variables.tf @@ -47,23 +47,6 @@ variable "retina_chart_name" { } variable "retina_values" { - description = "Configuration for set blocks, this corresponds to Helm values.yaml" - type = list(object({ - name = string - value = string - })) - default = [ - { - name = "image.tag" - value = "v0.0.24" - }, - { - name = "operator.tag" - value = "v0.0.24" - }, - { - name = "logLevel" - value = "info" - } - ] + description = "This corresponds to Helm values.yaml" + type = any } diff --git a/test/multicloud/examples/integration/retina-kind/variables.tf b/test/multicloud/examples/integration/retina-kind/variables.tf index 3735666a6e..f282bf2076 100644 --- a/test/multicloud/examples/integration/retina-kind/variables.tf +++ b/test/multicloud/examples/integration/retina-kind/variables.tf @@ -29,23 +29,6 @@ variable "retina_chart_name" { } variable "retina_values" { - description = "Configuration for set blocks, this corresponds to Helm values.yaml" - type = list(object({ - name = string - value = string - })) - default = [ - { - name = "image.tag" - value = "v0.0.24" - }, - { - name = "operator.tag" - value = "v0.0.24" - }, - { - name = "logLevel" - value = "info" - } - ] -} \ No newline at end of file + description = "This corresponds to Helm values.yaml" + type = any +} diff --git a/test/multicloud/image.png b/test/multicloud/image.png new file mode 100644 index 0000000000000000000000000000000000000000..4e24e1841dbfd2010d12f941ddb7e380c952649c GIT binary patch literal 569348 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