diff --git a/azure/interfaces.go b/azure/interfaces.go index 12ce4232445..ab866a26afb 100644 --- a/azure/interfaces.go +++ b/azure/interfaces.go @@ -19,6 +19,7 @@ package azure import ( "context" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" "github.com/Azure/go-autorest/autorest" infrav1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -44,6 +45,7 @@ type ServiceReconciler interface { } // Authorizer is an interface which can get the subscription ID, base URI, and authorizer for an Azure service. +// The Authorizer field is used by SDKv1 services while the Token is used by SDKv2 services. type Authorizer interface { SubscriptionID() string ClientID() string @@ -53,6 +55,7 @@ type Authorizer interface { BaseURI() string Authorizer() autorest.Authorizer HashKey() string + Token() azcore.TokenCredential } // NetworkDescriber is an interface which can get common Azure Cluster Networking information. diff --git a/azure/mock_azure/azure_mock.go b/azure/mock_azure/azure_mock.go index a7986745c3e..cd6c9c5c37b 100644 --- a/azure/mock_azure/azure_mock.go +++ b/azure/mock_azure/azure_mock.go @@ -24,6 +24,7 @@ import ( context "context" reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" genruntime "github.com/Azure/azure-service-operator/v2/pkg/genruntime" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" @@ -334,6 +335,20 @@ func (mr *MockAuthorizerMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockAuthorizer)(nil).TenantID)) } +// Token mocks base method. +func (m *MockAuthorizer) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockAuthorizerMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockAuthorizer)(nil).Token)) +} + // MockNetworkDescriber is a mock of NetworkDescriber interface. type MockNetworkDescriber struct { ctrl *gomock.Controller @@ -854,6 +869,20 @@ func (mr *MockClusterDescriberMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockClusterDescriber)(nil).TenantID)) } +// Token mocks base method. +func (m *MockClusterDescriber) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockClusterDescriberMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockClusterDescriber)(nil).Token)) +} + // MockAsyncStatusUpdater is a mock of AsyncStatusUpdater interface. type MockAsyncStatusUpdater struct { ctrl *gomock.Controller @@ -1434,6 +1463,20 @@ func (mr *MockClusterScoperMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockClusterScoper)(nil).TenantID)) } +// Token mocks base method. +func (m *MockClusterScoper) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockClusterScoperMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockClusterScoper)(nil).Token)) +} + // Vnet mocks base method. func (m *MockClusterScoper) Vnet() *v1beta1.VnetSpec { m.ctrl.T.Helper() @@ -1737,6 +1780,20 @@ func (mr *MockManagedClusterScoperMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockManagedClusterScoper)(nil).TenantID)) } +// Token mocks base method. +func (m *MockManagedClusterScoper) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockManagedClusterScoperMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockManagedClusterScoper)(nil).Token)) +} + // MockResourceSpecGetter is a mock of ResourceSpecGetter interface. type MockResourceSpecGetter struct { ctrl *gomock.Controller diff --git a/azure/scope/clients.go b/azure/scope/clients.go index 09c75f4ea49..6e4dc000765 100644 --- a/azure/scope/clients.go +++ b/azure/scope/clients.go @@ -24,6 +24,7 @@ import ( "os" "strings" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/go-autorest/autorest" azureautorest "github.com/Azure/go-autorest/autorest/azure" "github.com/Azure/go-autorest/autorest/azure/auth" @@ -35,6 +36,7 @@ type AzureClients struct { auth.EnvironmentSettings Authorizer autorest.Authorizer + TokenCredential azcore.TokenCredential ResourceManagerEndpoint string ResourceManagerVMDNSSuffix string } @@ -65,6 +67,11 @@ func (c *AzureClients) SubscriptionID() string { return c.Values[auth.SubscriptionID] } +// Token returns the Azure token credential of the cluster used for SDKv2 services. +func (c *AzureClients) Token() azcore.TokenCredential { + return c.TokenCredential +} + // HashKey returns a base64 url encoded sha256 hash for the Auth scope (Azure TenantID + CloudEnv + SubscriptionID + // ClientID). func (c *AzureClients) HashKey() string { @@ -133,7 +140,12 @@ func (c *AzureClients) setCredentialsWithProvider(ctx context.Context, subscript } c.Values[auth.ClientSecret] = strings.TrimSuffix(clientSecret, "\n") - c.Authorizer, err = credentialsProvider.GetAuthorizer(ctx, c.ResourceManagerEndpoint, c.Environment.ActiveDirectoryEndpoint, c.Environment.TokenAudience) + tokenCredential, err := credentialsProvider.GetTokenCredential(ctx, c.ResourceManagerEndpoint, c.Environment.ActiveDirectoryEndpoint, c.Environment.TokenAudience) + if err != nil { + return err + } + c.TokenCredential = tokenCredential + c.Authorizer, err = credentialsProvider.GetAuthorizer(ctx, tokenCredential, c.Environment.TokenAudience) return err } diff --git a/azure/scope/cluster.go b/azure/scope/cluster.go index 74803a417d1..a6e42b401b1 100644 --- a/azure/scope/cluster.go +++ b/azure/scope/cluster.go @@ -131,7 +131,7 @@ func (s *ClusterScope) BaseURI() string { return s.ResourceManagerEndpoint } -// Authorizer returns the Azure client Authorizer. +// Authorizer returns the Azure client Authorizer which is used for SDKv1 services. func (s *ClusterScope) Authorizer() autorest.Authorizer { return s.AzureClients.Authorizer } diff --git a/azure/scope/identity.go b/azure/scope/identity.go index 773b84c1d1a..8b130afe329 100644 --- a/azure/scope/identity.go +++ b/azure/scope/identity.go @@ -47,10 +47,11 @@ const AzureSecretKey = "clientSecret" // CredentialsProvider defines the behavior for azure identity based credential providers. type CredentialsProvider interface { - GetAuthorizer(ctx context.Context, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience string) (autorest.Authorizer, error) + GetAuthorizer(ctx context.Context, tokenCredential azcore.TokenCredential, tokenAudience string) (autorest.Authorizer, error) GetClientID() string GetClientSecret(ctx context.Context) (string, error) GetTenantID() string + GetTokenCredential(ctx context.Context, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience string) (azcore.TokenCredential, error) } // AzureCredentialsProvider represents a credential provider with azure cluster identity. @@ -102,8 +103,13 @@ func NewAzureClusterCredentialsProvider(ctx context.Context, kubeClient client.C } // GetAuthorizer returns an Azure authorizer based on the provided azure identity. It delegates to AzureCredentialsProvider with AzureCluster metadata. -func (p *AzureClusterCredentialsProvider) GetAuthorizer(ctx context.Context, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience string) (autorest.Authorizer, error) { - return p.AzureCredentialsProvider.GetAuthorizer(ctx, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience, p.AzureCluster.ObjectMeta) +func (p *AzureClusterCredentialsProvider) GetAuthorizer(ctx context.Context, tokenCredential azcore.TokenCredential, tokenAudience string) (autorest.Authorizer, error) { + return p.AzureCredentialsProvider.GetAuthorizer(ctx, tokenCredential, tokenAudience) +} + +// GetTokenCredential returns an Azure TokenCredential based on the provided azure identity. +func (p *AzureClusterCredentialsProvider) GetTokenCredential(ctx context.Context, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience string) (azcore.TokenCredential, error) { + return p.AzureCredentialsProvider.GetTokenCredential(ctx, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience, p.AzureCluster.ObjectMeta) } // NewManagedControlPlaneCredentialsProvider creates a new ManagedControlPlaneCredentialsProvider from the supplied inputs. @@ -134,14 +140,20 @@ func NewManagedControlPlaneCredentialsProvider(ctx context.Context, kubeClient c } // GetAuthorizer returns an Azure authorizer based on the provided azure identity. It delegates to AzureCredentialsProvider with AzureManagedControlPlane metadata. -func (p *ManagedControlPlaneCredentialsProvider) GetAuthorizer(ctx context.Context, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience string) (autorest.Authorizer, error) { - return p.AzureCredentialsProvider.GetAuthorizer(ctx, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience, p.AzureManagedControlPlane.ObjectMeta) +func (p *ManagedControlPlaneCredentialsProvider) GetAuthorizer(ctx context.Context, tokenCredential azcore.TokenCredential, tokenAudience string) (autorest.Authorizer, error) { + return p.AzureCredentialsProvider.GetAuthorizer(ctx, tokenCredential, tokenAudience) +} + +// GetTokenCredential returns an Azure TokenCredential based on the provided azure identity. +func (p *ManagedControlPlaneCredentialsProvider) GetTokenCredential(ctx context.Context, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience string) (azcore.TokenCredential, error) { + return p.AzureCredentialsProvider.GetTokenCredential(ctx, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience, p.AzureManagedControlPlane.ObjectMeta) } -// GetAuthorizer returns an Azure authorizer based on the provided azure identity and cluster metadata. -func (p *AzureCredentialsProvider) GetAuthorizer(ctx context.Context, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience string, clusterMeta metav1.ObjectMeta) (autorest.Authorizer, error) { +// GetTokenCredential returns an Azure TokenCredential based on the provided azure identity. +func (p *AzureCredentialsProvider) GetTokenCredential(ctx context.Context, resourceManagerEndpoint, activeDirectoryEndpoint, tokenAudience string, clusterMeta metav1.ObjectMeta) (azcore.TokenCredential, error) { var authErr error var cred azcore.TokenCredential + switch p.Identity.Spec.Type { case infrav1.WorkloadIdentity: azwiCredOptions, err := NewWorkloadIdentityCredentialOptions(). @@ -191,6 +203,12 @@ func (p *AzureCredentialsProvider) GetAuthorizer(ctx context.Context, resourceMa if authErr != nil { return nil, errors.Errorf("failed to get token from service principal identity: %v", authErr) } + + return cred, nil +} + +// GetAuthorizer returns an Azure authorizer based on the provided azure identity, cluster metadata, and tokenCredential. +func (p *AzureCredentialsProvider) GetAuthorizer(ctx context.Context, cred azcore.TokenCredential, tokenAudience string) (autorest.Authorizer, error) { // We must use TokenAudience for StackCloud, otherwise we get an // AADSTS500011 error from the API scope := tokenAudience diff --git a/azure/scope/machine.go b/azure/scope/machine.go index 165928e9446..f8f43e8c96c 100644 --- a/azure/scope/machine.go +++ b/azure/scope/machine.go @@ -689,7 +689,10 @@ func (m *MachineScope) GetVMImage(ctx context.Context) (*infrav1.Image, error) { return m.AzureMachine.Spec.Image, nil } - svc := virtualmachineimages.New(m) + svc, err := virtualmachineimages.New(m) + if err != nil { + return nil, errors.Wrap(err, "failed to create virtualmachineimages service") + } if m.AzureMachine.Spec.OSDisk.OSType == azure.WindowsOS { runtime := m.AzureMachine.Annotations["runtime"] diff --git a/azure/scope/machine_test.go b/azure/scope/machine_test.go index db0a78c7007..e187e804505 100644 --- a/azure/scope/machine_test.go +++ b/azure/scope/machine_test.go @@ -21,6 +21,7 @@ import ( "reflect" "testing" + "github.com/Azure/azure-sdk-for-go/sdk/azidentity" azureautorest "github.com/Azure/go-autorest/autorest/azure" "github.com/Azure/go-autorest/autorest/azure/auth" "github.com/google/go-cmp/cmp" @@ -1398,9 +1399,10 @@ func TestMachineScope_GetVMImage(t *testing.T) { clusterMock := mock_azure.NewMockClusterScoper(mockCtrl) clusterMock.EXPECT().Authorizer().AnyTimes() - clusterMock.EXPECT().BaseURI().AnyTimes() clusterMock.EXPECT().Location().AnyTimes() clusterMock.EXPECT().SubscriptionID().AnyTimes() + clusterMock.EXPECT().CloudEnvironment().AnyTimes() + clusterMock.EXPECT().Token().Return(&azidentity.DefaultAzureCredential{}).AnyTimes() svc := virtualmachineimages.Service{Client: mock_virtualmachineimages.NewMockClient(mockCtrl)} tests := []struct { diff --git a/azure/scope/machinepool.go b/azure/scope/machinepool.go index f91a3dd384a..cb23d191096 100644 --- a/azure/scope/machinepool.go +++ b/azure/scope/machinepool.go @@ -656,12 +656,16 @@ func (m *MachinePoolScope) GetVMImage(ctx context.Context) (*infrav1.Image, erro return m.AzureMachinePool.Spec.Template.Image, nil } - svc := virtualmachineimages.New(m) - var ( err error defaultImage *infrav1.Image ) + + svc, err := virtualmachineimages.New(m) + if err != nil { + return nil, errors.Wrap(err, "failed to create virtualmachineimages service") + } + if m.AzureMachinePool.Spec.Template.OSDisk.OSType == azure.WindowsOS { runtime := m.AzureMachinePool.Annotations["runtime"] windowsServerVersion := m.AzureMachinePool.Annotations["windowsServerVersion"] diff --git a/azure/scope/machinepool_test.go b/azure/scope/machinepool_test.go index 32ee0acfa5a..1426542a305 100644 --- a/azure/scope/machinepool_test.go +++ b/azure/scope/machinepool_test.go @@ -22,6 +22,7 @@ import ( "reflect" "testing" + "github.com/Azure/azure-sdk-for-go/sdk/azidentity" azureautorest "github.com/Azure/go-autorest/autorest/azure" "github.com/Azure/go-autorest/autorest/azure/auth" . "github.com/onsi/gomega" @@ -401,9 +402,10 @@ func TestMachinePoolScope_GetVMImage(t *testing.T) { clusterMock := mock_azure.NewMockClusterScoper(mockCtrl) clusterMock.EXPECT().Authorizer().AnyTimes() - clusterMock.EXPECT().BaseURI().AnyTimes() clusterMock.EXPECT().Location().AnyTimes() clusterMock.EXPECT().SubscriptionID().AnyTimes() + clusterMock.EXPECT().CloudEnvironment().AnyTimes() + clusterMock.EXPECT().Token().Return(&azidentity.DefaultAzureCredential{}).AnyTimes() cases := []struct { Name string Setup func(mp *expv1.MachinePool, amp *infrav1exp.AzureMachinePool) diff --git a/azure/services/agentpools/mock_agentpools/agentpools_mock.go b/azure/services/agentpools/mock_agentpools/agentpools_mock.go index 15cb3e74be2..6a52f65e56a 100644 --- a/azure/services/agentpools/mock_agentpools/agentpools_mock.go +++ b/azure/services/agentpools/mock_agentpools/agentpools_mock.go @@ -23,6 +23,7 @@ package mock_agentpools import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -483,6 +484,20 @@ func (mr *MockAgentPoolScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockAgentPoolScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockAgentPoolScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockAgentPoolScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockAgentPoolScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockAgentPoolScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/availabilitysets/mock_availabilitysets/availabilitysets_mock.go b/azure/services/availabilitysets/mock_availabilitysets/availabilitysets_mock.go index 370fa38e82f..13afde97577 100644 --- a/azure/services/availabilitysets/mock_availabilitysets/availabilitysets_mock.go +++ b/azure/services/availabilitysets/mock_availabilitysets/availabilitysets_mock.go @@ -23,6 +23,7 @@ package mock_availabilitysets import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -357,6 +358,20 @@ func (mr *MockAvailabilitySetScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockAvailabilitySetScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockAvailabilitySetScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockAvailabilitySetScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockAvailabilitySetScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockAvailabilitySetScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/bastionhosts/mocks_bastionhosts/bastionhosts_mock.go b/azure/services/bastionhosts/mocks_bastionhosts/bastionhosts_mock.go index b81360e16e0..3fa596396a9 100644 --- a/azure/services/bastionhosts/mocks_bastionhosts/bastionhosts_mock.go +++ b/azure/services/bastionhosts/mocks_bastionhosts/bastionhosts_mock.go @@ -23,6 +23,7 @@ package mock_bastionhosts import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -565,6 +566,20 @@ func (mr *MockBastionScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockBastionScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockBastionScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockBastionScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockBastionScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockBastionScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/disks/mock_disks/disks_mock.go b/azure/services/disks/mock_disks/disks_mock.go index 44f85137a96..ba8f8401fd0 100644 --- a/azure/services/disks/mock_disks/disks_mock.go +++ b/azure/services/disks/mock_disks/disks_mock.go @@ -23,6 +23,7 @@ package mock_disks import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -357,6 +358,20 @@ func (mr *MockDiskScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockDiskScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockDiskScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockDiskScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockDiskScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockDiskScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/groups/mock_groups/groups_mock.go b/azure/services/groups/mock_groups/groups_mock.go index 639f7579d4a..ca055790c43 100644 --- a/azure/services/groups/mock_groups/groups_mock.go +++ b/azure/services/groups/mock_groups/groups_mock.go @@ -23,6 +23,7 @@ package mock_groups import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -231,6 +232,20 @@ func (mr *MockGroupScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockGroupScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockGroupScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockGroupScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockGroupScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockGroupScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/inboundnatrules/mock_inboundnatrules/inboundnatrules_mock.go b/azure/services/inboundnatrules/mock_inboundnatrules/inboundnatrules_mock.go index f40490e22e1..8eb55acc926 100644 --- a/azure/services/inboundnatrules/mock_inboundnatrules/inboundnatrules_mock.go +++ b/azure/services/inboundnatrules/mock_inboundnatrules/inboundnatrules_mock.go @@ -23,6 +23,7 @@ package mock_inboundnatrules import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -371,6 +372,20 @@ func (mr *MockInboundNatScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockInboundNatScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockInboundNatScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockInboundNatScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockInboundNatScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockInboundNatScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/loadbalancers/mock_loadbalancers/loadbalancers_mock.go b/azure/services/loadbalancers/mock_loadbalancers/loadbalancers_mock.go index 352f6874413..2fa1bff2e61 100644 --- a/azure/services/loadbalancers/mock_loadbalancers/loadbalancers_mock.go +++ b/azure/services/loadbalancers/mock_loadbalancers/loadbalancers_mock.go @@ -23,6 +23,7 @@ package mock_loadbalancers import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -565,6 +566,20 @@ func (mr *MockLBScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockLBScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockLBScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockLBScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockLBScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockLBScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/managedclusters/mock_managedclusters/managedclusters_mock.go b/azure/services/managedclusters/mock_managedclusters/managedclusters_mock.go index fc4dc2ca92b..da051e8bd50 100644 --- a/azure/services/managedclusters/mock_managedclusters/managedclusters_mock.go +++ b/azure/services/managedclusters/mock_managedclusters/managedclusters_mock.go @@ -23,6 +23,7 @@ package mock_managedclusters import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1 "k8s.io/api/core/v1" @@ -282,6 +283,20 @@ func (mr *MockManagedClusterScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockManagedClusterScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockManagedClusterScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockManagedClusterScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockManagedClusterScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockManagedClusterScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/natgateways/mock_natgateways/natgateways_mock.go b/azure/services/natgateways/mock_natgateways/natgateways_mock.go index 1b65f91126a..056083ba33f 100644 --- a/azure/services/natgateways/mock_natgateways/natgateways_mock.go +++ b/azure/services/natgateways/mock_natgateways/natgateways_mock.go @@ -23,6 +23,7 @@ package mock_natgateways import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -577,6 +578,20 @@ func (mr *MockNatGatewayScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockNatGatewayScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockNatGatewayScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockNatGatewayScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockNatGatewayScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockNatGatewayScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/networkinterfaces/mock_networkinterfaces/networkinterfaces_mock.go b/azure/services/networkinterfaces/mock_networkinterfaces/networkinterfaces_mock.go index 509822f54da..591589d06b7 100644 --- a/azure/services/networkinterfaces/mock_networkinterfaces/networkinterfaces_mock.go +++ b/azure/services/networkinterfaces/mock_networkinterfaces/networkinterfaces_mock.go @@ -23,6 +23,7 @@ package mock_networkinterfaces import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -357,6 +358,20 @@ func (mr *MockNICScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockNICScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockNICScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockNICScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockNICScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockNICScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/privatedns/mock_privatedns/privatedns_mock.go b/azure/services/privatedns/mock_privatedns/privatedns_mock.go index f710eb1a83d..b082a1637b5 100644 --- a/azure/services/privatedns/mock_privatedns/privatedns_mock.go +++ b/azure/services/privatedns/mock_privatedns/privatedns_mock.go @@ -23,6 +23,7 @@ package mock_privatedns import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -359,6 +360,20 @@ func (mr *MockScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/privateendpoints/mock_privateendpoints/privateendpoints_mock.go b/azure/services/privateendpoints/mock_privateendpoints/privateendpoints_mock.go index 94b9952474b..d9c1604b4d0 100644 --- a/azure/services/privateendpoints/mock_privateendpoints/privateendpoints_mock.go +++ b/azure/services/privateendpoints/mock_privateendpoints/privateendpoints_mock.go @@ -23,6 +23,7 @@ package mock_privateendpoints import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -217,6 +218,20 @@ func (mr *MockPrivateEndpointScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockPrivateEndpointScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockPrivateEndpointScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockPrivateEndpointScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockPrivateEndpointScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockPrivateEndpointScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/publicips/mock_publicips/publicips_mock.go b/azure/services/publicips/mock_publicips/publicips_mock.go index 40a4b39746a..88c9945a0d4 100644 --- a/azure/services/publicips/mock_publicips/publicips_mock.go +++ b/azure/services/publicips/mock_publicips/publicips_mock.go @@ -23,6 +23,7 @@ package mock_publicips import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -357,6 +358,20 @@ func (mr *MockPublicIPScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockPublicIPScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockPublicIPScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockPublicIPScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockPublicIPScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockPublicIPScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/resourcehealth/mock_resourcehealth/resourcehealth_mock.go b/azure/services/resourcehealth/mock_resourcehealth/resourcehealth_mock.go index fbdba46934c..b46d30a78b6 100644 --- a/azure/services/resourcehealth/mock_resourcehealth/resourcehealth_mock.go +++ b/azure/services/resourcehealth/mock_resourcehealth/resourcehealth_mock.go @@ -23,6 +23,7 @@ package mock_resourcehealth import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api/api/v1beta1" @@ -192,6 +193,20 @@ func (mr *MockResourceHealthScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockResourceHealthScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockResourceHealthScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockResourceHealthScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockResourceHealthScope)(nil).Token)) +} + // MockAvailabilityStatusFilterer is a mock of AvailabilityStatusFilterer interface. type MockAvailabilityStatusFilterer struct { ctrl *gomock.Controller diff --git a/azure/services/roleassignments/mock_roleassignments/roleassignments_mock.go b/azure/services/roleassignments/mock_roleassignments/roleassignments_mock.go index 8122fdd914b..2765a697a63 100644 --- a/azure/services/roleassignments/mock_roleassignments/roleassignments_mock.go +++ b/azure/services/roleassignments/mock_roleassignments/roleassignments_mock.go @@ -23,6 +23,7 @@ package mock_roleassignments import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -273,6 +274,20 @@ func (mr *MockRoleAssignmentScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockRoleAssignmentScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockRoleAssignmentScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockRoleAssignmentScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockRoleAssignmentScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockRoleAssignmentScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/routetables/mock_routetables/routetables_mock.go b/azure/services/routetables/mock_routetables/routetables_mock.go index fe7922cdb6b..47a926bbba1 100644 --- a/azure/services/routetables/mock_routetables/routetables_mock.go +++ b/azure/services/routetables/mock_routetables/routetables_mock.go @@ -23,6 +23,7 @@ package mock_routetables import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -231,6 +232,20 @@ func (mr *MockRouteTableScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockRouteTableScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockRouteTableScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockRouteTableScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockRouteTableScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockRouteTableScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/scalesets/mock_scalesets/scalesets_mock.go b/azure/services/scalesets/mock_scalesets/scalesets_mock.go index 561113bc15f..a582a4e07e9 100644 --- a/azure/services/scalesets/mock_scalesets/scalesets_mock.go +++ b/azure/services/scalesets/mock_scalesets/scalesets_mock.go @@ -24,6 +24,7 @@ import ( context "context" reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -494,6 +495,20 @@ func (mr *MockScaleSetScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockScaleSetScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockScaleSetScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockScaleSetScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockScaleSetScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockScaleSetScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/scalesetvms/mock_scalesetvms/scalesetvms_mock.go b/azure/services/scalesetvms/mock_scalesetvms/scalesetvms_mock.go index 4b016be599e..dc836a4e5a2 100644 --- a/azure/services/scalesetvms/mock_scalesetvms/scalesetvms_mock.go +++ b/azure/services/scalesetvms/mock_scalesetvms/scalesetvms_mock.go @@ -23,6 +23,7 @@ package mock_scalesetvms import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -411,6 +412,20 @@ func (mr *MockScaleSetVMScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockScaleSetVMScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockScaleSetVMScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockScaleSetVMScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockScaleSetVMScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockScaleSetVMScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/securitygroups/mock_securitygroups/securitygroups_mock.go b/azure/services/securitygroups/mock_securitygroups/securitygroups_mock.go index a961cd4fb04..f28f0c04b32 100644 --- a/azure/services/securitygroups/mock_securitygroups/securitygroups_mock.go +++ b/azure/services/securitygroups/mock_securitygroups/securitygroups_mock.go @@ -23,6 +23,7 @@ package mock_securitygroups import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -231,6 +232,20 @@ func (mr *MockNSGScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockNSGScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockNSGScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockNSGScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockNSGScope)(nil).Token)) +} + // UpdateAnnotationJSON mocks base method. func (m *MockNSGScope) UpdateAnnotationJSON(arg0 string, arg1 map[string]interface{}) error { m.ctrl.T.Helper() diff --git a/azure/services/subnets/mock_subnets/subnets_mock.go b/azure/services/subnets/mock_subnets/subnets_mock.go index 3555e87983a..0a186a28e34 100644 --- a/azure/services/subnets/mock_subnets/subnets_mock.go +++ b/azure/services/subnets/mock_subnets/subnets_mock.go @@ -23,6 +23,7 @@ package mock_subnets import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -231,6 +232,20 @@ func (mr *MockSubnetScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockSubnetScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockSubnetScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockSubnetScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockSubnetScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockSubnetScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/tags/mock_tags/tags_mock.go b/azure/services/tags/mock_tags/tags_mock.go index 7d4f9bcce1e..9f79357af74 100644 --- a/azure/services/tags/mock_tags/tags_mock.go +++ b/azure/services/tags/mock_tags/tags_mock.go @@ -23,6 +23,7 @@ package mock_tags import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" azure "sigs.k8s.io/cluster-api-provider-azure/azure" @@ -206,6 +207,20 @@ func (mr *MockTagScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockTagScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockTagScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockTagScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockTagScope)(nil).Token)) +} + // UpdateAnnotationJSON mocks base method. func (m *MockTagScope) UpdateAnnotationJSON(arg0 string, arg1 map[string]interface{}) error { m.ctrl.T.Helper() diff --git a/azure/services/virtualmachineimages/cache.go b/azure/services/virtualmachineimages/cache.go index 7fd95abc7c4..b8ad7ff14ff 100644 --- a/azure/services/virtualmachineimages/cache.go +++ b/azure/services/virtualmachineimages/cache.go @@ -21,7 +21,7 @@ import ( "sync" "time" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2021-11-01/compute" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5" "github.com/pkg/errors" "sigs.k8s.io/cluster-api-provider-azure/azure" "sigs.k8s.io/cluster-api-provider-azure/util/cache/ttllru" @@ -39,7 +39,7 @@ type Key struct { // Cache stores VM image list resources. type Cache struct { client Client - data map[Key]compute.ListVirtualMachineImageResource + data map[Key]armcompute.VirtualMachineImagesClientListResponse } // Cacher allows getting items from and adding them to a cache. @@ -55,10 +55,14 @@ var ( ) // newCache instantiates a cache. -func newCache(auth azure.Authorizer) *Cache { - return &Cache{ - client: NewClient(auth), +func newCache(auth azure.Authorizer) (*Cache, error) { + client, err := NewClient(auth) + if err != nil { + return nil, err } + return &Cache{ + client: client, + }, nil } // GetCache either creates a new VM images cache or returns the existing one. @@ -77,7 +81,10 @@ func GetCache(auth azure.Authorizer) (*Cache, error) { return c.(*Cache), nil } - c = newCache(auth) + c, err = newCache(auth) + if err != nil { + return nil, err + } _ = clientCache.Add(key, c) return c.(*Cache), nil } @@ -98,12 +105,12 @@ func (c *Cache) refresh(ctx context.Context, key Key) error { } // Get returns a VM image list resource in a location given a publisher, offer, and sku. -func (c *Cache) Get(ctx context.Context, location, publisher, offer, sku string) (compute.ListVirtualMachineImageResource, error) { +func (c *Cache) Get(ctx context.Context, location, publisher, offer, sku string) (armcompute.VirtualMachineImagesClientListResponse, error) { ctx, log, done := tele.StartSpanWithLogger(ctx, "virtualmachineimages.Cache.Get") defer done() if c.data == nil { - c.data = make(map[Key]compute.ListVirtualMachineImageResource) + c.data = make(map[Key]armcompute.VirtualMachineImagesClientListResponse) } key := Key{ @@ -116,7 +123,7 @@ func (c *Cache) Get(ctx context.Context, location, publisher, offer, sku string) if _, ok := c.data[key]; !ok { log.V(4).Info("VM images cache miss", "location", key.location, "publisher", key.publisher, "offer", key.offer, "sku", key.sku) if err := c.refresh(ctx, key); err != nil { - return compute.ListVirtualMachineImageResource{}, err + return armcompute.VirtualMachineImagesClientListResponse{}, err } } else { log.V(4).Info("VM images cache hit", "location", key.location, "publisher", key.publisher, "offer", key.offer, "sku", key.sku) diff --git a/azure/services/virtualmachineimages/cache_test.go b/azure/services/virtualmachineimages/cache_test.go index e23f585d53d..79b944842d3 100644 --- a/azure/services/virtualmachineimages/cache_test.go +++ b/azure/services/virtualmachineimages/cache_test.go @@ -20,7 +20,7 @@ import ( "context" "testing" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2021-11-01/compute" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5" . "github.com/onsi/gomega" "github.com/pkg/errors" "go.uber.org/mock/gomock" @@ -34,13 +34,13 @@ func TestCacheGet(t *testing.T) { publisher string offer string sku string - have compute.ListVirtualMachineImageResource + have armcompute.VirtualMachineImagesClientListResponse expectedError error }{ "should find": { location: "test", publisher: "foo", offer: "bar", sku: "baz", - have: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + have: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("foo")}, }, }, @@ -48,8 +48,8 @@ func TestCacheGet(t *testing.T) { }, "should not find": { location: "test", publisher: "foo", offer: "bar", sku: "baz", - have: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{}, + have: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{}, }, expectedError: errors.New("failed to refresh VM images cache"), }, diff --git a/azure/services/virtualmachineimages/client.go b/azure/services/virtualmachineimages/client.go index 18e34a26f21..f2e161cd10d 100644 --- a/azure/services/virtualmachineimages/client.go +++ b/azure/services/virtualmachineimages/client.go @@ -19,45 +19,55 @@ package virtualmachineimages import ( "context" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2021-11-01/compute" - "github.com/Azure/go-autorest/autorest" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5" + "github.com/pkg/errors" "sigs.k8s.io/cluster-api-provider-azure/azure" "sigs.k8s.io/cluster-api-provider-azure/util/tele" ) // Client is an interface for listing VM images. type Client interface { - List(ctx context.Context, location, publisher, offer, sku string) (compute.ListVirtualMachineImageResource, error) + List(ctx context.Context, location, publisher, offer, sku string) (armcompute.VirtualMachineImagesClientListResponse, error) } // AzureClient contains the Azure go-sdk Client. type AzureClient struct { - images compute.VirtualMachineImagesClient + images armcompute.VirtualMachineImagesClient } var _ Client = (*AzureClient)(nil) -// NewClient creates a new VM images client from auth info. -func NewClient(auth azure.Authorizer) *AzureClient { - return &AzureClient{ - images: newVirtualMachineImagesClient(auth.SubscriptionID(), auth.BaseURI(), auth.Authorizer()), +// NewClient creates an AzureClient from an Authorizer. +func NewClient(auth azure.Authorizer) (*AzureClient, error) { + c, err := newVirtualMachineImagesClient(auth) + if err != nil { + return nil, errors.Wrap(err, "failed to create VM images client") } + return &AzureClient{c}, nil } -// newVirtualMachineImagesClient creates a new VM images client from subscription ID, base URI and authorizer. -func newVirtualMachineImagesClient(subscriptionID, baseURI string, authorizer autorest.Authorizer) compute.VirtualMachineImagesClient { - c := compute.NewVirtualMachineImagesClientWithBaseURI(baseURI, subscriptionID) - azure.SetAutoRestClientDefaults(&c.Client, authorizer) - return c +// newVirtualMachineImagesClient creates a new VM images client from subscription ID and base URI. +func newVirtualMachineImagesClient(auth azure.Authorizer) (armcompute.VirtualMachineImagesClient, error) { + credential := auth.Token() + if credential == nil { + return armcompute.VirtualMachineImagesClient{}, errors.New("azure auth is nil") + } + opts, err := azure.ARMClientOptions(auth.CloudEnvironment()) + if err != nil { + return armcompute.VirtualMachineImagesClient{}, errors.Wrap(err, "failed to create ARM client options") + } + computeClientFactory, err := armcompute.NewClientFactory(auth.SubscriptionID(), credential, opts) + if err != nil { + return armcompute.VirtualMachineImagesClient{}, errors.Wrap(err, "failed to create ARM compute client factory") + } + return *computeClientFactory.NewVirtualMachineImagesClient(), nil } -// List returns a VM image list resource. -func (ac *AzureClient) List(ctx context.Context, location, publisher, offer, sku string) (compute.ListVirtualMachineImageResource, error) { +// List returns a VM image list response. +func (ac *AzureClient) List(ctx context.Context, location, publisher, offer, sku string) (armcompute.VirtualMachineImagesClientListResponse, error) { ctx, _, done := tele.StartSpanWithLogger(ctx, "virtualmachineimages.AzureClient.List") defer done() - // See https://learn.microsoft.com/odata/concepts/queryoptions-overview for how to use these query options. - expand, orderby := "", "" - var top *int32 - return ac.images.List(ctx, location, publisher, offer, sku, expand, top, orderby) + opts := &armcompute.VirtualMachineImagesClientListOptions{} + return ac.images.List(ctx, location, publisher, offer, sku, opts) } diff --git a/azure/services/virtualmachineimages/images.go b/azure/services/virtualmachineimages/images.go index 2046c8a6372..54ba6691221 100644 --- a/azure/services/virtualmachineimages/images.go +++ b/azure/services/virtualmachineimages/images.go @@ -35,12 +35,16 @@ type Service struct { azure.Authorizer } -// New creates a new VM Images service. -func New(auth azure.Authorizer) *Service { +// New creates a VM Images service. +func New(auth azure.Authorizer) (*Service, error) { + client, err := NewClient(auth) + if err != nil { + return nil, err + } return &Service{ - Client: NewClient(auth), + Client: client, Authorizer: auth, - } + }, nil } // GetDefaultUbuntuImage returns the default image spec for Ubuntu. @@ -137,25 +141,25 @@ func (s *Service) getSKUAndVersion(ctx context.Context, location, publisher, off sku := fmt.Sprintf("%s-gen1", osAndVersion) imageCache, err := GetCache(s.Authorizer) - imageCache.client = s.Client if err != nil { return "", "", errors.Wrap(err, "failed to get image cache") } + imageCache.client = s.Client - listVMImagesResource, err := imageCache.Get(ctx, location, publisher, offer, sku) + listImagesResponse, err := imageCache.Get(ctx, location, publisher, offer, sku) if err != nil { return "", "", errors.Wrapf(err, "unable to list VM images for publisher \"%s\" offer \"%s\" sku \"%s\"", publisher, offer, sku) } - vmImages := listVMImagesResource.Value - if vmImages == nil || len(*vmImages) == 0 { + vmImages := listImagesResponse.VirtualMachineImageResourceArray + if len(vmImages) == 0 { return "", "", errors.Errorf("no VM images found for publisher \"%s\" offer \"%s\" sku \"%s\"", publisher, offer, sku) } // Sort the VM image names descending, so more recent dates sort first. // (The date is encoded into the end of the name, for example "124.0.20220512"). names := []string{} - for _, vmImage := range *vmImages { + for _, vmImage := range vmImages { names = append(names, *vmImage.Name) } sort.Sort(sort.Reverse(sort.StringSlice(names))) diff --git a/azure/services/virtualmachineimages/images_test.go b/azure/services/virtualmachineimages/images_test.go index 8dec84572db..541adf81676 100644 --- a/azure/services/virtualmachineimages/images_test.go +++ b/azure/services/virtualmachineimages/images_test.go @@ -21,7 +21,8 @@ import ( "strings" "testing" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2021-11-01/compute" + "github.com/Azure/azure-sdk-for-go/sdk/azidentity" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5" . "github.com/onsi/gomega" "go.uber.org/mock/gomock" "k8s.io/utils/ptr" @@ -35,7 +36,7 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion string expectedSKU string expectedVersion string - versions compute.ListVirtualMachineImageResource + versions armcompute.VirtualMachineImagesClientListResponse }{ { k8sVersion: "v1.15.6", @@ -86,8 +87,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.21.13", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "121.13.20220613", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("121.13.20220526")}, {Name: ptr.To("121.13.20220613")}, {Name: ptr.To("121.13.20220524")}, @@ -108,8 +109,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.22.10", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "122.10.20220613", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("122.10.20220524")}, {Name: ptr.To("122.10.20220613")}, }, @@ -119,8 +120,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.22.16", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "122.16.20221117", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("122.16.20221117")}, }, }, @@ -134,8 +135,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.23.7", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "123.7.20231231", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("123.7.20221124")}, {Name: ptr.To("123.7.20220524")}, {Name: ptr.To("123.7.20231231")}, @@ -147,8 +148,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.24.0", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "124.0.20220512", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("124.0.20220512")}, }, }, @@ -157,8 +158,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.23.12", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "123.12.20220921", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("123.12.20220921")}, }, }, @@ -167,8 +168,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.23.13", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "123.13.20221014", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("123.13.20221014")}, }, }, @@ -177,8 +178,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.24.6", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "124.6.20220921", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("124.6.20220921")}, }, }, @@ -187,8 +188,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.24.7", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "124.7.20221014", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("124.7.20221014")}, }, }, @@ -197,8 +198,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.25.2", expectedSKU: "ubuntu-2004-gen1", expectedVersion: "125.2.20220921", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("125.2.20220921")}, }, }, @@ -207,8 +208,8 @@ func TestGetDefaultUbuntuImage(t *testing.T) { k8sVersion: "v1.25.3", expectedSKU: "ubuntu-2204-gen1", expectedVersion: "125.3.20221014", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("125.3.20221014")}, }, }, @@ -226,12 +227,13 @@ func TestGetDefaultUbuntuImage(t *testing.T) { mockAuth := mock_azure.NewMockAuthorizer(mockCtrl) mockAuth.EXPECT().HashKey().Return(t.Name()).AnyTimes() mockAuth.EXPECT().Authorizer().AnyTimes() - mockAuth.EXPECT().BaseURI().AnyTimes() mockAuth.EXPECT().SubscriptionID().AnyTimes() + mockAuth.EXPECT().CloudEnvironment().AnyTimes() + mockAuth.EXPECT().Token().Return(&azidentity.DefaultAzureCredential{}).AnyTimes() mockClient := mock_virtualmachineimages.NewMockClient(mockCtrl) svc := Service{Client: mockClient, Authorizer: mockAuth} - if test.versions.Value != nil { + if test.versions.VirtualMachineImageResourceArray != nil { mockClient.EXPECT(). List(gomock.Any(), location, azure.DefaultImagePublisherID, azure.DefaultImageOfferID, gomock.Any()). Return(test.versions, nil) @@ -349,7 +351,7 @@ func TestGetDefaultImageSKUID(t *testing.T) { expectedSKU string expectedVersion string expectedError bool - versions compute.ListVirtualMachineImageResource + versions armcompute.VirtualMachineImagesClientListResponse }{ { k8sVersion: "v1.14.9", @@ -432,8 +434,8 @@ func TestGetDefaultImageSKUID(t *testing.T) { expectedVersion: "121.13.20300524", expectedError: false, osAndVersion: "windows-2022", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("121.13.20220524")}, {Name: ptr.To("124.0.20220512")}, {Name: ptr.To("121.13.20220524")}, @@ -482,8 +484,8 @@ func TestGetDefaultImageSKUID(t *testing.T) { expectedVersion: "123.12.20220921", expectedError: false, osAndVersion: "ubuntu-2004", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("123.12.20220921")}, }, }, @@ -494,8 +496,8 @@ func TestGetDefaultImageSKUID(t *testing.T) { expectedVersion: "123.13.20220524", expectedError: false, osAndVersion: "ubuntu-2204", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("123.13.20220524")}, }, }, @@ -504,8 +506,8 @@ func TestGetDefaultImageSKUID(t *testing.T) { k8sVersion: "v1.23.13", expectedError: true, osAndVersion: "ubuntu-2004", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{}, + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{}, }, }, { @@ -514,8 +516,8 @@ func TestGetDefaultImageSKUID(t *testing.T) { expectedVersion: "124.0.20220512", expectedError: false, osAndVersion: "ubuntu-2004", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("124.0.20220512")}, }, }, @@ -526,8 +528,8 @@ func TestGetDefaultImageSKUID(t *testing.T) { expectedVersion: "124.0.20220606", expectedError: false, osAndVersion: "windows-2022-containerd", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("124.0.20220606")}, }, }, @@ -536,8 +538,8 @@ func TestGetDefaultImageSKUID(t *testing.T) { k8sVersion: "v1.24.1", expectedError: true, osAndVersion: "windows-2022-containerd", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("124.0.20220606")}, }, }, @@ -548,8 +550,8 @@ func TestGetDefaultImageSKUID(t *testing.T) { expectedVersion: "125.4.20221011", expectedError: false, osAndVersion: "ubuntu-2204", - versions: compute.ListVirtualMachineImageResource{ - Value: &[]compute.VirtualMachineImageResource{ + versions: armcompute.VirtualMachineImagesClientListResponse{ + VirtualMachineImageResourceArray: []*armcompute.VirtualMachineImageResource{ {Name: ptr.To("125.4.20221011")}, }, }, @@ -567,8 +569,9 @@ func TestGetDefaultImageSKUID(t *testing.T) { mockAuth := mock_azure.NewMockAuthorizer(mockCtrl) mockAuth.EXPECT().HashKey().Return(t.Name()).AnyTimes() mockAuth.EXPECT().Authorizer().AnyTimes() - mockAuth.EXPECT().BaseURI().AnyTimes() mockAuth.EXPECT().SubscriptionID().AnyTimes() + mockAuth.EXPECT().CloudEnvironment().AnyTimes() + mockAuth.EXPECT().Token().Return(&azidentity.DefaultAzureCredential{}).AnyTimes() mockClient := mock_virtualmachineimages.NewMockClient(mockCtrl) svc := Service{Client: mockClient, Authorizer: mockAuth} @@ -576,7 +579,7 @@ func TestGetDefaultImageSKUID(t *testing.T) { if strings.HasPrefix(test.osAndVersion, "windows") { offer = azure.DefaultWindowsImageOfferID } - if test.versions.Value != nil { + if test.versions.VirtualMachineImageResourceArray != nil { mockClient.EXPECT(). List(gomock.Any(), location, azure.DefaultImagePublisherID, offer, gomock.Any()). Return(test.versions, nil) diff --git a/azure/services/virtualmachineimages/mock_virtualmachineimages/client_mock.go b/azure/services/virtualmachineimages/mock_virtualmachineimages/client_mock.go index c26f9d8186e..d8662e4d9bd 100644 --- a/azure/services/virtualmachineimages/mock_virtualmachineimages/client_mock.go +++ b/azure/services/virtualmachineimages/mock_virtualmachineimages/client_mock.go @@ -24,7 +24,7 @@ import ( context "context" reflect "reflect" - compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2021-11-01/compute" + armcompute "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5" gomock "go.uber.org/mock/gomock" ) @@ -52,10 +52,10 @@ func (m *MockClient) EXPECT() *MockClientMockRecorder { } // List mocks base method. -func (m *MockClient) List(ctx context.Context, location, publisher, offer, sku string) (compute.ListVirtualMachineImageResource, error) { +func (m *MockClient) List(ctx context.Context, location, publisher, offer, sku string) (armcompute.VirtualMachineImagesClientListResponse, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "List", ctx, location, publisher, offer, sku) - ret0, _ := ret[0].(compute.ListVirtualMachineImageResource) + ret0, _ := ret[0].(armcompute.VirtualMachineImagesClientListResponse) ret1, _ := ret[1].(error) return ret0, ret1 } diff --git a/azure/services/virtualmachines/mock_virtualmachines/virtualmachines_mock.go b/azure/services/virtualmachines/mock_virtualmachines/virtualmachines_mock.go index 85ae8bb03a8..1bde9580a81 100644 --- a/azure/services/virtualmachines/mock_virtualmachines/virtualmachines_mock.go +++ b/azure/services/virtualmachines/mock_virtualmachines/virtualmachines_mock.go @@ -23,6 +23,7 @@ package mock_virtualmachines import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1 "k8s.io/api/core/v1" @@ -264,6 +265,20 @@ func (mr *MockVMScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockVMScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockVMScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockVMScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockVMScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockVMScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/virtualnetworks/mock_virtualnetworks/virtualnetworks_mock.go b/azure/services/virtualnetworks/mock_virtualnetworks/virtualnetworks_mock.go index 955e550d882..1cd8ffb725a 100644 --- a/azure/services/virtualnetworks/mock_virtualnetworks/virtualnetworks_mock.go +++ b/azure/services/virtualnetworks/mock_virtualnetworks/virtualnetworks_mock.go @@ -23,6 +23,7 @@ package mock_virtualnetworks import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -231,6 +232,20 @@ func (mr *MockVNetScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockVNetScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockVNetScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockVNetScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockVNetScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockVNetScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/vmextensions/mock_vmextensions/vmextensions_mock.go b/azure/services/vmextensions/mock_vmextensions/vmextensions_mock.go index d065b28e835..0bad6dbfd78 100644 --- a/azure/services/vmextensions/mock_vmextensions/vmextensions_mock.go +++ b/azure/services/vmextensions/mock_vmextensions/vmextensions_mock.go @@ -23,6 +23,7 @@ package mock_vmextensions import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -203,6 +204,20 @@ func (mr *MockVMExtensionScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockVMExtensionScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockVMExtensionScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockVMExtensionScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockVMExtensionScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockVMExtensionScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/azure/services/vnetpeerings/mock_vnetpeerings/vnetpeerings_mock.go b/azure/services/vnetpeerings/mock_vnetpeerings/vnetpeerings_mock.go index 86792dd5471..e63095a3c58 100644 --- a/azure/services/vnetpeerings/mock_vnetpeerings/vnetpeerings_mock.go +++ b/azure/services/vnetpeerings/mock_vnetpeerings/vnetpeerings_mock.go @@ -23,6 +23,7 @@ package mock_vnetpeerings import ( reflect "reflect" + azcore "github.com/Azure/azure-sdk-for-go/sdk/azcore" autorest "github.com/Azure/go-autorest/autorest" gomock "go.uber.org/mock/gomock" v1beta1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1" @@ -203,6 +204,20 @@ func (mr *MockVnetPeeringScopeMockRecorder) TenantID() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TenantID", reflect.TypeOf((*MockVnetPeeringScope)(nil).TenantID)) } +// Token mocks base method. +func (m *MockVnetPeeringScope) Token() azcore.TokenCredential { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Token") + ret0, _ := ret[0].(azcore.TokenCredential) + return ret0 +} + +// Token indicates an expected call of Token. +func (mr *MockVnetPeeringScopeMockRecorder) Token() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Token", reflect.TypeOf((*MockVnetPeeringScope)(nil).Token)) +} + // UpdateDeleteStatus mocks base method. func (m *MockVnetPeeringScope) UpdateDeleteStatus(arg0 v1beta10.ConditionType, arg1 string, arg2 error) { m.ctrl.T.Helper() diff --git a/go.mod b/go.mod index 7a2458801fa..e49f219d357 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/Azure/azure-sdk-for-go v68.0.0+incompatible github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.0.0 github.com/Azure/azure-service-operator/v2 v2.2.0 github.com/Azure/go-autorest/autorest v0.11.29 github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 diff --git a/go.sum b/go.sum index cf11329e801..23cbdfe2de8 100644 --- a/go.sum +++ b/go.sum @@ -48,11 +48,15 @@ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9Orh github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appconfiguration/armappconfiguration v1.0.0 h1:5reBX+9pzc5xp9VrjSUoPrE8Wl/3y7wjfHzGjXzJbNk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.0.0 h1:zpMyM8MoI8ZR/KNcfTothBjV5oTm6QVpuPwz/9TXQ1Q= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.0.0/go.mod h1:mXdzU0jht34j8BVO6q+sns1M1CYmHdq1AA9mRHeFvv0= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice v1.0.0 h1:figxyQZXzZQIcP3njhC68bYUiTw45J8/SsHaLW8Ax0M= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cosmos/armcosmos v1.0.0 h1:Fv8iibGn1eSw0lt2V3cTsuokBEnOP+M//n8OiMcCgTM= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2 h1:mLY+pNLjCUeKhgnAJWAKhEUQM+RJQo2H1fuGSw1Ky1E= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/iothub/armiothub v1.1.1 h1:Dh8SxVXcSyQN76LI4IseKyrnqyTUsx336Axg8zDYSMs= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/machinelearning/armmachinelearning v1.0.0 h1:KWvCVjnOTKCZAlqED5KPNoN9AfcK2BhUeveLdiwy33Q= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/redis/armredis v1.0.0 h1:nmpTBgRg1HynngFYICRhceC7s5dmbKN9fJ/XQz/UQ2I= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 h1:7CBQ+Ei8SP2c6ydQTGCCrS35bDxgTMfoP2miAwK++OU= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/search/armsearch v1.1.0 h1:SCO2mlFZrUMU8MmA5Y6EszSm2OGumuPBXFQXEvkESvk= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/servicebus/armservicebus v1.1.1 h1:h+ZMdUM0/8oVqHjY9+1rupIvT0craBLapKhuzWui9lo= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.0.0 h1:TMEyRFKh1zaSPmoQh3kxK+xRAYVq8guCI/7SMO0F3KY=