Repository: kubernetes-sigs/cloud-provider-azure
Pull request #5222 (2024-01-05 08:45:35)

Refactor:replace golang/mock with uber-go/mock
<!--  Thanks for sending a pull request!  Here are some tips for you:

1. If this is your first time, please read our contributor guidelines: https://git.k8s.io/community/contributors/guide/first-contribution.md#your-first-contribution and developer guide https://git.k8s.io/community/contributors/devel/development.md#development-guide
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request. For reference on required PR/issue labels, read here:
https://git.k8s.io/community/contributors/devel/sig-release/release.md#issuepr-kind-label
3. Ensure you have added or ran the appropriate tests for your PR: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
4. If you want *faster* PR reviews, read how: https://git.k8s.io/community/contributors/guide/pull-requests.md#best-practices-for-faster-reviews
5. If the PR is unfinished, see how to mark it: https://git.k8s.io/community/contributors/guide/pull-requests.md#marking-unfinished-pull-requests
-->

#### What type of PR is this?
/kind cleanup

<!--
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature
/kind design

Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->

#### What this PR does / why we need it:
Refactor:replace golang/mock with uber-go/mock
#### Which issue(s) this PR fixes:
<!--
*Automatically closes linked issue when PR is merged.
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
_If PR is about `failing-tests or flakes`, please post the related issues/tests in a comment and do not use `Fixes`_*
-->
Fixes #

#### Special notes for your reviewer:

#### Does this PR introduce a user-facing change?
<!--
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".

For more information on release notes see: https://git.k8s.io/community/contributors/guide/release-notes.md
-->
```release-note
NONE
```

#### Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:

<!--
This section can be blank if this pull request does not require a release note.

When adding links which point to resources within git repositories, like
KEPs or supporting documentation, please reference a specific commit and avoid
linking directly to the master branch. This ensures that links reference a
specific point in time, rather than a document that may change over time.

See here for guidance on getting permanent links to files: https://help.github.com/en/articles/getting-permanent-links-to-files

Please use the following format for linking documentation:
- [KEP]: <link>
- [Usage]: <link>
- [Other doc]: <link>
-->
```docs

```


k8s-ci-robot: Adding the "do-not-merge/release-note-label-needed" label because no release-note block was detected, please follow our [release note process](https://git.k8s.io/community/contributors/guide/release-notes.md) to remove it.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
</details>
k8s-ci-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/kubernetes-sigs/cloud-provider-azure/pull/5222#" title="Author self-approved">MartinForReal</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=kubernetes-sigs%2Fcloud-provider-azure).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[OWNERS](https://github.com/kubernetes-sigs/cloud-provider-azure/blob/master/OWNERS)~~ [MartinForReal]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->
k8s-ci-robot: @MartinForReal: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz/1743192017766191104) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz`
pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz/1743192017833299968) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz`

[Full PR test history](https://prow.k8s.io/pr-history?org=kubernetes-sigs&repo=cloud-provider-azure&pr=5222). [Your PR dashboard](https://prow.k8s.io/pr?query=is%3Apr%20state%3Aopen%20author%3AMartinForReal). Please help us cut down on flakes by [linking to](https://git.k8s.io/community/contributors/devel/sig-testing/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/kubernetes-sigs/cloud-provider-azure/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
k8s-ci-robot: @MartinForReal: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz/1743192017766191104) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz`
pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz/1743192017833299968) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz`
pull-cloud-provider-azure-e2e-ccm-vmssflex-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmssflex-capz/1743192017585836032) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmssflex-capz`

[Full PR test history](https://prow.k8s.io/pr-history?org=kubernetes-sigs&repo=cloud-provider-azure&pr=5222). [Your PR dashboard](https://prow.k8s.io/pr?query=is%3Apr%20state%3Aopen%20author%3AMartinForReal). Please help us cut down on flakes by [linking to](https://git.k8s.io/community/contributors/devel/sig-testing/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/kubernetes-sigs/cloud-provider-azure/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
k8s-ci-robot: @MartinForReal: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz/1743192017766191104) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz`
pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz/1743192017833299968) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz`
pull-cloud-provider-azure-e2e-ccm-vmssflex-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmssflex-capz/1743192017585836032) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmssflex-capz`
pull-cloud-provider-azure-e2e-ccm-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-capz/1743192017707470848) | true | `/test pull-cloud-provider-azure-e2e-ccm-capz`

[Full PR test history](https://prow.k8s.io/pr-history?org=kubernetes-sigs&repo=cloud-provider-azure&pr=5222). [Your PR dashboard](https://prow.k8s.io/pr?query=is%3Apr%20state%3Aopen%20author%3AMartinForReal). Please help us cut down on flakes by [linking to](https://git.k8s.io/community/contributors/devel/sig-testing/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/kubernetes-sigs/cloud-provider-azure/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
k8s-ci-robot: @MartinForReal: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz/1743192017766191104) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmss-ip-lb-capz`
pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz/1743192017833299968) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmss-multi-slb-capz`
pull-cloud-provider-azure-e2e-ccm-vmssflex-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-vmssflex-capz/1743192017585836032) | true | `/test pull-cloud-provider-azure-e2e-ccm-vmssflex-capz`
pull-cloud-provider-azure-e2e-ccm-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-ccm-capz/1743192017707470848) | true | `/test pull-cloud-provider-azure-e2e-ccm-capz`
pull-cloud-provider-azure-e2e-capz | ad50d86a25e8da40a3c5326ffab70bc45652c5c2 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-e2e-capz/1743192017648750592) | true | `/test pull-cloud-provider-azure-e2e-capz`
pull-cloud-provider-azure-check | f7613bc4b0d760d4bfd6e654ecc6bf661daf9341 | [link](https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/5222/pull-cloud-provider-azure-check/1743194037076103168) | true | `/test pull-cloud-provider-azure-check`

[Full PR test history](https://prow.k8s.io/pr-history?org=kubernetes-sigs&repo=cloud-provider-azure&pr=5222). [Your PR dashboard](https://prow.k8s.io/pr?query=is%3Apr%20state%3Aopen%20author%3AMartinForReal). Please help us cut down on flakes by [linking to](https://git.k8s.io/community/contributors/devel/sig-testing/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/kubernetes-sigs/cloud-provider-azure/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->

Patch:
diff --git a/LICENSES/vendor/github.com/golang/mock/LICENSE b/LICENSES/vendor/go.uber.org/mock/LICENSE
similarity index 98%
rename from LICENSES/vendor/github.com/golang/mock/LICENSE
rename to LICENSES/vendor/go.uber.org/mock/LICENSE
index c3cef2a6a..a458d0872 100644
--- a/LICENSES/vendor/github.com/golang/mock/LICENSE
+++ b/LICENSES/vendor/go.uber.org/mock/LICENSE
@@ -1,4 +1,4 @@
-= vendor/github.com/golang/mock licensed under: =
+= vendor/go.uber.org/mock licensed under: =
 
 
                                  Apache License
@@ -203,4 +203,4 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 
-= vendor/github.com/golang/mock/LICENSE 3b83ef96387f14655fc854ddc3c6bd57
+= vendor/go.uber.org/mock/LICENSE 3b83ef96387f14655fc854ddc3c6bd57
diff --git a/go.mod b/go.mod
index 17f0ac1a7..8b13176b4 100644
--- a/go.mod
+++ b/go.mod
@@ -21,14 +21,14 @@ require (
 	github.com/evanphx/json-patch v5.7.0+incompatible
 	github.com/fsnotify/fsnotify v1.7.0
 	github.com/go-logr/logr v1.3.0
-	github.com/golang/mock v1.6.0
 	github.com/onsi/ginkgo/v2 v2.13.2
 	github.com/onsi/gomega v1.30.0
 	github.com/spf13/cobra v1.8.0
 	github.com/spf13/pflag v1.0.5
 	github.com/stretchr/testify v1.8.4
+	go.uber.org/mock v0.4.0
 	golang.org/x/crypto v0.17.0
-	golang.org/x/sync v0.5.0
+	golang.org/x/sync v0.6.0
 	golang.org/x/sys v0.15.0
 	golang.org/x/text v0.14.0
 	k8s.io/api v0.29.0
@@ -42,7 +42,7 @@ require (
 	k8s.io/klog/v2 v2.110.1
 	k8s.io/kubelet v0.29.0
 	k8s.io/utils v0.0.0-20231127182322-b307cd553661
-	sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.0-20240103055401-88f4ca026f87
+	sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.0-20240105075710-c4d4895a970b
 	sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.0-20231205023417-1ba5a224ab0e
 	sigs.k8s.io/yaml v1.4.0
 )
diff --git a/go.sum b/go.sum
index 3c0cfebdf..f829f8c66 100644
--- a/go.sum
+++ b/go.sum
@@ -263,8 +263,6 @@ github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo=
 github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
-github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
@@ -405,7 +403,6 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA=
 go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
@@ -447,6 +444,8 @@ go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0
 go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
 go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
+go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
+go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
 go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
 go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
@@ -465,7 +464,6 @@ golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqR
 golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 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.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
 golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
@@ -477,7 +475,6 @@ golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLL
 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.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 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.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
@@ -489,18 +486,15 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
 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.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.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
-golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
+golang.org/x/sync v0.6.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-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -530,7 +524,6 @@ golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtn
 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.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc=
 golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
@@ -603,8 +596,8 @@ k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6R
 k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
 sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 h1:TgtAeesdhpm2SGwkQasmbeqDo8th5wOBA5h/AjTKA4I=
 sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0/go.mod h1:VHVDI/KrK4fjnV61bE2g3sA7tiETLn8sooImelsCx3Y=
-sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.0-20240103055401-88f4ca026f87 h1:eukmioNewcQ+P7FJpVsekDh+/6zGwD3jbpbfwGlZmUE=
-sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.0-20240103055401-88f4ca026f87/go.mod h1:omzszOAEb0uwLCGgRuH+yExWvhZWHy9L6nM1f6RIYx0=
+sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.0-20240105075710-c4d4895a970b h1:onCsa2FoC9HGIgW+eQYJI8/IZnefwCcU9rF7ZKtD7f0=
+sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.0-20240105075710-c4d4895a970b/go.mod h1:seH99Elt7KgWOOonCmzRcB1yLouqK7B7+l8RoSbqaYE=
 sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.0-20231205023417-1ba5a224ab0e h1:WjkP0sFCicdlRoTUwJZ0Nm72fZApS/vnAePc+Y7R364=
 sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.0-20231205023417-1ba5a224ab0e/go.mod h1:dDc0Ixf5VI01TkTj83ENW1hH5jImGJsdKhQgFRyQsyA=
 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
diff --git a/hack/update-mock-clients.sh b/hack/update-mock-clients.sh
index 194611f14..9d5935f55 100755
--- a/hack/update-mock-clients.sh
+++ b/hack/update-mock-clients.sh
@@ -24,7 +24,7 @@ TARGET_DIR="${REPO_ROOT}/${AZURECLIENTS}"
 
 if ! type mockgen &> /dev/null; then
     echo "mockgen not exist, install it"
-    go install github.com/golang/mock/mockgen@v1.6.0
+    go install go.uber.org/mock/mockgen@v0.4.0
 fi
 
 # update_all_mocks update mocks for all modules
diff --git a/pkg/azureclients/armclient/mockarmclient/interface.go b/pkg/azureclients/armclient/mockarmclient/interface.go
index 9edb5669a..8c5eb5e99 100644
--- a/pkg/azureclients/armclient/mockarmclient/interface.go
+++ b/pkg/azureclients/armclient/mockarmclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/armclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/armclient/interface.go -package=mockarmclient Interface
+//
 
 // Package mockarmclient is a generated GoMock package.
 package mockarmclient
@@ -28,7 +33,7 @@ import (
 
 	autorest "github.com/Azure/go-autorest/autorest"
 	azure "github.com/Azure/go-autorest/autorest/azure"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	armclient "sigs.k8s.io/cloud-provider-azure/pkg/azureclients/armclient"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
@@ -63,7 +68,7 @@ func (m *MockInterface) CloseResponse(ctx context.Context, response *http.Respon
 }
 
 // CloseResponse indicates an expected call of CloseResponse.
-func (mr *MockInterfaceMockRecorder) CloseResponse(ctx, response interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CloseResponse(ctx, response any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseResponse", reflect.TypeOf((*MockInterface)(nil).CloseResponse), ctx, response)
 }
@@ -71,7 +76,7 @@ func (mr *MockInterfaceMockRecorder) CloseResponse(ctx, response interface{}) *g
 // DeleteResource mocks base method.
 func (m *MockInterface) DeleteResource(ctx context.Context, resourceID string, decorators ...autorest.PrepareDecorator) *retry.Error {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx, resourceID}
+	varargs := []any{ctx, resourceID}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -81,16 +86,16 @@ func (m *MockInterface) DeleteResource(ctx context.Context, resourceID string, d
 }
 
 // DeleteResource indicates an expected call of DeleteResource.
-func (mr *MockInterfaceMockRecorder) DeleteResource(ctx, resourceID interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) DeleteResource(ctx, resourceID any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx, resourceID}, decorators...)
+	varargs := append([]any{ctx, resourceID}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteResource", reflect.TypeOf((*MockInterface)(nil).DeleteResource), varargs...)
 }
 
 // DeleteResourceAsync mocks base method.
 func (m *MockInterface) DeleteResourceAsync(ctx context.Context, resourceID string, decorators ...autorest.PrepareDecorator) (*azure.Future, *retry.Error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx, resourceID}
+	varargs := []any{ctx, resourceID}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -101,16 +106,16 @@ func (m *MockInterface) DeleteResourceAsync(ctx context.Context, resourceID stri
 }
 
 // DeleteResourceAsync indicates an expected call of DeleteResourceAsync.
-func (mr *MockInterfaceMockRecorder) DeleteResourceAsync(ctx, resourceID interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) DeleteResourceAsync(ctx, resourceID any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx, resourceID}, decorators...)
+	varargs := append([]any{ctx, resourceID}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteResourceAsync", reflect.TypeOf((*MockInterface)(nil).DeleteResourceAsync), varargs...)
 }
 
 // GetResource mocks base method.
 func (m *MockInterface) GetResource(ctx context.Context, resourceID string, decorators ...autorest.PrepareDecorator) (*http.Response, *retry.Error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx, resourceID}
+	varargs := []any{ctx, resourceID}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -121,9 +126,9 @@ func (m *MockInterface) GetResource(ctx context.Context, resourceID string, deco
 }
 
 // GetResource indicates an expected call of GetResource.
-func (mr *MockInterfaceMockRecorder) GetResource(ctx, resourceID interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetResource(ctx, resourceID any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx, resourceID}, decorators...)
+	varargs := append([]any{ctx, resourceID}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetResource", reflect.TypeOf((*MockInterface)(nil).GetResource), varargs...)
 }
 
@@ -137,7 +142,7 @@ func (m *MockInterface) GetResourceWithExpandAPIVersionQuery(ctx context.Context
 }
 
 // GetResourceWithExpandAPIVersionQuery indicates an expected call of GetResourceWithExpandAPIVersionQuery.
-func (mr *MockInterfaceMockRecorder) GetResourceWithExpandAPIVersionQuery(ctx, resourceID, expand, apiVersion interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetResourceWithExpandAPIVersionQuery(ctx, resourceID, expand, apiVersion any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetResourceWithExpandAPIVersionQuery", reflect.TypeOf((*MockInterface)(nil).GetResourceWithExpandAPIVersionQuery), ctx, resourceID, expand, apiVersion)
 }
@@ -152,13 +157,13 @@ func (m *MockInterface) GetResourceWithExpandQuery(ctx context.Context, resource
 }
 
 // GetResourceWithExpandQuery indicates an expected call of GetResourceWithExpandQuery.
-func (mr *MockInterfaceMockRecorder) GetResourceWithExpandQuery(ctx, resourceID, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetResourceWithExpandQuery(ctx, resourceID, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetResourceWithExpandQuery", reflect.TypeOf((*MockInterface)(nil).GetResourceWithExpandQuery), ctx, resourceID, expand)
 }
 
 // GetResourceWithQueries mocks base method.
-func (m *MockInterface) GetResourceWithQueries(ctx context.Context, resourceID string, queries map[string]interface{}) (*http.Response, *retry.Error) {
+func (m *MockInterface) GetResourceWithQueries(ctx context.Context, resourceID string, queries map[string]any) (*http.Response, *retry.Error) {
 	m.ctrl.T.Helper()
 	ret := m.ctrl.Call(m, "GetResourceWithQueries", ctx, resourceID, queries)
 	ret0, _ := ret[0].(*http.Response)
@@ -167,7 +172,7 @@ func (m *MockInterface) GetResourceWithQueries(ctx context.Context, resourceID s
 }
 
 // GetResourceWithQueries indicates an expected call of GetResourceWithQueries.
-func (mr *MockInterfaceMockRecorder) GetResourceWithQueries(ctx, resourceID, queries interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetResourceWithQueries(ctx, resourceID, queries any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetResourceWithQueries", reflect.TypeOf((*MockInterface)(nil).GetResourceWithQueries), ctx, resourceID, queries)
 }
@@ -182,15 +187,15 @@ func (m *MockInterface) HeadResource(ctx context.Context, resourceID string) (*h
 }
 
 // HeadResource indicates an expected call of HeadResource.
-func (mr *MockInterfaceMockRecorder) HeadResource(ctx, resourceID interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) HeadResource(ctx, resourceID any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HeadResource", reflect.TypeOf((*MockInterface)(nil).HeadResource), ctx, resourceID)
 }
 
 // PatchResource mocks base method.
-func (m *MockInterface) PatchResource(ctx context.Context, resourceID string, parameters interface{}, decorators ...autorest.PrepareDecorator) (*http.Response, *retry.Error) {
+func (m *MockInterface) PatchResource(ctx context.Context, resourceID string, parameters any, decorators ...autorest.PrepareDecorator) (*http.Response, *retry.Error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx, resourceID, parameters}
+	varargs := []any{ctx, resourceID, parameters}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -201,16 +206,16 @@ func (m *MockInterface) PatchResource(ctx context.Context, resourceID string, pa
 }
 
 // PatchResource indicates an expected call of PatchResource.
-func (mr *MockInterfaceMockRecorder) PatchResource(ctx, resourceID, parameters interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PatchResource(ctx, resourceID, parameters any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx, resourceID, parameters}, decorators...)
+	varargs := append([]any{ctx, resourceID, parameters}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchResource", reflect.TypeOf((*MockInterface)(nil).PatchResource), varargs...)
 }
 
 // PatchResourceAsync mocks base method.
-func (m *MockInterface) PatchResourceAsync(ctx context.Context, resourceID string, parameters interface{}, decorators ...autorest.PrepareDecorator) (*azure.Future, *retry.Error) {
+func (m *MockInterface) PatchResourceAsync(ctx context.Context, resourceID string, parameters any, decorators ...autorest.PrepareDecorator) (*azure.Future, *retry.Error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx, resourceID, parameters}
+	varargs := []any{ctx, resourceID, parameters}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -221,14 +226,14 @@ func (m *MockInterface) PatchResourceAsync(ctx context.Context, resourceID strin
 }
 
 // PatchResourceAsync indicates an expected call of PatchResourceAsync.
-func (mr *MockInterfaceMockRecorder) PatchResourceAsync(ctx, resourceID, parameters interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PatchResourceAsync(ctx, resourceID, parameters any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx, resourceID, parameters}, decorators...)
+	varargs := append([]any{ctx, resourceID, parameters}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchResourceAsync", reflect.TypeOf((*MockInterface)(nil).PatchResourceAsync), varargs...)
 }
 
 // PostResource mocks base method.
-func (m *MockInterface) PostResource(ctx context.Context, resourceID, action string, parameters interface{}, queryParameters map[string]interface{}) (*http.Response, *retry.Error) {
+func (m *MockInterface) PostResource(ctx context.Context, resourceID, action string, parameters any, queryParameters map[string]any) (*http.Response, *retry.Error) {
 	m.ctrl.T.Helper()
 	ret := m.ctrl.Call(m, "PostResource", ctx, resourceID, action, parameters, queryParameters)
 	ret0, _ := ret[0].(*http.Response)
@@ -237,7 +242,7 @@ func (m *MockInterface) PostResource(ctx context.Context, resourceID, action str
 }
 
 // PostResource indicates an expected call of PostResource.
-func (mr *MockInterfaceMockRecorder) PostResource(ctx, resourceID, action, parameters, queryParameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PostResource(ctx, resourceID, action, parameters, queryParameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PostResource", reflect.TypeOf((*MockInterface)(nil).PostResource), ctx, resourceID, action, parameters, queryParameters)
 }
@@ -245,7 +250,7 @@ func (mr *MockInterfaceMockRecorder) PostResource(ctx, resourceID, action, param
 // PrepareDeleteRequest mocks base method.
 func (m *MockInterface) PrepareDeleteRequest(ctx context.Context, decorators ...autorest.PrepareDecorator) (*http.Request, error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx}
+	varargs := []any{ctx}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -256,16 +261,16 @@ func (m *MockInterface) PrepareDeleteRequest(ctx context.Context, decorators ...
 }
 
 // PrepareDeleteRequest indicates an expected call of PrepareDeleteRequest.
-func (mr *MockInterfaceMockRecorder) PrepareDeleteRequest(ctx interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PrepareDeleteRequest(ctx any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx}, decorators...)
+	varargs := append([]any{ctx}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PrepareDeleteRequest", reflect.TypeOf((*MockInterface)(nil).PrepareDeleteRequest), varargs...)
 }
 
 // PrepareGetRequest mocks base method.
 func (m *MockInterface) PrepareGetRequest(ctx context.Context, decorators ...autorest.PrepareDecorator) (*http.Request, error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx}
+	varargs := []any{ctx}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -276,16 +281,16 @@ func (m *MockInterface) PrepareGetRequest(ctx context.Context, decorators ...aut
 }
 
 // PrepareGetRequest indicates an expected call of PrepareGetRequest.
-func (mr *MockInterfaceMockRecorder) PrepareGetRequest(ctx interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PrepareGetRequest(ctx any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx}, decorators...)
+	varargs := append([]any{ctx}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PrepareGetRequest", reflect.TypeOf((*MockInterface)(nil).PrepareGetRequest), varargs...)
 }
 
 // PrepareHeadRequest mocks base method.
 func (m *MockInterface) PrepareHeadRequest(ctx context.Context, decorators ...autorest.PrepareDecorator) (*http.Request, error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx}
+	varargs := []any{ctx}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -296,16 +301,16 @@ func (m *MockInterface) PrepareHeadRequest(ctx context.Context, decorators ...au
 }
 
 // PrepareHeadRequest indicates an expected call of PrepareHeadRequest.
-func (mr *MockInterfaceMockRecorder) PrepareHeadRequest(ctx interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PrepareHeadRequest(ctx any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx}, decorators...)
+	varargs := append([]any{ctx}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PrepareHeadRequest", reflect.TypeOf((*MockInterface)(nil).PrepareHeadRequest), varargs...)
 }
 
 // PreparePostRequest mocks base method.
 func (m *MockInterface) PreparePostRequest(ctx context.Context, decorators ...autorest.PrepareDecorator) (*http.Request, error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx}
+	varargs := []any{ctx}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -316,16 +321,16 @@ func (m *MockInterface) PreparePostRequest(ctx context.Context, decorators ...au
 }
 
 // PreparePostRequest indicates an expected call of PreparePostRequest.
-func (mr *MockInterfaceMockRecorder) PreparePostRequest(ctx interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PreparePostRequest(ctx any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx}, decorators...)
+	varargs := append([]any{ctx}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PreparePostRequest", reflect.TypeOf((*MockInterface)(nil).PreparePostRequest), varargs...)
 }
 
 // PreparePutRequest mocks base method.
 func (m *MockInterface) PreparePutRequest(ctx context.Context, decorators ...autorest.PrepareDecorator) (*http.Request, error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx}
+	varargs := []any{ctx}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -336,16 +341,16 @@ func (m *MockInterface) PreparePutRequest(ctx context.Context, decorators ...aut
 }
 
 // PreparePutRequest indicates an expected call of PreparePutRequest.
-func (mr *MockInterfaceMockRecorder) PreparePutRequest(ctx interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PreparePutRequest(ctx any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx}, decorators...)
+	varargs := append([]any{ctx}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PreparePutRequest", reflect.TypeOf((*MockInterface)(nil).PreparePutRequest), varargs...)
 }
 
 // PutResource mocks base method.
-func (m *MockInterface) PutResource(ctx context.Context, resourceID string, parameters interface{}, decorators ...autorest.PrepareDecorator) (*http.Response, *retry.Error) {
+func (m *MockInterface) PutResource(ctx context.Context, resourceID string, parameters any, decorators ...autorest.PrepareDecorator) (*http.Response, *retry.Error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx, resourceID, parameters}
+	varargs := []any{ctx, resourceID, parameters}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -356,16 +361,16 @@ func (m *MockInterface) PutResource(ctx context.Context, resourceID string, para
 }
 
 // PutResource indicates an expected call of PutResource.
-func (mr *MockInterfaceMockRecorder) PutResource(ctx, resourceID, parameters interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PutResource(ctx, resourceID, parameters any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx, resourceID, parameters}, decorators...)
+	varargs := append([]any{ctx, resourceID, parameters}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PutResource", reflect.TypeOf((*MockInterface)(nil).PutResource), varargs...)
 }
 
 // PutResourceAsync mocks base method.
-func (m *MockInterface) PutResourceAsync(ctx context.Context, resourceID string, parameters interface{}, decorators ...autorest.PrepareDecorator) (*azure.Future, *retry.Error) {
+func (m *MockInterface) PutResourceAsync(ctx context.Context, resourceID string, parameters any, decorators ...autorest.PrepareDecorator) (*azure.Future, *retry.Error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx, resourceID, parameters}
+	varargs := []any{ctx, resourceID, parameters}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -376,14 +381,14 @@ func (m *MockInterface) PutResourceAsync(ctx context.Context, resourceID string,
 }
 
 // PutResourceAsync indicates an expected call of PutResourceAsync.
-func (mr *MockInterfaceMockRecorder) PutResourceAsync(ctx, resourceID, parameters interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PutResourceAsync(ctx, resourceID, parameters any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx, resourceID, parameters}, decorators...)
+	varargs := append([]any{ctx, resourceID, parameters}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PutResourceAsync", reflect.TypeOf((*MockInterface)(nil).PutResourceAsync), varargs...)
 }
 
 // PutResourcesInBatches mocks base method.
-func (m *MockInterface) PutResourcesInBatches(ctx context.Context, resources map[string]interface{}, batchSize int) map[string]*armclient.PutResourcesResponse {
+func (m *MockInterface) PutResourcesInBatches(ctx context.Context, resources map[string]any, batchSize int) map[string]*armclient.PutResourcesResponse {
 	m.ctrl.T.Helper()
 	ret := m.ctrl.Call(m, "PutResourcesInBatches", ctx, resources, batchSize)
 	ret0, _ := ret[0].(map[string]*armclient.PutResourcesResponse)
@@ -391,7 +396,7 @@ func (m *MockInterface) PutResourcesInBatches(ctx context.Context, resources map
 }
 
 // PutResourcesInBatches indicates an expected call of PutResourcesInBatches.
-func (mr *MockInterfaceMockRecorder) PutResourcesInBatches(ctx, resources, batchSize interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) PutResourcesInBatches(ctx, resources, batchSize any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PutResourcesInBatches", reflect.TypeOf((*MockInterface)(nil).PutResourcesInBatches), ctx, resources, batchSize)
 }
@@ -399,7 +404,7 @@ func (mr *MockInterfaceMockRecorder) PutResourcesInBatches(ctx, resources, batch
 // Send mocks base method.
 func (m *MockInterface) Send(ctx context.Context, request *http.Request, decorators ...autorest.SendDecorator) (*http.Response, *retry.Error) {
 	m.ctrl.T.Helper()
-	varargs := []interface{}{ctx, request}
+	varargs := []any{ctx, request}
 	for _, a := range decorators {
 		varargs = append(varargs, a)
 	}
@@ -410,9 +415,9 @@ func (m *MockInterface) Send(ctx context.Context, request *http.Request, decorat
 }
 
 // Send indicates an expected call of Send.
-func (mr *MockInterfaceMockRecorder) Send(ctx, request interface{}, decorators ...interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Send(ctx, request any, decorators ...any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{ctx, request}, decorators...)
+	varargs := append([]any{ctx, request}, decorators...)
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockInterface)(nil).Send), varargs...)
 }
 
@@ -427,7 +432,7 @@ func (m *MockInterface) SendAsync(ctx context.Context, request *http.Request) (*
 }
 
 // SendAsync indicates an expected call of SendAsync.
-func (mr *MockInterfaceMockRecorder) SendAsync(ctx, request interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) SendAsync(ctx, request any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendAsync", reflect.TypeOf((*MockInterface)(nil).SendAsync), ctx, request)
 }
@@ -441,7 +446,7 @@ func (m *MockInterface) WaitForAsyncOperationCompletion(ctx context.Context, fut
 }
 
 // WaitForAsyncOperationCompletion indicates an expected call of WaitForAsyncOperationCompletion.
-func (mr *MockInterfaceMockRecorder) WaitForAsyncOperationCompletion(ctx, future, asyncOperationName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WaitForAsyncOperationCompletion(ctx, future, asyncOperationName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForAsyncOperationCompletion", reflect.TypeOf((*MockInterface)(nil).WaitForAsyncOperationCompletion), ctx, future, asyncOperationName)
 }
@@ -456,7 +461,7 @@ func (m *MockInterface) WaitForAsyncOperationResult(ctx context.Context, future
 }
 
 // WaitForAsyncOperationResult indicates an expected call of WaitForAsyncOperationResult.
-func (mr *MockInterfaceMockRecorder) WaitForAsyncOperationResult(ctx, future, asyncOperationName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WaitForAsyncOperationResult(ctx, future, asyncOperationName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForAsyncOperationResult", reflect.TypeOf((*MockInterface)(nil).WaitForAsyncOperationResult), ctx, future, asyncOperationName)
 }
diff --git a/pkg/azureclients/blobclient/mockblobclient/interface.go b/pkg/azureclients/blobclient/mockblobclient/interface.go
index 80324d6c6..30685a998 100644
--- a/pkg/azureclients/blobclient/mockblobclient/interface.go
+++ b/pkg/azureclients/blobclient/mockblobclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/blobclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/blobclient/interface.go -package=mockblobclient Interface
+//
 
 // Package mockblobclient is a generated GoMock package.
 package mockblobclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	storage "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-09-01/storage"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateContainer(ctx context.Context, subsID, resourceGro
 }
 
 // CreateContainer indicates an expected call of CreateContainer.
-func (mr *MockInterfaceMockRecorder) CreateContainer(ctx, subsID, resourceGroupName, accountName, containerName, parameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateContainer(ctx, subsID, resourceGroupName, accountName, containerName, parameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateContainer", reflect.TypeOf((*MockInterface)(nil).CreateContainer), ctx, subsID, resourceGroupName, accountName, containerName, parameters)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) DeleteContainer(ctx context.Context, subsID, resourceGro
 }
 
 // DeleteContainer indicates an expected call of DeleteContainer.
-func (mr *MockInterfaceMockRecorder) DeleteContainer(ctx, subsID, resourceGroupName, accountName, containerName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) DeleteContainer(ctx, subsID, resourceGroupName, accountName, containerName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteContainer", reflect.TypeOf((*MockInterface)(nil).DeleteContainer), ctx, subsID, resourceGroupName, accountName, containerName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) GetContainer(ctx context.Context, subsID, resourceGroupN
 }
 
 // GetContainer indicates an expected call of GetContainer.
-func (mr *MockInterfaceMockRecorder) GetContainer(ctx, subsID, resourceGroupName, accountName, containerName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetContainer(ctx, subsID, resourceGroupName, accountName, containerName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetContainer", reflect.TypeOf((*MockInterface)(nil).GetContainer), ctx, subsID, resourceGroupName, accountName, containerName)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) GetServiceProperties(ctx context.Context, subsID, resour
 }
 
 // GetServiceProperties indicates an expected call of GetServiceProperties.
-func (mr *MockInterfaceMockRecorder) GetServiceProperties(ctx, subsID, resourceGroupName, accountName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetServiceProperties(ctx, subsID, resourceGroupName, accountName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServiceProperties", reflect.TypeOf((*MockInterface)(nil).GetServiceProperties), ctx, subsID, resourceGroupName, accountName)
 }
@@ -121,7 +126,7 @@ func (m *MockInterface) SetServiceProperties(ctx context.Context, subsID, resour
 }
 
 // SetServiceProperties indicates an expected call of SetServiceProperties.
-func (mr *MockInterfaceMockRecorder) SetServiceProperties(ctx, subsID, resourceGroupName, accountName, parameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) SetServiceProperties(ctx, subsID, resourceGroupName, accountName, parameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetServiceProperties", reflect.TypeOf((*MockInterface)(nil).SetServiceProperties), ctx, subsID, resourceGroupName, accountName, parameters)
 }
diff --git a/pkg/azureclients/containerserviceclient/mockcontainerserviceclient/interface.go b/pkg/azureclients/containerserviceclient/mockcontainerserviceclient/interface.go
index 6ea6b15d0..6259d713c 100644
--- a/pkg/azureclients/containerserviceclient/mockcontainerserviceclient/interface.go
+++ b/pkg/azureclients/containerserviceclient/mockcontainerserviceclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/containerserviceclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/containerserviceclient/interface.go -package=mockcontainerserviceclient Interface
+//
 
 // Package mockcontainerserviceclient is a generated GoMock package.
 package mockcontainerserviceclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	containerservice "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2021-10-01/containerservice"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, m
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, managedClusterName, parameters, etag interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, managedClusterName, parameters, etag any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, managedClusterName, parameters, etag)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, managedCl
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, managedClusterName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, managedClusterName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, managedClusterName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, managedClust
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, managedClusterName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, managedClusterName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, managedClusterName)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]c
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
diff --git a/pkg/azureclients/deploymentclient/mockdeploymentclient/interface.go b/pkg/azureclients/deploymentclient/mockdeploymentclient/interface.go
index 4e2222a75..349f057e6 100644
--- a/pkg/azureclients/deploymentclient/mockdeploymentclient/interface.go
+++ b/pkg/azureclients/deploymentclient/mockdeploymentclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/deploymentclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/deploymentclient/interface.go -package=mockdeploymentclient Interface
+//
 
 // Package mockdeploymentclient is a generated GoMock package.
 package mockdeploymentclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	resources "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, m
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, managedClusterName, parameters, etag interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, managedClusterName, parameters, etag any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, managedClusterName, parameters, etag)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, deploymen
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, deploymentName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, deploymentName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, deploymentName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) ExportTemplate(ctx context.Context, resourceGroupName, d
 }
 
 // ExportTemplate indicates an expected call of ExportTemplate.
-func (mr *MockInterfaceMockRecorder) ExportTemplate(ctx, resourceGroupName, deploymentName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ExportTemplate(ctx, resourceGroupName, deploymentName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportTemplate", reflect.TypeOf((*MockInterface)(nil).ExportTemplate), ctx, resourceGroupName, deploymentName)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, deploymentNa
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, deploymentName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, deploymentName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, deploymentName)
 }
@@ -121,7 +126,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]r
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
diff --git a/pkg/azureclients/diskclient/mockdiskclient/interface.go b/pkg/azureclients/diskclient/mockdiskclient/interface.go
index 405f1efc0..77594dd41 100644
--- a/pkg/azureclients/diskclient/mockdiskclient/interface.go
+++ b/pkg/azureclients/diskclient/mockdiskclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/diskclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/diskclient/interface.go -package=mockdiskclient Interface
+//
 
 // Package mockdiskclient is a generated GoMock package.
 package mockdiskclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, subsID, resourceGrou
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, subsID, resourceGroupName, diskName, diskParameter interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, subsID, resourceGroupName, diskName, diskParameter any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, subsID, resourceGroupName, diskName, diskParameter)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, subsID, resourceGroupName, d
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, subsID, resourceGroupName, diskName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, subsID, resourceGroupName, diskName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, subsID, resourceGroupName, diskName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) Get(ctx context.Context, subsID, resourceGroupName, disk
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, subsID, resourceGroupName, diskName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, subsID, resourceGroupName, diskName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, subsID, resourceGroupName, diskName)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) ListByResourceGroup(ctx context.Context, subsID, resourc
 }
 
 // ListByResourceGroup indicates an expected call of ListByResourceGroup.
-func (mr *MockInterfaceMockRecorder) ListByResourceGroup(ctx, subsID, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ListByResourceGroup(ctx, subsID, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListByResourceGroup", reflect.TypeOf((*MockInterface)(nil).ListByResourceGroup), ctx, subsID, resourceGroupName)
 }
@@ -120,7 +125,7 @@ func (m *MockInterface) Update(ctx context.Context, subsID, resourceGroupName, d
 }
 
 // Update indicates an expected call of Update.
-func (mr *MockInterfaceMockRecorder) Update(ctx, subsID, resourceGroupName, diskName, diskParameter interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Update(ctx, subsID, resourceGroupName, diskName, diskParameter any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockInterface)(nil).Update), ctx, subsID, resourceGroupName, diskName, diskParameter)
 }
diff --git a/pkg/azureclients/fileclient/mockfileclient/interface.go b/pkg/azureclients/fileclient/mockfileclient/interface.go
index b63f974cb..4cbd7e220 100644
--- a/pkg/azureclients/fileclient/mockfileclient/interface.go
+++ b/pkg/azureclients/fileclient/mockfileclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/fileclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/fileclient/interface.go -package=mockfileclient Interface
+//
 
 // Package mockfileclient is a generated GoMock package.
 package mockfileclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	storage "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-09-01/storage"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	fileclient "sigs.k8s.io/cloud-provider-azure/pkg/azureclients/fileclient"
 )
 
@@ -63,7 +68,7 @@ func (m *MockInterface) CreateFileShare(ctx context.Context, resourceGroupName,
 }
 
 // CreateFileShare indicates an expected call of CreateFileShare.
-func (mr *MockInterfaceMockRecorder) CreateFileShare(ctx, resourceGroupName, accountName, shareOptions, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateFileShare(ctx, resourceGroupName, accountName, shareOptions, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFileShare", reflect.TypeOf((*MockInterface)(nil).CreateFileShare), ctx, resourceGroupName, accountName, shareOptions, expand)
 }
@@ -77,7 +82,7 @@ func (m *MockInterface) DeleteFileShare(ctx context.Context, resourceGroupName,
 }
 
 // DeleteFileShare indicates an expected call of DeleteFileShare.
-func (mr *MockInterfaceMockRecorder) DeleteFileShare(ctx, resourceGroupName, accountName, name, xMsSnapshot interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) DeleteFileShare(ctx, resourceGroupName, accountName, name, xMsSnapshot any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFileShare", reflect.TypeOf((*MockInterface)(nil).DeleteFileShare), ctx, resourceGroupName, accountName, name, xMsSnapshot)
 }
@@ -92,7 +97,7 @@ func (m *MockInterface) GetFileShare(ctx context.Context, resourceGroupName, acc
 }
 
 // GetFileShare indicates an expected call of GetFileShare.
-func (mr *MockInterfaceMockRecorder) GetFileShare(ctx, resourceGroupName, accountName, name, xMsSnapshot interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetFileShare(ctx, resourceGroupName, accountName, name, xMsSnapshot any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFileShare", reflect.TypeOf((*MockInterface)(nil).GetFileShare), ctx, resourceGroupName, accountName, name, xMsSnapshot)
 }
@@ -107,7 +112,7 @@ func (m *MockInterface) GetServiceProperties(ctx context.Context, resourceGroupN
 }
 
 // GetServiceProperties indicates an expected call of GetServiceProperties.
-func (mr *MockInterfaceMockRecorder) GetServiceProperties(ctx, resourceGroupName, accountName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetServiceProperties(ctx, resourceGroupName, accountName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServiceProperties", reflect.TypeOf((*MockInterface)(nil).GetServiceProperties), ctx, resourceGroupName, accountName)
 }
@@ -122,7 +127,7 @@ func (m *MockInterface) ListFileShare(ctx context.Context, resourceGroupName, ac
 }
 
 // ListFileShare indicates an expected call of ListFileShare.
-func (mr *MockInterfaceMockRecorder) ListFileShare(ctx, resourceGroupName, accountName, filter, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ListFileShare(ctx, resourceGroupName, accountName, filter, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFileShare", reflect.TypeOf((*MockInterface)(nil).ListFileShare), ctx, resourceGroupName, accountName, filter, expand)
 }
@@ -136,7 +141,7 @@ func (m *MockInterface) ResizeFileShare(ctx context.Context, resourceGroupName,
 }
 
 // ResizeFileShare indicates an expected call of ResizeFileShare.
-func (mr *MockInterfaceMockRecorder) ResizeFileShare(ctx, resourceGroupName, accountName, name, sizeGiB interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ResizeFileShare(ctx, resourceGroupName, accountName, name, sizeGiB any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResizeFileShare", reflect.TypeOf((*MockInterface)(nil).ResizeFileShare), ctx, resourceGroupName, accountName, name, sizeGiB)
 }
@@ -151,7 +156,7 @@ func (m *MockInterface) SetServiceProperties(ctx context.Context, resourceGroupN
 }
 
 // SetServiceProperties indicates an expected call of SetServiceProperties.
-func (mr *MockInterfaceMockRecorder) SetServiceProperties(ctx, resourceGroupName, accountName, parameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) SetServiceProperties(ctx, resourceGroupName, accountName, parameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetServiceProperties", reflect.TypeOf((*MockInterface)(nil).SetServiceProperties), ctx, resourceGroupName, accountName, parameters)
 }
@@ -165,7 +170,7 @@ func (m *MockInterface) WithSubscriptionID(subscriptionID string) fileclient.Int
 }
 
 // WithSubscriptionID indicates an expected call of WithSubscriptionID.
-func (mr *MockInterfaceMockRecorder) WithSubscriptionID(subscriptionID interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WithSubscriptionID(subscriptionID any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WithSubscriptionID", reflect.TypeOf((*MockInterface)(nil).WithSubscriptionID), subscriptionID)
 }
diff --git a/pkg/azureclients/interfaceclient/mockinterfaceclient/interface.go b/pkg/azureclients/interfaceclient/mockinterfaceclient/interface.go
index 53ba1bf5e..33ac8e1b5 100644
--- a/pkg/azureclients/interfaceclient/mockinterfaceclient/interface.go
+++ b/pkg/azureclients/interfaceclient/mockinterfaceclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/interfaceclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/interfaceclient/interface.go -package=mockinterfaceclient Interface
+//
 
 // Package mockinterfaceclient is a generated GoMock package.
 package mockinterfaceclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, n
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, networkInterfaceName, parameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, networkInterfaceName, parameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, networkInterfaceName, parameters)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, networkIn
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, networkInterfaceName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, networkInterfaceName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, networkInterfaceName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, networkInter
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, networkInterfaceName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, networkInterfaceName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, networkInterfaceName, expand)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) GetVirtualMachineScaleSetNetworkInterface(ctx context.Co
 }
 
 // GetVirtualMachineScaleSetNetworkInterface indicates an expected call of GetVirtualMachineScaleSetNetworkInterface.
-func (mr *MockInterfaceMockRecorder) GetVirtualMachineScaleSetNetworkInterface(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetVirtualMachineScaleSetNetworkInterface(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVirtualMachineScaleSetNetworkInterface", reflect.TypeOf((*MockInterface)(nil).GetVirtualMachineScaleSetNetworkInterface), ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand)
 }
diff --git a/pkg/azureclients/loadbalancerclient/mockloadbalancerclient/interface.go b/pkg/azureclients/loadbalancerclient/mockloadbalancerclient/interface.go
index c32c8a230..f4d0788a1 100644
--- a/pkg/azureclients/loadbalancerclient/mockloadbalancerclient/interface.go
+++ b/pkg/azureclients/loadbalancerclient/mockloadbalancerclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/loadbalancerclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/loadbalancerclient/interface.go -package=mockloadbalancerclient Interface
+//
 
 // Package mockloadbalancerclient is a generated GoMock package.
 package mockloadbalancerclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, l
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, loadBalancerName, parameters, etag interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, loadBalancerName, parameters, etag any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, loadBalancerName, parameters, etag)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) CreateOrUpdateBackendPools(ctx context.Context, resource
 }
 
 // CreateOrUpdateBackendPools indicates an expected call of CreateOrUpdateBackendPools.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdateBackendPools(ctx, resourceGroupName, loadBalancerName, backendPoolName, parameters, etag interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdateBackendPools(ctx, resourceGroupName, loadBalancerName, backendPoolName, parameters, etag any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdateBackendPools", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdateBackendPools), ctx, resourceGroupName, loadBalancerName, backendPoolName, parameters, etag)
 }
@@ -90,7 +95,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, loadBalan
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, loadBalancerName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, loadBalancerName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, loadBalancerName)
 }
@@ -104,7 +109,7 @@ func (m *MockInterface) DeleteLBBackendPool(ctx context.Context, resourceGroupNa
 }
 
 // DeleteLBBackendPool indicates an expected call of DeleteLBBackendPool.
-func (mr *MockInterfaceMockRecorder) DeleteLBBackendPool(ctx, resourceGroupName, loadBalancerName, backendPoolName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) DeleteLBBackendPool(ctx, resourceGroupName, loadBalancerName, backendPoolName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteLBBackendPool", reflect.TypeOf((*MockInterface)(nil).DeleteLBBackendPool), ctx, resourceGroupName, loadBalancerName, backendPoolName)
 }
@@ -119,7 +124,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, loadBalancer
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, loadBalancerName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, loadBalancerName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, loadBalancerName, expand)
 }
@@ -134,7 +139,7 @@ func (m *MockInterface) GetLBBackendPool(ctx context.Context, resourceGroupName,
 }
 
 // GetLBBackendPool indicates an expected call of GetLBBackendPool.
-func (mr *MockInterfaceMockRecorder) GetLBBackendPool(ctx, resourceGroupName, loadBalancerName, backendPoolName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetLBBackendPool(ctx, resourceGroupName, loadBalancerName, backendPoolName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLBBackendPool", reflect.TypeOf((*MockInterface)(nil).GetLBBackendPool), ctx, resourceGroupName, loadBalancerName, backendPoolName, expand)
 }
@@ -149,7 +154,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]n
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
@@ -163,7 +168,7 @@ func (m *MockInterface) MigrateToIPBasedBackendPool(ctx context.Context, resourc
 }
 
 // MigrateToIPBasedBackendPool indicates an expected call of MigrateToIPBasedBackendPool.
-func (mr *MockInterfaceMockRecorder) MigrateToIPBasedBackendPool(ctx, resourceGroupName, loadBalancerName, backendPoolNames interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) MigrateToIPBasedBackendPool(ctx, resourceGroupName, loadBalancerName, backendPoolNames any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MigrateToIPBasedBackendPool", reflect.TypeOf((*MockInterface)(nil).MigrateToIPBasedBackendPool), ctx, resourceGroupName, loadBalancerName, backendPoolNames)
 }
diff --git a/pkg/azureclients/privatednsclient/mockprivatednsclient/interface.go b/pkg/azureclients/privatednsclient/mockprivatednsclient/interface.go
index 0bd0dd21d..a21e856be 100644
--- a/pkg/azureclients/privatednsclient/mockprivatednsclient/interface.go
+++ b/pkg/azureclients/privatednsclient/mockprivatednsclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/privatednsclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/privatednsclient/interface.go -package=mockprivatednsclient Interface
+//
 
 // Package mockprivatednsclient is a generated GoMock package.
 package mockprivatednsclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	privatedns "github.com/Azure/azure-sdk-for-go/services/privatedns/mgmt/2018-09-01/privatedns"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, p
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, privateZoneName, parameters, etag, waitForCompletion interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, privateZoneName, parameters, etag, waitForCompletion any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, privateZoneName, parameters, etag, waitForCompletion)
 }
@@ -77,7 +82,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, privateZoneN
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateZoneName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateZoneName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, privateZoneName)
 }
diff --git a/pkg/azureclients/privatednszonegroupclient/mockprivatednszonegroupclient/interface.go b/pkg/azureclients/privatednszonegroupclient/mockprivatednszonegroupclient/interface.go
index d57ea4638..372a04ad8 100644
--- a/pkg/azureclients/privatednszonegroupclient/mockprivatednszonegroupclient/interface.go
+++ b/pkg/azureclients/privatednszonegroupclient/mockprivatednszonegroupclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/privatednszonegroupclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/privatednszonegroupclient/interface.go -package=mockprivatednszonegroupclient Interface
+//
 
 // Package mockprivatednszonegroupclient is a generated GoMock package.
 package mockprivatednszonegroupclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, p
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, privateEndpointName, privateDNSZoneGroupName, parameters, etag, waitForCompletion interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, privateEndpointName, privateDNSZoneGroupName, parameters, etag, waitForCompletion any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, privateEndpointName, privateDNSZoneGroupName, parameters, etag, waitForCompletion)
 }
@@ -77,7 +82,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, privateEndpo
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateEndpointName, privateDNSZoneGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateEndpointName, privateDNSZoneGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, privateEndpointName, privateDNSZoneGroupName)
 }
diff --git a/pkg/azureclients/privateendpointclient/mockprivateendpointclient/interface.go b/pkg/azureclients/privateendpointclient/mockprivateendpointclient/interface.go
index 1c6fa0208..479584b88 100644
--- a/pkg/azureclients/privateendpointclient/mockprivateendpointclient/interface.go
+++ b/pkg/azureclients/privateendpointclient/mockprivateendpointclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/privateendpointclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/privateendpointclient/interface.go -package=mockprivateendpointclient Interface
+//
 
 // Package mockprivateendpointclient is a generated GoMock package.
 package mockprivateendpointclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, e
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, endpointName, privateEndpoint, etag, waitForCompletion interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, endpointName, privateEndpoint, etag, waitForCompletion any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, endpointName, privateEndpoint, etag, waitForCompletion)
 }
@@ -77,7 +82,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, privateEndpo
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateEndpointName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateEndpointName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, privateEndpointName, expand)
 }
diff --git a/pkg/azureclients/privatelinkserviceclient/mockprivatelinkserviceclient/interface.go b/pkg/azureclients/privatelinkserviceclient/mockprivatelinkserviceclient/interface.go
index 4225a8808..bd1a0937d 100644
--- a/pkg/azureclients/privatelinkserviceclient/mockprivatelinkserviceclient/interface.go
+++ b/pkg/azureclients/privatelinkserviceclient/mockprivatelinkserviceclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/privatelinkserviceclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/privatelinkserviceclient/interface.go -package=mockprivatelinkserviceclient Interface
+//
 
 // Package mockprivatelinkserviceclient is a generated GoMock package.
 package mockprivatelinkserviceclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, p
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, privateLinkServiceName, privateLinkService, etag interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, privateLinkServiceName, privateLinkService, etag any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, privateLinkServiceName, privateLinkService, etag)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, privateLi
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, privateLinkServiceName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, privateLinkServiceName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, privateLinkServiceName)
 }
@@ -90,7 +95,7 @@ func (m *MockInterface) DeletePEConnection(ctx context.Context, resourceGroupNam
 }
 
 // DeletePEConnection indicates an expected call of DeletePEConnection.
-func (mr *MockInterfaceMockRecorder) DeletePEConnection(ctx, resourceGroupName, privateLinkServiceName, privateEndpointConnectionName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) DeletePEConnection(ctx, resourceGroupName, privateLinkServiceName, privateEndpointConnectionName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeletePEConnection", reflect.TypeOf((*MockInterface)(nil).DeletePEConnection), ctx, resourceGroupName, privateLinkServiceName, privateEndpointConnectionName)
 }
@@ -105,7 +110,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, privateLinkS
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateLinkServiceName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateLinkServiceName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, privateLinkServiceName, expand)
 }
@@ -120,7 +125,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]n
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
diff --git a/pkg/azureclients/publicipclient/mockpublicipclient/interface.go b/pkg/azureclients/publicipclient/mockpublicipclient/interface.go
index a0ad22b48..fe7a2c3c9 100644
--- a/pkg/azureclients/publicipclient/mockpublicipclient/interface.go
+++ b/pkg/azureclients/publicipclient/mockpublicipclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/publicipclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/publicipclient/interface.go -package=mockpublicipclient Interface
+//
 
 // Package mockpublicipclient is a generated GoMock package.
 package mockpublicipclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, p
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, publicIPAddressName, parameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, publicIPAddressName, parameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, publicIPAddressName, parameters)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, publicIPA
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, publicIPAddressName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, publicIPAddressName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, publicIPAddressName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, publicIPAddr
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, publicIPAddressName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, publicIPAddressName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, publicIPAddressName, expand)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) GetVirtualMachineScaleSetPublicIPAddress(ctx context.Con
 }
 
 // GetVirtualMachineScaleSetPublicIPAddress indicates an expected call of GetVirtualMachineScaleSetPublicIPAddress.
-func (mr *MockInterfaceMockRecorder) GetVirtualMachineScaleSetPublicIPAddress(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, IPConfigurationName, publicIPAddressName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetVirtualMachineScaleSetPublicIPAddress(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, IPConfigurationName, publicIPAddressName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVirtualMachineScaleSetPublicIPAddress", reflect.TypeOf((*MockInterface)(nil).GetVirtualMachineScaleSetPublicIPAddress), ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, IPConfigurationName, publicIPAddressName, expand)
 }
@@ -121,7 +126,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]n
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
@@ -136,7 +141,7 @@ func (m *MockInterface) ListAll(ctx context.Context) ([]network.PublicIPAddress,
 }
 
 // ListAll indicates an expected call of ListAll.
-func (mr *MockInterfaceMockRecorder) ListAll(ctx interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ListAll(ctx any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAll", reflect.TypeOf((*MockInterface)(nil).ListAll), ctx)
 }
diff --git a/pkg/azureclients/routeclient/mockrouteclient/interface.go b/pkg/azureclients/routeclient/mockrouteclient/interface.go
index 12285f340..2cd36a38d 100644
--- a/pkg/azureclients/routeclient/mockrouteclient/interface.go
+++ b/pkg/azureclients/routeclient/mockrouteclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/routeclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/routeclient/interface.go -package=mockrouteclient Interface
+//
 
 // Package mockrouteclient is a generated GoMock package.
 package mockrouteclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, r
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, routeTableName, routeName, routeParameters, etag interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, routeTableName, routeName, routeParameters, etag any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, routeTableName, routeName, routeParameters, etag)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, routeTabl
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, routeTableName, routeName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, routeTableName, routeName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, routeTableName, routeName)
 }
diff --git a/pkg/azureclients/routetableclient/mockroutetableclient/interface.go b/pkg/azureclients/routetableclient/mockroutetableclient/interface.go
index 605683bcf..020109986 100644
--- a/pkg/azureclients/routetableclient/mockroutetableclient/interface.go
+++ b/pkg/azureclients/routetableclient/mockroutetableclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/routetableclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/routetableclient/interface.go -package=mockroutetableclient Interface
+//
 
 // Package mockroutetableclient is a generated GoMock package.
 package mockroutetableclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, r
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, routeTableName, parameters, etag interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, routeTableName, parameters, etag any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, routeTableName, parameters, etag)
 }
@@ -77,7 +82,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, routeTableNa
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, routeTableName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, routeTableName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, routeTableName, expand)
 }
diff --git a/pkg/azureclients/securitygroupclient/mocksecuritygroupclient/interface.go b/pkg/azureclients/securitygroupclient/mocksecuritygroupclient/interface.go
index dafbfbce4..b1b4e4ceb 100644
--- a/pkg/azureclients/securitygroupclient/mocksecuritygroupclient/interface.go
+++ b/pkg/azureclients/securitygroupclient/mocksecuritygroupclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/securitygroupclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/securitygroupclient/interface.go -package=mocksecuritygroupclient Interface
+//
 
 // Package mocksecuritygroupclient is a generated GoMock package.
 package mocksecuritygroupclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, n
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, networkSecurityGroupName, parameters, etag interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, networkSecurityGroupName, parameters, etag any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, networkSecurityGroupName, parameters, etag)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, networkSe
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, networkSecurityGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, networkSecurityGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, networkSecurityGroupName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, networkSecur
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, networkSecurityGroupName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, networkSecurityGroupName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, networkSecurityGroupName, expand)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]n
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
diff --git a/pkg/azureclients/snapshotclient/mocksnapshotclient/interface.go b/pkg/azureclients/snapshotclient/mocksnapshotclient/interface.go
index b206f22e1..36803be4c 100644
--- a/pkg/azureclients/snapshotclient/mocksnapshotclient/interface.go
+++ b/pkg/azureclients/snapshotclient/mocksnapshotclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/snapshotclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/snapshotclient/interface.go -package=mocksnapshotclient Interface
+//
 
 // Package mocksnapshotclient is a generated GoMock package.
 package mocksnapshotclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, subsID, resourceGrou
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, subsID, resourceGroupName, snapshotName, snapshot interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, subsID, resourceGroupName, snapshotName, snapshot any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, subsID, resourceGroupName, snapshotName, snapshot)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, subsID, resourceGroupName, s
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, subsID, resourceGroupName, snapshotName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, subsID, resourceGroupName, snapshotName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, subsID, resourceGroupName, snapshotName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) Get(ctx context.Context, subsID, resourceGroupName, snap
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, subsID, resourceGroupName, snapshotName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, subsID, resourceGroupName, snapshotName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, subsID, resourceGroupName, snapshotName)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) ListByResourceGroup(ctx context.Context, subsID, resourc
 }
 
 // ListByResourceGroup indicates an expected call of ListByResourceGroup.
-func (mr *MockInterfaceMockRecorder) ListByResourceGroup(ctx, subsID, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ListByResourceGroup(ctx, subsID, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListByResourceGroup", reflect.TypeOf((*MockInterface)(nil).ListByResourceGroup), ctx, subsID, resourceGroupName)
 }
diff --git a/pkg/azureclients/storageaccountclient/mockstorageaccountclient/interface.go b/pkg/azureclients/storageaccountclient/mockstorageaccountclient/interface.go
index 13c099056..f665be417 100644
--- a/pkg/azureclients/storageaccountclient/mockstorageaccountclient/interface.go
+++ b/pkg/azureclients/storageaccountclient/mockstorageaccountclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/storageaccountclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/storageaccountclient/interface.go -package=mockstorageaccountclient Interface
+//
 
 // Package mockstorageaccountclient is a generated GoMock package.
 package mockstorageaccountclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	storage "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-09-01/storage"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) Create(ctx context.Context, subsID, resourceGroupName, a
 }
 
 // Create indicates an expected call of Create.
-func (mr *MockInterfaceMockRecorder) Create(ctx, subsID, resourceGroupName, accountName, parameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Create(ctx, subsID, resourceGroupName, accountName, parameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockInterface)(nil).Create), ctx, subsID, resourceGroupName, accountName, parameters)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, subsID, resourceGroupName, a
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, subsID, resourceGroupName, accountName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, subsID, resourceGroupName, accountName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, subsID, resourceGroupName, accountName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) GetProperties(ctx context.Context, subsID, resourceGroup
 }
 
 // GetProperties indicates an expected call of GetProperties.
-func (mr *MockInterfaceMockRecorder) GetProperties(ctx, subsID, resourceGroupName, accountName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetProperties(ctx, subsID, resourceGroupName, accountName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProperties", reflect.TypeOf((*MockInterface)(nil).GetProperties), ctx, subsID, resourceGroupName, accountName)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) ListByResourceGroup(ctx context.Context, subsID, resourc
 }
 
 // ListByResourceGroup indicates an expected call of ListByResourceGroup.
-func (mr *MockInterfaceMockRecorder) ListByResourceGroup(ctx, subsID, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ListByResourceGroup(ctx, subsID, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListByResourceGroup", reflect.TypeOf((*MockInterface)(nil).ListByResourceGroup), ctx, subsID, resourceGroupName)
 }
@@ -121,7 +126,7 @@ func (m *MockInterface) ListKeys(ctx context.Context, subsID, resourceGroupName,
 }
 
 // ListKeys indicates an expected call of ListKeys.
-func (mr *MockInterfaceMockRecorder) ListKeys(ctx, subsID, resourceGroupName, accountName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ListKeys(ctx, subsID, resourceGroupName, accountName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListKeys", reflect.TypeOf((*MockInterface)(nil).ListKeys), ctx, subsID, resourceGroupName, accountName)
 }
@@ -135,7 +140,7 @@ func (m *MockInterface) Update(ctx context.Context, subsID, resourceGroupName, a
 }
 
 // Update indicates an expected call of Update.
-func (mr *MockInterfaceMockRecorder) Update(ctx, subsID, resourceGroupName, accountName, parameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Update(ctx, subsID, resourceGroupName, accountName, parameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockInterface)(nil).Update), ctx, subsID, resourceGroupName, accountName, parameters)
 }
diff --git a/pkg/azureclients/subnetclient/mocksubnetclient/interface.go b/pkg/azureclients/subnetclient/mocksubnetclient/interface.go
index 30f162e11..c72551ab8 100644
--- a/pkg/azureclients/subnetclient/mocksubnetclient/interface.go
+++ b/pkg/azureclients/subnetclient/mocksubnetclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/subnetclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/subnetclient/interface.go -package=mocksubnetclient Interface
+//
 
 // Package mocksubnetclient is a generated GoMock package.
 package mocksubnetclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, v
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, virtualNetworkName, subnetName, subnetParameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, virtualNetworkName, subnetName, subnetParameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, virtualNetworkName, subnetName, subnetParameters)
 }
@@ -76,7 +81,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, virtualNe
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, virtualNetworkName, subnetName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, virtualNetworkName, subnetName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, virtualNetworkName, subnetName)
 }
@@ -91,7 +96,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, virtualNetwo
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, virtualNetworkName, subnetName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, virtualNetworkName, subnetName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, virtualNetworkName, subnetName, expand)
 }
@@ -106,7 +111,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName, virtualNetw
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName, virtualNetworkName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName, virtualNetworkName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName, virtualNetworkName)
 }
diff --git a/pkg/azureclients/virtualnetworklinksclient/mockvirtualnetworklinksclient/interface.go b/pkg/azureclients/virtualnetworklinksclient/mockvirtualnetworklinksclient/interface.go
index 22311f9e3..ce16e08ab 100644
--- a/pkg/azureclients/virtualnetworklinksclient/mockvirtualnetworklinksclient/interface.go
+++ b/pkg/azureclients/virtualnetworklinksclient/mockvirtualnetworklinksclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/virtualnetworklinksclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/virtualnetworklinksclient/interface.go -package=mockvirtualnetworklinksclient Interface
+//
 
 // Package mockvirtualnetworklinksclient is a generated GoMock package.
 package mockvirtualnetworklinksclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	privatedns "github.com/Azure/azure-sdk-for-go/services/privatedns/mgmt/2018-09-01/privatedns"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, p
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, privateZoneName, virtualNetworkLinkName, parameters, etag, waitForCompletion interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, privateZoneName, virtualNetworkLinkName, parameters, etag, waitForCompletion any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, privateZoneName, virtualNetworkLinkName, parameters, etag, waitForCompletion)
 }
@@ -77,7 +82,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, privateZoneN
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateZoneName, virtualNetworkLinkName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, privateZoneName, virtualNetworkLinkName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, privateZoneName, virtualNetworkLinkName)
 }
diff --git a/pkg/azureclients/vmasclient/mockvmasclient/interface.go b/pkg/azureclients/vmasclient/mockvmasclient/interface.go
index d95e4458e..09fc8d080 100644
--- a/pkg/azureclients/vmasclient/mockvmasclient/interface.go
+++ b/pkg/azureclients/vmasclient/mockvmasclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/vmasclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/vmasclient/interface.go -package=mockvmasclient Interface
+//
 
 // Package mockvmasclient is a generated GoMock package.
 package mockvmasclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -63,7 +68,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, VMScaleSetNa
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, VMScaleSetName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, VMScaleSetName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, VMScaleSetName)
 }
@@ -78,7 +83,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]c
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
diff --git a/pkg/azureclients/vmclient/mockvmclient/interface.go b/pkg/azureclients/vmclient/mockvmclient/interface.go
index 3384ce808..98eda6f17 100644
--- a/pkg/azureclients/vmclient/mockvmclient/interface.go
+++ b/pkg/azureclients/vmclient/mockvmclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/vmclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/vmclient/interface.go -package=mockvmclient Interface
+//
 
 // Package mockvmclient is a generated GoMock package.
 package mockvmclient
@@ -27,7 +32,7 @@ import (
 
 	compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	azure "github.com/Azure/go-autorest/autorest/azure"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -63,7 +68,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, V
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, VMName, parameters, source interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, VMName, parameters, source any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, VMName, parameters, source)
 }
@@ -77,7 +82,7 @@ func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, VMName st
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, VMName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, VMName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, VMName)
 }
@@ -92,7 +97,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, VMName strin
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, VMName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, VMName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, VMName, expand)
 }
@@ -107,7 +112,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]c
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
@@ -122,7 +127,7 @@ func (m *MockInterface) ListVmssFlexVMsWithOnlyInstanceView(ctx context.Context,
 }
 
 // ListVmssFlexVMsWithOnlyInstanceView indicates an expected call of ListVmssFlexVMsWithOnlyInstanceView.
-func (mr *MockInterfaceMockRecorder) ListVmssFlexVMsWithOnlyInstanceView(ctx, vmssFlexID interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ListVmssFlexVMsWithOnlyInstanceView(ctx, vmssFlexID any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVmssFlexVMsWithOnlyInstanceView", reflect.TypeOf((*MockInterface)(nil).ListVmssFlexVMsWithOnlyInstanceView), ctx, vmssFlexID)
 }
@@ -137,7 +142,7 @@ func (m *MockInterface) ListVmssFlexVMsWithoutInstanceView(ctx context.Context,
 }
 
 // ListVmssFlexVMsWithoutInstanceView indicates an expected call of ListVmssFlexVMsWithoutInstanceView.
-func (mr *MockInterfaceMockRecorder) ListVmssFlexVMsWithoutInstanceView(ctx, vmssFlexID interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ListVmssFlexVMsWithoutInstanceView(ctx, vmssFlexID any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVmssFlexVMsWithoutInstanceView", reflect.TypeOf((*MockInterface)(nil).ListVmssFlexVMsWithoutInstanceView), ctx, vmssFlexID)
 }
@@ -152,7 +157,7 @@ func (m *MockInterface) Update(ctx context.Context, resourceGroupName, VMName st
 }
 
 // Update indicates an expected call of Update.
-func (mr *MockInterfaceMockRecorder) Update(ctx, resourceGroupName, VMName, parameters, source interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Update(ctx, resourceGroupName, VMName, parameters, source any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockInterface)(nil).Update), ctx, resourceGroupName, VMName, parameters, source)
 }
@@ -167,7 +172,7 @@ func (m *MockInterface) UpdateAsync(ctx context.Context, resourceGroupName, VMNa
 }
 
 // UpdateAsync indicates an expected call of UpdateAsync.
-func (mr *MockInterfaceMockRecorder) UpdateAsync(ctx, resourceGroupName, VMName, parameters, source interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) UpdateAsync(ctx, resourceGroupName, VMName, parameters, source any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAsync", reflect.TypeOf((*MockInterface)(nil).UpdateAsync), ctx, resourceGroupName, VMName, parameters, source)
 }
@@ -182,7 +187,7 @@ func (m *MockInterface) WaitForUpdateResult(ctx context.Context, future *azure.F
 }
 
 // WaitForUpdateResult indicates an expected call of WaitForUpdateResult.
-func (mr *MockInterfaceMockRecorder) WaitForUpdateResult(ctx, future, resourceGroupName, source interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WaitForUpdateResult(ctx, future, resourceGroupName, source any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForUpdateResult", reflect.TypeOf((*MockInterface)(nil).WaitForUpdateResult), ctx, future, resourceGroupName, source)
 }
diff --git a/pkg/azureclients/vmsizeclient/mockvmsizeclient/interface.go b/pkg/azureclients/vmsizeclient/mockvmsizeclient/interface.go
index 6710f6b47..371eab336 100644
--- a/pkg/azureclients/vmsizeclient/mockvmsizeclient/interface.go
+++ b/pkg/azureclients/vmsizeclient/mockvmsizeclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/vmsizeclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/vmsizeclient/interface.go -package=mockvmsizeclient Interface
+//
 
 // Package mockvmsizeclient is a generated GoMock package.
 package mockvmsizeclient
@@ -26,7 +31,7 @@ import (
 	reflect "reflect"
 
 	compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -63,7 +68,7 @@ func (m *MockInterface) List(ctx context.Context, location string) (compute.Virt
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, location interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, location any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, location)
 }
diff --git a/pkg/azureclients/vmssclient/mockvmssclient/interface.go b/pkg/azureclients/vmssclient/mockvmssclient/interface.go
index 9cddb2d29..0ea1ad52a 100644
--- a/pkg/azureclients/vmssclient/mockvmssclient/interface.go
+++ b/pkg/azureclients/vmssclient/mockvmssclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/vmssclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/vmssclient/interface.go -package=mockvmssclient Interface
+//
 
 // Package mockvmssclient is a generated GoMock package.
 package mockvmssclient
@@ -28,7 +33,7 @@ import (
 
 	compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	azure "github.com/Azure/go-autorest/autorest/azure"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -64,7 +69,7 @@ func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, V
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, VMScaleSetName, parameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, VMScaleSetName, parameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, VMScaleSetName, parameters)
 }
@@ -79,7 +84,7 @@ func (m *MockInterface) CreateOrUpdateAsync(ctx context.Context, resourceGroupNa
 }
 
 // CreateOrUpdateAsync indicates an expected call of CreateOrUpdateAsync.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdateAsync(ctx, resourceGroupName, VMScaleSetName, parameters interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdateAsync(ctx, resourceGroupName, VMScaleSetName, parameters any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdateAsync", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdateAsync), ctx, resourceGroupName, VMScaleSetName, parameters)
 }
@@ -94,7 +99,7 @@ func (m *MockInterface) DeallocateInstancesAsync(ctx context.Context, resourceGr
 }
 
 // DeallocateInstancesAsync indicates an expected call of DeallocateInstancesAsync.
-func (mr *MockInterfaceMockRecorder) DeallocateInstancesAsync(ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) DeallocateInstancesAsync(ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeallocateInstancesAsync", reflect.TypeOf((*MockInterface)(nil).DeallocateInstancesAsync), ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs)
 }
@@ -108,7 +113,7 @@ func (m *MockInterface) DeleteInstances(ctx context.Context, resourceGroupName,
 }
 
 // DeleteInstances indicates an expected call of DeleteInstances.
-func (mr *MockInterfaceMockRecorder) DeleteInstances(ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) DeleteInstances(ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteInstances", reflect.TypeOf((*MockInterface)(nil).DeleteInstances), ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs)
 }
@@ -123,7 +128,7 @@ func (m *MockInterface) DeleteInstancesAsync(ctx context.Context, resourceGroupN
 }
 
 // DeleteInstancesAsync indicates an expected call of DeleteInstancesAsync.
-func (mr *MockInterfaceMockRecorder) DeleteInstancesAsync(ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs, forceDelete interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) DeleteInstancesAsync(ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs, forceDelete any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteInstancesAsync", reflect.TypeOf((*MockInterface)(nil).DeleteInstancesAsync), ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs, forceDelete)
 }
@@ -138,7 +143,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, VMScaleSetNa
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, VMScaleSetName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, VMScaleSetName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, VMScaleSetName)
 }
@@ -153,7 +158,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]c
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
@@ -168,7 +173,7 @@ func (m *MockInterface) StartInstancesAsync(ctx context.Context, resourceGroupNa
 }
 
 // StartInstancesAsync indicates an expected call of StartInstancesAsync.
-func (mr *MockInterfaceMockRecorder) StartInstancesAsync(ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) StartInstancesAsync(ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartInstancesAsync", reflect.TypeOf((*MockInterface)(nil).StartInstancesAsync), ctx, resourceGroupName, vmScaleSetName, vmInstanceIDs)
 }
@@ -183,7 +188,7 @@ func (m *MockInterface) WaitForAsyncOperationResult(ctx context.Context, future
 }
 
 // WaitForAsyncOperationResult indicates an expected call of WaitForAsyncOperationResult.
-func (mr *MockInterfaceMockRecorder) WaitForAsyncOperationResult(ctx, future, resourceGroupName, request, asyncOpName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WaitForAsyncOperationResult(ctx, future, resourceGroupName, request, asyncOpName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForAsyncOperationResult", reflect.TypeOf((*MockInterface)(nil).WaitForAsyncOperationResult), ctx, future, resourceGroupName, request, asyncOpName)
 }
@@ -198,7 +203,7 @@ func (m *MockInterface) WaitForCreateOrUpdateResult(ctx context.Context, future
 }
 
 // WaitForCreateOrUpdateResult indicates an expected call of WaitForCreateOrUpdateResult.
-func (mr *MockInterfaceMockRecorder) WaitForCreateOrUpdateResult(ctx, future, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WaitForCreateOrUpdateResult(ctx, future, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForCreateOrUpdateResult", reflect.TypeOf((*MockInterface)(nil).WaitForCreateOrUpdateResult), ctx, future, resourceGroupName)
 }
@@ -213,7 +218,7 @@ func (m *MockInterface) WaitForDeallocateInstancesResult(ctx context.Context, fu
 }
 
 // WaitForDeallocateInstancesResult indicates an expected call of WaitForDeallocateInstancesResult.
-func (mr *MockInterfaceMockRecorder) WaitForDeallocateInstancesResult(ctx, future, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WaitForDeallocateInstancesResult(ctx, future, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForDeallocateInstancesResult", reflect.TypeOf((*MockInterface)(nil).WaitForDeallocateInstancesResult), ctx, future, resourceGroupName)
 }
@@ -228,7 +233,7 @@ func (m *MockInterface) WaitForDeleteInstancesResult(ctx context.Context, future
 }
 
 // WaitForDeleteInstancesResult indicates an expected call of WaitForDeleteInstancesResult.
-func (mr *MockInterfaceMockRecorder) WaitForDeleteInstancesResult(ctx, future, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WaitForDeleteInstancesResult(ctx, future, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForDeleteInstancesResult", reflect.TypeOf((*MockInterface)(nil).WaitForDeleteInstancesResult), ctx, future, resourceGroupName)
 }
@@ -243,7 +248,7 @@ func (m *MockInterface) WaitForStartInstancesResult(ctx context.Context, future
 }
 
 // WaitForStartInstancesResult indicates an expected call of WaitForStartInstancesResult.
-func (mr *MockInterfaceMockRecorder) WaitForStartInstancesResult(ctx, future, resourceGroupName interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WaitForStartInstancesResult(ctx, future, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForStartInstancesResult", reflect.TypeOf((*MockInterface)(nil).WaitForStartInstancesResult), ctx, future, resourceGroupName)
 }
diff --git a/pkg/azureclients/vmssvmclient/mockvmssvmclient/interface.go b/pkg/azureclients/vmssvmclient/mockvmssvmclient/interface.go
index ae571b4c7..fad3b1933 100644
--- a/pkg/azureclients/vmssvmclient/mockvmssvmclient/interface.go
+++ b/pkg/azureclients/vmssvmclient/mockvmssvmclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/vmssvmclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/vmssvmclient/interface.go -package=mockvmssvmclient Interface
+//
 
 // Package mockvmssvmclient is a generated GoMock package.
 package mockvmssvmclient
@@ -27,7 +32,7 @@ import (
 
 	compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	azure "github.com/Azure/go-autorest/autorest/azure"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -64,7 +69,7 @@ func (m *MockInterface) Get(ctx context.Context, resourceGroupName, VMScaleSetNa
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, VMScaleSetName, instanceID, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, VMScaleSetName, instanceID, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, VMScaleSetName, instanceID, expand)
 }
@@ -79,7 +84,7 @@ func (m *MockInterface) List(ctx context.Context, resourceGroupName, virtualMach
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName, virtualMachineScaleSetName, expand interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName, virtualMachineScaleSetName, expand any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName, virtualMachineScaleSetName, expand)
 }
@@ -94,7 +99,7 @@ func (m *MockInterface) Update(ctx context.Context, resourceGroupName, VMScaleSe
 }
 
 // Update indicates an expected call of Update.
-func (mr *MockInterfaceMockRecorder) Update(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters, source interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Update(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters, source any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockInterface)(nil).Update), ctx, resourceGroupName, VMScaleSetName, instanceID, parameters, source)
 }
@@ -109,7 +114,7 @@ func (m *MockInterface) UpdateAsync(ctx context.Context, resourceGroupName, VMSc
 }
 
 // UpdateAsync indicates an expected call of UpdateAsync.
-func (mr *MockInterfaceMockRecorder) UpdateAsync(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters, source interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) UpdateAsync(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters, source any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateAsync", reflect.TypeOf((*MockInterface)(nil).UpdateAsync), ctx, resourceGroupName, VMScaleSetName, instanceID, parameters, source)
 }
@@ -123,7 +128,7 @@ func (m *MockInterface) UpdateVMs(ctx context.Context, resourceGroupName, VMScal
 }
 
 // UpdateVMs indicates an expected call of UpdateVMs.
-func (mr *MockInterfaceMockRecorder) UpdateVMs(ctx, resourceGroupName, VMScaleSetName, instances, source, batchSize interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) UpdateVMs(ctx, resourceGroupName, VMScaleSetName, instances, source, batchSize any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateVMs", reflect.TypeOf((*MockInterface)(nil).UpdateVMs), ctx, resourceGroupName, VMScaleSetName, instances, source, batchSize)
 }
@@ -138,7 +143,7 @@ func (m *MockInterface) WaitForUpdateResult(ctx context.Context, future *azure.F
 }
 
 // WaitForUpdateResult indicates an expected call of WaitForUpdateResult.
-func (mr *MockInterfaceMockRecorder) WaitForUpdateResult(ctx, future, resourceGroupName, source interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) WaitForUpdateResult(ctx, future, resourceGroupName, source any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForUpdateResult", reflect.TypeOf((*MockInterface)(nil).WaitForUpdateResult), ctx, future, resourceGroupName, source)
 }
diff --git a/pkg/azureclients/zoneclient/mockzoneclient/interface.go b/pkg/azureclients/zoneclient/mockzoneclient/interface.go
index 4f7a5b001..f79425345 100644
--- a/pkg/azureclients/zoneclient/mockzoneclient/interface.go
+++ b/pkg/azureclients/zoneclient/mockzoneclient/interface.go
@@ -17,6 +17,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: pkg/azureclients/zoneclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -copyright_file=/home/shafan/go/src/sigs.k8s.io/cloud-provider-azure/hack/boilerplate/boilerplate.generatego.txt -source=pkg/azureclients/zoneclient/interface.go -package=mockzoneclient Interface
+//
 
 // Package mockzoneclient is a generated GoMock package.
 package mockzoneclient
@@ -25,7 +30,7 @@ import (
 	context "context"
 	reflect "reflect"
 
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	retry "sigs.k8s.io/cloud-provider-azure/pkg/retry"
 )
 
@@ -62,7 +67,7 @@ func (m *MockInterface) GetZones(ctx context.Context, subscriptionID string) (ma
 }
 
 // GetZones indicates an expected call of GetZones.
-func (mr *MockInterfaceMockRecorder) GetZones(ctx, subscriptionID interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetZones(ctx, subscriptionID any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetZones", reflect.TypeOf((*MockInterface)(nil).GetZones), ctx, subscriptionID)
 }
diff --git a/pkg/nodemanager/mock/mock_node_provider.go b/pkg/nodemanager/mock/mock_node_provider.go
index 4927fb407..642f07e01 100644
--- a/pkg/nodemanager/mock/mock_node_provider.go
+++ b/pkg/nodemanager/mock/mock_node_provider.go
@@ -20,7 +20,7 @@ import (
 	context "context"
 	reflect "reflect"
 
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	v1 "k8s.io/api/core/v1"
 	types "k8s.io/apimachinery/pkg/types"
 	cloudprovider "k8s.io/cloud-provider"
diff --git a/pkg/provider/azure_fakes.go b/pkg/provider/azure_fakes.go
index dc895a90b..8ba4ac31a 100644
--- a/pkg/provider/azure_fakes.go
+++ b/pkg/provider/azure_fakes.go
@@ -23,7 +23,7 @@ import (
 	"sigs.k8s.io/cloud-provider-azure/pkg/azclient/mock_azclient"
 	"sigs.k8s.io/cloud-provider-azure/pkg/provider/config"
 
-	"github.com/golang/mock/gomock"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/apimachinery/pkg/util/sets"
 	"k8s.io/client-go/tools/record"
diff --git a/pkg/provider/azure_mock_loadbalancer_backendpool.go b/pkg/provider/azure_mock_loadbalancer_backendpool.go
index 1c81fb761..5735ed7f1 100644
--- a/pkg/provider/azure_mock_loadbalancer_backendpool.go
+++ b/pkg/provider/azure_mock_loadbalancer_backendpool.go
@@ -20,7 +20,7 @@ import (
 	reflect "reflect"
 
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	v1 "k8s.io/api/core/v1"
 )
 
diff --git a/pkg/provider/azure_mock_vmsets.go b/pkg/provider/azure_mock_vmsets.go
index c4102e2e9..833fb38bc 100644
--- a/pkg/provider/azure_mock_vmsets.go
+++ b/pkg/provider/azure_mock_vmsets.go
@@ -23,7 +23,7 @@ import (
 	compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	azure "github.com/Azure/go-autorest/autorest/azure"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	types "k8s.io/apimachinery/pkg/types"
diff --git a/pkg/provider/mock_provider/azure_vmsets.go b/pkg/provider/mock_provider/azure_vmsets.go
index b9d8d4fa6..8d88aea72 100644
--- a/pkg/provider/mock_provider/azure_vmsets.go
+++ b/pkg/provider/mock_provider/azure_vmsets.go
@@ -27,7 +27,7 @@ import (
 	compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	network "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	azure "github.com/Azure/go-autorest/autorest/azure"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 	v1 "k8s.io/api/core/v1"
 	types "k8s.io/apimachinery/pkg/types"
 	cloudprovider "k8s.io/cloud-provider"
diff --git a/vendor/github.com/golang/mock/CONTRIBUTORS b/vendor/github.com/golang/mock/CONTRIBUTORS
deleted file mode 100644
index def849cab..000000000
--- a/vendor/github.com/golang/mock/CONTRIBUTORS
+++ /dev/null
@@ -1,37 +0,0 @@
-# This is the official list of people who can contribute (and typically
-# have contributed) code to the gomock repository.
-# The AUTHORS file lists the copyright holders; this file
-# lists people.  For example, Google employees are listed here
-# but not in AUTHORS, because Google holds the copyright.
-#
-# The submission process automatically checks to make sure
-# that people submitting code are listed in this file (by email address).
-#
-# Names should be added to this file only after verifying that
-# the individual or the individual's organization has agreed to
-# the appropriate Contributor License Agreement, found here:
-#
-#     http://code.google.com/legal/individual-cla-v1.0.html
-#     http://code.google.com/legal/corporate-cla-v1.0.html
-#
-# The agreement for individuals can be filled out on the web.
-#
-# When adding J Random Contributor's name to this file,
-# either J's name or J's organization's name should be
-# added to the AUTHORS file, depending on whether the
-# individual or corporate CLA was used.
-
-# Names should be added to this file like so:
-#     Name <email address>
-#
-# An entry with two email addresses specifies that the
-# first address should be used in the submit logs and
-# that the second address should be recognized as the
-# same person when interacting with Rietveld.
-
-# Please keep the list sorted.
-
-Aaron Jacobs <jacobsa@google.com> <aaronjjacobs@gmail.com>
-Alex Reece <awreece@gmail.com>
-David Symonds <dsymonds@golang.org>
-Ryan Barrett <ryanb@google.com>
diff --git a/vendor/github.com/golang/mock/AUTHORS b/vendor/go.uber.org/mock/AUTHORS
similarity index 100%
rename from vendor/github.com/golang/mock/AUTHORS
rename to vendor/go.uber.org/mock/AUTHORS
diff --git a/vendor/github.com/golang/mock/LICENSE b/vendor/go.uber.org/mock/LICENSE
similarity index 100%
rename from vendor/github.com/golang/mock/LICENSE
rename to vendor/go.uber.org/mock/LICENSE
diff --git a/vendor/github.com/golang/mock/gomock/call.go b/vendor/go.uber.org/mock/gomock/call.go
similarity index 78%
rename from vendor/github.com/golang/mock/gomock/call.go
rename to vendor/go.uber.org/mock/gomock/call.go
index 13c9f44b1..e1ea82637 100644
--- a/vendor/github.com/golang/mock/gomock/call.go
+++ b/vendor/go.uber.org/mock/gomock/call.go
@@ -25,7 +25,7 @@ import (
 type Call struct {
 	t TestHelper // for triggering test failures on invalid call setup
 
-	receiver   interface{}  // the receiver of the method call
+	receiver   any          // the receiver of the method call
 	method     string       // the name of the method
 	methodType reflect.Type // the type of the method
 	args       []Matcher    // the args
@@ -41,12 +41,12 @@ type Call struct {
 	// actions are called when this Call is called. Each action gets the args and
 	// can set the return values by returning a non-nil slice. Actions run in the
 	// order they are created.
-	actions []func([]interface{}) []interface{}
+	actions []func([]any) []any
 }
 
 // newCall creates a *Call. It requires the method type in order to support
 // unexported methods.
-func newCall(t TestHelper, receiver interface{}, method string, methodType reflect.Type, args ...interface{}) *Call {
+func newCall(t TestHelper, receiver any, method string, methodType reflect.Type, args ...any) *Call {
 	t.Helper()
 
 	// TODO: check arity, types.
@@ -67,9 +67,9 @@ func newCall(t TestHelper, receiver interface{}, method string, methodType refle
 	// and this line changes, i.e. this code is wrapped in another anonymous function.
 	// 0 is us, 1 is RecordCallWithMethodType(), 2 is the generated recorder, and 3 is the user's test.
 	origin := callerInfo(3)
-	actions := []func([]interface{}) []interface{}{func([]interface{}) []interface{} {
+	actions := []func([]any) []any{func([]any) []any {
 		// Synthesize the zero value for each of the return args' types.
-		rets := make([]interface{}, methodType.NumOut())
+		rets := make([]any, methodType.NumOut())
 		for i := 0; i < methodType.NumOut(); i++ {
 			rets[i] = reflect.Zero(methodType.Out(i)).Interface()
 		}
@@ -107,20 +107,26 @@ func (c *Call) MaxTimes(n int) *Call {
 
 // DoAndReturn declares the action to run when the call is matched.
 // The return values from this function are returned by the mocked function.
-// It takes an interface{} argument to support n-arity functions.
-func (c *Call) DoAndReturn(f interface{}) *Call {
+// It takes an any argument to support n-arity functions.
+// The anonymous function must match the function signature mocked method.
+func (c *Call) DoAndReturn(f any) *Call {
 	// TODO: Check arity and types here, rather than dying badly elsewhere.
 	v := reflect.ValueOf(f)
 
-	c.addAction(func(args []interface{}) []interface{} {
+	c.addAction(func(args []any) []any {
 		c.t.Helper()
-		vArgs := make([]reflect.Value, len(args))
 		ft := v.Type()
 		if c.methodType.NumIn() != ft.NumIn() {
-			c.t.Fatalf("wrong number of arguments in DoAndReturn func for %T.%v: got %d, want %d [%s]",
-				c.receiver, c.method, ft.NumIn(), c.methodType.NumIn(), c.origin)
+			if ft.IsVariadic() {
+				c.t.Fatalf("wrong number of arguments in DoAndReturn func for %T.%v The function signature must match the mocked method, a variadic function cannot be used.",
+					c.receiver, c.method)
+			} else {
+				c.t.Fatalf("wrong number of arguments in DoAndReturn func for %T.%v: got %d, want %d [%s]",
+					c.receiver, c.method, ft.NumIn(), c.methodType.NumIn(), c.origin)
+			}
 			return nil
 		}
+		vArgs := make([]reflect.Value, len(args))
 		for i := 0; i < len(args); i++ {
 			if args[i] != nil {
 				vArgs[i] = reflect.ValueOf(args[i])
@@ -130,7 +136,7 @@ func (c *Call) DoAndReturn(f interface{}) *Call {
 			}
 		}
 		vRets := v.Call(vArgs)
-		rets := make([]interface{}, len(vRets))
+		rets := make([]any, len(vRets))
 		for i, ret := range vRets {
 			rets[i] = ret.Interface()
 		}
@@ -142,20 +148,26 @@ func (c *Call) DoAndReturn(f interface{}) *Call {
 // Do declares the action to run when the call is matched. The function's
 // return values are ignored to retain backward compatibility. To use the
 // return values call DoAndReturn.
-// It takes an interface{} argument to support n-arity functions.
-func (c *Call) Do(f interface{}) *Call {
+// It takes an any argument to support n-arity functions.
+// The anonymous function must match the function signature mocked method.
+func (c *Call) Do(f any) *Call {
 	// TODO: Check arity and types here, rather than dying badly elsewhere.
 	v := reflect.ValueOf(f)
 
-	c.addAction(func(args []interface{}) []interface{} {
+	c.addAction(func(args []any) []any {
 		c.t.Helper()
-		if c.methodType.NumIn() != v.Type().NumIn() {
-			c.t.Fatalf("wrong number of arguments in Do func for %T.%v: got %d, want %d [%s]",
-				c.receiver, c.method, v.Type().NumIn(), c.methodType.NumIn(), c.origin)
+		ft := v.Type()
+		if c.methodType.NumIn() != ft.NumIn() {
+			if ft.IsVariadic() {
+				c.t.Fatalf("wrong number of arguments in Do func for %T.%v The function signature must match the mocked method, a variadic function cannot be used.",
+					c.receiver, c.method)
+			} else {
+				c.t.Fatalf("wrong number of arguments in Do func for %T.%v: got %d, want %d [%s]",
+					c.receiver, c.method, ft.NumIn(), c.methodType.NumIn(), c.origin)
+			}
 			return nil
 		}
 		vArgs := make([]reflect.Value, len(args))
-		ft := v.Type()
 		for i := 0; i < len(args); i++ {
 			if args[i] != nil {
 				vArgs[i] = reflect.ValueOf(args[i])
@@ -171,7 +183,7 @@ func (c *Call) Do(f interface{}) *Call {
 }
 
 // Return declares the values to be returned by the mocked function call.
-func (c *Call) Return(rets ...interface{}) *Call {
+func (c *Call) Return(rets ...any) *Call {
 	c.t.Helper()
 
 	mt := c.methodType
@@ -203,7 +215,7 @@ func (c *Call) Return(rets ...interface{}) *Call {
 		}
 	}
 
-	c.addAction(func([]interface{}) []interface{} {
+	c.addAction(func([]any) []any {
 		return rets
 	})
 
@@ -217,9 +229,9 @@ func (c *Call) Times(n int) *Call {
 }
 
 // SetArg declares an action that will set the nth argument's value,
-// indirected through a pointer. Or, in the case of a slice, SetArg
-// will copy value's elements into the nth argument.
-func (c *Call) SetArg(n int, value interface{}) *Call {
+// indirected through a pointer. Or, in the case of a slice and map, SetArg
+// will copy value's elements/key-value pairs into the nth argument.
+func (c *Call) SetArg(n int, value any) *Call {
 	c.t.Helper()
 
 	mt := c.methodType
@@ -243,16 +255,20 @@ func (c *Call) SetArg(n int, value interface{}) *Call {
 		// nothing to do
 	case reflect.Slice:
 		// nothing to do
+	case reflect.Map:
+		// nothing to do
 	default:
-		c.t.Fatalf("SetArg(%d, ...) referring to argument of non-pointer non-interface non-slice type %v [%s]",
+		c.t.Fatalf("SetArg(%d, ...) referring to argument of non-pointer non-interface non-slice non-map type %v [%s]",
 			n, at, c.origin)
 	}
 
-	c.addAction(func(args []interface{}) []interface{} {
+	c.addAction(func(args []any) []any {
 		v := reflect.ValueOf(value)
 		switch reflect.TypeOf(args[n]).Kind() {
 		case reflect.Slice:
 			setSlice(args[n], v)
+		case reflect.Map:
+			setMap(args[n], v)
 		default:
 			reflect.ValueOf(args[n]).Elem().Set(v)
 		}
@@ -307,7 +323,7 @@ func (c *Call) String() string {
 
 // Tests if the given call matches the expected call.
 // If yes, returns nil. If no, returns error with message explaining why it does not match.
-func (c *Call) matches(args []interface{}) error {
+func (c *Call) matches(args []any) error {
 	if !c.methodType.IsVariadic() {
 		if len(args) != len(c.args) {
 			return fmt.Errorf("expected call at %s has the wrong number of arguments. Got: %d, want: %d",
@@ -413,30 +429,77 @@ func (c *Call) dropPrereqs() (preReqs []*Call) {
 	return
 }
 
-func (c *Call) call() []func([]interface{}) []interface{} {
+func (c *Call) call() []func([]any) []any {
 	c.numCalls++
 	return c.actions
 }
 
 // InOrder declares that the given calls should occur in order.
-func InOrder(calls ...*Call) {
+// It panics if the type of any of the arguments isn't *Call or a generated
+// mock with an embedded *Call.
+func InOrder(args ...any) {
+	calls := make([]*Call, 0, len(args))
+	for i := 0; i < len(args); i++ {
+		if call := getCall(args[i]); call != nil {
+			calls = append(calls, call)
+			continue
+		}
+		panic(fmt.Sprintf(
+			"invalid argument at position %d of type %T, InOrder expects *gomock.Call or generated mock types with an embedded *gomock.Call",
+			i,
+			args[i],
+		))
+	}
 	for i := 1; i < len(calls); i++ {
 		calls[i].After(calls[i-1])
 	}
 }
 
-func setSlice(arg interface{}, v reflect.Value) {
+// getCall checks if the parameter is a *Call or a generated struct
+// that wraps a *Call and returns the *Call pointer - if neither, it returns nil.
+func getCall(arg any) *Call {
+	if call, ok := arg.(*Call); ok {
+		return call
+	}
+	t := reflect.ValueOf(arg)
+	if t.Kind() != reflect.Ptr && t.Kind() != reflect.Interface {
+		return nil
+	}
+	t = t.Elem()
+	for i := 0; i < t.NumField(); i++ {
+		f := t.Field(i)
+		if !f.CanInterface() {
+			continue
+		}
+		if call, ok := f.Interface().(*Call); ok {
+			return call
+		}
+	}
+	return nil
+}
+
+func setSlice(arg any, v reflect.Value) {
 	va := reflect.ValueOf(arg)
 	for i := 0; i < v.Len(); i++ {
 		va.Index(i).Set(v.Index(i))
 	}
 }
 
-func (c *Call) addAction(action func([]interface{}) []interface{}) {
+func setMap(arg any, v reflect.Value) {
+	va := reflect.ValueOf(arg)
+	for _, e := range va.MapKeys() {
+		va.SetMapIndex(e, reflect.Value{})
+	}
+	for _, e := range v.MapKeys() {
+		va.SetMapIndex(e, v.MapIndex(e))
+	}
+}
+
+func (c *Call) addAction(action func([]any) []any) {
 	c.actions = append(c.actions, action)
 }
 
-func formatGottenArg(m Matcher, arg interface{}) string {
+func formatGottenArg(m Matcher, arg any) string {
 	got := fmt.Sprintf("%v (%T)", arg, arg)
 	if gs, ok := m.(GotFormatter); ok {
 		got = gs.Got(arg)
diff --git a/vendor/github.com/golang/mock/gomock/callset.go b/vendor/go.uber.org/mock/gomock/callset.go
similarity index 70%
rename from vendor/github.com/golang/mock/gomock/callset.go
rename to vendor/go.uber.org/mock/gomock/callset.go
index 49dba787a..f5cc592d6 100644
--- a/vendor/github.com/golang/mock/gomock/callset.go
+++ b/vendor/go.uber.org/mock/gomock/callset.go
@@ -18,40 +18,69 @@ import (
 	"bytes"
 	"errors"
 	"fmt"
+	"sync"
 )
 
 // callSet represents a set of expected calls, indexed by receiver and method
 // name.
 type callSet struct {
 	// Calls that are still expected.
-	expected map[callSetKey][]*Call
+	expected   map[callSetKey][]*Call
+	expectedMu *sync.Mutex
 	// Calls that have been exhausted.
 	exhausted map[callSetKey][]*Call
+	// when set to true, existing call expectations are overridden when new call expectations are made
+	allowOverride bool
 }
 
 // callSetKey is the key in the maps in callSet
 type callSetKey struct {
-	receiver interface{}
+	receiver any
 	fname    string
 }
 
 func newCallSet() *callSet {
-	return &callSet{make(map[callSetKey][]*Call), make(map[callSetKey][]*Call)}
+	return &callSet{
+		expected:   make(map[callSetKey][]*Call),
+		expectedMu: &sync.Mutex{},
+		exhausted:  make(map[callSetKey][]*Call),
+	}
+}
+
+func newOverridableCallSet() *callSet {
+	return &callSet{
+		expected:      make(map[callSetKey][]*Call),
+		expectedMu:    &sync.Mutex{},
+		exhausted:     make(map[callSetKey][]*Call),
+		allowOverride: true,
+	}
 }
 
 // Add adds a new expected call.
 func (cs callSet) Add(call *Call) {
 	key := callSetKey{call.receiver, call.method}
+
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
 	m := cs.expected
 	if call.exhausted() {
 		m = cs.exhausted
 	}
+	if cs.allowOverride {
+		m[key] = make([]*Call, 0)
+	}
+
 	m[key] = append(m[key], call)
 }
 
 // Remove removes an expected call.
 func (cs callSet) Remove(call *Call) {
 	key := callSetKey{call.receiver, call.method}
+
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
 	calls := cs.expected[key]
 	for i, c := range calls {
 		if c == call {
@@ -64,9 +93,12 @@ func (cs callSet) Remove(call *Call) {
 }
 
 // FindMatch searches for a matching call. Returns error with explanation message if no call matched.
-func (cs callSet) FindMatch(receiver interface{}, method string, args []interface{}) (*Call, error) {
+func (cs callSet) FindMatch(receiver any, method string, args []any) (*Call, error) {
 	key := callSetKey{receiver, method}
 
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
 	// Search through the expected calls.
 	expected := cs.expected[key]
 	var callsErrors bytes.Buffer
@@ -101,6 +133,9 @@ func (cs callSet) FindMatch(receiver interface{}, method string, args []interfac
 
 // Failures returns the calls that are not satisfied.
 func (cs callSet) Failures() []*Call {
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
 	failures := make([]*Call, 0, len(cs.expected))
 	for _, calls := range cs.expected {
 		for _, call := range calls {
@@ -111,3 +146,19 @@ func (cs callSet) Failures() []*Call {
 	}
 	return failures
 }
+
+// Satisfied returns true in case all expected calls in this callSet are satisfied.
+func (cs callSet) Satisfied() bool {
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
+	for _, calls := range cs.expected {
+		for _, call := range calls {
+			if !call.satisfied() {
+				return false
+			}
+		}
+	}
+
+	return true
+}
diff --git a/vendor/github.com/golang/mock/gomock/controller.go b/vendor/go.uber.org/mock/gomock/controller.go
similarity index 67%
rename from vendor/github.com/golang/mock/gomock/controller.go
rename to vendor/go.uber.org/mock/gomock/controller.go
index f054200d5..9d17a2f0c 100644
--- a/vendor/github.com/golang/mock/gomock/controller.go
+++ b/vendor/go.uber.org/mock/gomock/controller.go
@@ -12,44 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// Package gomock is a mock framework for Go.
-//
-// Standard usage:
-//   (1) Define an interface that you wish to mock.
-//         type MyInterface interface {
-//           SomeMethod(x int64, y string)
-//         }
-//   (2) Use mockgen to generate a mock from the interface.
-//   (3) Use the mock in a test:
-//         func TestMyThing(t *testing.T) {
-//           mockCtrl := gomock.NewController(t)
-//           defer mockCtrl.Finish()
-//
-//           mockObj := something.NewMockMyInterface(mockCtrl)
-//           mockObj.EXPECT().SomeMethod(4, "blah")
-//           // pass mockObj to a real object and play with it.
-//         }
-//
-// By default, expected calls are not enforced to run in any particular order.
-// Call order dependency can be enforced by use of InOrder and/or Call.After.
-// Call.After can create more varied call order dependencies, but InOrder is
-// often more convenient.
-//
-// The following examples create equivalent call order dependencies.
-//
-// Example of using Call.After to chain expected call order:
-//
-//     firstCall := mockObj.EXPECT().SomeMethod(1, "first")
-//     secondCall := mockObj.EXPECT().SomeMethod(2, "second").After(firstCall)
-//     mockObj.EXPECT().SomeMethod(3, "third").After(secondCall)
-//
-// Example of using InOrder to declare expected call order:
-//
-//     gomock.InOrder(
-//         mockObj.EXPECT().SomeMethod(1, "first"),
-//         mockObj.EXPECT().SomeMethod(2, "second"),
-//         mockObj.EXPECT().SomeMethod(3, "third"),
-//     )
 package gomock
 
 import (
@@ -63,8 +25,8 @@ import (
 // A TestReporter is something that can be used to report test failures.  It
 // is satisfied by the standard library's *testing.T.
 type TestReporter interface {
-	Errorf(format string, args ...interface{})
-	Fatalf(format string, args ...interface{})
+	Errorf(format string, args ...any)
+	Fatalf(format string, args ...any)
 }
 
 // TestHelper is a TestReporter that has the Helper method.  It is satisfied
@@ -89,24 +51,21 @@ type cleanuper interface {
 // goroutines. Each test should create a new Controller and invoke Finish via
 // defer.
 //
-//   func TestFoo(t *testing.T) {
-//     ctrl := gomock.NewController(t)
-//     defer ctrl.Finish()
-//     // ..
-//   }
+//	func TestFoo(t *testing.T) {
+//	  ctrl := gomock.NewController(t)
+//	  // ..
+//	}
 //
-//   func TestBar(t *testing.T) {
-//     t.Run("Sub-Test-1", st) {
-//       ctrl := gomock.NewController(st)
-//       defer ctrl.Finish()
-//       // ..
-//     })
-//     t.Run("Sub-Test-2", st) {
-//       ctrl := gomock.NewController(st)
-//       defer ctrl.Finish()
-//       // ..
-//     })
-//   })
+//	func TestBar(t *testing.T) {
+//	  t.Run("Sub-Test-1", st) {
+//	    ctrl := gomock.NewController(st)
+//	    // ..
+//	  })
+//	  t.Run("Sub-Test-2", st) {
+//	    ctrl := gomock.NewController(st)
+//	    // ..
+//	  })
+//	})
 type Controller struct {
 	// T should only be called within a generated mock. It is not intended to
 	// be used in user code and may be changed in future versions. T is the
@@ -119,12 +78,11 @@ type Controller struct {
 	finished      bool
 }
 
-// NewController returns a new Controller. It is the preferred way to create a
-// Controller.
+// NewController returns a new Controller. It is the preferred way to create a Controller.
 //
-// New in go1.14+, if you are passing a *testing.T into this function you no
-// longer need to call ctrl.Finish() in your test methods.
-func NewController(t TestReporter) *Controller {
+// Passing [*testing.T] registers cleanup function to automatically call [Controller.Finish]
+// when the test and all its subtests complete.
+func NewController(t TestReporter, opts ...ControllerOption) *Controller {
 	h, ok := t.(TestHelper)
 	if !ok {
 		h = &nopTestHelper{t}
@@ -133,6 +91,9 @@ func NewController(t TestReporter) *Controller {
 		T:             h,
 		expectedCalls: newCallSet(),
 	}
+	for _, opt := range opts {
+		opt.apply(ctrl)
+	}
 	if c, ok := isCleanuper(ctrl.T); ok {
 		c.Cleanup(func() {
 			ctrl.T.Helper()
@@ -143,15 +104,32 @@ func NewController(t TestReporter) *Controller {
 	return ctrl
 }
 
+// ControllerOption configures how a Controller should behave.
+type ControllerOption interface {
+	apply(*Controller)
+}
+
+type overridableExpectationsOption struct{}
+
+// WithOverridableExpectations allows for overridable call expectations
+// i.e., subsequent call expectations override existing call expectations
+func WithOverridableExpectations() overridableExpectationsOption {
+	return overridableExpectationsOption{}
+}
+
+func (o overridableExpectationsOption) apply(ctrl *Controller) {
+	ctrl.expectedCalls = newOverridableCallSet()
+}
+
 type cancelReporter struct {
 	t      TestHelper
 	cancel func()
 }
 
-func (r *cancelReporter) Errorf(format string, args ...interface{}) {
+func (r *cancelReporter) Errorf(format string, args ...any) {
 	r.t.Errorf(format, args...)
 }
-func (r *cancelReporter) Fatalf(format string, args ...interface{}) {
+func (r *cancelReporter) Fatalf(format string, args ...any) {
 	defer r.cancel()
 	r.t.Fatalf(format, args...)
 }
@@ -176,17 +154,17 @@ type nopTestHelper struct {
 	t TestReporter
 }
 
-func (h *nopTestHelper) Errorf(format string, args ...interface{}) {
+func (h *nopTestHelper) Errorf(format string, args ...any) {
 	h.t.Errorf(format, args...)
 }
-func (h *nopTestHelper) Fatalf(format string, args ...interface{}) {
+func (h *nopTestHelper) Fatalf(format string, args ...any) {
 	h.t.Fatalf(format, args...)
 }
 
 func (h nopTestHelper) Helper() {}
 
 // RecordCall is called by a mock. It should not be called by user code.
-func (ctrl *Controller) RecordCall(receiver interface{}, method string, args ...interface{}) *Call {
+func (ctrl *Controller) RecordCall(receiver any, method string, args ...any) *Call {
 	ctrl.T.Helper()
 
 	recv := reflect.ValueOf(receiver)
@@ -200,7 +178,7 @@ func (ctrl *Controller) RecordCall(receiver interface{}, method string, args ...
 }
 
 // RecordCallWithMethodType is called by a mock. It should not be called by user code.
-func (ctrl *Controller) RecordCallWithMethodType(receiver interface{}, method string, methodType reflect.Type, args ...interface{}) *Call {
+func (ctrl *Controller) RecordCallWithMethodType(receiver any, method string, methodType reflect.Type, args ...any) *Call {
 	ctrl.T.Helper()
 
 	call := newCall(ctrl.T, receiver, method, methodType, args...)
@@ -213,11 +191,11 @@ func (ctrl *Controller) RecordCallWithMethodType(receiver interface{}, method st
 }
 
 // Call is called by a mock. It should not be called by user code.
-func (ctrl *Controller) Call(receiver interface{}, method string, args ...interface{}) []interface{} {
+func (ctrl *Controller) Call(receiver any, method string, args ...any) []any {
 	ctrl.T.Helper()
 
 	// Nest this code so we can use defer to make sure the lock is released.
-	actions := func() []func([]interface{}) []interface{} {
+	actions := func() []func([]any) []any {
 		ctrl.T.Helper()
 		ctrl.mu.Lock()
 		defer ctrl.mu.Unlock()
@@ -246,7 +224,7 @@ func (ctrl *Controller) Call(receiver interface{}, method string, args ...interf
 		return actions
 	}()
 
-	var rets []interface{}
+	var rets []any
 	for _, action := range actions {
 		if r := action(args); r != nil {
 			rets = r
@@ -256,12 +234,8 @@ func (ctrl *Controller) Call(receiver interface{}, method string, args ...interf
 	return rets
 }
 
-// Finish checks to see if all the methods that were expected to be called
-// were called. It should be invoked for each Controller. It is not idempotent
-// and therefore can only be invoked once.
-//
-// New in go1.14+, if you are passing a *testing.T into NewController function you no
-// longer need to call ctrl.Finish() in your test methods.
+// Finish checks to see if all the methods that were expected to be called were called.
+// It is not idempotent and therefore can only be invoked once.
 func (ctrl *Controller) Finish() {
 	// If we're currently panicking, probably because this is a deferred call.
 	// This must be recovered in the deferred function.
@@ -269,7 +243,15 @@ func (ctrl *Controller) Finish() {
 	ctrl.finish(false, err)
 }
 
-func (ctrl *Controller) finish(cleanup bool, panicErr interface{}) {
+// Satisfied returns whether all expected calls bound to this Controller have been satisfied.
+// Calling Finish is then guaranteed to not fail due to missing calls.
+func (ctrl *Controller) Satisfied() bool {
+	ctrl.mu.Lock()
+	defer ctrl.mu.Unlock()
+	return ctrl.expectedCalls.Satisfied()
+}
+
+func (ctrl *Controller) finish(cleanup bool, panicErr any) {
 	ctrl.T.Helper()
 
 	ctrl.mu.Lock()
diff --git a/vendor/go.uber.org/mock/gomock/doc.go b/vendor/go.uber.org/mock/gomock/doc.go
new file mode 100644
index 000000000..696dda388
--- /dev/null
+++ b/vendor/go.uber.org/mock/gomock/doc.go
@@ -0,0 +1,60 @@
+// Copyright 2022 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Package gomock is a mock framework for Go.
+//
+// Standard usage:
+//
+//	(1) Define an interface that you wish to mock.
+//	      type MyInterface interface {
+//	        SomeMethod(x int64, y string)
+//	      }
+//	(2) Use mockgen to generate a mock from the interface.
+//	(3) Use the mock in a test:
+//	      func TestMyThing(t *testing.T) {
+//	        mockCtrl := gomock.NewController(t)
+//	        mockObj := something.NewMockMyInterface(mockCtrl)
+//	        mockObj.EXPECT().SomeMethod(4, "blah")
+//	        // pass mockObj to a real object and play with it.
+//	      }
+//
+// By default, expected calls are not enforced to run in any particular order.
+// Call order dependency can be enforced by use of InOrder and/or Call.After.
+// Call.After can create more varied call order dependencies, but InOrder is
+// often more convenient.
+//
+// The following examples create equivalent call order dependencies.
+//
+// Example of using Call.After to chain expected call order:
+//
+//	firstCall := mockObj.EXPECT().SomeMethod(1, "first")
+//	secondCall := mockObj.EXPECT().SomeMethod(2, "second").After(firstCall)
+//	mockObj.EXPECT().SomeMethod(3, "third").After(secondCall)
+//
+// Example of using InOrder to declare expected call order:
+//
+//	gomock.InOrder(
+//	    mockObj.EXPECT().SomeMethod(1, "first"),
+//	    mockObj.EXPECT().SomeMethod(2, "second"),
+//	    mockObj.EXPECT().SomeMethod(3, "third"),
+//	)
+//
+// The standard TestReporter most users will pass to `NewController` is a
+// `*testing.T` from the context of the test. Note that this will use the
+// standard `t.Error` and `t.Fatal` methods to report what happened in the test.
+// In some cases this can leave your testing package in a weird state if global
+// state is used since `t.Fatal` is like calling panic in the middle of a
+// function. In these cases it is recommended that you pass in your own
+// `TestReporter`.
+package gomock
diff --git a/vendor/github.com/golang/mock/gomock/matchers.go b/vendor/go.uber.org/mock/gomock/matchers.go
similarity index 63%
rename from vendor/github.com/golang/mock/gomock/matchers.go
rename to vendor/go.uber.org/mock/gomock/matchers.go
index 2822fb2c8..c17255096 100644
--- a/vendor/github.com/golang/mock/gomock/matchers.go
+++ b/vendor/go.uber.org/mock/gomock/matchers.go
@@ -17,6 +17,7 @@ package gomock
 import (
 	"fmt"
 	"reflect"
+	"regexp"
 	"strings"
 )
 
@@ -24,7 +25,7 @@ import (
 // It is used to represent the valid or expected arguments to a mocked method.
 type Matcher interface {
 	// Matches returns whether x is a match.
-	Matches(x interface{}) bool
+	Matches(x any) bool
 
 	// String describes what the matcher matches.
 	String() string
@@ -35,7 +36,7 @@ type Matcher interface {
 // printing .
 func WantFormatter(s fmt.Stringer, m Matcher) Matcher {
 	type matcher interface {
-		Matches(x interface{}) bool
+		Matches(x any) bool
 	}
 
 	return struct {
@@ -63,16 +64,16 @@ func (f StringerFunc) String() string {
 type GotFormatter interface {
 	// Got is invoked with the received value. The result is used when
 	// printing the failure message.
-	Got(got interface{}) string
+	Got(got any) string
 }
 
 // GotFormatterFunc type is an adapter to allow the use of ordinary
 // functions as a GotFormatter. If f is a function with the appropriate
 // signature, GotFormatterFunc(f) is a GotFormatter that calls f.
-type GotFormatterFunc func(got interface{}) string
+type GotFormatterFunc func(got any) string
 
 // Got implements GotFormatter.
-func (f GotFormatterFunc) Got(got interface{}) string {
+func (f GotFormatterFunc) Got(got any) string {
 	return f(got)
 }
 
@@ -89,7 +90,7 @@ func GotFormatterAdapter(s GotFormatter, m Matcher) Matcher {
 
 type anyMatcher struct{}
 
-func (anyMatcher) Matches(interface{}) bool {
+func (anyMatcher) Matches(any) bool {
 	return true
 }
 
@@ -97,11 +98,23 @@ func (anyMatcher) String() string {
 	return "is anything"
 }
 
+type condMatcher struct {
+	fn func(x any) bool
+}
+
+func (c condMatcher) Matches(x any) bool {
+	return c.fn(x)
+}
+
+func (condMatcher) String() string {
+	return "adheres to a custom condition"
+}
+
 type eqMatcher struct {
-	x interface{}
+	x any
 }
 
-func (e eqMatcher) Matches(x interface{}) bool {
+func (e eqMatcher) Matches(x any) bool {
 	// In case, some value is nil
 	if e.x == nil || x == nil {
 		return reflect.DeepEqual(e.x, x)
@@ -125,7 +138,7 @@ func (e eqMatcher) String() string {
 
 type nilMatcher struct{}
 
-func (nilMatcher) Matches(x interface{}) bool {
+func (nilMatcher) Matches(x any) bool {
 	if x == nil {
 		return true
 	}
@@ -148,7 +161,7 @@ type notMatcher struct {
 	m Matcher
 }
 
-func (n notMatcher) Matches(x interface{}) bool {
+func (n notMatcher) Matches(x any) bool {
 	return !n.m.Matches(x)
 }
 
@@ -156,11 +169,30 @@ func (n notMatcher) String() string {
 	return "not(" + n.m.String() + ")"
 }
 
+type regexMatcher struct {
+	regex *regexp.Regexp
+}
+
+func (m regexMatcher) Matches(x any) bool {
+	switch t := x.(type) {
+	case string:
+		return m.regex.MatchString(t)
+	case []byte:
+		return m.regex.Match(t)
+	default:
+		return false
+	}
+}
+
+func (m regexMatcher) String() string {
+	return "matches regex " + m.regex.String()
+}
+
 type assignableToTypeOfMatcher struct {
 	targetType reflect.Type
 }
 
-func (m assignableToTypeOfMatcher) Matches(x interface{}) bool {
+func (m assignableToTypeOfMatcher) Matches(x any) bool {
 	return reflect.TypeOf(x).AssignableTo(m.targetType)
 }
 
@@ -168,11 +200,32 @@ func (m assignableToTypeOfMatcher) String() string {
 	return "is assignable to " + m.targetType.Name()
 }
 
+type anyOfMatcher struct {
+	matchers []Matcher
+}
+
+func (am anyOfMatcher) Matches(x any) bool {
+	for _, m := range am.matchers {
+		if m.Matches(x) {
+			return true
+		}
+	}
+	return false
+}
+
+func (am anyOfMatcher) String() string {
+	ss := make([]string, 0, len(am.matchers))
+	for _, matcher := range am.matchers {
+		ss = append(ss, matcher.String())
+	}
+	return strings.Join(ss, " | ")
+}
+
 type allMatcher struct {
 	matchers []Matcher
 }
 
-func (am allMatcher) Matches(x interface{}) bool {
+func (am allMatcher) Matches(x any) bool {
 	for _, m := range am.matchers {
 		if !m.Matches(x) {
 			return false
@@ -193,7 +246,7 @@ type lenMatcher struct {
 	i int
 }
 
-func (m lenMatcher) Matches(x interface{}) bool {
+func (m lenMatcher) Matches(x any) bool {
 	v := reflect.ValueOf(x)
 	switch v.Kind() {
 	case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice, reflect.String:
@@ -208,10 +261,10 @@ func (m lenMatcher) String() string {
 }
 
 type inAnyOrderMatcher struct {
-	x interface{}
+	x any
 }
 
-func (m inAnyOrderMatcher) Matches(x interface{}) bool {
+func (m inAnyOrderMatcher) Matches(x any) bool {
 	given, ok := m.prepareValue(x)
 	if !ok {
 		return false
@@ -257,7 +310,7 @@ func (m inAnyOrderMatcher) Matches(x interface{}) bool {
 	return extraInGiven == 0 && missingFromWanted == 0
 }
 
-func (m inAnyOrderMatcher) prepareValue(x interface{}) (reflect.Value, bool) {
+func (m inAnyOrderMatcher) prepareValue(x any) (reflect.Value, bool) {
 	xValue := reflect.ValueOf(x)
 	switch xValue.Kind() {
 	case reflect.Slice, reflect.Array:
@@ -280,12 +333,45 @@ func All(ms ...Matcher) Matcher { return allMatcher{ms} }
 // Any returns a matcher that always matches.
 func Any() Matcher { return anyMatcher{} }
 
+// Cond returns a matcher that matches when the given function returns true
+// after passing it the parameter to the mock function.
+// This is particularly useful in case you want to match over a field of a custom struct, or dynamic logic.
+//
+// Example usage:
+//
+//	Cond(func(x any){return x.(int) == 1}).Matches(1) // returns true
+//	Cond(func(x any){return x.(int) == 2}).Matches(1) // returns false
+func Cond(fn func(x any) bool) Matcher { return condMatcher{fn} }
+
+// AnyOf returns a composite Matcher that returns true if at least one of the
+// matchers returns true.
+//
+// Example usage:
+//
+//	AnyOf(1, 2, 3).Matches(2) // returns true
+//	AnyOf(1, 2, 3).Matches(10) // returns false
+//	AnyOf(Nil(), Len(2)).Matches(nil) // returns true
+//	AnyOf(Nil(), Len(2)).Matches("hi") // returns true
+//	AnyOf(Nil(), Len(2)).Matches("hello") // returns false
+func AnyOf(xs ...any) Matcher {
+	ms := make([]Matcher, 0, len(xs))
+	for _, x := range xs {
+		if m, ok := x.(Matcher); ok {
+			ms = append(ms, m)
+		} else {
+			ms = append(ms, Eq(x))
+		}
+	}
+	return anyOfMatcher{ms}
+}
+
 // Eq returns a matcher that matches on equality.
 //
 // Example usage:
-//   Eq(5).Matches(5) // returns true
-//   Eq(5).Matches(4) // returns false
-func Eq(x interface{}) Matcher { return eqMatcher{x} }
+//
+//	Eq(5).Matches(5) // returns true
+//	Eq(5).Matches(4) // returns false
+func Eq(x any) Matcher { return eqMatcher{x} }
 
 // Len returns a matcher that matches on length. This matcher returns false if
 // is compared to a type that is not an array, chan, map, slice, or string.
@@ -296,35 +382,50 @@ func Len(i int) Matcher {
 // Nil returns a matcher that matches if the received value is nil.
 //
 // Example usage:
-//   var x *bytes.Buffer
-//   Nil().Matches(x) // returns true
-//   x = &bytes.Buffer{}
-//   Nil().Matches(x) // returns false
+//
+//	var x *bytes.Buffer
+//	Nil().Matches(x) // returns true
+//	x = &bytes.Buffer{}
+//	Nil().Matches(x) // returns false
 func Nil() Matcher { return nilMatcher{} }
 
 // Not reverses the results of its given child matcher.
 //
 // Example usage:
-//   Not(Eq(5)).Matches(4) // returns true
-//   Not(Eq(5)).Matches(5) // returns false
-func Not(x interface{}) Matcher {
+//
+//	Not(Eq(5)).Matches(4) // returns true
+//	Not(Eq(5)).Matches(5) // returns false
+func Not(x any) Matcher {
 	if m, ok := x.(Matcher); ok {
 		return notMatcher{m}
 	}
 	return notMatcher{Eq(x)}
 }
 
+// Regex checks whether parameter matches the associated regex.
+//
+// Example usage:
+//
+//	Regex("[0-9]{2}:[0-9]{2}").Matches("23:02") // returns true
+//	Regex("[0-9]{2}:[0-9]{2}").Matches([]byte{'2', '3', ':', '0', '2'}) // returns true
+//	Regex("[0-9]{2}:[0-9]{2}").Matches("hello world") // returns false
+//	Regex("[0-9]{2}").Matches(21) // returns false as it's not a valid type
+func Regex(regexStr string) Matcher {
+	return regexMatcher{regex: regexp.MustCompile(regexStr)}
+}
+
 // AssignableToTypeOf is a Matcher that matches if the parameter to the mock
 // function is assignable to the type of the parameter to this function.
 //
 // Example usage:
-//   var s fmt.Stringer = &bytes.Buffer{}
-//   AssignableToTypeOf(s).Matches(time.Second) // returns true
-//   AssignableToTypeOf(s).Matches(99) // returns false
 //
-//   var ctx = reflect.TypeOf((*context.Context)(nil)).Elem()
-//   AssignableToTypeOf(ctx).Matches(context.Background()) // returns true
-func AssignableToTypeOf(x interface{}) Matcher {
+//	var s fmt.Stringer = &bytes.Buffer{}
+//	AssignableToTypeOf(s).Matches(time.Second) // returns true
+//	AssignableToTypeOf(s).Matches(99) // returns false
+//
+//	var ctx = reflect.TypeOf((*context.Context)(nil)).Elem()
+//	AssignableToTypeOf(ctx).Matches(context.Background()) // returns true
+func AssignableToTypeOf(x any) Matcher {
 	if xt, ok := x.(reflect.Type); ok {
 		return assignableToTypeOfMatcher{xt}
 	}
@@ -334,8 +435,9 @@ func AssignableToTypeOf(x interface{}) Matcher {
 // InAnyOrder is a Matcher that returns true for collections of the same elements ignoring the order.
 //
 // Example usage:
-//   InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 3, 2}) // returns true
-//   InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 2}) // returns false
-func InAnyOrder(x interface{}) Matcher {
+//
+//	InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 3, 2}) // returns true
+//	InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 2}) // returns false
+func InAnyOrder(x any) Matcher {
 	return inAnyOrderMatcher{x}
 }
diff --git a/vendor/golang.org/x/sync/errgroup/errgroup.go b/vendor/golang.org/x/sync/errgroup/errgroup.go
index b18efb743..948a3ee63 100644
--- a/vendor/golang.org/x/sync/errgroup/errgroup.go
+++ b/vendor/golang.org/x/sync/errgroup/errgroup.go
@@ -4,6 +4,9 @@
 
 // Package errgroup provides synchronization, error propagation, and Context
 // cancelation for groups of goroutines working on subtasks of a common task.
+//
+// [errgroup.Group] is related to [sync.WaitGroup] but adds handling of tasks
+// returning errors.
 package errgroup
 
 import (
diff --git a/vendor/modules.txt b/vendor/modules.txt
index eb77c0156..61ba0b1b7 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -253,9 +253,6 @@ github.com/golang-jwt/jwt/v5
 # github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
 ## explicit
 github.com/golang/groupcache/lru
-# github.com/golang/mock v1.6.0
-## explicit; go 1.11
-github.com/golang/mock/gomock
 # github.com/golang/protobuf v1.5.3
 ## explicit; go 1.9
 github.com/golang/protobuf/jsonpb
@@ -524,6 +521,9 @@ go.opentelemetry.io/proto/otlp/trace/v1
 # go.uber.org/atomic v1.10.0
 ## explicit; go 1.18
 go.uber.org/atomic
+# go.uber.org/mock v0.4.0
+## explicit; go 1.20
+go.uber.org/mock/gomock
 # go.uber.org/multierr v1.11.0
 ## explicit; go 1.19
 go.uber.org/multierr
@@ -569,7 +569,7 @@ golang.org/x/net/websocket
 ## explicit; go 1.18
 golang.org/x/oauth2
 golang.org/x/oauth2/internal
-# golang.org/x/sync v0.5.0
+# golang.org/x/sync v0.6.0
 ## explicit; go 1.18
 golang.org/x/sync/errgroup
 golang.org/x/sync/semaphore
@@ -1465,7 +1465,7 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client
 sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client/metrics
 sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/common/metrics
 sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client
-# sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.0-20240103055401-88f4ca026f87
+# sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.0-20240105075710-c4d4895a970b
 ## explicit; go 1.20
 sigs.k8s.io/cloud-provider-azure/pkg/azclient
 sigs.k8s.io/cloud-provider-azure/pkg/azclient/accountclient
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/Makefile b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/Makefile
index 7b079856f..e0efaecec 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/Makefile
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/Makefile
@@ -96,7 +96,7 @@ generatecode: build ## Generate client
 	$(TYPESCAFFOLD) --package github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 --package-alias armnetwork --resource IPGroup --client-name IPGroupsClient --verbs get,createorupdate,delete,listbyrg --expand --ratelimitkey ipGroupRateLimit
 	$(TYPESCAFFOLD) --package github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage --package-alias armstorage --resource Account --client-name AccountsClient --verbs listbyrg --expand
 	$(TYPESCAFFOLD) --package github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns --package-alias armprivatedns --resource PrivateZone --client-name PrivateZonesClient  --verbs get,createorupdate --ratelimitkey privateDNSRateLimit
-	$(TYPESCAFFOLD) --package github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns --package-alias armprivatedns --resource PrivateZone --subresource VirtualNetworkLink --client-name VirtualNetworkLinksClient --verbs get,createorupdate --ratelimitkey privateDNSZoneGroupRateLimit
+	$(TYPESCAFFOLD) --package github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns --package-alias armprivatedns --resource PrivateZone --subresource VirtualNetworkLink --client-name VirtualNetworkLinksClient --verbs get,createorupdate --ratelimitkey virtualNetworkRateLimit
 	$(TYPESCAFFOLD) --package github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage --package-alias armstorage --resource Account --subresource FileShare --client-name FileSharesClient --verbs get,createorupdate,delete,list
 	$(TYPESCAFFOLD) --package github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage --package-alias armstorage --resource Account --subresource BlobContainer --client-name BlobContainersClient --verbs get,list
 	$(TYPESCAFFOLD) --package github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage --package-alias armstorage --resource BlobServiceProperties --client-name BlobServicesClient
@@ -107,7 +107,7 @@ generatecode: build ## Generate client
 
 .PHONY: generateimpl
 generateimpl: build ## Generate client
-	$(CLIENTGEN) clientgen:headerFile=../../hack/boilerplate/boilerplate.gomock.txt paths=./...
+	PATH=$(LOCALBIN):$$PATH $(CLIENTGEN) clientgen:headerFile=../../hack/boilerplate/boilerplate.gomock.txt paths=./...
 
 .PHONY: vet-all
 vet-all: golangci-lint ## Run go vet against code.
@@ -138,7 +138,7 @@ MOCKGEN ?= $(LOCALBIN)/mockgen
 .PHONY: mockgen
 mockgen: $(MOCKGEN) ## Download mockgen locally if necessary.
 $(MOCKGEN): $(LOCALBIN)
-	test -s $(LOCALBIN)/mockgen || GOBIN=$(LOCALBIN)  go install github.com/golang/mock/mockgen@v1.6.0
+	test -s $(LOCALBIN)/mockgen || GOBIN=$(LOCALBIN)  go install go.uber.org/mock/mockgen@latest
 
 GINKGO ?= $(LOCALBIN)/ginkgo
 .PHONY: ginkgo
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/accountclient/mock_accountclient/interface.go b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/accountclient/mock_accountclient/interface.go
index 4651c7854..3b05c8f5d 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/accountclient/mock_accountclient/interface.go
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/accountclient/mock_accountclient/interface.go
@@ -15,7 +15,12 @@
 // */
 
 // Code generated by MockGen. DO NOT EDIT.
-// Source: sigs.k8s.io/cloud-provider-azure/pkg/azclient/accountclient (interfaces: Interface)
+// Source: accountclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -package mock_accountclient -source accountclient/interface.go
+//
 
 // Package mock_accountclient is a generated GoMock package.
 package mock_accountclient
@@ -25,7 +30,7 @@ import (
 	reflect "reflect"
 
 	armstorage "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 )
 
 // MockInterface is a mock of Interface interface.
@@ -52,75 +57,75 @@ func (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {
 }
 
 // Create mocks base method.
-func (m *MockInterface) Create(arg0 context.Context, arg1, arg2 string, arg3 *armstorage.AccountCreateParameters) (*armstorage.Account, error) {
+func (m *MockInterface) Create(ctx context.Context, resourceGroupName, accountName string, resource *armstorage.AccountCreateParameters) (*armstorage.Account, error) {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Create", arg0, arg1, arg2, arg3)
+	ret := m.ctrl.Call(m, "Create", ctx, resourceGroupName, accountName, resource)
 	ret0, _ := ret[0].(*armstorage.Account)
 	ret1, _ := ret[1].(error)
 	return ret0, ret1
 }
 
 // Create indicates an expected call of Create.
-func (mr *MockInterfaceMockRecorder) Create(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Create(ctx, resourceGroupName, accountName, resource any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockInterface)(nil).Create), arg0, arg1, arg2, arg3)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockInterface)(nil).Create), ctx, resourceGroupName, accountName, resource)
 }
 
 // Delete mocks base method.
-func (m *MockInterface) Delete(arg0 context.Context, arg1, arg2 string) error {
+func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, accountName string) error {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Delete", arg0, arg1, arg2)
+	ret := m.ctrl.Call(m, "Delete", ctx, resourceGroupName, accountName)
 	ret0, _ := ret[0].(error)
 	return ret0
 }
 
 // Delete indicates an expected call of Delete.
-func (mr *MockInterfaceMockRecorder) Delete(arg0, arg1, arg2 interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, accountName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), arg0, arg1, arg2)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, accountName)
 }
 
 // GetProperties mocks base method.
-func (m *MockInterface) GetProperties(arg0 context.Context, arg1, arg2 string, arg3 *armstorage.AccountsClientGetPropertiesOptions) (*armstorage.Account, error) {
+func (m *MockInterface) GetProperties(ctx context.Context, resourceGroupName, accountName string, options *armstorage.AccountsClientGetPropertiesOptions) (*armstorage.Account, error) {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "GetProperties", arg0, arg1, arg2, arg3)
+	ret := m.ctrl.Call(m, "GetProperties", ctx, resourceGroupName, accountName, options)
 	ret0, _ := ret[0].(*armstorage.Account)
 	ret1, _ := ret[1].(error)
 	return ret0, ret1
 }
 
 // GetProperties indicates an expected call of GetProperties.
-func (mr *MockInterfaceMockRecorder) GetProperties(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) GetProperties(ctx, resourceGroupName, accountName, options any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProperties", reflect.TypeOf((*MockInterface)(nil).GetProperties), arg0, arg1, arg2, arg3)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProperties", reflect.TypeOf((*MockInterface)(nil).GetProperties), ctx, resourceGroupName, accountName, options)
 }
 
 // List mocks base method.
-func (m *MockInterface) List(arg0 context.Context, arg1 string) ([]*armstorage.Account, error) {
+func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]*armstorage.Account, error) {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "List", arg0, arg1)
+	ret := m.ctrl.Call(m, "List", ctx, resourceGroupName)
 	ret0, _ := ret[0].([]*armstorage.Account)
 	ret1, _ := ret[1].(error)
 	return ret0, ret1
 }
 
 // List indicates an expected call of List.
-func (mr *MockInterfaceMockRecorder) List(arg0, arg1 interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), arg0, arg1)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
 }
 
 // ListKeys mocks base method.
-func (m *MockInterface) ListKeys(arg0 context.Context, arg1, arg2 string) ([]*armstorage.AccountKey, error) {
+func (m *MockInterface) ListKeys(ctx context.Context, resourceGroupName, accountName string) ([]*armstorage.AccountKey, error) {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "ListKeys", arg0, arg1, arg2)
+	ret := m.ctrl.Call(m, "ListKeys", ctx, resourceGroupName, accountName)
 	ret0, _ := ret[0].([]*armstorage.AccountKey)
 	ret1, _ := ret[1].(error)
 	return ret0, ret1
 }
 
 // ListKeys indicates an expected call of ListKeys.
-func (mr *MockInterfaceMockRecorder) ListKeys(arg0, arg1, arg2 interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) ListKeys(ctx, resourceGroupName, accountName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListKeys", reflect.TypeOf((*MockInterface)(nil).ListKeys), arg0, arg1, arg2)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListKeys", reflect.TypeOf((*MockInterface)(nil).ListKeys), ctx, resourceGroupName, accountName)
 }
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/factory_gen.go b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/factory_gen.go
index 4925c88b6..c1aed81d6 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/factory_gen.go
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/factory_gen.go
@@ -1050,7 +1050,7 @@ func (factory *ClientFactoryImpl) createVirtualNetworkLinkClient(subscription st
 	}
 
 	//add ratelimit policy
-	ratelimitOption := factory.facotryConfig.GetRateLimitConfig("privateDNSZoneGroupRateLimit")
+	ratelimitOption := factory.facotryConfig.GetRateLimitConfig("virtualNetworkRateLimit")
 	rateLimitPolicy := ratelimit.NewRateLimitPolicy(ratelimitOption)
 	if rateLimitPolicy != nil {
 		options.ClientOptions.PerCallPolicies = append(options.ClientOptions.PerCallPolicies, rateLimitPolicy)
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/mock_azclient/interface.go b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/mock_azclient/interface.go
index b14775d8c..763b5b338 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/mock_azclient/interface.go
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/mock_azclient/interface.go
@@ -16,6 +16,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: sigs.k8s.io/cloud-provider-azure/pkg/azclient (interfaces: ClientFactory)
+//
+// Generated by this command:
+//
+//	mockgen -package mock_azclient sigs.k8s.io/cloud-provider-azure/pkg/azclient ClientFactory
+//
 
 // Package mock_azclient is a generated GoMock package.
 package mock_azclient
@@ -23,7 +28,7 @@ package mock_azclient
 import (
 	reflect "reflect"
 
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 
 	accountclient "sigs.k8s.io/cloud-provider-azure/pkg/azclient/accountclient"
 	availabilitysetclient "sigs.k8s.io/cloud-provider-azure/pkg/azclient/availabilitysetclient"
@@ -105,7 +110,7 @@ func (m *MockClientFactory) GetAccountClientForSub(arg0 string) (accountclient.I
 }
 
 // GetAccountClientForSub indicates an expected call of GetAccountClientForSub.
-func (mr *MockClientFactoryMockRecorder) GetAccountClientForSub(arg0 interface{}) *gomock.Call {
+func (mr *MockClientFactoryMockRecorder) GetAccountClientForSub(arg0 any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccountClientForSub", reflect.TypeOf((*MockClientFactory)(nil).GetAccountClientForSub), arg0)
 }
@@ -148,7 +153,7 @@ func (m *MockClientFactory) GetBlobContainerClientForSub(arg0 string) (blobconta
 }
 
 // GetBlobContainerClientForSub indicates an expected call of GetBlobContainerClientForSub.
-func (mr *MockClientFactoryMockRecorder) GetBlobContainerClientForSub(arg0 interface{}) *gomock.Call {
+func (mr *MockClientFactoryMockRecorder) GetBlobContainerClientForSub(arg0 any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBlobContainerClientForSub", reflect.TypeOf((*MockClientFactory)(nil).GetBlobContainerClientForSub), arg0)
 }
@@ -205,7 +210,7 @@ func (m *MockClientFactory) GetDiskClientForSub(arg0 string) (diskclient.Interfa
 }
 
 // GetDiskClientForSub indicates an expected call of GetDiskClientForSub.
-func (mr *MockClientFactoryMockRecorder) GetDiskClientForSub(arg0 interface{}) *gomock.Call {
+func (mr *MockClientFactoryMockRecorder) GetDiskClientForSub(arg0 any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDiskClientForSub", reflect.TypeOf((*MockClientFactory)(nil).GetDiskClientForSub), arg0)
 }
@@ -234,7 +239,7 @@ func (m *MockClientFactory) GetFileShareClientForSub(arg0 string) (fileshareclie
 }
 
 // GetFileShareClientForSub indicates an expected call of GetFileShareClientForSub.
-func (mr *MockClientFactoryMockRecorder) GetFileShareClientForSub(arg0 interface{}) *gomock.Call {
+func (mr *MockClientFactoryMockRecorder) GetFileShareClientForSub(arg0 any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFileShareClientForSub", reflect.TypeOf((*MockClientFactory)(nil).GetFileShareClientForSub), arg0)
 }
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/privatezoneclient/mock_privatezoneclient/interface.go b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/privatezoneclient/mock_privatezoneclient/interface.go
index 7ec1cd8dc..1884c0339 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/privatezoneclient/mock_privatezoneclient/interface.go
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/privatezoneclient/mock_privatezoneclient/interface.go
@@ -15,7 +15,12 @@
 // */
 
 // Code generated by MockGen. DO NOT EDIT.
-// Source: sigs.k8s.io/cloud-provider-azure/pkg/azclient/privatezoneclient (interfaces: Interface)
+// Source: privatezoneclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -package mock_privatezoneclient -source privatezoneclient/interface.go
+//
 
 // Package mock_privatezoneclient is a generated GoMock package.
 package mock_privatezoneclient
@@ -25,7 +30,7 @@ import (
 	reflect "reflect"
 
 	armprivatedns "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 )
 
 // MockInterface is a mock of Interface interface.
@@ -52,31 +57,31 @@ func (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {
 }
 
 // CreateOrUpdate mocks base method.
-func (m *MockInterface) CreateOrUpdate(arg0 context.Context, arg1, arg2 string, arg3 armprivatedns.PrivateZone) (*armprivatedns.PrivateZone, error) {
+func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, resourceName string, resourceParam armprivatedns.PrivateZone) (*armprivatedns.PrivateZone, error) {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "CreateOrUpdate", arg0, arg1, arg2, arg3)
+	ret := m.ctrl.Call(m, "CreateOrUpdate", ctx, resourceGroupName, resourceName, resourceParam)
 	ret0, _ := ret[0].(*armprivatedns.PrivateZone)
 	ret1, _ := ret[1].(error)
 	return ret0, ret1
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, resourceName, resourceParam any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), arg0, arg1, arg2, arg3)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, resourceName, resourceParam)
 }
 
 // Get mocks base method.
-func (m *MockInterface) Get(arg0 context.Context, arg1, arg2 string) (*armprivatedns.PrivateZone, error) {
+func (m *MockInterface) Get(ctx context.Context, resourceGroupName, resourceName string) (*armprivatedns.PrivateZone, error) {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Get", arg0, arg1, arg2)
+	ret := m.ctrl.Call(m, "Get", ctx, resourceGroupName, resourceName)
 	ret0, _ := ret[0].(*armprivatedns.PrivateZone)
 	ret1, _ := ret[1].(error)
 	return ret0, ret1
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(arg0, arg1, arg2 interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, resourceName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), arg0, arg1, arg2)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, resourceName)
 }
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachineclient/interface.go b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachineclient/interface.go
index 03a0a00d7..611a5ef5b 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachineclient/interface.go
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachineclient/interface.go
@@ -20,6 +20,7 @@ package virtualmachineclient
 import (
 	"context"
 
+	"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
 	armcompute "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5"
 
 	"sigs.k8s.io/cloud-provider-azure/pkg/azclient/utils"
@@ -33,4 +34,5 @@ type Interface interface {
 	utils.ListFunc[armcompute.VirtualMachine]
 	InstanceView(ctx context.Context, resourceGroupName string, vmName string) (*armcompute.VirtualMachineInstanceView, error)
 	ListVMInstanceView(ctx context.Context, resourceGroupName string) (result []*armcompute.VirtualMachine, rerr error)
+	BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, vmName string, parameters armcompute.VirtualMachine, options *armcompute.VirtualMachinesClientBeginCreateOrUpdateOptions) (*runtime.Poller[armcompute.VirtualMachinesClientCreateOrUpdateResponse], error)
 }
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachinescalesetvmclient/custom.go b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachinescalesetvmclient/custom.go
index 977037ed2..3fda4fa98 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachinescalesetvmclient/custom.go
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachinescalesetvmclient/custom.go
@@ -29,7 +29,7 @@ import (
 
 // Update updates a VirtualMachine.
 func (client *Client) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters armcompute.VirtualMachineScaleSetVM) (*armcompute.VirtualMachineScaleSetVM, error) {
-	resp, err := client.UpdateAsync(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters).WaitforPollerResp(ctx)
+	resp, err := utils.NewPollerWrapper(client.VirtualMachineScaleSetVMsClient.BeginUpdate(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters, nil)).WaitforPollerResp(ctx)
 	if err != nil {
 		return nil, err
 	}
@@ -39,10 +39,6 @@ func (client *Client) Update(ctx context.Context, resourceGroupName string, VMSc
 	return nil, nil
 }
 
-func (client *Client) UpdateAsync(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters armcompute.VirtualMachineScaleSetVM) *utils.PollerWrapper[armcompute.VirtualMachineScaleSetVMsClientUpdateResponse] {
-	return utils.NewPollerWrapper(client.VirtualMachineScaleSetVMsClient.BeginUpdate(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters, nil))
-}
-
 func UpdateVMsInBatch(ctx context.Context, client *Client, resourceGroupName string, VMScaleSetName string, instances map[string]armcompute.VirtualMachineScaleSetVM, batchSize int) error {
 	if batchSize <= 0 {
 		return errors.New("batchSize should be greater than 0")
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachinescalesetvmclient/interface.go b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachinescalesetvmclient/interface.go
index 655aacee8..7f90ae648 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachinescalesetvmclient/interface.go
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualmachinescalesetvmclient/interface.go
@@ -20,6 +20,7 @@ package virtualmachinescalesetvmclient
 import (
 	"context"
 
+	"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
 	armcompute "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5"
 
 	"sigs.k8s.io/cloud-provider-azure/pkg/azclient/utils"
@@ -35,4 +36,5 @@ type Interface interface {
 	// Update updates a VirtualMachineScaleSetVM.
 	Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters armcompute.VirtualMachineScaleSetVM) (*armcompute.VirtualMachineScaleSetVM, error)
 	GetInstanceView(ctx context.Context, resourceGroupName string, vmScaleSetName string, instanceID string) (*armcompute.VirtualMachineScaleSetVMInstanceView, error)
+	BeginUpdate(ctx context.Context, resourceGroupName string, vmScaleSetName string, instanceID string, parameters armcompute.VirtualMachineScaleSetVM, options *armcompute.VirtualMachineScaleSetVMsClientBeginUpdateOptions) (*runtime.Poller[armcompute.VirtualMachineScaleSetVMsClientUpdateResponse], error)
 }
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualnetworklinkclient/interface.go b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualnetworklinkclient/interface.go
index 29d347767..3f4af5908 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualnetworklinkclient/interface.go
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualnetworklinkclient/interface.go
@@ -23,7 +23,7 @@ import (
 	"sigs.k8s.io/cloud-provider-azure/pkg/azclient/utils"
 )
 
-// +azure:client:verbs=get;createorupdate,resource=PrivateZone,subResource=VirtualNetworkLink,packageName=github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns,packageAlias=armprivatedns,clientName=VirtualNetworkLinksClient,expand=false,rateLimitKey=privateDNSZoneGroupRateLimit
+// +azure:client:verbs=get;createorupdate,resource=PrivateZone,subResource=VirtualNetworkLink,packageName=github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns,packageAlias=armprivatedns,clientName=VirtualNetworkLinksClient,expand=false,rateLimitKey=virtualNetworkRateLimit
 type Interface interface {
 	utils.SubResourceGetFunc[armprivatedns.VirtualNetworkLink]
 	utils.SubResourceCreateOrUpdateFunc[armprivatedns.VirtualNetworkLink]
diff --git a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualnetworklinkclient/mock_virtualnetworklinkclient/interface.go b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualnetworklinkclient/mock_virtualnetworklinkclient/interface.go
index a1c8cbc67..2f31bf271 100644
--- a/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualnetworklinkclient/mock_virtualnetworklinkclient/interface.go
+++ b/vendor/sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualnetworklinkclient/mock_virtualnetworklinkclient/interface.go
@@ -15,7 +15,12 @@
 // */
 
 // Code generated by MockGen. DO NOT EDIT.
-// Source: sigs.k8s.io/cloud-provider-azure/pkg/azclient/virtualnetworklinkclient (interfaces: Interface)
+// Source: virtualnetworklinkclient/interface.go
+//
+// Generated by this command:
+//
+//	mockgen -package mock_virtualnetworklinkclient -source virtualnetworklinkclient/interface.go
+//
 
 // Package mock_virtualnetworklinkclient is a generated GoMock package.
 package mock_virtualnetworklinkclient
@@ -25,7 +30,7 @@ import (
 	reflect "reflect"
 
 	armprivatedns "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns"
-	gomock "github.com/golang/mock/gomock"
+	gomock "go.uber.org/mock/gomock"
 )
 
 // MockInterface is a mock of Interface interface.
@@ -52,31 +57,31 @@ func (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {
 }
 
 // CreateOrUpdate mocks base method.
-func (m *MockInterface) CreateOrUpdate(arg0 context.Context, arg1, arg2, arg3 string, arg4 armprivatedns.VirtualNetworkLink) (*armprivatedns.VirtualNetworkLink, error) {
+func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, parentResourceName, resourceName string, resourceParam armprivatedns.VirtualNetworkLink) (*armprivatedns.VirtualNetworkLink, error) {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "CreateOrUpdate", arg0, arg1, arg2, arg3, arg4)
+	ret := m.ctrl.Call(m, "CreateOrUpdate", ctx, resourceGroupName, parentResourceName, resourceName, resourceParam)
 	ret0, _ := ret[0].(*armprivatedns.VirtualNetworkLink)
 	ret1, _ := ret[1].(error)
 	return ret0, ret1
 }
 
 // CreateOrUpdate indicates an expected call of CreateOrUpdate.
-func (mr *MockInterfaceMockRecorder) CreateOrUpdate(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, parentResourceName, resourceName, resourceParam any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), arg0, arg1, arg2, arg3, arg4)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, parentResourceName, resourceName, resourceParam)
 }
 
 // Get mocks base method.
-func (m *MockInterface) Get(arg0 context.Context, arg1, arg2, arg3 string) (*armprivatedns.VirtualNetworkLink, error) {
+func (m *MockInterface) Get(ctx context.Context, resourceGroupName, parentResourceName, resourceName string) (*armprivatedns.VirtualNetworkLink, error) {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Get", arg0, arg1, arg2, arg3)
+	ret := m.ctrl.Call(m, "Get", ctx, resourceGroupName, parentResourceName, resourceName)
 	ret0, _ := ret[0].(*armprivatedns.VirtualNetworkLink)
 	ret1, _ := ret[1].(error)
 	return ret0, ret1
 }
 
 // Get indicates an expected call of Get.
-func (mr *MockInterfaceMockRecorder) Get(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
+func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, parentResourceName, resourceName any) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), arg0, arg1, arg2, arg3)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, parentResourceName, resourceName)
 }


Test patch:
diff --git a/pkg/azureclients/blobclient/azure_blobclient_test.go b/pkg/azureclients/blobclient/azure_blobclient_test.go
index 5648fb4dd..aad6defbd 100644
--- a/pkg/azureclients/blobclient/azure_blobclient_test.go
+++ b/pkg/azureclients/blobclient/azure_blobclient_test.go
@@ -27,8 +27,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-09-01/storage"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	azclients "sigs.k8s.io/cloud-provider-azure/pkg/azureclients"
 	"sigs.k8s.io/cloud-provider-azure/pkg/azureclients/armclient"
diff --git a/pkg/azureclients/containerserviceclient/azure_containerserviceclient_test.go b/pkg/azureclients/containerserviceclient/azure_containerserviceclient_test.go
index a966948ad..cb91680d4 100644
--- a/pkg/azureclients/containerserviceclient/azure_containerserviceclient_test.go
+++ b/pkg/azureclients/containerserviceclient/azure_containerserviceclient_test.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2021-10-01/containerservice"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/deploymentclient/azure_deploymentclient_test.go b/pkg/azureclients/deploymentclient/azure_deploymentclient_test.go
index e7bdb6061..81833fb07 100644
--- a/pkg/azureclients/deploymentclient/azure_deploymentclient_test.go
+++ b/pkg/azureclients/deploymentclient/azure_deploymentclient_test.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/diskclient/azure_diskclient_test.go b/pkg/azureclients/diskclient/azure_diskclient_test.go
index 2000b45fe..cfe05656e 100644
--- a/pkg/azureclients/diskclient/azure_diskclient_test.go
+++ b/pkg/azureclients/diskclient/azure_diskclient_test.go
@@ -27,8 +27,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/pointer"
 
 	azclients "sigs.k8s.io/cloud-provider-azure/pkg/azureclients"
diff --git a/pkg/azureclients/interfaceclient/azure_interfaceclient_test.go b/pkg/azureclients/interfaceclient/azure_interfaceclient_test.go
index 43d9a1963..567179959 100644
--- a/pkg/azureclients/interfaceclient/azure_interfaceclient_test.go
+++ b/pkg/azureclients/interfaceclient/azure_interfaceclient_test.go
@@ -27,8 +27,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/pointer"
 
 	azclients "sigs.k8s.io/cloud-provider-azure/pkg/azureclients"
diff --git a/pkg/azureclients/loadbalancerclient/azure_loadbalancerclient_test.go b/pkg/azureclients/loadbalancerclient/azure_loadbalancerclient_test.go
index c33331a2e..536aec2f2 100644
--- a/pkg/azureclients/loadbalancerclient/azure_loadbalancerclient_test.go
+++ b/pkg/azureclients/loadbalancerclient/azure_loadbalancerclient_test.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/pointer"
 
 	azclients "sigs.k8s.io/cloud-provider-azure/pkg/azureclients"
diff --git a/pkg/azureclients/privatednsclient/azure_privatednsclient_test.go b/pkg/azureclients/privatednsclient/azure_privatednsclient_test.go
index 57189996f..69c0ea588 100644
--- a/pkg/azureclients/privatednsclient/azure_privatednsclient_test.go
+++ b/pkg/azureclients/privatednsclient/azure_privatednsclient_test.go
@@ -28,8 +28,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/privatedns/mgmt/2018-09-01/privatedns"
 	"github.com/Azure/go-autorest/autorest"
 
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
 
diff --git a/pkg/azureclients/privatednszonegroupclient/azure_privatednszonegroupclient_test.go b/pkg/azureclients/privatednszonegroupclient/azure_privatednszonegroupclient_test.go
index 8c14c9db8..2bcc027b7 100644
--- a/pkg/azureclients/privatednszonegroupclient/azure_privatednszonegroupclient_test.go
+++ b/pkg/azureclients/privatednszonegroupclient/azure_privatednszonegroupclient_test.go
@@ -28,8 +28,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/go-autorest/autorest"
 
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
 
diff --git a/pkg/azureclients/privateendpointclient/azure_privateendpointclient_test.go b/pkg/azureclients/privateendpointclient/azure_privateendpointclient_test.go
index 37bcee368..733b47016 100644
--- a/pkg/azureclients/privateendpointclient/azure_privateendpointclient_test.go
+++ b/pkg/azureclients/privateendpointclient/azure_privateendpointclient_test.go
@@ -29,8 +29,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/go-autorest/autorest"
 	"github.com/Azure/go-autorest/autorest/azure"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/pointer"
 
 	azclients "sigs.k8s.io/cloud-provider-azure/pkg/azureclients"
diff --git a/pkg/azureclients/privatelinkserviceclient/azure_privatelinkserviceclient_test.go b/pkg/azureclients/privatelinkserviceclient/azure_privatelinkserviceclient_test.go
index 1bffd6617..6727fe86a 100644
--- a/pkg/azureclients/privatelinkserviceclient/azure_privatelinkserviceclient_test.go
+++ b/pkg/azureclients/privatelinkserviceclient/azure_privatelinkserviceclient_test.go
@@ -29,8 +29,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/pointer"
 
 	azclients "sigs.k8s.io/cloud-provider-azure/pkg/azureclients"
diff --git a/pkg/azureclients/publicipclient/azure_publicipclient_test.go b/pkg/azureclients/publicipclient/azure_publicipclient_test.go
index 7102f8a98..5646d4f67 100644
--- a/pkg/azureclients/publicipclient/azure_publicipclient_test.go
+++ b/pkg/azureclients/publicipclient/azure_publicipclient_test.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/routeclient/azure_routeclient_test.go b/pkg/azureclients/routeclient/azure_routeclient_test.go
index 60a280bb4..9c2862aec 100644
--- a/pkg/azureclients/routeclient/azure_routeclient_test.go
+++ b/pkg/azureclients/routeclient/azure_routeclient_test.go
@@ -26,8 +26,8 @@ import (
 	"time"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/routetableclient/azure_routetableclient_test.go b/pkg/azureclients/routetableclient/azure_routetableclient_test.go
index ee86717d8..557afc5d4 100644
--- a/pkg/azureclients/routetableclient/azure_routetableclient_test.go
+++ b/pkg/azureclients/routetableclient/azure_routetableclient_test.go
@@ -27,8 +27,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/securitygroupclient/azure_securitygroupclient_test.go b/pkg/azureclients/securitygroupclient/azure_securitygroupclient_test.go
index a2a262654..1abaf2c96 100644
--- a/pkg/azureclients/securitygroupclient/azure_securitygroupclient_test.go
+++ b/pkg/azureclients/securitygroupclient/azure_securitygroupclient_test.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/snapshotclient/azure_snapshotclient_test.go b/pkg/azureclients/snapshotclient/azure_snapshotclient_test.go
index e4a42f8ec..6a4e1dc01 100644
--- a/pkg/azureclients/snapshotclient/azure_snapshotclient_test.go
+++ b/pkg/azureclients/snapshotclient/azure_snapshotclient_test.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
 
diff --git a/pkg/azureclients/storageaccountclient/azure_storageaccountclient_test.go b/pkg/azureclients/storageaccountclient/azure_storageaccountclient_test.go
index 6350533ee..e50c159d8 100644
--- a/pkg/azureclients/storageaccountclient/azure_storageaccountclient_test.go
+++ b/pkg/azureclients/storageaccountclient/azure_storageaccountclient_test.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-09-01/storage"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/subnetclient/azure_subnetclient_test.go b/pkg/azureclients/subnetclient/azure_subnetclient_test.go
index 0a2871c2e..0e282609d 100644
--- a/pkg/azureclients/subnetclient/azure_subnetclient_test.go
+++ b/pkg/azureclients/subnetclient/azure_subnetclient_test.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/virtualnetworklinksclient/azure_virtualnetworklinksclient_test.go b/pkg/azureclients/virtualnetworklinksclient/azure_virtualnetworklinksclient_test.go
index 26ef930fa..f24e840c8 100644
--- a/pkg/azureclients/virtualnetworklinksclient/azure_virtualnetworklinksclient_test.go
+++ b/pkg/azureclients/virtualnetworklinksclient/azure_virtualnetworklinksclient_test.go
@@ -29,8 +29,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/privatedns/mgmt/2018-09-01/privatedns"
 	"github.com/Azure/go-autorest/autorest"
 	"github.com/Azure/go-autorest/autorest/azure"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/pointer"
 
 	azclients "sigs.k8s.io/cloud-provider-azure/pkg/azureclients"
diff --git a/pkg/azureclients/vmasclient/azure_vmasclient_test.go b/pkg/azureclients/vmasclient/azure_vmasclient_test.go
index d472b729e..208e3e37d 100644
--- a/pkg/azureclients/vmasclient/azure_vmasclient_test.go
+++ b/pkg/azureclients/vmasclient/azure_vmasclient_test.go
@@ -29,8 +29,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/vmclient/azure_vmclient_test.go b/pkg/azureclients/vmclient/azure_vmclient_test.go
index 15c518a9e..1fcae94c5 100644
--- a/pkg/azureclients/vmclient/azure_vmclient_test.go
+++ b/pkg/azureclients/vmclient/azure_vmclient_test.go
@@ -30,8 +30,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest"
 	"github.com/Azure/go-autorest/autorest/azure"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/vmsizeclient/azure_vmsizeclient_test.go b/pkg/azureclients/vmsizeclient/azure_vmsizeclient_test.go
index f95caa748..72c581b07 100644
--- a/pkg/azureclients/vmsizeclient/azure_vmsizeclient_test.go
+++ b/pkg/azureclients/vmsizeclient/azure_vmsizeclient_test.go
@@ -28,8 +28,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/vmssclient/azure_vmssclient_test.go b/pkg/azureclients/vmssclient/azure_vmssclient_test.go
index 2921133b3..db3250f45 100644
--- a/pkg/azureclients/vmssclient/azure_vmssclient_test.go
+++ b/pkg/azureclients/vmssclient/azure_vmssclient_test.go
@@ -30,8 +30,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest"
 	"github.com/Azure/go-autorest/autorest/azure"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/vmssvmclient/azure_vmssvmclient_test.go b/pkg/azureclients/vmssvmclient/azure_vmssvmclient_test.go
index 8b305eb44..85729fa20 100644
--- a/pkg/azureclients/vmssvmclient/azure_vmssvmclient_test.go
+++ b/pkg/azureclients/vmssvmclient/azure_vmssvmclient_test.go
@@ -30,8 +30,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest"
 	"github.com/Azure/go-autorest/autorest/azure"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/client-go/util/flowcontrol"
 	"k8s.io/utils/pointer"
diff --git a/pkg/azureclients/zoneclient/azure_zoneclient_test.go b/pkg/azureclients/zoneclient/azure_zoneclient_test.go
index a80887398..03b5d2fde 100644
--- a/pkg/azureclients/zoneclient/azure_zoneclient_test.go
+++ b/pkg/azureclients/zoneclient/azure_zoneclient_test.go
@@ -23,8 +23,8 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	azclients "sigs.k8s.io/cloud-provider-azure/pkg/azureclients"
 	"sigs.k8s.io/cloud-provider-azure/pkg/azureclients/armclient"
diff --git a/pkg/nodeipam/ipam/cloud_cidr_allocator_test.go b/pkg/nodeipam/ipam/cloud_cidr_allocator_test.go
index e427cca1f..a4c06ea9b 100644
--- a/pkg/nodeipam/ipam/cloud_cidr_allocator_test.go
+++ b/pkg/nodeipam/ipam/cloud_cidr_allocator_test.go
@@ -23,8 +23,8 @@ import (
 	"time"
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/nodemanager/nodemanager_test.go b/pkg/nodemanager/nodemanager_test.go
index 035d58bbe..84e3da049 100644
--- a/pkg/nodemanager/nodemanager_test.go
+++ b/pkg/nodemanager/nodemanager_test.go
@@ -23,8 +23,8 @@ import (
 	"testing"
 	"time"
 
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/provider/azure_backoff_test.go b/pkg/provider/azure_backoff_test.go
index ec1460263..c69ea1c1a 100644
--- a/pkg/provider/azure_backoff_test.go
+++ b/pkg/provider/azure_backoff_test.go
@@ -21,8 +21,8 @@ import (
 
 	"k8s.io/apimachinery/pkg/util/wait"
 
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 )
 
 func TestRequestBackoff(t *testing.T) {
diff --git a/pkg/provider/azure_controller_common_test.go b/pkg/provider/azure_controller_common_test.go
index 1fbeb562e..f4064a7f8 100644
--- a/pkg/provider/azure_controller_common_test.go
+++ b/pkg/provider/azure_controller_common_test.go
@@ -31,8 +31,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest/azure"
 	autorestmocks "github.com/Azure/go-autorest/autorest/mocks"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/apimachinery/pkg/types"
 	"k8s.io/apimachinery/pkg/util/wait"
diff --git a/pkg/provider/azure_controller_standard_test.go b/pkg/provider/azure_controller_standard_test.go
index b56f10f60..edbd9b6cf 100644
--- a/pkg/provider/azure_controller_standard_test.go
+++ b/pkg/provider/azure_controller_standard_test.go
@@ -25,8 +25,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest/azure"
 	autorestmocks "github.com/Azure/go-autorest/autorest/mocks"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/apimachinery/pkg/types"
 	cloudprovider "k8s.io/cloud-provider"
diff --git a/pkg/provider/azure_controller_vmss_test.go b/pkg/provider/azure_controller_vmss_test.go
index 5c803680f..96dbc3c30 100644
--- a/pkg/provider/azure_controller_vmss_test.go
+++ b/pkg/provider/azure_controller_vmss_test.go
@@ -25,8 +25,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest/azure"
 	autorestmocks "github.com/Azure/go-autorest/autorest/mocks"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/apimachinery/pkg/types"
 	cloudprovider "k8s.io/cloud-provider"
diff --git a/pkg/provider/azure_controller_vmssflex_test.go b/pkg/provider/azure_controller_vmssflex_test.go
index 56461188d..49a898bf9 100644
--- a/pkg/provider/azure_controller_vmssflex_test.go
+++ b/pkg/provider/azure_controller_vmssflex_test.go
@@ -24,8 +24,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/go-autorest/autorest/azure"
 	autorestmocks "github.com/Azure/go-autorest/autorest/mocks"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/apimachinery/pkg/types"
 	cloudprovider "k8s.io/cloud-provider"
 	"k8s.io/utils/pointer"
diff --git a/pkg/provider/azure_instances_test.go b/pkg/provider/azure_instances_test.go
index 8ec751ca3..617c8ec8a 100644
--- a/pkg/provider/azure_instances_test.go
+++ b/pkg/provider/azure_instances_test.go
@@ -29,8 +29,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/provider/azure_interface_repo_test.go b/pkg/provider/azure_interface_repo_test.go
index 0df52cde5..9108eb0f3 100644
--- a/pkg/provider/azure_interface_repo_test.go
+++ b/pkg/provider/azure_interface_repo_test.go
@@ -22,8 +22,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	v1 "k8s.io/api/core/v1"
 	"k8s.io/utils/pointer"
 
diff --git a/pkg/provider/azure_loadbalancer_accesscontrol_test.go b/pkg/provider/azure_loadbalancer_accesscontrol_test.go
index 8596dbcba..3a21a23aa 100644
--- a/pkg/provider/azure_loadbalancer_accesscontrol_test.go
+++ b/pkg/provider/azure_loadbalancer_accesscontrol_test.go
@@ -24,8 +24,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/ptr"
 
 	"sigs.k8s.io/cloud-provider-azure/pkg/azureclients/loadbalancerclient/mockloadbalancerclient"
diff --git a/pkg/provider/azure_loadbalancer_backendpool_test.go b/pkg/provider/azure_loadbalancer_backendpool_test.go
index bc9e9033a..98ebab754 100644
--- a/pkg/provider/azure_loadbalancer_backendpool_test.go
+++ b/pkg/provider/azure_loadbalancer_backendpool_test.go
@@ -23,8 +23,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/provider/azure_loadbalancer_healthprobe_test.go b/pkg/provider/azure_loadbalancer_healthprobe_test.go
index adb1402b3..b5214d865 100644
--- a/pkg/provider/azure_loadbalancer_healthprobe_test.go
+++ b/pkg/provider/azure_loadbalancer_healthprobe_test.go
@@ -25,8 +25,8 @@ import (
 	"k8s.io/apimachinery/pkg/types"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	"k8s.io/utils/pointer"
diff --git a/pkg/provider/azure_loadbalancer_repo_test.go b/pkg/provider/azure_loadbalancer_repo_test.go
index bfe129e37..682829028 100644
--- a/pkg/provider/azure_loadbalancer_repo_test.go
+++ b/pkg/provider/azure_loadbalancer_repo_test.go
@@ -23,8 +23,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	v1 "k8s.io/api/core/v1"
 	"k8s.io/utils/pointer"
 
diff --git a/pkg/provider/azure_loadbalancer_test.go b/pkg/provider/azure_loadbalancer_test.go
index adb7b76e1..480c5051f 100644
--- a/pkg/provider/azure_loadbalancer_test.go
+++ b/pkg/provider/azure_loadbalancer_test.go
@@ -30,8 +30,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"golang.org/x/text/cases"
 	"golang.org/x/text/language"
diff --git a/pkg/provider/azure_local_services_test.go b/pkg/provider/azure_local_services_test.go
index a32ed6dba..fdd44cbe1 100644
--- a/pkg/provider/azure_local_services_test.go
+++ b/pkg/provider/azure_local_services_test.go
@@ -26,8 +26,8 @@ import (
 	"time"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	discovery_v1 "k8s.io/api/discovery/v1"
diff --git a/pkg/provider/azure_managedDiskController_test.go b/pkg/provider/azure_managedDiskController_test.go
index 8a519806f..5d2cf47f5 100644
--- a/pkg/provider/azure_managedDiskController_test.go
+++ b/pkg/provider/azure_managedDiskController_test.go
@@ -23,8 +23,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/resource"
diff --git a/pkg/provider/azure_privatelinkservice_repo_test.go b/pkg/provider/azure_privatelinkservice_repo_test.go
index 20b7a5471..d8336331b 100644
--- a/pkg/provider/azure_privatelinkservice_repo_test.go
+++ b/pkg/provider/azure_privatelinkservice_repo_test.go
@@ -22,8 +22,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	v1 "k8s.io/api/core/v1"
 	"k8s.io/utils/pointer"
 
diff --git a/pkg/provider/azure_privatelinkservice_test.go b/pkg/provider/azure_privatelinkservice_test.go
index 638a7323c..a4f0a6990 100644
--- a/pkg/provider/azure_privatelinkservice_test.go
+++ b/pkg/provider/azure_privatelinkservice_test.go
@@ -22,8 +22,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/provider/azure_publicip_repo_test.go b/pkg/provider/azure_publicip_repo_test.go
index 8501ef869..c8f3012b6 100644
--- a/pkg/provider/azure_publicip_repo_test.go
+++ b/pkg/provider/azure_publicip_repo_test.go
@@ -24,8 +24,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	v1 "k8s.io/api/core/v1"
 	"k8s.io/utils/pointer"
 
diff --git a/pkg/provider/azure_routes_test.go b/pkg/provider/azure_routes_test.go
index 1c7f6e2b4..ddc2f1e91 100644
--- a/pkg/provider/azure_routes_test.go
+++ b/pkg/provider/azure_routes_test.go
@@ -25,8 +25,8 @@ import (
 	"time"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/apimachinery/pkg/types"
 	"k8s.io/apimachinery/pkg/util/sets"
diff --git a/pkg/provider/azure_routetable_repo_test.go b/pkg/provider/azure_routetable_repo_test.go
index 2251a530b..1cb27761a 100644
--- a/pkg/provider/azure_routetable_repo_test.go
+++ b/pkg/provider/azure_routetable_repo_test.go
@@ -22,8 +22,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/pointer"
 
 	"sigs.k8s.io/cloud-provider-azure/pkg/azureclients/routetableclient/mockroutetableclient"
diff --git a/pkg/provider/azure_securitygroup_repo_test.go b/pkg/provider/azure_securitygroup_repo_test.go
index 86a4340dd..7f42e440d 100644
--- a/pkg/provider/azure_securitygroup_repo_test.go
+++ b/pkg/provider/azure_securitygroup_repo_test.go
@@ -21,8 +21,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/pointer"
 
 	"sigs.k8s.io/cloud-provider-azure/pkg/azureclients/securitygroupclient/mocksecuritygroupclient"
diff --git a/pkg/provider/azure_standard_test.go b/pkg/provider/azure_standard_test.go
index 1f298d470..83452b30c 100644
--- a/pkg/provider/azure_standard_test.go
+++ b/pkg/provider/azure_standard_test.go
@@ -25,8 +25,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	meta "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/provider/azure_storage_test.go b/pkg/provider/azure_storage_test.go
index c42a65fa0..0e7b86b69 100644
--- a/pkg/provider/azure_storage_test.go
+++ b/pkg/provider/azure_storage_test.go
@@ -21,7 +21,7 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-09-01/storage"
-	"github.com/golang/mock/gomock"
+	"go.uber.org/mock/gomock"
 
 	"sigs.k8s.io/cloud-provider-azure/pkg/azureclients/blobclient/mockblobclient"
 	"sigs.k8s.io/cloud-provider-azure/pkg/azureclients/fileclient"
diff --git a/pkg/provider/azure_storageaccount_test.go b/pkg/provider/azure_storageaccount_test.go
index 64bce75e1..a6d2ac83d 100644
--- a/pkg/provider/azure_storageaccount_test.go
+++ b/pkg/provider/azure_storageaccount_test.go
@@ -28,8 +28,8 @@ import (
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
 	"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-09-01/storage"
 	"github.com/Azure/go-autorest/autorest/date"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/utils/pointer"
 
 	"sigs.k8s.io/cloud-provider-azure/pkg/azclient/mock_azclient"
diff --git a/pkg/provider/azure_test.go b/pkg/provider/azure_test.go
index 239b54d5a..e7ed602be 100644
--- a/pkg/provider/azure_test.go
+++ b/pkg/provider/azure_test.go
@@ -29,8 +29,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/provider/azure_utils_test.go b/pkg/provider/azure_utils_test.go
index aa04899a6..2960b7c2b 100644
--- a/pkg/provider/azure_utils_test.go
+++ b/pkg/provider/azure_utils_test.go
@@ -22,8 +22,8 @@ import (
 	"time"
 
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/provider/azure_vmss_cache_test.go b/pkg/provider/azure_vmss_cache_test.go
index 2eba05ccd..c11393704 100644
--- a/pkg/provider/azure_vmss_cache_test.go
+++ b/pkg/provider/azure_vmss_cache_test.go
@@ -25,8 +25,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	cloudprovider "k8s.io/cloud-provider"
 	"k8s.io/utils/pointer"
diff --git a/pkg/provider/azure_vmss_repo_test.go b/pkg/provider/azure_vmss_repo_test.go
index 71a9774de..f7802d49b 100644
--- a/pkg/provider/azure_vmss_repo_test.go
+++ b/pkg/provider/azure_vmss_repo_test.go
@@ -23,8 +23,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	"k8s.io/apimachinery/pkg/util/wait"
 	cloudprovider "k8s.io/cloud-provider"
 	"k8s.io/utils/pointer"
diff --git a/pkg/provider/azure_vmss_test.go b/pkg/provider/azure_vmss_test.go
index 0ab998511..d3ed025d7 100644
--- a/pkg/provider/azure_vmss_test.go
+++ b/pkg/provider/azure_vmss_test.go
@@ -24,8 +24,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/provider/azure_vmssflex_cache_test.go b/pkg/provider/azure_vmssflex_cache_test.go
index 260c7afb6..e06e868c3 100644
--- a/pkg/provider/azure_vmssflex_cache_test.go
+++ b/pkg/provider/azure_vmssflex_cache_test.go
@@ -22,8 +22,8 @@ import (
 	"testing"
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	cloudprovider "k8s.io/cloud-provider"
 	"k8s.io/utils/pointer"
diff --git a/pkg/provider/azure_vmssflex_test.go b/pkg/provider/azure_vmssflex_test.go
index 35b613c9d..e5005d47e 100644
--- a/pkg/provider/azure_vmssflex_test.go
+++ b/pkg/provider/azure_vmssflex_test.go
@@ -23,8 +23,8 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/types"
diff --git a/pkg/provider/azure_wrap_test.go b/pkg/provider/azure_wrap_test.go
index cff88e5b3..e8971ae37 100644
--- a/pkg/provider/azure_wrap_test.go
+++ b/pkg/provider/azure_wrap_test.go
@@ -21,8 +21,8 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/apimachinery/pkg/util/sets"
 
diff --git a/pkg/provider/azure_zones_test.go b/pkg/provider/azure_zones_test.go
index 7be6ecf2b..bc42f5315 100644
--- a/pkg/provider/azure_zones_test.go
+++ b/pkg/provider/azure_zones_test.go
@@ -27,8 +27,8 @@ import (
 	"sigs.k8s.io/cloud-provider-azure/pkg/azureclients/zoneclient/mockzoneclient"
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-08-01/compute"
-	"github.com/golang/mock/gomock"
 	"github.com/stretchr/testify/assert"
+	"go.uber.org/mock/gomock"
 
 	"k8s.io/apimachinery/pkg/util/sets"
 	cloudprovider "k8s.io/cloud-provider"
diff --git a/pkg/provider/storage/storage_account_test.go b/pkg/provider/storage/storage_account_test.go
index 9bdbebe02..ccc620876 100644
--- a/pkg/provider/storage/storage_account_test.go
+++ b/pkg/provider/storage/storage_account_test.go
@@ -23,7 +23,7 @@ import (
 	"time"
 
 	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage"
-	"github.com/golang/mock/gomock"
+	"go.uber.org/mock/gomock"
 
 	"sigs.k8s.io/cloud-provider-azure/pkg/azclient/accountclient/mock_accountclient"
 	"sigs.k8s.io/cloud-provider-azure/pkg/provider/storage"