From 081dfb503765e6f4cb2a0ea7d4a2b4a105feb365 Mon Sep 17 00:00:00 2001 From: Malte Poll Date: Wed, 27 Jul 2022 22:02:33 +0200 Subject: [PATCH] Upgrade Azure SDK Signed-off-by: Malte Poll --- bootstrapper/cloudprovider/azure/api.go | 46 +- bootstrapper/cloudprovider/azure/api_test.go | 272 ++++++------ bootstrapper/cloudprovider/azure/metadata.go | 77 +++- .../cloudprovider/azure/metadata_test.go | 336 +++++++------- bootstrapper/cloudprovider/azure/network.go | 8 +- .../cloudprovider/azure/network_test.go | 56 ++- bootstrapper/cloudprovider/azure/scaleset.go | 25 +- .../cloudprovider/azure/scaleset_test.go | 94 ++-- .../cloudprovider/azure/securityGroup.go | 10 +- .../cloudprovider/azure/virtualnetwork.go | 10 +- bootstrapper/cloudprovider/azure/wrappers.go | 109 ----- .../azure/client/activedirectory_test.go | 16 +- cli/internal/azure/client/api.go | 77 +--- cli/internal/azure/client/api_test.go | 411 +++++++++--------- .../azure/client/applicationinsight.go | 6 +- cli/internal/azure/client/azurewrappers.go | 147 ------- cli/internal/azure/client/client.go | 69 ++- cli/internal/azure/client/compute.go | 30 +- cli/internal/azure/client/compute_test.go | 28 +- cli/internal/azure/client/network.go | 63 +-- cli/internal/azure/client/network_test.go | 12 +- cli/internal/azure/instances.go | 74 ++-- cli/internal/azure/loadbalancer.go | 112 ++--- cli/internal/azure/scaleset.go | 112 ++--- cli/internal/azure/scaleset_test.go | 6 +- go.mod | 47 +- go.sum | 104 ++--- hack/go.mod | 74 ++-- hack/go.sum | 115 +++-- internal/cloud/cloudtypes/firewall.go | 5 +- internal/cloud/cloudtypes/firewall_test.go | 19 +- kms/internal/storage/azurestorage.go | 26 +- kms/internal/storage/azurestorage_test.go | 10 +- kms/kms/azure/azure.go | 31 +- kms/kms/azure/azure_test.go | 8 +- kms/kms/azure/hsm.go | 131 ++---- kms/kms/azure/hsm_test.go | 185 +++----- 37 files changed, 1299 insertions(+), 1662 deletions(-) delete mode 100644 bootstrapper/cloudprovider/azure/wrappers.go delete mode 100644 cli/internal/azure/client/azurewrappers.go diff --git a/bootstrapper/cloudprovider/azure/api.go b/bootstrapper/cloudprovider/azure/api.go index 337ae7bcd..c6eed3199 100644 --- a/bootstrapper/cloudprovider/azure/api.go +++ b/bootstrapper/cloudprovider/azure/api.go @@ -3,8 +3,9 @@ package azure import ( "context" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" ) @@ -13,22 +14,12 @@ type imdsAPI interface { Retrieve(ctx context.Context) (metadataResponse, error) } -type virtualNetworksClientListPager interface { - NextPage(ctx context.Context) bool - PageResponse() armnetwork.VirtualNetworksClientListResponse -} - type virtualNetworksAPI interface { - List(resourceGroupName string, options *armnetwork.VirtualNetworksClientListOptions) virtualNetworksClientListPager -} - -type securityGroupsClientListPager interface { - NextPage(ctx context.Context) bool - PageResponse() armnetwork.SecurityGroupsClientListResponse + NewListPager(resourceGroupName string, options *armnetwork.VirtualNetworksClientListOptions) *runtime.Pager[armnetwork.VirtualNetworksClientListResponse] } type securityGroupsAPI interface { - List(resourceGroupName string, options *armnetwork.SecurityGroupsClientListOptions) securityGroupsClientListPager + NewListPager(resourceGroupName string, options *armnetwork.SecurityGroupsClientListOptions) *runtime.Pager[armnetwork.SecurityGroupsClientListResponse] } type networkInterfacesAPI interface { @@ -51,31 +42,22 @@ type publicIPAddressesAPI interface { } type virtualMachineScaleSetVMsAPI interface { - Get(ctx context.Context, resourceGroupName string, vmScaleSetName string, instanceID string, options *armcompute.VirtualMachineScaleSetVMsClientGetOptions) (armcompute.VirtualMachineScaleSetVMsClientGetResponse, error) - List(resourceGroupName string, virtualMachineScaleSetName string, options *armcompute.VirtualMachineScaleSetVMsClientListOptions) virtualMachineScaleSetVMsClientListPager -} - -type virtualMachineScaleSetVMsClientListPager interface { - NextPage(ctx context.Context) bool - PageResponse() armcompute.VirtualMachineScaleSetVMsClientListResponse + Get(ctx context.Context, resourceGroupName string, vmScaleSetName string, instanceID string, + options *armcomputev2.VirtualMachineScaleSetVMsClientGetOptions, + ) (armcomputev2.VirtualMachineScaleSetVMsClientGetResponse, error) + NewListPager(resourceGroupName string, virtualMachineScaleSetName string, + options *armcomputev2.VirtualMachineScaleSetVMsClientListOptions, + ) *runtime.Pager[armcomputev2.VirtualMachineScaleSetVMsClientListResponse] } type scaleSetsAPI interface { - List(resourceGroupName string, options *armcompute.VirtualMachineScaleSetsClientListOptions) virtualMachineScaleSetsClientListPager -} - -type loadBalancersClientListPager interface { - NextPage(ctx context.Context) bool - PageResponse() armnetwork.LoadBalancersClientListResponse + NewListPager(resourceGroupName string, options *armcomputev2.VirtualMachineScaleSetsClientListOptions, + ) *runtime.Pager[armcomputev2.VirtualMachineScaleSetsClientListResponse] } type loadBalancerAPI interface { - List(resourceGroupName string, options *armnetwork.LoadBalancersClientListOptions) loadBalancersClientListPager -} - -type virtualMachineScaleSetsClientListPager interface { - NextPage(ctx context.Context) bool - PageResponse() armcompute.VirtualMachineScaleSetsClientListResponse + NewListPager(resourceGroupName string, options *armnetwork.LoadBalancersClientListOptions, + ) *runtime.Pager[armnetwork.LoadBalancersClientListResponse] } type tagsAPI interface { diff --git a/bootstrapper/cloudprovider/azure/api_test.go b/bootstrapper/cloudprovider/azure/api_test.go index 1514fa1ee..a587ef698 100644 --- a/bootstrapper/cloudprovider/azure/api_test.go +++ b/bootstrapper/cloudprovider/azure/api_test.go @@ -4,7 +4,8 @@ import ( "context" "testing" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" "go.uber.org/goleak" @@ -36,9 +37,7 @@ func (a *stubNetworkInterfacesAPI) GetVirtualMachineScaleSetNetworkInterface(ctx options *armnetwork.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceOptions, ) (armnetwork.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResponse, error) { return armnetwork.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResponse{ - InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResult: armnetwork.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResult{ - Interface: a.getInterface, - }, + Interface: a.getInterface, }, a.getErr } @@ -46,86 +45,64 @@ func (a *stubNetworkInterfacesAPI) Get(ctx context.Context, resourceGroupName st options *armnetwork.InterfacesClientGetOptions, ) (armnetwork.InterfacesClientGetResponse, error) { return armnetwork.InterfacesClientGetResponse{ - InterfacesClientGetResult: armnetwork.InterfacesClientGetResult{ - Interface: a.getInterface, - }, + Interface: a.getInterface, }, a.getErr } -type stubVirtualMachineScaleSetVMsClientListPager struct { - pagesCounter int - pages [][]*armcompute.VirtualMachineScaleSetVM -} - -func (p *stubVirtualMachineScaleSetVMsClientListPager) NextPage(ctx context.Context) bool { - return p.pagesCounter < len(p.pages) -} - -func (p *stubVirtualMachineScaleSetVMsClientListPager) PageResponse() armcompute.VirtualMachineScaleSetVMsClientListResponse { - if p.pagesCounter >= len(p.pages) { - return armcompute.VirtualMachineScaleSetVMsClientListResponse{} - } - p.pagesCounter = p.pagesCounter + 1 - return armcompute.VirtualMachineScaleSetVMsClientListResponse{ - VirtualMachineScaleSetVMsClientListResult: armcompute.VirtualMachineScaleSetVMsClientListResult{ - VirtualMachineScaleSetVMListResult: armcompute.VirtualMachineScaleSetVMListResult{ - Value: p.pages[p.pagesCounter-1], - }, - }, - } -} - type stubVirtualMachineScaleSetVMsAPI struct { - getVM armcompute.VirtualMachineScaleSetVM - getErr error - listPages [][]*armcompute.VirtualMachineScaleSetVM + getVM armcomputev2.VirtualMachineScaleSetVM + getErr error + pager *stubVirtualMachineScaleSetVMPager } -func (a *stubVirtualMachineScaleSetVMsAPI) Get(ctx context.Context, resourceGroupName string, vmScaleSetName string, instanceID string, options *armcompute.VirtualMachineScaleSetVMsClientGetOptions) (armcompute.VirtualMachineScaleSetVMsClientGetResponse, error) { - return armcompute.VirtualMachineScaleSetVMsClientGetResponse{ - VirtualMachineScaleSetVMsClientGetResult: armcompute.VirtualMachineScaleSetVMsClientGetResult{ - VirtualMachineScaleSetVM: a.getVM, - }, +func (a *stubVirtualMachineScaleSetVMsAPI) Get(ctx context.Context, resourceGroupName string, vmScaleSetName string, instanceID string, options *armcomputev2.VirtualMachineScaleSetVMsClientGetOptions) (armcomputev2.VirtualMachineScaleSetVMsClientGetResponse, error) { + return armcomputev2.VirtualMachineScaleSetVMsClientGetResponse{ + VirtualMachineScaleSetVM: a.getVM, }, a.getErr } -func (a *stubVirtualMachineScaleSetVMsAPI) List(resourceGroupName string, virtualMachineScaleSetName string, options *armcompute.VirtualMachineScaleSetVMsClientListOptions) virtualMachineScaleSetVMsClientListPager { - return &stubVirtualMachineScaleSetVMsClientListPager{ - pages: a.listPages, - } +func (a *stubVirtualMachineScaleSetVMsAPI) NewListPager(resourceGroupName string, virtualMachineScaleSetName string, options *armcomputev2.VirtualMachineScaleSetVMsClientListOptions) *runtime.Pager[armcomputev2.VirtualMachineScaleSetVMsClientListResponse] { + return runtime.NewPager(runtime.PagingHandler[armcomputev2.VirtualMachineScaleSetVMsClientListResponse]{ + More: a.pager.moreFunc(), + Fetcher: a.pager.fetcherFunc(), + }) } type stubVirtualMachineScaleSetsClientListPager struct { - pagesCounter int - pages [][]*armcompute.VirtualMachineScaleSet + list []armcomputev2.VirtualMachineScaleSet + fetchErr error + more bool } -func (p *stubVirtualMachineScaleSetsClientListPager) NextPage(ctx context.Context) bool { - return p.pagesCounter < len(p.pages) -} - -func (p *stubVirtualMachineScaleSetsClientListPager) PageResponse() armcompute.VirtualMachineScaleSetsClientListResponse { - if p.pagesCounter >= len(p.pages) { - return armcompute.VirtualMachineScaleSetsClientListResponse{} +func (p *stubVirtualMachineScaleSetsClientListPager) moreFunc() func(armcomputev2.VirtualMachineScaleSetsClientListResponse) bool { + return func(armcomputev2.VirtualMachineScaleSetsClientListResponse) bool { + return p.more } - p.pagesCounter = p.pagesCounter + 1 - return armcompute.VirtualMachineScaleSetsClientListResponse{ - VirtualMachineScaleSetsClientListResult: armcompute.VirtualMachineScaleSetsClientListResult{ - VirtualMachineScaleSetListResult: armcompute.VirtualMachineScaleSetListResult{ - Value: p.pages[p.pagesCounter-1], +} + +func (p *stubVirtualMachineScaleSetsClientListPager) fetcherFunc() func(context.Context, *armcomputev2.VirtualMachineScaleSetsClientListResponse) (armcomputev2.VirtualMachineScaleSetsClientListResponse, error) { + return func(context.Context, *armcomputev2.VirtualMachineScaleSetsClientListResponse) (armcomputev2.VirtualMachineScaleSetsClientListResponse, error) { + page := make([]*armcomputev2.VirtualMachineScaleSet, len(p.list)) + for i := range p.list { + page[i] = &p.list[i] + } + return armcomputev2.VirtualMachineScaleSetsClientListResponse{ + VirtualMachineScaleSetListResult: armcomputev2.VirtualMachineScaleSetListResult{ + Value: page, }, - }, + }, p.fetchErr } } type stubScaleSetsAPI struct { - listPages [][]*armcompute.VirtualMachineScaleSet + pager *stubVirtualMachineScaleSetsClientListPager } -func (a *stubScaleSetsAPI) List(resourceGroupName string, options *armcompute.VirtualMachineScaleSetsClientListOptions) virtualMachineScaleSetsClientListPager { - return &stubVirtualMachineScaleSetsClientListPager{ - pages: a.listPages, - } +func (a *stubScaleSetsAPI) NewListPager(resourceGroupName string, options *armcomputev2.VirtualMachineScaleSetsClientListOptions) *runtime.Pager[armcomputev2.VirtualMachineScaleSetsClientListResponse] { + return runtime.NewPager(runtime.PagingHandler[armcomputev2.VirtualMachineScaleSetsClientListResponse]{ + More: a.pager.moreFunc(), + Fetcher: a.pager.fetcherFunc(), + }) } type stubTagsAPI struct { @@ -142,102 +119,89 @@ func (a *stubTagsAPI) UpdateAtScope(ctx context.Context, scope string, parameter } type stubSecurityGroupsClientListPager struct { - pagesCounter int - pages [][]*armnetwork.SecurityGroup + list []armnetwork.SecurityGroup + fetchErr error + more bool } -func (p *stubSecurityGroupsClientListPager) NextPage(ctx context.Context) bool { - return p.pagesCounter < len(p.pages) -} - -func (p *stubSecurityGroupsClientListPager) PageResponse() armnetwork.SecurityGroupsClientListResponse { - if p.pagesCounter >= len(p.pages) { - return armnetwork.SecurityGroupsClientListResponse{} +func (p *stubSecurityGroupsClientListPager) moreFunc() func(armnetwork.SecurityGroupsClientListResponse) bool { + return func(armnetwork.SecurityGroupsClientListResponse) bool { + return p.more } - p.pagesCounter = p.pagesCounter + 1 - return armnetwork.SecurityGroupsClientListResponse{ - SecurityGroupsClientListResult: armnetwork.SecurityGroupsClientListResult{ +} + +func (p *stubSecurityGroupsClientListPager) fetcherFunc() func(context.Context, *armnetwork.SecurityGroupsClientListResponse) (armnetwork.SecurityGroupsClientListResponse, error) { + return func(context.Context, *armnetwork.SecurityGroupsClientListResponse) (armnetwork.SecurityGroupsClientListResponse, error) { + page := make([]*armnetwork.SecurityGroup, len(p.list)) + for i := range p.list { + page[i] = &p.list[i] + } + return armnetwork.SecurityGroupsClientListResponse{ SecurityGroupListResult: armnetwork.SecurityGroupListResult{ - Value: p.pages[p.pagesCounter-1], + Value: page, }, - }, + }, p.fetchErr } } type stubSecurityGroupsAPI struct { - listPages [][]*armnetwork.SecurityGroup + pager *stubSecurityGroupsClientListPager } -func (a *stubSecurityGroupsAPI) List(resourceGroupName string, options *armnetwork.SecurityGroupsClientListOptions) securityGroupsClientListPager { - return &stubSecurityGroupsClientListPager{ - pages: a.listPages, - } +func (a *stubSecurityGroupsAPI) NewListPager(resourceGroupName string, options *armnetwork.SecurityGroupsClientListOptions) *runtime.Pager[armnetwork.SecurityGroupsClientListResponse] { + return runtime.NewPager(runtime.PagingHandler[armnetwork.SecurityGroupsClientListResponse]{ + More: a.pager.moreFunc(), + Fetcher: a.pager.fetcherFunc(), + }) } type stubVirtualNetworksClientListPager struct { - pagesCounter int - pages [][]*armnetwork.VirtualNetwork + list []armnetwork.VirtualNetwork + fetchErr error + more bool } -func (p *stubVirtualNetworksClientListPager) NextPage(ctx context.Context) bool { - return p.pagesCounter < len(p.pages) -} - -func (p *stubVirtualNetworksClientListPager) PageResponse() armnetwork.VirtualNetworksClientListResponse { - if p.pagesCounter >= len(p.pages) { - return armnetwork.VirtualNetworksClientListResponse{} +func (p *stubVirtualNetworksClientListPager) moreFunc() func(armnetwork.VirtualNetworksClientListResponse) bool { + return func(armnetwork.VirtualNetworksClientListResponse) bool { + return p.more } - p.pagesCounter = p.pagesCounter + 1 - return armnetwork.VirtualNetworksClientListResponse{ - VirtualNetworksClientListResult: armnetwork.VirtualNetworksClientListResult{ +} + +func (p *stubVirtualNetworksClientListPager) fetcherFunc() func(context.Context, *armnetwork.VirtualNetworksClientListResponse) (armnetwork.VirtualNetworksClientListResponse, error) { + return func(context.Context, *armnetwork.VirtualNetworksClientListResponse) (armnetwork.VirtualNetworksClientListResponse, error) { + page := make([]*armnetwork.VirtualNetwork, len(p.list)) + for i := range p.list { + page[i] = &p.list[i] + } + return armnetwork.VirtualNetworksClientListResponse{ VirtualNetworkListResult: armnetwork.VirtualNetworkListResult{ - Value: p.pages[p.pagesCounter-1], + Value: page, }, - }, + }, p.fetchErr } } type stubVirtualNetworksAPI struct { - listPages [][]*armnetwork.VirtualNetwork + pager *stubVirtualNetworksClientListPager } -func (a *stubVirtualNetworksAPI) List(resourceGroupName string, options *armnetwork.VirtualNetworksClientListOptions) virtualNetworksClientListPager { - return &stubVirtualNetworksClientListPager{ - pages: a.listPages, - } -} - -type stubLoadBalancersClientListPager struct { - pagesCounter int - pages [][]*armnetwork.LoadBalancer -} - -func (p *stubLoadBalancersClientListPager) NextPage(ctx context.Context) bool { - return p.pagesCounter < len(p.pages) -} - -func (p *stubLoadBalancersClientListPager) PageResponse() armnetwork.LoadBalancersClientListResponse { - if p.pagesCounter >= len(p.pages) { - return armnetwork.LoadBalancersClientListResponse{} - } - p.pagesCounter = p.pagesCounter + 1 - return armnetwork.LoadBalancersClientListResponse{ - LoadBalancersClientListResult: armnetwork.LoadBalancersClientListResult{ - LoadBalancerListResult: armnetwork.LoadBalancerListResult{ - Value: p.pages[p.pagesCounter-1], - }, - }, - } +func (a *stubVirtualNetworksAPI) NewListPager(resourceGroupName string, options *armnetwork.VirtualNetworksClientListOptions) *runtime.Pager[armnetwork.VirtualNetworksClientListResponse] { + return runtime.NewPager(runtime.PagingHandler[armnetwork.VirtualNetworksClientListResponse]{ + More: a.pager.moreFunc(), + Fetcher: a.pager.fetcherFunc(), + }) } type stubLoadBalancersAPI struct { - listPages [][]*armnetwork.LoadBalancer + pager *stubLoadBalancersClientListPager } -func (a *stubLoadBalancersAPI) List(resourceGroupName string, options *armnetwork.LoadBalancersClientListOptions) loadBalancersClientListPager { - return &stubLoadBalancersClientListPager{ - pages: a.listPages, - } +func (a *stubLoadBalancersAPI) NewListPager(resourceGroupName string, options *armnetwork.LoadBalancersClientListOptions, +) *runtime.Pager[armnetwork.LoadBalancersClientListResponse] { + return runtime.NewPager(runtime.PagingHandler[armnetwork.LoadBalancersClientListResponse]{ + More: a.pager.moreFunc(), + Fetcher: a.pager.fetcherFunc(), + }) } type stubPublicIPAddressesAPI struct { @@ -258,3 +222,55 @@ func (a *stubPublicIPAddressesAPI) GetVirtualMachineScaleSetPublicIPAddress(ctx ) (armnetwork.PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResponse, error) { return a.getVirtualMachineScaleSetPublicIPAddressResponse, a.getErr } + +type stubVirtualMachineScaleSetVMPager struct { + list []armcomputev2.VirtualMachineScaleSetVM + fetchErr error + more bool +} + +func (p *stubVirtualMachineScaleSetVMPager) moreFunc() func(armcomputev2.VirtualMachineScaleSetVMsClientListResponse) bool { + return func(armcomputev2.VirtualMachineScaleSetVMsClientListResponse) bool { + return p.more + } +} + +func (p *stubVirtualMachineScaleSetVMPager) fetcherFunc() func(context.Context, *armcomputev2.VirtualMachineScaleSetVMsClientListResponse) (armcomputev2.VirtualMachineScaleSetVMsClientListResponse, error) { + return func(context.Context, *armcomputev2.VirtualMachineScaleSetVMsClientListResponse) (armcomputev2.VirtualMachineScaleSetVMsClientListResponse, error) { + page := make([]*armcomputev2.VirtualMachineScaleSetVM, len(p.list)) + for i := range p.list { + page[i] = &p.list[i] + } + return armcomputev2.VirtualMachineScaleSetVMsClientListResponse{ + VirtualMachineScaleSetVMListResult: armcomputev2.VirtualMachineScaleSetVMListResult{ + Value: page, + }, + }, p.fetchErr + } +} + +type stubLoadBalancersClientListPager struct { + list []armnetwork.LoadBalancer + fetchErr error + more bool +} + +func (p *stubLoadBalancersClientListPager) moreFunc() func(armnetwork.LoadBalancersClientListResponse) bool { + return func(armnetwork.LoadBalancersClientListResponse) bool { + return p.more + } +} + +func (p *stubLoadBalancersClientListPager) fetcherFunc() func(context.Context, *armnetwork.LoadBalancersClientListResponse) (armnetwork.LoadBalancersClientListResponse, error) { + return func(context.Context, *armnetwork.LoadBalancersClientListResponse) (armnetwork.LoadBalancersClientListResponse, error) { + page := make([]*armnetwork.LoadBalancer, len(p.list)) + for i := range p.list { + page[i] = &p.list[i] + } + return armnetwork.LoadBalancersClientListResponse{ + LoadBalancerListResult: armnetwork.LoadBalancerListResult{ + Value: page, + }, + }, p.fetchErr + } +} diff --git a/bootstrapper/cloudprovider/azure/metadata.go b/bootstrapper/cloudprovider/azure/metadata.go index 0965e5a8d..148fcf12e 100644 --- a/bootstrapper/cloudprovider/azure/metadata.go +++ b/bootstrapper/cloudprovider/azure/metadata.go @@ -8,7 +8,7 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" "github.com/edgelesssys/constellation/internal/azureshared" @@ -54,27 +54,54 @@ func NewMetadata(ctx context.Context) (*Metadata, error) { if err != nil { return nil, err } - virtualNetworksAPI := armnetwork.NewVirtualNetworksClient(subscriptionID, cred, nil) - networkInterfacesAPI := armnetwork.NewInterfacesClient(subscriptionID, cred, nil) - publicIPAddressesAPI := armnetwork.NewPublicIPAddressesClient(subscriptionID, cred, nil) - securityGroupsAPI := armnetwork.NewSecurityGroupsClient(subscriptionID, cred, nil) - scaleSetsAPI := armcompute.NewVirtualMachineScaleSetsClient(subscriptionID, cred, nil) - loadBalancerAPI := armnetwork.NewLoadBalancersClient(subscriptionID, cred, nil) - virtualMachineScaleSetVMsAPI := armcompute.NewVirtualMachineScaleSetVMsClient(subscriptionID, cred, nil) - tagsAPI := armresources.NewTagsClient(subscriptionID, cred, nil) - applicationInsightsAPI := armapplicationinsights.NewComponentsClient(subscriptionID, cred, nil) + virtualNetworksAPI, err := armnetwork.NewVirtualNetworksClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + networkInterfacesAPI, err := armnetwork.NewInterfacesClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + publicIPAddressesAPI, err := armnetwork.NewPublicIPAddressesClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + securityGroupsAPI, err := armnetwork.NewSecurityGroupsClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + scaleSetsAPI, err := armcomputev2.NewVirtualMachineScaleSetsClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + loadBalancerAPI, err := armnetwork.NewLoadBalancersClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + virtualMachineScaleSetVMsAPI, err := armcomputev2.NewVirtualMachineScaleSetVMsClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + tagsAPI, err := armresources.NewTagsClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + applicationInsightsAPI, err := armapplicationinsights.NewComponentsClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } return &Metadata{ imdsAPI: &imdsAPI, - virtualNetworksAPI: &virtualNetworksClient{virtualNetworksAPI}, - networkInterfacesAPI: &networkInterfacesClient{networkInterfacesAPI}, - securityGroupsAPI: &securityGroupsClient{securityGroupsAPI}, - publicIPAddressesAPI: &publicIPAddressesClient{publicIPAddressesAPI}, - loadBalancerAPI: &loadBalancersClient{loadBalancerAPI}, - scaleSetsAPI: &scaleSetsClient{scaleSetsAPI}, - virtualMachineScaleSetVMsAPI: &virtualMachineScaleSetVMsClient{virtualMachineScaleSetVMsAPI}, - tagsAPI: &tagsClient{tagsAPI}, - applicationInsightsAPI: &applicationInsightsClient{applicationInsightsAPI}, + virtualNetworksAPI: virtualNetworksAPI, + networkInterfacesAPI: networkInterfacesAPI, + securityGroupsAPI: securityGroupsAPI, + publicIPAddressesAPI: publicIPAddressesAPI, + loadBalancerAPI: loadBalancerAPI, + scaleSetsAPI: scaleSetsAPI, + virtualMachineScaleSetVMsAPI: virtualMachineScaleSetVMsAPI, + tagsAPI: tagsAPI, + applicationInsightsAPI: applicationInsightsAPI, }, nil } @@ -166,10 +193,14 @@ func (m *Metadata) getLoadBalancer(ctx context.Context) (*armnetwork.LoadBalance if err != nil { return nil, err } - pager := m.loadBalancerAPI.List(resourceGroup, nil) + pager := m.loadBalancerAPI.NewListPager(resourceGroup, nil) - for pager.NextPage(ctx) { - for _, lb := range pager.PageResponse().Value { + for pager.More() { + page, err := pager.NextPage(ctx) + if err != nil { + return nil, fmt.Errorf("retrieving loadbalancer page: %w", err) + } + for _, lb := range page.Value { if lb != nil && lb.Properties != nil { return lb, nil } @@ -269,7 +300,7 @@ func extractInstanceTags(tags map[string]*string) map[string]string { } // extractSSHKeys extracts SSH public keys from azure instance OS Profile. -func extractSSHKeys(sshConfig armcompute.SSHConfiguration) map[string][]string { +func extractSSHKeys(sshConfig armcomputev2.SSHConfiguration) map[string][]string { sshKeys := map[string][]string{} for _, key := range sshConfig.PublicKeys { if key == nil || key.Path == nil || key.KeyData == nil { diff --git a/bootstrapper/cloudprovider/azure/metadata_test.go b/bootstrapper/cloudprovider/azure/metadata_test.go index 8c18513f0..0e11e6ced 100644 --- a/bootstrapper/cloudprovider/azure/metadata_test.go +++ b/bootstrapper/cloudprovider/azure/metadata_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/edgelesssys/constellation/internal/cloud/metadata" "github.com/stretchr/testify/assert" @@ -145,25 +145,27 @@ func TestGetNetworkSecurityGroupName(t *testing.T) { "GetNetworkSecurityGroupName works": { imdsAPI: newScaleSetIMDSStub(), securityGroupsAPI: &stubSecurityGroupsAPI{ - listPages: [][]*armnetwork.SecurityGroup{ - { - { - Name: to.StringPtr(name), - }, - }, + pager: &stubSecurityGroupsClientListPager{ + list: []armnetwork.SecurityGroup{{Name: to.Ptr(name)}}, }, }, wantName: name, }, "no security group": { - imdsAPI: newScaleSetIMDSStub(), - securityGroupsAPI: &stubSecurityGroupsAPI{}, - wantErr: true, + imdsAPI: newScaleSetIMDSStub(), + securityGroupsAPI: &stubSecurityGroupsAPI{ + pager: &stubSecurityGroupsClientListPager{}, + }, + wantErr: true, }, "missing name in security group struct": { - imdsAPI: newScaleSetIMDSStub(), - securityGroupsAPI: &stubSecurityGroupsAPI{listPages: [][]*armnetwork.SecurityGroup{{{}}}}, - wantErr: true, + imdsAPI: newScaleSetIMDSStub(), + securityGroupsAPI: &stubSecurityGroupsAPI{ + pager: &stubSecurityGroupsClientListPager{ + list: []armnetwork.SecurityGroup{{}}, + }, + }, + wantErr: true, }, } for name, tc := range testCases { @@ -197,35 +199,33 @@ func TestGetSubnetworkCIDR(t *testing.T) { }{ "GetSubnetworkCIDR works": { imdsAPI: newScaleSetIMDSStub(), - virtualNetworksAPI: &stubVirtualNetworksAPI{listPages: [][]*armnetwork.VirtualNetwork{ - { - { - Name: to.StringPtr(name), + virtualNetworksAPI: &stubVirtualNetworksAPI{ + pager: &stubVirtualNetworksClientListPager{ + list: []armnetwork.VirtualNetwork{{ + Name: to.Ptr(name), Properties: &armnetwork.VirtualNetworkPropertiesFormat{ Subnets: []*armnetwork.Subnet{ - {Properties: &armnetwork.SubnetPropertiesFormat{AddressPrefix: to.StringPtr(subnetworkCIDR)}}, + {Properties: &armnetwork.SubnetPropertiesFormat{AddressPrefix: to.Ptr(subnetworkCIDR)}}, }, }, - }, + }}, }, - }}, + }, wantNetworkCIDR: subnetworkCIDR, }, "no virtual networks found": { imdsAPI: newScaleSetIMDSStub(), - virtualNetworksAPI: &stubVirtualNetworksAPI{listPages: [][]*armnetwork.VirtualNetwork{ - {}, - }}, + virtualNetworksAPI: &stubVirtualNetworksAPI{ + pager: &stubVirtualNetworksClientListPager{}, + }, wantErr: true, wantNetworkCIDR: subnetworkCIDR, }, "malformed network struct": { imdsAPI: newScaleSetIMDSStub(), - virtualNetworksAPI: &stubVirtualNetworksAPI{listPages: [][]*armnetwork.VirtualNetwork{ - { - {}, - }, - }}, + virtualNetworksAPI: &stubVirtualNetworksAPI{ + pager: &stubVirtualNetworksClientListPager{list: []armnetwork.VirtualNetwork{{}}}, + }, wantErr: true, wantNetworkCIDR: subnetworkCIDR, }, @@ -261,27 +261,29 @@ func TestGetLoadBalancerName(t *testing.T) { "GetLoadBalancerName works": { imdsAPI: newScaleSetIMDSStub(), loadBalancerAPI: &stubLoadBalancersAPI{ - listPages: [][]*armnetwork.LoadBalancer{ - { - { - Name: to.StringPtr(loadBalancerName), - Properties: &armnetwork.LoadBalancerPropertiesFormat{}, - }, - }, + pager: &stubLoadBalancersClientListPager{ + list: []armnetwork.LoadBalancer{{ + Name: to.Ptr(loadBalancerName), + Properties: &armnetwork.LoadBalancerPropertiesFormat{}, + }}, }, }, wantName: loadBalancerName, }, "invalid load balancer struct": { - imdsAPI: newScaleSetIMDSStub(), - loadBalancerAPI: &stubLoadBalancersAPI{listPages: [][]*armnetwork.LoadBalancer{{{}}}}, - wantErr: true, + imdsAPI: newScaleSetIMDSStub(), + loadBalancerAPI: &stubLoadBalancersAPI{ + pager: &stubLoadBalancersClientListPager{list: []armnetwork.LoadBalancer{{}}}, + }, + wantErr: true, }, "invalid missing name": { imdsAPI: newScaleSetIMDSStub(), - loadBalancerAPI: &stubLoadBalancersAPI{listPages: [][]*armnetwork.LoadBalancer{{{ - Properties: &armnetwork.LoadBalancerPropertiesFormat{}, - }}}}, + loadBalancerAPI: &stubLoadBalancersAPI{ + pager: &stubLoadBalancersClientListPager{list: []armnetwork.LoadBalancer{{ + Properties: &armnetwork.LoadBalancerPropertiesFormat{}, + }}}, + }, wantErr: true, }, } @@ -320,31 +322,25 @@ func TestGetLoadBalancerIP(t *testing.T) { "GetLoadBalancerIP works": { imdsAPI: newScaleSetIMDSStub(), loadBalancerAPI: &stubLoadBalancersAPI{ - listPages: [][]*armnetwork.LoadBalancer{ - { - { - Name: to.StringPtr(loadBalancerName), - Properties: &armnetwork.LoadBalancerPropertiesFormat{ - FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{ - { - Properties: &armnetwork.FrontendIPConfigurationPropertiesFormat{ - PublicIPAddress: &armnetwork.PublicIPAddress{ - ID: &correctPublicIPID, - }, - }, + pager: &stubLoadBalancersClientListPager{ + list: []armnetwork.LoadBalancer{{ + Name: to.Ptr(loadBalancerName), + Properties: &armnetwork.LoadBalancerPropertiesFormat{ + FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{ + { + Properties: &armnetwork.FrontendIPConfigurationPropertiesFormat{ + PublicIPAddress: &armnetwork.PublicIPAddress{ID: &correctPublicIPID}, }, }, }, }, - }, + }}, }, }, publicIPAddressesAPI: &stubPublicIPAddressesAPI{getResponse: armnetwork.PublicIPAddressesClientGetResponse{ - PublicIPAddressesClientGetResult: armnetwork.PublicIPAddressesClientGetResult{ - PublicIPAddress: armnetwork.PublicIPAddress{ - Properties: &armnetwork.PublicIPAddressPropertiesFormat{ - IPAddress: &publicIP, - }, + PublicIPAddress: armnetwork.PublicIPAddress{ + Properties: &armnetwork.PublicIPAddressPropertiesFormat{ + IPAddress: &publicIP, }, }, }}, @@ -353,24 +349,20 @@ func TestGetLoadBalancerIP(t *testing.T) { "no load balancer": { imdsAPI: newScaleSetIMDSStub(), loadBalancerAPI: &stubLoadBalancersAPI{ - listPages: [][]*armnetwork.LoadBalancer{ - {}, - }, + pager: &stubLoadBalancersClientListPager{}, }, wantErr: true, }, "load balancer missing public IP reference": { imdsAPI: newScaleSetIMDSStub(), loadBalancerAPI: &stubLoadBalancersAPI{ - listPages: [][]*armnetwork.LoadBalancer{ - { - { - Name: to.StringPtr(loadBalancerName), - Properties: &armnetwork.LoadBalancerPropertiesFormat{ - FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{}, - }, + pager: &stubLoadBalancersClientListPager{ + list: []armnetwork.LoadBalancer{{ + Name: to.Ptr(loadBalancerName), + Properties: &armnetwork.LoadBalancerPropertiesFormat{ + FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{}, }, - }, + }}, }, }, wantErr: true, @@ -378,23 +370,21 @@ func TestGetLoadBalancerIP(t *testing.T) { "public IP reference has wrong format": { imdsAPI: newScaleSetIMDSStub(), loadBalancerAPI: &stubLoadBalancersAPI{ - listPages: [][]*armnetwork.LoadBalancer{ - { - { - Name: to.StringPtr(loadBalancerName), - Properties: &armnetwork.LoadBalancerPropertiesFormat{ - FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{ - { - Properties: &armnetwork.FrontendIPConfigurationPropertiesFormat{ - PublicIPAddress: &armnetwork.PublicIPAddress{ - ID: to.StringPtr("wrong-format"), - }, + pager: &stubLoadBalancersClientListPager{ + list: []armnetwork.LoadBalancer{{ + Name: to.Ptr(loadBalancerName), + Properties: &armnetwork.LoadBalancerPropertiesFormat{ + FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{ + { + Properties: &armnetwork.FrontendIPConfigurationPropertiesFormat{ + PublicIPAddress: &armnetwork.PublicIPAddress{ + ID: to.Ptr("wrong-format"), }, }, }, }, }, - }, + }}, }, }, wantErr: true, @@ -402,23 +392,19 @@ func TestGetLoadBalancerIP(t *testing.T) { "no public IP address found": { imdsAPI: newScaleSetIMDSStub(), loadBalancerAPI: &stubLoadBalancersAPI{ - listPages: [][]*armnetwork.LoadBalancer{ - { - { - Name: to.StringPtr(loadBalancerName), - Properties: &armnetwork.LoadBalancerPropertiesFormat{ - FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{ - { - Properties: &armnetwork.FrontendIPConfigurationPropertiesFormat{ - PublicIPAddress: &armnetwork.PublicIPAddress{ - ID: &correctPublicIPID, - }, - }, + pager: &stubLoadBalancersClientListPager{ + list: []armnetwork.LoadBalancer{{ + Name: to.Ptr(loadBalancerName), + Properties: &armnetwork.LoadBalancerPropertiesFormat{ + FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{ + { + Properties: &armnetwork.FrontendIPConfigurationPropertiesFormat{ + PublicIPAddress: &armnetwork.PublicIPAddress{ID: &correctPublicIPID}, }, }, }, }, - }, + }}, }, }, publicIPAddressesAPI: &stubPublicIPAddressesAPI{getErr: someErr}, @@ -427,30 +413,24 @@ func TestGetLoadBalancerIP(t *testing.T) { "found public IP has no address field": { imdsAPI: newScaleSetIMDSStub(), loadBalancerAPI: &stubLoadBalancersAPI{ - listPages: [][]*armnetwork.LoadBalancer{ - { - { - Name: to.StringPtr(loadBalancerName), - Properties: &armnetwork.LoadBalancerPropertiesFormat{ - FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{ - { - Properties: &armnetwork.FrontendIPConfigurationPropertiesFormat{ - PublicIPAddress: &armnetwork.PublicIPAddress{ - ID: &correctPublicIPID, - }, - }, + pager: &stubLoadBalancersClientListPager{ + list: []armnetwork.LoadBalancer{{ + Name: to.Ptr(loadBalancerName), + Properties: &armnetwork.LoadBalancerPropertiesFormat{ + FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{ + { + Properties: &armnetwork.FrontendIPConfigurationPropertiesFormat{ + PublicIPAddress: &armnetwork.PublicIPAddress{ID: &correctPublicIPID}, }, }, }, }, - }, + }}, }, }, publicIPAddressesAPI: &stubPublicIPAddressesAPI{getResponse: armnetwork.PublicIPAddressesClientGetResponse{ - PublicIPAddressesClientGetResult: armnetwork.PublicIPAddressesClientGetResult{ - PublicIPAddress: armnetwork.PublicIPAddress{ - Properties: &armnetwork.PublicIPAddressPropertiesFormat{}, - }, + PublicIPAddress: armnetwork.PublicIPAddress{ + Properties: &armnetwork.PublicIPAddressPropertiesFormat{}, }, }}, wantErr: true, @@ -525,7 +505,7 @@ func TestExtractInstanceTags(t *testing.T) { wantTags map[string]string }{ "tags are extracted": { - in: map[string]*string{"key": to.StringPtr("value")}, + in: map[string]*string{"key": to.Ptr("value")}, wantTags: map[string]string{"key": "value"}, }, "nil values are skipped": { @@ -547,53 +527,53 @@ func TestExtractInstanceTags(t *testing.T) { func TestExtractSSHKeys(t *testing.T) { testCases := map[string]struct { - in armcompute.SSHConfiguration + in armcomputev2.SSHConfiguration wantKeys map[string][]string }{ "ssh key is extracted": { - in: armcompute.SSHConfiguration{ - PublicKeys: []*armcompute.SSHPublicKey{ + in: armcomputev2.SSHConfiguration{ + PublicKeys: []*armcomputev2.SSHPublicKey{ { - KeyData: to.StringPtr("key-data"), - Path: to.StringPtr("/home/user/.ssh/authorized_keys"), + KeyData: to.Ptr("key-data"), + Path: to.Ptr("/home/user/.ssh/authorized_keys"), }, }, }, wantKeys: map[string][]string{"user": {"key-data"}}, }, "invalid path is skipped": { - in: armcompute.SSHConfiguration{ - PublicKeys: []*armcompute.SSHPublicKey{ + in: armcomputev2.SSHConfiguration{ + PublicKeys: []*armcomputev2.SSHPublicKey{ { - KeyData: to.StringPtr("key-data"), - Path: to.StringPtr("invalid-path"), + KeyData: to.Ptr("key-data"), + Path: to.Ptr("invalid-path"), }, }, }, wantKeys: map[string][]string{}, }, "key data is nil": { - in: armcompute.SSHConfiguration{ - PublicKeys: []*armcompute.SSHPublicKey{ + in: armcomputev2.SSHConfiguration{ + PublicKeys: []*armcomputev2.SSHPublicKey{ { - Path: to.StringPtr("/home/user/.ssh/authorized_keys"), + Path: to.Ptr("/home/user/.ssh/authorized_keys"), }, }, }, wantKeys: map[string][]string{}, }, "path is nil": { - in: armcompute.SSHConfiguration{ - PublicKeys: []*armcompute.SSHPublicKey{ + in: armcomputev2.SSHConfiguration{ + PublicKeys: []*armcomputev2.SSHPublicKey{ { - KeyData: to.StringPtr("key-data"), + KeyData: to.Ptr("key-data"), }, }, }, wantKeys: map[string][]string{}, }, "public keys are nil": { - in: armcompute.SSHConfiguration{}, + in: armcomputev2.SSHConfiguration{}, wantKeys: map[string][]string{}, }, } @@ -628,13 +608,13 @@ func newInvalidIMDSStub() *stubIMDSAPI { func newNetworkInterfacesStub() *stubNetworkInterfacesAPI { return &stubNetworkInterfacesAPI{ getInterface: armnetwork.Interface{ - Name: to.StringPtr("interface-name"), + Name: to.Ptr("interface-name"), Properties: &armnetwork.InterfacePropertiesFormat{ IPConfigurations: []*armnetwork.InterfaceIPConfiguration{ { Properties: &armnetwork.InterfaceIPConfigurationPropertiesFormat{ - PrivateIPAddress: to.StringPtr("192.0.2.0"), - Primary: to.BoolPtr(true), + PrivateIPAddress: to.Ptr("192.0.2.0"), + Primary: to.Ptr(true), }, }, }, @@ -645,38 +625,36 @@ func newNetworkInterfacesStub() *stubNetworkInterfacesAPI { func newScaleSetsStub() *stubScaleSetsAPI { return &stubScaleSetsAPI{ - listPages: [][]*armcompute.VirtualMachineScaleSet{ - { - &armcompute.VirtualMachineScaleSet{ - Name: to.StringPtr("scale-set-name"), - }, - }, + pager: &stubVirtualMachineScaleSetsClientListPager{ + list: []armcomputev2.VirtualMachineScaleSet{{ + Name: to.Ptr("scale-set-name"), + }}, }, } } func newVirtualMachineScaleSetsVMsStub() *stubVirtualMachineScaleSetVMsAPI { return &stubVirtualMachineScaleSetVMsAPI{ - getVM: armcompute.VirtualMachineScaleSetVM{ - Name: to.StringPtr("scale-set-name_instance-id"), - InstanceID: to.StringPtr("instance-id"), - ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id"), - Properties: &armcompute.VirtualMachineScaleSetVMProperties{ - NetworkProfile: &armcompute.NetworkProfile{ - NetworkInterfaces: []*armcompute.NetworkInterfaceReference{ + getVM: armcomputev2.VirtualMachineScaleSetVM{ + Name: to.Ptr("scale-set-name_instance-id"), + InstanceID: to.Ptr("instance-id"), + ID: to.Ptr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id"), + Properties: &armcomputev2.VirtualMachineScaleSetVMProperties{ + NetworkProfile: &armcomputev2.NetworkProfile{ + NetworkInterfaces: []*armcomputev2.NetworkInterfaceReference{ { - ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), + ID: to.Ptr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), }, }, }, - OSProfile: &armcompute.OSProfile{ - ComputerName: to.StringPtr("scale-set-name-instance-id"), - LinuxConfiguration: &armcompute.LinuxConfiguration{ - SSH: &armcompute.SSHConfiguration{ - PublicKeys: []*armcompute.SSHPublicKey{ + OSProfile: &armcomputev2.OSProfile{ + ComputerName: to.Ptr("scale-set-name-instance-id"), + LinuxConfiguration: &armcomputev2.LinuxConfiguration{ + SSH: &armcomputev2.SSHConfiguration{ + PublicKeys: []*armcomputev2.SSHPublicKey{ { - KeyData: to.StringPtr("key-data"), - Path: to.StringPtr("/home/user/.ssh/authorized_keys"), + KeyData: to.Ptr("key-data"), + Path: to.Ptr("/home/user/.ssh/authorized_keys"), }, }, }, @@ -684,48 +662,44 @@ func newVirtualMachineScaleSetsVMsStub() *stubVirtualMachineScaleSetVMsAPI { }, }, }, - listPages: [][]*armcompute.VirtualMachineScaleSetVM{ - { - &armcompute.VirtualMachineScaleSetVM{ - Name: to.StringPtr("scale-set-name_instance-id"), - InstanceID: to.StringPtr("instance-id"), - ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id"), - Properties: &armcompute.VirtualMachineScaleSetVMProperties{ - NetworkProfile: &armcompute.NetworkProfile{ - NetworkInterfaces: []*armcompute.NetworkInterfaceReference{ - { - ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), - }, + pager: &stubVirtualMachineScaleSetVMPager{ + list: []armcomputev2.VirtualMachineScaleSetVM{{ + Name: to.Ptr("scale-set-name_instance-id"), + InstanceID: to.Ptr("instance-id"), + ID: to.Ptr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id"), + Properties: &armcomputev2.VirtualMachineScaleSetVMProperties{ + NetworkProfile: &armcomputev2.NetworkProfile{ + NetworkInterfaces: []*armcomputev2.NetworkInterfaceReference{ + { + ID: to.Ptr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), }, }, - OSProfile: &armcompute.OSProfile{ - ComputerName: to.StringPtr("scale-set-name-instance-id"), - LinuxConfiguration: &armcompute.LinuxConfiguration{ - SSH: &armcompute.SSHConfiguration{ - PublicKeys: []*armcompute.SSHPublicKey{ - { - KeyData: to.StringPtr("key-data"), - Path: to.StringPtr("/home/user/.ssh/authorized_keys"), - }, + }, + OSProfile: &armcomputev2.OSProfile{ + ComputerName: to.Ptr("scale-set-name-instance-id"), + LinuxConfiguration: &armcomputev2.LinuxConfiguration{ + SSH: &armcomputev2.SSHConfiguration{ + PublicKeys: []*armcomputev2.SSHPublicKey{ + { + KeyData: to.Ptr("key-data"), + Path: to.Ptr("/home/user/.ssh/authorized_keys"), }, }, }, }, }, }, - }, + }}, }, } } func newFailingListsVirtualMachineScaleSetsVMsStub() *stubVirtualMachineScaleSetVMsAPI { return &stubVirtualMachineScaleSetVMsAPI{ - listPages: [][]*armcompute.VirtualMachineScaleSetVM{ - { - { - InstanceID: to.StringPtr("invalid-instance-id"), - }, - }, + pager: &stubVirtualMachineScaleSetVMPager{ + list: []armcomputev2.VirtualMachineScaleSetVM{{ + InstanceID: to.Ptr("invalid-instance-id"), + }}, }, } } diff --git a/bootstrapper/cloudprovider/azure/network.go b/bootstrapper/cloudprovider/azure/network.go index 62fc455c3..a7289eb8c 100644 --- a/bootstrapper/cloudprovider/azure/network.go +++ b/bootstrapper/cloudprovider/azure/network.go @@ -6,12 +6,12 @@ import ( "fmt" "strings" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" ) // getVMInterfaces retrieves all network interfaces referenced by a virtual machine. -func (m *Metadata) getVMInterfaces(ctx context.Context, vm armcompute.VirtualMachine, resourceGroup string) ([]armnetwork.Interface, error) { +func (m *Metadata) getVMInterfaces(ctx context.Context, vm armcomputev2.VirtualMachine, resourceGroup string) ([]armnetwork.Interface, error) { if vm.Properties == nil || vm.Properties.NetworkProfile == nil { return []armnetwork.Interface{}, nil } @@ -28,7 +28,7 @@ func (m *Metadata) getVMInterfaces(ctx context.Context, vm armcompute.VirtualMac } // getScaleSetVMInterfaces retrieves all network interfaces referenced by a scale set virtual machine. -func (m *Metadata) getScaleSetVMInterfaces(ctx context.Context, vm armcompute.VirtualMachineScaleSetVM, resourceGroup, scaleSet, instanceID string) ([]armnetwork.Interface, error) { +func (m *Metadata) getScaleSetVMInterfaces(ctx context.Context, vm armcomputev2.VirtualMachineScaleSetVM, resourceGroup, scaleSet, instanceID string) ([]armnetwork.Interface, error) { if vm.Properties == nil || vm.Properties.NetworkProfile == nil { return []armnetwork.Interface{}, nil } @@ -99,7 +99,7 @@ func extractVPCIP(networkInterfaces []armnetwork.Interface) string { // Format: // - "/subscriptions//resourceGroups//providers/Microsoft.Network/networkInterfaces/" // - "/subscriptions//resourceGroups//providers/Microsoft.Compute/virtualMachineScaleSets//virtualMachines//networkInterfaces/". -func extractInterfaceNamesFromInterfaceReferences(references []*armcompute.NetworkInterfaceReference) []string { +func extractInterfaceNamesFromInterfaceReferences(references []*armcomputev2.NetworkInterfaceReference) []string { interfaceNames := []string{} for _, interfaceReference := range references { if interfaceReference == nil || interfaceReference.ID == nil { diff --git a/bootstrapper/cloudprovider/azure/network_test.go b/bootstrapper/cloudprovider/azure/network_test.go index fdd4f0747..f844498bd 100644 --- a/bootstrapper/cloudprovider/azure/network_test.go +++ b/bootstrapper/cloudprovider/azure/network_test.go @@ -5,7 +5,7 @@ import ( "errors" "testing" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/Azure/go-autorest/autorest/to" "github.com/stretchr/testify/assert" @@ -27,10 +27,10 @@ func TestGetVMInterfaces(t *testing.T) { }, }, } - vm := armcompute.VirtualMachine{ - Properties: &armcompute.VirtualMachineProperties{ - NetworkProfile: &armcompute.NetworkProfile{ - NetworkInterfaces: []*armcompute.NetworkInterfaceReference{ + vm := armcomputev2.VirtualMachine{ + Properties: &armcomputev2.VirtualMachineProperties{ + NetworkProfile: &armcomputev2.NetworkProfile{ + NetworkInterfaces: []*armcomputev2.NetworkInterfaceReference{ { ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Network/networkInterfaces/interface-name"), }, @@ -39,7 +39,7 @@ func TestGetVMInterfaces(t *testing.T) { }, } testCases := map[string]struct { - vm armcompute.VirtualMachine + vm armcomputev2.VirtualMachine networkInterfacesAPI networkInterfacesAPI wantErr bool wantNetworkInterfaces []armnetwork.Interface @@ -63,7 +63,7 @@ func TestGetVMInterfaces(t *testing.T) { wantNetworkInterfaces: wantNetworkInterfaces, }, "vm can have 0 interfaces": { - vm: armcompute.VirtualMachine{}, + vm: armcomputev2.VirtualMachine{}, networkInterfacesAPI: &stubNetworkInterfacesAPI{ getInterface: armnetwork.Interface{ Name: to.StringPtr("interface-name"), @@ -124,10 +124,10 @@ func TestGetScaleSetVMInterfaces(t *testing.T) { }, }, } - vm := armcompute.VirtualMachineScaleSetVM{ - Properties: &armcompute.VirtualMachineScaleSetVMProperties{ - NetworkProfile: &armcompute.NetworkProfile{ - NetworkInterfaces: []*armcompute.NetworkInterfaceReference{ + vm := armcomputev2.VirtualMachineScaleSetVM{ + Properties: &armcomputev2.VirtualMachineScaleSetVMProperties{ + NetworkProfile: &armcomputev2.NetworkProfile{ + NetworkInterfaces: []*armcomputev2.NetworkInterfaceReference{ { ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), }, @@ -136,7 +136,7 @@ func TestGetScaleSetVMInterfaces(t *testing.T) { }, } testCases := map[string]struct { - vm armcompute.VirtualMachineScaleSetVM + vm armcomputev2.VirtualMachineScaleSetVM networkInterfacesAPI networkInterfacesAPI wantErr bool wantNetworkInterfaces []armnetwork.Interface @@ -160,7 +160,7 @@ func TestGetScaleSetVMInterfaces(t *testing.T) { wantNetworkInterfaces: wantNetworkInterfaces, }, "vm can have 0 interfaces": { - vm: armcompute.VirtualMachineScaleSetVM{}, + vm: armcomputev2.VirtualMachineScaleSetVM{}, networkInterfacesAPI: &stubNetworkInterfacesAPI{ getInterface: armnetwork.Interface{ Name: to.StringPtr("interface-name"), @@ -250,11 +250,9 @@ func TestGetScaleSetVMPublicIPAddresses(t *testing.T) { }{ "retrieval works": { publicIPAddressesAPI: &stubPublicIPAddressesAPI{getVirtualMachineScaleSetPublicIPAddressResponse: armnetwork.PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResponse{ - PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResult: armnetwork.PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResult{ - PublicIPAddress: armnetwork.PublicIPAddress{ - Properties: &armnetwork.PublicIPAddressPropertiesFormat{ - IPAddress: to.StringPtr("192.0.2.1"), - }, + PublicIPAddress: armnetwork.PublicIPAddress{ + Properties: &armnetwork.PublicIPAddressPropertiesFormat{ + IPAddress: to.StringPtr("192.0.2.1"), }, }, }}, @@ -263,11 +261,9 @@ func TestGetScaleSetVMPublicIPAddresses(t *testing.T) { }, "retrieval works for no valid interfaces": { publicIPAddressesAPI: &stubPublicIPAddressesAPI{getVirtualMachineScaleSetPublicIPAddressResponse: armnetwork.PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResponse{ - PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResult: armnetwork.PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResult{ - PublicIPAddress: armnetwork.PublicIPAddress{ - Properties: &armnetwork.PublicIPAddressPropertiesFormat{ - IPAddress: to.StringPtr("192.0.2.1"), - }, + PublicIPAddress: armnetwork.PublicIPAddress{ + Properties: &armnetwork.PublicIPAddressPropertiesFormat{ + IPAddress: to.StringPtr("192.0.2.1"), }, }, }}, @@ -284,9 +280,7 @@ func TestGetScaleSetVMPublicIPAddresses(t *testing.T) { }, "fail to parse IPv4 address of public IP": { publicIPAddressesAPI: &stubPublicIPAddressesAPI{getVirtualMachineScaleSetPublicIPAddressResponse: armnetwork.PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResponse{ - PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResult: armnetwork.PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResult{ - PublicIPAddress: armnetwork.PublicIPAddress{}, - }, + PublicIPAddress: armnetwork.PublicIPAddress{}, }}, networkInterfaces: newNetworkInterfaces(), wantErr: true, @@ -364,11 +358,11 @@ func TestExtractPrivateIPs(t *testing.T) { func TestExtractInterfaceNamesFromInterfaceReferences(t *testing.T) { testCases := map[string]struct { - references []*armcompute.NetworkInterfaceReference + references []*armcomputev2.NetworkInterfaceReference wantNames []string }{ "extraction with individual interface reference works": { - references: []*armcompute.NetworkInterfaceReference{ + references: []*armcomputev2.NetworkInterfaceReference{ { ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Network/networkInterfaces/interface-name"), }, @@ -376,7 +370,7 @@ func TestExtractInterfaceNamesFromInterfaceReferences(t *testing.T) { wantNames: []string{"interface-name"}, }, "extraction with scale set interface reference works": { - references: []*armcompute.NetworkInterfaceReference{ + references: []*armcomputev2.NetworkInterfaceReference{ { ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), }, @@ -384,10 +378,10 @@ func TestExtractInterfaceNamesFromInterfaceReferences(t *testing.T) { wantNames: []string{"interface-name"}, }, "can be empty": { - references: []*armcompute.NetworkInterfaceReference{}, + references: []*armcomputev2.NetworkInterfaceReference{}, }, "interface reference containing nil fields is skipped": { - references: []*armcompute.NetworkInterfaceReference{ + references: []*armcomputev2.NetworkInterfaceReference{ {}, }, }, diff --git a/bootstrapper/cloudprovider/azure/scaleset.go b/bootstrapper/cloudprovider/azure/scaleset.go index 9169af436..1c2cc67df 100644 --- a/bootstrapper/cloudprovider/azure/scaleset.go +++ b/bootstrapper/cloudprovider/azure/scaleset.go @@ -3,9 +3,10 @@ package azure import ( "context" "errors" + "fmt" "regexp" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/edgelesssys/constellation/bootstrapper/role" "github.com/edgelesssys/constellation/internal/azureshared" @@ -42,15 +43,23 @@ func (m *Metadata) getScaleSetVM(ctx context.Context, providerID string) (metada // listScaleSetVMs lists all scale set VMs in the current resource group. func (m *Metadata) listScaleSetVMs(ctx context.Context, resourceGroup string) ([]metadata.InstanceMetadata, error) { instances := []metadata.InstanceMetadata{} - scaleSetPager := m.scaleSetsAPI.List(resourceGroup, nil) - for scaleSetPager.NextPage(ctx) { - for _, scaleSet := range scaleSetPager.PageResponse().Value { + scaleSetPager := m.scaleSetsAPI.NewListPager(resourceGroup, nil) + for scaleSetPager.More() { + page, err := scaleSetPager.NextPage(ctx) + if err != nil { + return nil, fmt.Errorf("retrieving scale sets: %w", err) + } + for _, scaleSet := range page.Value { if scaleSet == nil || scaleSet.Name == nil { continue } - vmPager := m.virtualMachineScaleSetVMsAPI.List(resourceGroup, *scaleSet.Name, nil) - for vmPager.NextPage(ctx) { - for _, vm := range vmPager.PageResponse().Value { + vmPager := m.virtualMachineScaleSetVMsAPI.NewListPager(resourceGroup, *scaleSet.Name, nil) + for vmPager.More() { + vmPage, err := vmPager.NextPage(ctx) + if err != nil { + return nil, fmt.Errorf("retrieving vms: %w", err) + } + for _, vm := range vmPage.Value { if vm == nil || vm.InstanceID == nil { continue } @@ -71,7 +80,7 @@ func (m *Metadata) listScaleSetVMs(ctx context.Context, resourceGroup string) ([ } // convertScaleSetVMToCoreInstance converts an azure scale set virtual machine with interface configurations into a core.Instance. -func convertScaleSetVMToCoreInstance(scaleSet string, vm armcompute.VirtualMachineScaleSetVM, networkInterfaces []armnetwork.Interface, publicIPAddress string) (metadata.InstanceMetadata, error) { +func convertScaleSetVMToCoreInstance(scaleSet string, vm armcomputev2.VirtualMachineScaleSetVM, networkInterfaces []armnetwork.Interface, publicIPAddress string) (metadata.InstanceMetadata, error) { if vm.ID == nil { return metadata.InstanceMetadata{}, errors.New("retrieving instance from armcompute API client returned no instance ID") } diff --git a/bootstrapper/cloudprovider/azure/scaleset_test.go b/bootstrapper/cloudprovider/azure/scaleset_test.go index c5209400a..245304d38 100644 --- a/bootstrapper/cloudprovider/azure/scaleset_test.go +++ b/bootstrapper/cloudprovider/azure/scaleset_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/edgelesssys/constellation/bootstrapper/role" "github.com/edgelesssys/constellation/internal/cloud/metadata" @@ -106,7 +106,7 @@ func TestListScaleSetVMs(t *testing.T) { "listVMs can return 0 VMs": { imdsAPI: newScaleSetIMDSStub(), networkInterfacesAPI: newNetworkInterfacesStub(), - virtualMachineScaleSetVMsAPI: &stubVirtualMachineScaleSetVMsAPI{}, + virtualMachineScaleSetVMsAPI: &stubVirtualMachineScaleSetVMsAPI{pager: &stubVirtualMachineScaleSetVMPager{}}, scaleSetsAPI: newScaleSetsStub(), wantInstances: []metadata.InstanceMetadata{}, }, @@ -151,33 +151,33 @@ func TestListScaleSetVMs(t *testing.T) { func TestConvertScaleSetVMToCoreInstance(t *testing.T) { testCases := map[string]struct { - inVM armcompute.VirtualMachineScaleSetVM + inVM armcomputev2.VirtualMachineScaleSetVM inInterface []armnetwork.Interface inPublicIP string wantErr bool wantInstance metadata.InstanceMetadata }{ "conversion works": { - inVM: armcompute.VirtualMachineScaleSetVM{ - Name: to.StringPtr("scale-set-name_instance-id"), - ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id"), - Tags: map[string]*string{"tag-key": to.StringPtr("tag-value")}, - Properties: &armcompute.VirtualMachineScaleSetVMProperties{ - OSProfile: &armcompute.OSProfile{ - ComputerName: to.StringPtr("scale-set-name-instance-id"), + inVM: armcomputev2.VirtualMachineScaleSetVM{ + Name: to.Ptr("scale-set-name_instance-id"), + ID: to.Ptr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id"), + Tags: map[string]*string{"tag-key": to.Ptr("tag-value")}, + Properties: &armcomputev2.VirtualMachineScaleSetVMProperties{ + OSProfile: &armcomputev2.OSProfile{ + ComputerName: to.Ptr("scale-set-name-instance-id"), }, }, }, inInterface: []armnetwork.Interface{ { - Name: to.StringPtr("scale-set-name_instance-id"), - ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Network/networkInterfaces/interface-name"), + Name: to.Ptr("scale-set-name_instance-id"), + ID: to.Ptr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Network/networkInterfaces/interface-name"), Properties: &armnetwork.InterfacePropertiesFormat{ IPConfigurations: []*armnetwork.InterfaceIPConfiguration{ { Properties: &armnetwork.InterfaceIPConfigurationPropertiesFormat{ - Primary: to.BoolPtr(true), - PrivateIPAddress: to.StringPtr("192.0.2.0"), + Primary: to.Ptr(true), + PrivateIPAddress: to.Ptr("192.0.2.0"), }, }, }, @@ -194,7 +194,7 @@ func TestConvertScaleSetVMToCoreInstance(t *testing.T) { }, }, "invalid instance": { - inVM: armcompute.VirtualMachineScaleSetVM{}, + inVM: armcomputev2.VirtualMachineScaleSetVM{}, wantErr: true, }, } @@ -254,38 +254,37 @@ func newFailingGetScaleSetVirtualMachinesStub() *stubVirtualMachineScaleSetVMsAP func newGetInvalidScaleSetVirtualMachinesStub() *stubVirtualMachineScaleSetVMsAPI { return &stubVirtualMachineScaleSetVMsAPI{ - getVM: armcompute.VirtualMachineScaleSetVM{}, + getVM: armcomputev2.VirtualMachineScaleSetVM{}, } } func newListContainingNilScaleSetVirtualMachinesStub() *stubVirtualMachineScaleSetVMsAPI { return &stubVirtualMachineScaleSetVMsAPI{ - listPages: [][]*armcompute.VirtualMachineScaleSetVM{ - { - nil, + pager: &stubVirtualMachineScaleSetVMPager{ + list: []armcomputev2.VirtualMachineScaleSetVM{ { - Name: to.StringPtr("scale-set-name_instance-id"), - ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id"), - InstanceID: to.StringPtr("instance-id"), + Name: to.Ptr("scale-set-name_instance-id"), + ID: to.Ptr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id"), + InstanceID: to.Ptr("instance-id"), Tags: map[string]*string{ - "tag-key": to.StringPtr("tag-value"), + "tag-key": to.Ptr("tag-value"), }, - Properties: &armcompute.VirtualMachineScaleSetVMProperties{ - NetworkProfile: &armcompute.NetworkProfile{ - NetworkInterfaces: []*armcompute.NetworkInterfaceReference{ + Properties: &armcomputev2.VirtualMachineScaleSetVMProperties{ + NetworkProfile: &armcomputev2.NetworkProfile{ + NetworkInterfaces: []*armcomputev2.NetworkInterfaceReference{ { - ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), + ID: to.Ptr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), }, }, }, - OSProfile: &armcompute.OSProfile{ - ComputerName: to.StringPtr("scale-set-name-instance-id"), - LinuxConfiguration: &armcompute.LinuxConfiguration{ - SSH: &armcompute.SSHConfiguration{ - PublicKeys: []*armcompute.SSHPublicKey{ + OSProfile: &armcomputev2.OSProfile{ + ComputerName: to.Ptr("scale-set-name-instance-id"), + LinuxConfiguration: &armcomputev2.LinuxConfiguration{ + SSH: &armcomputev2.SSHConfiguration{ + PublicKeys: []*armcomputev2.SSHPublicKey{ { - KeyData: to.StringPtr("key-data"), - Path: to.StringPtr("/home/user/.ssh/authorized_keys"), + KeyData: to.Ptr("key-data"), + Path: to.Ptr("/home/user/.ssh/authorized_keys"), }, }, }, @@ -300,20 +299,16 @@ func newListContainingNilScaleSetVirtualMachinesStub() *stubVirtualMachineScaleS func newListContainingInvalidScaleSetVirtualMachinesStub() *stubVirtualMachineScaleSetVMsAPI { return &stubVirtualMachineScaleSetVMsAPI{ - listPages: [][]*armcompute.VirtualMachineScaleSetVM{ - { + pager: &stubVirtualMachineScaleSetVMPager{ + list: []armcomputev2.VirtualMachineScaleSetVM{ { - Name: nil, - ID: nil, - InstanceID: to.StringPtr("instance-id"), - Properties: &armcompute.VirtualMachineScaleSetVMProperties{ - OSProfile: &armcompute.OSProfile{ - ComputerName: nil, - }, - NetworkProfile: &armcompute.NetworkProfile{ - NetworkInterfaces: []*armcompute.NetworkInterfaceReference{ + InstanceID: to.Ptr("instance-id"), + Properties: &armcomputev2.VirtualMachineScaleSetVMProperties{ + OSProfile: &armcomputev2.OSProfile{}, + NetworkProfile: &armcomputev2.NetworkProfile{ + NetworkInterfaces: []*armcomputev2.NetworkInterfaceReference{ { - ID: to.StringPtr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), + ID: to.Ptr("/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.Compute/virtualMachineScaleSets/scale-set-name/virtualMachines/instance-id/networkInterfaces/interface-name"), }, }, }, @@ -326,11 +321,8 @@ func newListContainingInvalidScaleSetVirtualMachinesStub() *stubVirtualMachineSc func newListContainingNilScaleSetStub() *stubScaleSetsAPI { return &stubScaleSetsAPI{ - listPages: [][]*armcompute.VirtualMachineScaleSet{ - { - nil, - {Name: to.StringPtr("scale-set-name")}, - }, + pager: &stubVirtualMachineScaleSetsClientListPager{ + list: []armcomputev2.VirtualMachineScaleSet{{Name: to.Ptr("scale-set-name")}}, }, } } diff --git a/bootstrapper/cloudprovider/azure/securityGroup.go b/bootstrapper/cloudprovider/azure/securityGroup.go index 201491c4f..5e278569e 100644 --- a/bootstrapper/cloudprovider/azure/securityGroup.go +++ b/bootstrapper/cloudprovider/azure/securityGroup.go @@ -9,9 +9,13 @@ import ( // getNetworkSecurityGroup retrieves the list of security groups for the given resource group. func (m *Metadata) getNetworkSecurityGroup(ctx context.Context, resourceGroup string) (*armnetwork.SecurityGroup, error) { - pager := m.securityGroupsAPI.List(resourceGroup, nil) - for pager.NextPage(ctx) { - for _, securityGroup := range pager.PageResponse().Value { + pager := m.securityGroupsAPI.NewListPager(resourceGroup, nil) + for pager.More() { + page, err := pager.NextPage(ctx) + if err != nil { + return nil, fmt.Errorf("retrieving security groups: %w", err) + } + for _, securityGroup := range page.Value { return securityGroup, nil } } diff --git a/bootstrapper/cloudprovider/azure/virtualnetwork.go b/bootstrapper/cloudprovider/azure/virtualnetwork.go index 6c0113f3a..41b675e63 100644 --- a/bootstrapper/cloudprovider/azure/virtualnetwork.go +++ b/bootstrapper/cloudprovider/azure/virtualnetwork.go @@ -9,9 +9,13 @@ import ( // getVirtualNetwork return the first virtual network found in the resource group. func (m *Metadata) getVirtualNetwork(ctx context.Context, resourceGroup string) (*armnetwork.VirtualNetwork, error) { - pager := m.virtualNetworksAPI.List(resourceGroup, nil) - for pager.NextPage(ctx) { - for _, network := range pager.PageResponse().Value { + pager := m.virtualNetworksAPI.NewListPager(resourceGroup, nil) + for pager.More() { + page, err := pager.NextPage(ctx) + if err != nil { + return nil, fmt.Errorf("retrieving virtual networks: %w", err) + } + for _, network := range page.Value { if network != nil { return network, nil } diff --git a/bootstrapper/cloudprovider/azure/wrappers.go b/bootstrapper/cloudprovider/azure/wrappers.go deleted file mode 100644 index b8ac0333a..000000000 --- a/bootstrapper/cloudprovider/azure/wrappers.go +++ /dev/null @@ -1,109 +0,0 @@ -package azure - -import ( - "context" - - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" -) - -type virtualNetworksClient struct { - *armnetwork.VirtualNetworksClient -} - -func (c *virtualNetworksClient) List(resourceGroupName string, options *armnetwork.VirtualNetworksClientListOptions) virtualNetworksClientListPager { - return c.VirtualNetworksClient.List(resourceGroupName, options) -} - -type securityGroupsClient struct { - *armnetwork.SecurityGroupsClient -} - -func (c *securityGroupsClient) List(resourceGroupName string, options *armnetwork.SecurityGroupsClientListOptions) securityGroupsClientListPager { - return c.SecurityGroupsClient.List(resourceGroupName, options) -} - -type networkInterfacesClient struct { - *armnetwork.InterfacesClient -} - -func (c *networkInterfacesClient) GetVirtualMachineScaleSetNetworkInterface(ctx context.Context, resourceGroupName string, - virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, - options *armnetwork.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceOptions, -) (armnetwork.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResponse, error) { - return c.InterfacesClient.GetVirtualMachineScaleSetNetworkInterface(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, options) -} - -func (c *networkInterfacesClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, - options *armnetwork.InterfacesClientGetOptions, -) (armnetwork.InterfacesClientGetResponse, error) { - return c.InterfacesClient.Get(ctx, resourceGroupName, networkInterfaceName, options) -} - -type publicIPAddressesClient struct { - *armnetwork.PublicIPAddressesClient -} - -func (c *publicIPAddressesClient) GetVirtualMachineScaleSetPublicIPAddress(ctx context.Context, resourceGroupName string, - virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, - ipConfigurationName string, publicIPAddressName string, - options *armnetwork.PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressOptions, -) (armnetwork.PublicIPAddressesClientGetVirtualMachineScaleSetPublicIPAddressResponse, error) { - return c.PublicIPAddressesClient.GetVirtualMachineScaleSetPublicIPAddress(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, ipConfigurationName, publicIPAddressName, options) -} - -func (c *publicIPAddressesClient) Get(ctx context.Context, resourceGroupName string, publicIPAddressName string, - options *armnetwork.PublicIPAddressesClientGetOptions, -) (armnetwork.PublicIPAddressesClientGetResponse, error) { - return c.PublicIPAddressesClient.Get(ctx, resourceGroupName, publicIPAddressName, options) -} - -type loadBalancersClient struct { - *armnetwork.LoadBalancersClient -} - -func (c *loadBalancersClient) List(resourceGroupName string, options *armnetwork.LoadBalancersClientListOptions) loadBalancersClientListPager { - return c.LoadBalancersClient.List(resourceGroupName, options) -} - -type virtualMachineScaleSetVMsClient struct { - *armcompute.VirtualMachineScaleSetVMsClient -} - -func (c *virtualMachineScaleSetVMsClient) Get(ctx context.Context, resourceGroupName, vmScaleSetName, instanceID string, options *armcompute.VirtualMachineScaleSetVMsClientGetOptions) (armcompute.VirtualMachineScaleSetVMsClientGetResponse, error) { - return c.VirtualMachineScaleSetVMsClient.Get(ctx, resourceGroupName, vmScaleSetName, instanceID, options) -} - -func (c *virtualMachineScaleSetVMsClient) List(resourceGroupName, virtualMachineScaleSetName string, options *armcompute.VirtualMachineScaleSetVMsClientListOptions) virtualMachineScaleSetVMsClientListPager { - return c.VirtualMachineScaleSetVMsClient.List(resourceGroupName, virtualMachineScaleSetName, options) -} - -type tagsClient struct { - *armresources.TagsClient -} - -func (c *tagsClient) CreateOrUpdateAtScope(ctx context.Context, scope string, parameters armresources.TagsResource, options *armresources.TagsClientCreateOrUpdateAtScopeOptions) (armresources.TagsClientCreateOrUpdateAtScopeResponse, error) { - return c.TagsClient.CreateOrUpdateAtScope(ctx, scope, parameters, options) -} - -func (c *tagsClient) UpdateAtScope(ctx context.Context, scope string, parameters armresources.TagsPatchResource, options *armresources.TagsClientUpdateAtScopeOptions) (armresources.TagsClientUpdateAtScopeResponse, error) { - return c.TagsClient.UpdateAtScope(ctx, scope, parameters, options) -} - -type scaleSetsClient struct { - *armcompute.VirtualMachineScaleSetsClient -} - -func (c *scaleSetsClient) List(resourceGroupName string, options *armcompute.VirtualMachineScaleSetsClientListOptions) virtualMachineScaleSetsClientListPager { - return c.VirtualMachineScaleSetsClient.List(resourceGroupName, options) -} - -type applicationInsightsClient struct { - *armapplicationinsights.ComponentsClient -} - -func (c *applicationInsightsClient) Get(ctx context.Context, resourceGroupName string, resourceName string, options *armapplicationinsights.ComponentsClientGetOptions) (armapplicationinsights.ComponentsClientGetResponse, error) { - return c.ComponentsClient.Get(ctx, resourceGroupName, resourceName, options) -} diff --git a/cli/internal/azure/client/activedirectory_test.go b/cli/internal/azure/client/activedirectory_test.go index dbe0d73e9..dd8bc727c 100644 --- a/cli/internal/azure/client/activedirectory_test.go +++ b/cli/internal/azure/client/activedirectory_test.go @@ -29,7 +29,7 @@ func TestCreateServicePrincipal(t *testing.T) { roleAssignmentsAPI: &stubRoleAssignmentsAPI{}, resourceGroupAPI: stubResourceGroupAPI{ getResourceGroup: armresources.ResourceGroup{ - ID: to.StringPtr("resource-group-id"), + ID: to.Ptr("resource-group-id"), }, }, }, @@ -54,7 +54,7 @@ func TestCreateServicePrincipal(t *testing.T) { }, resourceGroupAPI: stubResourceGroupAPI{ getResourceGroup: armresources.ResourceGroup{ - ID: to.StringPtr("resource-group-id"), + ID: to.Ptr("resource-group-id"), }, }, wantErr: true, @@ -67,7 +67,7 @@ func TestCreateServicePrincipal(t *testing.T) { roleAssignmentsAPI: &stubRoleAssignmentsAPI{}, resourceGroupAPI: stubResourceGroupAPI{ getResourceGroup: armresources.ResourceGroup{ - ID: to.StringPtr("resource-group-id"), + ID: to.Ptr("resource-group-id"), }, }, wantErr: true, @@ -256,7 +256,7 @@ func TestAssignOwnerOfResourceGroup(t *testing.T) { roleAssignmentsAPI: &stubRoleAssignmentsAPI{}, resourceGroupAPI: stubResourceGroupAPI{ getResourceGroup: armresources.ResourceGroup{ - ID: to.StringPtr("resource-group-id"), + ID: to.Ptr("resource-group-id"), }, }, }, @@ -266,7 +266,7 @@ func TestAssignOwnerOfResourceGroup(t *testing.T) { }, resourceGroupAPI: stubResourceGroupAPI{ getResourceGroup: armresources.ResourceGroup{ - ID: to.StringPtr("resource-group-id"), + ID: to.Ptr("resource-group-id"), }, }, wantErr: true, @@ -298,7 +298,7 @@ func TestAssignOwnerOfResourceGroup(t *testing.T) { }, resourceGroupAPI: stubResourceGroupAPI{ getResourceGroup: armresources.ResourceGroup{ - ID: to.StringPtr("resource-group-id"), + ID: to.Ptr("resource-group-id"), }, }, }, @@ -308,7 +308,7 @@ func TestAssignOwnerOfResourceGroup(t *testing.T) { }, resourceGroupAPI: stubResourceGroupAPI{ getResourceGroup: armresources.ResourceGroup{ - ID: to.StringPtr("resource-group-id"), + ID: to.Ptr("resource-group-id"), }, }, wantErr: true, @@ -326,7 +326,7 @@ func TestAssignOwnerOfResourceGroup(t *testing.T) { }, resourceGroupAPI: stubResourceGroupAPI{ getResourceGroup: armresources.ResourceGroup{ - ID: to.StringPtr("resource-group-id"), + ID: to.Ptr("resource-group-id"), }, }, wantErr: true, diff --git a/cli/internal/azure/client/api.go b/cli/internal/azure/client/api.go index f3ce02e83..f5fdf6de4 100644 --- a/cli/internal/azure/client/api.go +++ b/cli/internal/azure/client/api.go @@ -2,92 +2,62 @@ package client import ( "context" - "time" "github.com/Azure/azure-sdk-for-go/profiles/latest/authorization/mgmt/authorization" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" "github.com/Azure/azure-sdk-for-go/services/graphrbac/1.6/graphrbac" "github.com/Azure/go-autorest/autorest" ) -type virtualNetworksCreateOrUpdatePollerResponse interface { - PollUntilDone(ctx context.Context, freq time.Duration) (armnetwork.VirtualNetworksClientCreateOrUpdateResponse, error) -} - type networksAPI interface { BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters armnetwork.VirtualNetwork, options *armnetwork.VirtualNetworksClientBeginCreateOrUpdateOptions) ( - virtualNetworksCreateOrUpdatePollerResponse, error) -} - -type networkSecurityGroupsCreateOrUpdatePollerResponse interface { - PollUntilDone(ctx context.Context, freq time.Duration) (armnetwork.SecurityGroupsClientCreateOrUpdateResponse, error) + *runtime.Poller[armnetwork.VirtualNetworksClientCreateOrUpdateResponse], error) } type networkSecurityGroupsAPI interface { BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, parameters armnetwork.SecurityGroup, options *armnetwork.SecurityGroupsClientBeginCreateOrUpdateOptions) ( - networkSecurityGroupsCreateOrUpdatePollerResponse, error) -} - -type loadBalancersClientCreateOrUpdatePollerResponse interface { - PollUntilDone(ctx context.Context, freq time.Duration) (armnetwork.LoadBalancersClientCreateOrUpdateResponse, error) + *runtime.Poller[armnetwork.SecurityGroupsClientCreateOrUpdateResponse], error) } type loadBalancersAPI interface { BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters armnetwork.LoadBalancer, options *armnetwork.LoadBalancersClientBeginCreateOrUpdateOptions) ( - loadBalancersClientCreateOrUpdatePollerResponse, error, + *runtime.Poller[armnetwork.LoadBalancersClientCreateOrUpdateResponse], error, ) } -type virtualMachineScaleSetsCreateOrUpdatePollerResponse interface { - PollUntilDone(ctx context.Context, freq time.Duration) (armcompute.VirtualMachineScaleSetsClientCreateOrUpdateResponse, error) -} - type scaleSetsAPI interface { BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, - vmScaleSetName string, parameters armcompute.VirtualMachineScaleSet, - options *armcompute.VirtualMachineScaleSetsClientBeginCreateOrUpdateOptions) ( - virtualMachineScaleSetsCreateOrUpdatePollerResponse, error) -} - -type publicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager interface { - NextPage(ctx context.Context) bool - PageResponse() armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse -} - -// TODO: deprecate as soon as scale sets are available. -type publicIPAddressesClientCreateOrUpdatePollerResponse interface { - PollUntilDone(ctx context.Context, freq time.Duration) (armnetwork.PublicIPAddressesClientCreateOrUpdateResponse, error) + vmScaleSetName string, parameters armcomputev2.VirtualMachineScaleSet, + options *armcomputev2.VirtualMachineScaleSetsClientBeginCreateOrUpdateOptions) ( + *runtime.Poller[armcomputev2.VirtualMachineScaleSetsClientCreateOrUpdateResponse], error) } type publicIPAddressesAPI interface { - ListVirtualMachineScaleSetVMPublicIPAddresses(resourceGroupName string, - virtualMachineScaleSetName string, virtualmachineIndex string, - networkInterfaceName string, ipConfigurationName string, + NewListVirtualMachineScaleSetVMPublicIPAddressesPager( + resourceGroupName string, virtualMachineScaleSetName string, + virtualmachineIndex string, networkInterfaceName string, + ipConfigurationName string, options *armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesOptions, - ) publicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager + ) *runtime.Pager[armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse] // TODO: deprecate as soon as scale sets are available. BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, publicIPAddressName string, parameters armnetwork.PublicIPAddress, options *armnetwork.PublicIPAddressesClientBeginCreateOrUpdateOptions) ( - publicIPAddressesClientCreateOrUpdatePollerResponse, error) + *runtime.Poller[armnetwork.PublicIPAddressesClientCreateOrUpdateResponse], error) // TODO: deprecate as soon as scale sets are available. Get(ctx context.Context, resourceGroupName string, publicIPAddressName string, options *armnetwork.PublicIPAddressesClientGetOptions) ( armnetwork.PublicIPAddressesClientGetResponse, error) } -// TODO: deprecate as soon as scale sets are available. -type interfacesClientCreateOrUpdatePollerResponse interface { - PollUntilDone(ctx context.Context, freq time.Duration) (armnetwork.InterfacesClientCreateOrUpdateResponse, error) -} - type networkInterfacesAPI interface { GetVirtualMachineScaleSetNetworkInterface(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, @@ -96,11 +66,7 @@ type networkInterfacesAPI interface { // TODO: deprecate as soon as scale sets are available BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters armnetwork.Interface, options *armnetwork.InterfacesClientBeginCreateOrUpdateOptions) ( - interfacesClientCreateOrUpdatePollerResponse, error) -} - -type resourceGroupsDeletePollerResponse interface { - PollUntilDone(ctx context.Context, freq time.Duration) (armresources.ResourceGroupsClientDeleteResponse, error) + *runtime.Poller[armnetwork.InterfacesClientCreateOrUpdateResponse], error) } type resourceGroupAPI interface { @@ -110,7 +76,7 @@ type resourceGroupAPI interface { armresources.ResourceGroupsClientCreateOrUpdateResponse, error) BeginDelete(ctx context.Context, resourceGroupName string, options *armresources.ResourceGroupsClientBeginDeleteOptions) ( - resourceGroupsDeletePollerResponse, error) + *runtime.Poller[armresources.ResourceGroupsClientDeleteResponse], error) Get(ctx context.Context, resourceGroupName string, options *armresources.ResourceGroupsClientGetOptions) (armresources.ResourceGroupsClientGetResponse, error) } @@ -130,15 +96,12 @@ type roleAssignmentsAPI interface { Create(ctx context.Context, scope string, roleAssignmentName string, parameters authorization.RoleAssignmentCreateParameters) (authorization.RoleAssignment, error) } -// TODO: deprecate as soon as scale sets are available. -type virtualMachinesClientCreateOrUpdatePollerResponse interface { - PollUntilDone(ctx context.Context, freq time.Duration) (armcompute.VirtualMachinesClientCreateOrUpdateResponse, error) -} - // TODO: deprecate as soon as scale sets are available. type virtualMachinesAPI interface { - BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, vmName string, parameters armcompute.VirtualMachine, - options *armcompute.VirtualMachinesClientBeginCreateOrUpdateOptions) (virtualMachinesClientCreateOrUpdatePollerResponse, error) + BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, + vmName string, parameters armcomputev2.VirtualMachine, + options *armcomputev2.VirtualMachinesClientBeginCreateOrUpdateOptions) ( + *runtime.Poller[armcomputev2.VirtualMachinesClientCreateOrUpdateResponse], error) } type applicationInsightsAPI interface { diff --git a/cli/internal/azure/client/api_test.go b/cli/internal/azure/client/api_test.go index d78f4ee5e..88f5c4374 100644 --- a/cli/internal/azure/client/api_test.go +++ b/cli/internal/azure/client/api_test.go @@ -2,12 +2,13 @@ package client import ( "context" - "time" + "net/http" "github.com/Azure/azure-sdk-for-go/profiles/latest/authorization/mgmt/authorization" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" "github.com/Azure/azure-sdk-for-go/services/graphrbac/1.6/graphrbac" @@ -15,90 +16,82 @@ import ( ) type stubNetworksAPI struct { - createErr error - stubResponse stubVirtualNetworksCreateOrUpdatePollerResponse -} - -type stubVirtualNetworksCreateOrUpdatePollerResponse struct { - armnetwork.VirtualNetworksClientCreateOrUpdatePollerResponse - pollerErr error -} - -func (r stubVirtualNetworksCreateOrUpdatePollerResponse) PollUntilDone(ctx context.Context, freq time.Duration, -) (armnetwork.VirtualNetworksClientCreateOrUpdateResponse, error) { - return armnetwork.VirtualNetworksClientCreateOrUpdateResponse{ - VirtualNetworksClientCreateOrUpdateResult: armnetwork.VirtualNetworksClientCreateOrUpdateResult{ - VirtualNetwork: armnetwork.VirtualNetwork{ - Properties: &armnetwork.VirtualNetworkPropertiesFormat{ - Subnets: []*armnetwork.Subnet{ - { - ID: to.StringPtr("virtual-network-subnet-id"), - }, - }, - }, - }, - }, - }, r.pollerErr + createErr error + pollErr error } func (a stubNetworksAPI) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters armnetwork.VirtualNetwork, options *armnetwork.VirtualNetworksClientBeginCreateOrUpdateOptions) ( - virtualNetworksCreateOrUpdatePollerResponse, error, + *runtime.Poller[armnetwork.VirtualNetworksClientCreateOrUpdateResponse], error, ) { - return a.stubResponse, a.createErr + poller, err := runtime.NewPoller(nil, runtime.NewPipeline("", "", runtime.PipelineOptions{}, nil), &runtime.NewPollerOptions[armnetwork.VirtualNetworksClientCreateOrUpdateResponse]{ + Handler: &stubPoller[armnetwork.VirtualNetworksClientCreateOrUpdateResponse]{ + result: armnetwork.VirtualNetworksClientCreateOrUpdateResponse{ + VirtualNetwork: armnetwork.VirtualNetwork{ + Properties: &armnetwork.VirtualNetworkPropertiesFormat{ + Subnets: []*armnetwork.Subnet{ + { + ID: to.Ptr("subnet-id"), + }, + }, + }, + }, + }, + resultErr: a.pollErr, + }, + }) + if err != nil { + panic(err) + } + return poller, a.createErr } type stubLoadBalancersAPI struct { createErr error - stubResponse stubLoadBalancersClientCreateOrUpdatePollerResponse -} - -type stubLoadBalancersClientCreateOrUpdatePollerResponse struct { - pollResponse armnetwork.LoadBalancersClientCreateOrUpdateResponse + stubResponse armnetwork.LoadBalancersClientCreateOrUpdateResponse pollErr error } -func (r stubLoadBalancersClientCreateOrUpdatePollerResponse) PollUntilDone(ctx context.Context, freq time.Duration, -) (armnetwork.LoadBalancersClientCreateOrUpdateResponse, error) { - return r.pollResponse, r.pollErr -} - func (a stubLoadBalancersAPI) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters armnetwork.LoadBalancer, options *armnetwork.LoadBalancersClientBeginCreateOrUpdateOptions) ( - loadBalancersClientCreateOrUpdatePollerResponse, error, + *runtime.Poller[armnetwork.LoadBalancersClientCreateOrUpdateResponse], error, ) { - return a.stubResponse, a.createErr -} - -type stubNetworkSecurityGroupsCreateOrUpdatePollerResponse struct { - armnetwork.SecurityGroupsClientCreateOrUpdatePollerResponse - pollerErr error -} - -func (r stubNetworkSecurityGroupsCreateOrUpdatePollerResponse) PollUntilDone(ctx context.Context, freq time.Duration, -) (armnetwork.SecurityGroupsClientCreateOrUpdateResponse, error) { - return armnetwork.SecurityGroupsClientCreateOrUpdateResponse{ - SecurityGroupsClientCreateOrUpdateResult: armnetwork.SecurityGroupsClientCreateOrUpdateResult{ - SecurityGroup: armnetwork.SecurityGroup{ - ID: to.StringPtr("network-security-group-id"), - }, + poller, err := runtime.NewPoller(nil, runtime.NewPipeline("", "", runtime.PipelineOptions{}, nil), &runtime.NewPollerOptions[armnetwork.LoadBalancersClientCreateOrUpdateResponse]{ + Handler: &stubPoller[armnetwork.LoadBalancersClientCreateOrUpdateResponse]{ + result: a.stubResponse, + resultErr: a.pollErr, }, - }, r.pollerErr + }) + if err != nil { + panic(err) + } + return poller, a.createErr } type stubNetworkSecurityGroupsAPI struct { - createErr error - stubPoller stubNetworkSecurityGroupsCreateOrUpdatePollerResponse + createErr error + pollErr error } func (a stubNetworkSecurityGroupsAPI) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, parameters armnetwork.SecurityGroup, options *armnetwork.SecurityGroupsClientBeginCreateOrUpdateOptions) ( - networkSecurityGroupsCreateOrUpdatePollerResponse, error, + *runtime.Poller[armnetwork.SecurityGroupsClientCreateOrUpdateResponse], error, ) { - return a.stubPoller, a.createErr + poller, err := runtime.NewPoller(nil, runtime.NewPipeline("", "", runtime.PipelineOptions{}, nil), &runtime.NewPollerOptions[armnetwork.SecurityGroupsClientCreateOrUpdateResponse]{ + Handler: &stubPoller[armnetwork.SecurityGroupsClientCreateOrUpdateResponse]{ + result: armnetwork.SecurityGroupsClientCreateOrUpdateResponse{ + SecurityGroup: armnetwork.SecurityGroup{ID: to.Ptr("network-security-group-id")}, + }, + resultErr: a.pollErr, + }, + }) + if err != nil { + panic(err) + } + return poller, a.createErr } type stubResourceGroupAPI struct { @@ -106,7 +99,7 @@ type stubResourceGroupAPI struct { createErr error getErr error getResourceGroup armresources.ResourceGroup - stubResponse stubResourceGroupsDeletePollerResponse + pollErr error } func (a stubResourceGroupAPI) CreateOrUpdate(ctx context.Context, resourceGroupName string, @@ -119,130 +112,135 @@ func (a stubResourceGroupAPI) CreateOrUpdate(ctx context.Context, resourceGroupN func (a stubResourceGroupAPI) Get(ctx context.Context, resourceGroupName string, options *armresources.ResourceGroupsClientGetOptions) (armresources.ResourceGroupsClientGetResponse, error) { return armresources.ResourceGroupsClientGetResponse{ - ResourceGroupsClientGetResult: armresources.ResourceGroupsClientGetResult{ - ResourceGroup: a.getResourceGroup, - }, + ResourceGroup: a.getResourceGroup, }, a.getErr } -type stubResourceGroupsDeletePollerResponse struct { - armresources.ResourceGroupsClientDeletePollerResponse - pollerErr error -} - -func (r stubResourceGroupsDeletePollerResponse) PollUntilDone(ctx context.Context, freq time.Duration) ( - armresources.ResourceGroupsClientDeleteResponse, error, -) { - return armresources.ResourceGroupsClientDeleteResponse{}, r.pollerErr -} - func (a stubResourceGroupAPI) BeginDelete(ctx context.Context, resourceGroupName string, options *armresources.ResourceGroupsClientBeginDeleteOptions) ( - resourceGroupsDeletePollerResponse, error, + *runtime.Poller[armresources.ResourceGroupsClientDeleteResponse], error, ) { - return a.stubResponse, a.terminateErr + poller, err := runtime.NewPoller(nil, runtime.NewPipeline("", "", runtime.PipelineOptions{}, nil), &runtime.NewPollerOptions[armresources.ResourceGroupsClientDeleteResponse]{ + Handler: &stubPoller[armresources.ResourceGroupsClientDeleteResponse]{ + result: armresources.ResourceGroupsClientDeleteResponse{}, + resultErr: a.pollErr, + }, + }) + if err != nil { + panic(err) + } + return poller, a.terminateErr } type stubScaleSetsAPI struct { createErr error - stubResponse stubVirtualMachineScaleSetsCreateOrUpdatePollerResponse -} - -type stubVirtualMachineScaleSetsCreateOrUpdatePollerResponse struct { - pollResponse armcompute.VirtualMachineScaleSetsClientCreateOrUpdateResponse + stubResponse armcomputev2.VirtualMachineScaleSetsClientCreateOrUpdateResponse pollErr error } -func (r stubVirtualMachineScaleSetsCreateOrUpdatePollerResponse) PollUntilDone(ctx context.Context, freq time.Duration) ( - armcompute.VirtualMachineScaleSetsClientCreateOrUpdateResponse, error, -) { - return r.pollResponse, r.pollErr -} - func (a stubScaleSetsAPI) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, - vmScaleSetName string, parameters armcompute.VirtualMachineScaleSet, - options *armcompute.VirtualMachineScaleSetsClientBeginCreateOrUpdateOptions) ( - virtualMachineScaleSetsCreateOrUpdatePollerResponse, error, + vmScaleSetName string, parameters armcomputev2.VirtualMachineScaleSet, + options *armcomputev2.VirtualMachineScaleSetsClientBeginCreateOrUpdateOptions) ( + *runtime.Poller[armcomputev2.VirtualMachineScaleSetsClientCreateOrUpdateResponse], error, ) { - return a.stubResponse, a.createErr + poller, err := runtime.NewPoller(nil, runtime.NewPipeline("", "", runtime.PipelineOptions{}, nil), &runtime.NewPollerOptions[armcomputev2.VirtualMachineScaleSetsClientCreateOrUpdateResponse]{ + Handler: &stubPoller[armcomputev2.VirtualMachineScaleSetsClientCreateOrUpdateResponse]{ + result: a.stubResponse, + resultErr: a.pollErr, + }, + }) + if err != nil { + panic(err) + } + return poller, a.createErr } type stubPublicIPAddressesAPI struct { - createErr error - getErr error - stubCreateResponse stubPublicIPAddressesClientCreateOrUpdatePollerResponse -} - -type stubPublicIPAddressesClientCreateOrUpdatePollerResponse struct { - armnetwork.PublicIPAddressesClientCreateOrUpdatePollerResponse - pollErr error -} - -func (r stubPublicIPAddressesClientCreateOrUpdatePollerResponse) PollUntilDone(ctx context.Context, freq time.Duration) ( - armnetwork.PublicIPAddressesClientCreateOrUpdateResponse, error, -) { - return armnetwork.PublicIPAddressesClientCreateOrUpdateResponse{ - PublicIPAddressesClientCreateOrUpdateResult: armnetwork.PublicIPAddressesClientCreateOrUpdateResult{ - PublicIPAddress: armnetwork.PublicIPAddress{ - ID: to.StringPtr("pubIP-id"), - Properties: &armnetwork.PublicIPAddressPropertiesFormat{ - IPAddress: to.StringPtr("192.0.2.1"), - }, - }, - }, - }, r.pollErr + createErr error + getErr error + pollErr error } type stubPublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager struct { - pagesCounter int - PagesMax int + pages int + fetchErr error + more bool } -func (p *stubPublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager) NextPage(ctx context.Context) bool { - p.pagesCounter++ - return p.pagesCounter <= p.PagesMax -} - -func (p *stubPublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager) PageResponse() armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse { - return armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse{ - PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResult: armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResult{ - PublicIPAddressListResult: armnetwork.PublicIPAddressListResult{ - Value: []*armnetwork.PublicIPAddress{ - { - Properties: &armnetwork.PublicIPAddressPropertiesFormat{ - IPAddress: to.StringPtr("192.0.2.1"), - }, - }, - }, - }, - }, +func (p *stubPublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager) moreFunc() func( + armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse) bool { + return func(armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse) bool { + return p.more } } -func (a stubPublicIPAddressesAPI) ListVirtualMachineScaleSetVMPublicIPAddresses(resourceGroupName string, - virtualMachineScaleSetName string, virtualmachineIndex string, - networkInterfaceName string, ipConfigurationName string, +func (p *stubPublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager) fetcherFunc() func( + context.Context, *armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse) ( + armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse, error) { + return func(context.Context, *armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse) ( + armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse, error, + ) { + page := make([]*armnetwork.PublicIPAddress, p.pages) + for i := 0; i < p.pages; i++ { + page[i] = &armnetwork.PublicIPAddress{ + Properties: &armnetwork.PublicIPAddressPropertiesFormat{ + IPAddress: to.Ptr("192.0.2.1"), + }, + } + } + return armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse{ + PublicIPAddressListResult: armnetwork.PublicIPAddressListResult{ + Value: page, + }, + }, p.fetchErr + } +} + +func (a stubPublicIPAddressesAPI) NewListVirtualMachineScaleSetVMPublicIPAddressesPager( + resourceGroupName string, virtualMachineScaleSetName string, + virtualmachineIndex string, networkInterfaceName string, + ipConfigurationName string, options *armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesOptions, -) publicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager { - return &stubPublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager{pagesCounter: 0, PagesMax: 1} +) *runtime.Pager[armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse] { + pager := &stubPublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager{ + pages: 1, + } + return runtime.NewPager(runtime.PagingHandler[armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesResponse]{ + More: pager.moreFunc(), + Fetcher: pager.fetcherFunc(), + }) } func (a stubPublicIPAddressesAPI) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, publicIPAddressName string, parameters armnetwork.PublicIPAddress, options *armnetwork.PublicIPAddressesClientBeginCreateOrUpdateOptions) ( - publicIPAddressesClientCreateOrUpdatePollerResponse, error, + *runtime.Poller[armnetwork.PublicIPAddressesClientCreateOrUpdateResponse], error, ) { - return a.stubCreateResponse, a.createErr + poller, err := runtime.NewPoller(nil, runtime.NewPipeline("", "", runtime.PipelineOptions{}, nil), &runtime.NewPollerOptions[armnetwork.PublicIPAddressesClientCreateOrUpdateResponse]{ + Handler: &stubPoller[armnetwork.PublicIPAddressesClientCreateOrUpdateResponse]{ + result: armnetwork.PublicIPAddressesClientCreateOrUpdateResponse{ + PublicIPAddress: armnetwork.PublicIPAddress{ + ID: to.Ptr("ip-address-id"), + Properties: &armnetwork.PublicIPAddressPropertiesFormat{ + IPAddress: to.Ptr("192.0.2.1"), + }, + }, + }, + resultErr: a.pollErr, + }, + }) + if err != nil { + panic(err) + } + return poller, a.createErr } func (a stubPublicIPAddressesAPI) Get(ctx context.Context, resourceGroupName string, publicIPAddressName string, options *armnetwork.PublicIPAddressesClientGetOptions) ( armnetwork.PublicIPAddressesClientGetResponse, error, ) { return armnetwork.PublicIPAddressesClientGetResponse{ - PublicIPAddressesClientGetResult: armnetwork.PublicIPAddressesClientGetResult{ - PublicIPAddress: armnetwork.PublicIPAddress{ - Properties: &armnetwork.PublicIPAddressPropertiesFormat{ - IPAddress: to.StringPtr("192.0.2.1"), - }, + PublicIPAddress: armnetwork.PublicIPAddress{ + Properties: &armnetwork.PublicIPAddressPropertiesFormat{ + IPAddress: to.Ptr("192.0.2.1"), }, }, }, a.getErr @@ -251,7 +249,7 @@ func (a stubPublicIPAddressesAPI) Get(ctx context.Context, resourceGroupName str type stubNetworkInterfacesAPI struct { getErr error createErr error - stubResp stubInterfacesClientCreateOrUpdatePollerResponse + pollErr error } func (a stubNetworkInterfacesAPI) GetVirtualMachineScaleSetNetworkInterface(ctx context.Context, resourceGroupName string, @@ -262,14 +260,12 @@ func (a stubNetworkInterfacesAPI) GetVirtualMachineScaleSetNetworkInterface(ctx return armnetwork.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResponse{}, a.getErr } return armnetwork.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResponse{ - InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResult: armnetwork.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResult{ - Interface: armnetwork.Interface{ - Properties: &armnetwork.InterfacePropertiesFormat{ - IPConfigurations: []*armnetwork.InterfaceIPConfiguration{ - { - Properties: &armnetwork.InterfaceIPConfigurationPropertiesFormat{ - PrivateIPAddress: to.StringPtr("192.0.2.1"), - }, + Interface: armnetwork.Interface{ + Properties: &armnetwork.InterfacePropertiesFormat{ + IPConfigurations: []*armnetwork.InterfaceIPConfiguration{ + { + Properties: &armnetwork.InterfaceIPConfigurationPropertiesFormat{ + PrivateIPAddress: to.Ptr("192.0.2.1"), }, }, }, @@ -279,64 +275,56 @@ func (a stubNetworkInterfacesAPI) GetVirtualMachineScaleSetNetworkInterface(ctx } // TODO: deprecate as soon as scale sets are available. -type stubInterfacesClientCreateOrUpdatePollerResponse struct { - pollErr error -} - -// TODO: deprecate as soon as scale sets are available. -func (r stubInterfacesClientCreateOrUpdatePollerResponse) PollUntilDone(ctx context.Context, freq time.Duration) ( - armnetwork.InterfacesClientCreateOrUpdateResponse, error, +func (a stubNetworkInterfacesAPI) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, + parameters armnetwork.Interface, options *armnetwork.InterfacesClientBeginCreateOrUpdateOptions) ( + *runtime.Poller[armnetwork.InterfacesClientCreateOrUpdateResponse], error, ) { - return armnetwork.InterfacesClientCreateOrUpdateResponse{ - InterfacesClientCreateOrUpdateResult: armnetwork.InterfacesClientCreateOrUpdateResult{ - Interface: armnetwork.Interface{ - ID: to.StringPtr("interface-id"), - Properties: &armnetwork.InterfacePropertiesFormat{ - IPConfigurations: []*armnetwork.InterfaceIPConfiguration{ - { - Properties: &armnetwork.InterfaceIPConfigurationPropertiesFormat{ - PrivateIPAddress: to.StringPtr("192.0.2.1"), + poller, err := runtime.NewPoller(nil, runtime.NewPipeline("", "", runtime.PipelineOptions{}, nil), &runtime.NewPollerOptions[armnetwork.InterfacesClientCreateOrUpdateResponse]{ + Handler: &stubPoller[armnetwork.InterfacesClientCreateOrUpdateResponse]{ + result: armnetwork.InterfacesClientCreateOrUpdateResponse{ + Interface: armnetwork.Interface{ + ID: to.Ptr("interface-id"), + Properties: &armnetwork.InterfacePropertiesFormat{ + IPConfigurations: []*armnetwork.InterfaceIPConfiguration{ + { + Properties: &armnetwork.InterfaceIPConfigurationPropertiesFormat{ + PrivateIPAddress: to.Ptr("192.0.2.1"), + }, }, }, }, }, }, + resultErr: a.pollErr, }, - }, r.pollErr -} - -// TODO: deprecate as soon as scale sets are available. -func (a stubNetworkInterfacesAPI) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, - parameters armnetwork.Interface, options *armnetwork.InterfacesClientBeginCreateOrUpdateOptions) ( - interfacesClientCreateOrUpdatePollerResponse, error, -) { - return a.stubResp, a.createErr + }) + if err != nil { + panic(err) + } + return poller, a.createErr } // TODO: deprecate as soon as scale sets are available. type stubVirtualMachinesAPI struct { - stubResponse stubVirtualMachinesClientCreateOrUpdatePollerResponse + stubResponse armcomputev2.VirtualMachinesClientCreateOrUpdateResponse + pollErr error createErr error } // TODO: deprecate as soon as scale sets are available. -type stubVirtualMachinesClientCreateOrUpdatePollerResponse struct { - pollResponse armcompute.VirtualMachinesClientCreateOrUpdateResponse - pollErr error -} - -// TODO: deprecate as soon as scale sets are available. -func (r stubVirtualMachinesClientCreateOrUpdatePollerResponse) PollUntilDone(ctx context.Context, freq time.Duration) ( - armcompute.VirtualMachinesClientCreateOrUpdateResponse, error, -) { - return r.pollResponse, r.pollErr -} - -// TODO: deprecate as soon as scale sets are available. -func (a stubVirtualMachinesAPI) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, vmName string, parameters armcompute.VirtualMachine, - options *armcompute.VirtualMachinesClientBeginCreateOrUpdateOptions, -) (virtualMachinesClientCreateOrUpdatePollerResponse, error) { - return a.stubResponse, a.createErr +func (a stubVirtualMachinesAPI) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, vmName string, parameters armcomputev2.VirtualMachine, + options *armcomputev2.VirtualMachinesClientBeginCreateOrUpdateOptions, +) (*runtime.Poller[armcomputev2.VirtualMachinesClientCreateOrUpdateResponse], error) { + poller, err := runtime.NewPoller(nil, runtime.NewPipeline("", "", runtime.PipelineOptions{}, nil), &runtime.NewPollerOptions[armcomputev2.VirtualMachinesClientCreateOrUpdateResponse]{ + Handler: &stubPoller[armcomputev2.VirtualMachinesClientCreateOrUpdateResponse]{ + result: a.stubResponse, + resultErr: a.pollErr, + }, + }) + if err != nil { + panic(err) + } + return poller, a.createErr } type stubApplicationsAPI struct { @@ -354,8 +342,8 @@ func (a stubApplicationsAPI) Create(ctx context.Context, parameters graphrbac.Ap return *a.createApplication, nil } return graphrbac.Application{ - AppID: to.StringPtr("00000000-0000-0000-0000-000000000000"), - ObjectID: to.StringPtr("00000000-0000-0000-0000-000000000001"), + AppID: to.Ptr("00000000-0000-0000-0000-000000000000"), + ObjectID: to.Ptr("00000000-0000-0000-0000-000000000001"), }, nil } @@ -386,8 +374,8 @@ func (a stubServicePrincipalsAPI) Create(ctx context.Context, parameters graphrb return *a.createServicePrincipal, nil } return graphrbac.ServicePrincipal{ - AppID: to.StringPtr("00000000-0000-0000-0000-000000000000"), - ObjectID: to.StringPtr("00000000-0000-0000-0000-000000000002"), + AppID: to.Ptr("00000000-0000-0000-0000-000000000000"), + ObjectID: to.Ptr("00000000-0000-0000-0000-000000000002"), }, nil } @@ -412,3 +400,22 @@ func (a *stubApplicationInsightsAPI) CreateOrUpdate(ctx context.Context, resourc resp := armapplicationinsights.ComponentsClientCreateOrUpdateResponse{} return resp, a.err } + +type stubPoller[T any] struct { + result T + pollErr error + resultErr error +} + +func (p *stubPoller[T]) Done() bool { + return true +} + +func (p *stubPoller[T]) Poll(context.Context) (*http.Response, error) { + return nil, p.pollErr +} + +func (p *stubPoller[T]) Result(ctx context.Context, out *T) error { + *out = p.result + return p.resultErr +} diff --git a/cli/internal/azure/client/applicationinsight.go b/cli/internal/azure/client/applicationinsight.go index f0c0e0ba8..78ee04ea2 100644 --- a/cli/internal/azure/client/applicationinsight.go +++ b/cli/internal/azure/client/applicationinsight.go @@ -8,10 +8,10 @@ import ( func (c *Client) CreateApplicationInsight(ctx context.Context) error { properties := armapplicationinsights.Component{ - Kind: to.StringPtr("web"), - Location: to.StringPtr(c.location), + Kind: to.Ptr("web"), + Location: to.Ptr(c.location), Properties: &armapplicationinsights.ComponentProperties{ - ApplicationType: armapplicationinsights.ApplicationTypeWeb.ToPtr(), + ApplicationType: to.Ptr(armapplicationinsights.ApplicationTypeWeb), }, } diff --git a/cli/internal/azure/client/azurewrappers.go b/cli/internal/azure/client/azurewrappers.go deleted file mode 100644 index 613637fa1..000000000 --- a/cli/internal/azure/client/azurewrappers.go +++ /dev/null @@ -1,147 +0,0 @@ -package client - -import ( - "context" - - "github.com/Azure/azure-sdk-for-go/profiles/latest/authorization/mgmt/authorization" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" - "github.com/Azure/azure-sdk-for-go/services/graphrbac/1.6/graphrbac" - "github.com/Azure/go-autorest/autorest" -) - -type networksClient struct { - *armnetwork.VirtualNetworksClient -} - -func (c *networksClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, - virtualNetworkName string, parameters armnetwork.VirtualNetwork, - options *armnetwork.VirtualNetworksClientBeginCreateOrUpdateOptions) ( - virtualNetworksCreateOrUpdatePollerResponse, error, -) { - return c.VirtualNetworksClient.BeginCreateOrUpdate(ctx, resourceGroupName, virtualNetworkName, parameters, options) -} - -// TODO: deprecate as soon as scale sets are available. -type networkInterfacesClient struct { - *armnetwork.InterfacesClient -} - -// TODO: deprecate as soon as scale sets are available. -func (c *networkInterfacesClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, - parameters armnetwork.Interface, options *armnetwork.InterfacesClientBeginCreateOrUpdateOptions, -) (interfacesClientCreateOrUpdatePollerResponse, error) { - return c.InterfacesClient.BeginCreateOrUpdate(ctx, resourceGroupName, networkInterfaceName, parameters, options) -} - -type loadBalancersClient struct { - *armnetwork.LoadBalancersClient -} - -func (c *loadBalancersClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, loadBalancerName string, - parameters armnetwork.LoadBalancer, options *armnetwork.LoadBalancersClientBeginCreateOrUpdateOptions) ( - loadBalancersClientCreateOrUpdatePollerResponse, error, -) { - return c.LoadBalancersClient.BeginCreateOrUpdate(ctx, resourceGroupName, loadBalancerName, parameters, options) -} - -type networkSecurityGroupsClient struct { - *armnetwork.SecurityGroupsClient -} - -func (c *networkSecurityGroupsClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, - networkSecurityGroupName string, parameters armnetwork.SecurityGroup, - options *armnetwork.SecurityGroupsClientBeginCreateOrUpdateOptions) ( - networkSecurityGroupsCreateOrUpdatePollerResponse, error, -) { - return c.SecurityGroupsClient.BeginCreateOrUpdate(ctx, resourceGroupName, networkSecurityGroupName, parameters, options) -} - -type publicIPAddressesClient struct { - *armnetwork.PublicIPAddressesClient -} - -func (c *publicIPAddressesClient) ListVirtualMachineScaleSetVMPublicIPAddresses(resourceGroupName string, - virtualMachineScaleSetName string, virtualmachineIndex string, - networkInterfaceName string, ipConfigurationName string, - options *armnetwork.PublicIPAddressesClientListVirtualMachineScaleSetVMPublicIPAddressesOptions, -) publicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesPager { - return c.PublicIPAddressesClient.ListVirtualMachineScaleSetVMPublicIPAddresses(resourceGroupName, virtualMachineScaleSetName, - virtualmachineIndex, networkInterfaceName, ipConfigurationName, options) -} - -// TODO: deprecate as soon as scale sets are available. -func (c *publicIPAddressesClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, publicIPAddressName string, - parameters armnetwork.PublicIPAddress, options *armnetwork.PublicIPAddressesClientBeginCreateOrUpdateOptions) ( - publicIPAddressesClientCreateOrUpdatePollerResponse, error, -) { - return c.PublicIPAddressesClient.BeginCreateOrUpdate(ctx, resourceGroupName, publicIPAddressName, parameters, options) -} - -type virtualMachineScaleSetsClient struct { - *armcompute.VirtualMachineScaleSetsClient -} - -func (c *virtualMachineScaleSetsClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, - vmScaleSetName string, parameters armcompute.VirtualMachineScaleSet, - options *armcompute.VirtualMachineScaleSetsClientBeginCreateOrUpdateOptions) ( - virtualMachineScaleSetsCreateOrUpdatePollerResponse, error, -) { - return c.VirtualMachineScaleSetsClient.BeginCreateOrUpdate(ctx, resourceGroupName, vmScaleSetName, parameters, options) -} - -type resourceGroupsClient struct { - *armresources.ResourceGroupsClient -} - -func (c *resourceGroupsClient) BeginDelete(ctx context.Context, resourceGroupName string, - options *armresources.ResourceGroupsClientBeginDeleteOptions) ( - resourceGroupsDeletePollerResponse, error, -) { - return c.ResourceGroupsClient.BeginDelete(ctx, resourceGroupName, options) -} - -// TODO: deprecate as soon as scale sets are available. -type virtualMachinesClient struct { - *armcompute.VirtualMachinesClient -} - -// TODO: deprecate as soon as scale sets are available. -func (c *virtualMachinesClient) BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, vmName string, parameters armcompute.VirtualMachine, - options *armcompute.VirtualMachinesClientBeginCreateOrUpdateOptions, -) (virtualMachinesClientCreateOrUpdatePollerResponse, error) { - return c.VirtualMachinesClient.BeginCreateOrUpdate(ctx, resourceGroupName, vmName, parameters, options) -} - -type applicationsClient struct { - *graphrbac.ApplicationsClient -} - -func (c *applicationsClient) Create(ctx context.Context, parameters graphrbac.ApplicationCreateParameters) (graphrbac.Application, error) { - return c.ApplicationsClient.Create(ctx, parameters) -} - -func (c *applicationsClient) Delete(ctx context.Context, applicationObjectID string) (autorest.Response, error) { - return c.ApplicationsClient.Delete(ctx, applicationObjectID) -} - -func (c *applicationsClient) UpdatePasswordCredentials(ctx context.Context, objectID string, parameters graphrbac.PasswordCredentialsUpdateParameters) (autorest.Response, error) { - return c.ApplicationsClient.UpdatePasswordCredentials(ctx, objectID, parameters) -} - -type servicePrincipalsClient struct { - *graphrbac.ServicePrincipalsClient -} - -func (c *servicePrincipalsClient) Create(ctx context.Context, parameters graphrbac.ServicePrincipalCreateParameters) (graphrbac.ServicePrincipal, error) { - return c.ServicePrincipalsClient.Create(ctx, parameters) -} - -type roleAssignmentsClient struct { - *authorization.RoleAssignmentsClient -} - -func (c *roleAssignmentsClient) Create(ctx context.Context, scope string, roleAssignmentName string, parameters authorization.RoleAssignmentCreateParameters) (authorization.RoleAssignment, error) { - return c.RoleAssignmentsClient.Create(ctx, scope, roleAssignmentName, parameters) -} diff --git a/cli/internal/azure/client/client.go b/cli/internal/azure/client/client.go index 3ce9ec191..121b6ad42 100644 --- a/cli/internal/azure/client/client.go +++ b/cli/internal/azure/client/client.go @@ -10,7 +10,7 @@ import ( "github.com/Azure/azure-sdk-for-go/profiles/latest/authorization/mgmt/authorization" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" "github.com/Azure/azure-sdk-for-go/services/graphrbac/1.6/graphrbac" @@ -76,15 +76,42 @@ func NewFromDefault(subscriptionID, tenantID string) (*Client, error) { if err != nil { return nil, err } - netAPI := armnetwork.NewVirtualNetworksClient(subscriptionID, cred, nil) - netSecGrpAPI := armnetwork.NewSecurityGroupsClient(subscriptionID, cred, nil) - resGroupAPI := armresources.NewResourceGroupsClient(subscriptionID, cred, nil) - scaleSetAPI := armcompute.NewVirtualMachineScaleSetsClient(subscriptionID, cred, nil) - publicIPAddressesAPI := armnetwork.NewPublicIPAddressesClient(subscriptionID, cred, nil) - networkInterfacesAPI := armnetwork.NewInterfacesClient(subscriptionID, cred, nil) - loadBalancersAPI := armnetwork.NewLoadBalancersClient(subscriptionID, cred, nil) - virtualMachinesAPI := armcompute.NewVirtualMachinesClient(subscriptionID, cred, nil) - applicationInsightsAPI := armapplicationinsights.NewComponentsClient(subscriptionID, cred, nil) + netAPI, err := armnetwork.NewVirtualNetworksClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + netSecGrpAPI, err := armnetwork.NewSecurityGroupsClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + resGroupAPI, err := armresources.NewResourceGroupsClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + scaleSetAPI, err := armcomputev2.NewVirtualMachineScaleSetsClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + publicIPAddressesAPI, err := armnetwork.NewPublicIPAddressesClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + networkInterfacesAPI, err := armnetwork.NewInterfacesClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + loadBalancersAPI, err := armnetwork.NewLoadBalancersClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + virtualMachinesAPI, err := armcomputev2.NewVirtualMachinesClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } + applicationInsightsAPI, err := armapplicationinsights.NewComponentsClient(subscriptionID, cred, nil) + if err != nil { + return nil, err + } applicationsAPI := graphrbac.NewApplicationsClient(tenantID) applicationsAPI.Authorizer = graphAuthorizer servicePrincipalsAPI := graphrbac.NewServicePrincipalsClient(tenantID) @@ -93,17 +120,17 @@ func NewFromDefault(subscriptionID, tenantID string) (*Client, error) { roleAssignmentsAPI.Authorizer = managementAuthorizer return &Client{ - networksAPI: &networksClient{netAPI}, - networkSecurityGroupsAPI: &networkSecurityGroupsClient{netSecGrpAPI}, - resourceGroupAPI: &resourceGroupsClient{resGroupAPI}, - scaleSetsAPI: &virtualMachineScaleSetsClient{scaleSetAPI}, - publicIPAddressesAPI: &publicIPAddressesClient{publicIPAddressesAPI}, - networkInterfacesAPI: &networkInterfacesClient{networkInterfacesAPI}, - loadBalancersAPI: &loadBalancersClient{loadBalancersAPI}, - applicationsAPI: &applicationsClient{&applicationsAPI}, - servicePrincipalsAPI: &servicePrincipalsClient{&servicePrincipalsAPI}, - roleAssignmentsAPI: &roleAssignmentsClient{&roleAssignmentsAPI}, - virtualMachinesAPI: &virtualMachinesClient{virtualMachinesAPI}, + networksAPI: netAPI, + networkSecurityGroupsAPI: netSecGrpAPI, + resourceGroupAPI: resGroupAPI, + scaleSetsAPI: scaleSetAPI, + publicIPAddressesAPI: publicIPAddressesAPI, + networkInterfacesAPI: networkInterfacesAPI, + loadBalancersAPI: loadBalancersAPI, + applicationsAPI: applicationsAPI, + servicePrincipalsAPI: servicePrincipalsAPI, + roleAssignmentsAPI: roleAssignmentsAPI, + virtualMachinesAPI: virtualMachinesAPI, applicationInsightsAPI: applicationInsightsAPI, subscriptionID: subscriptionID, tenantID: tenantID, diff --git a/cli/internal/azure/client/compute.go b/cli/internal/azure/client/compute.go index 7f70268ae..7ec3adcb9 100644 --- a/cli/internal/azure/client/compute.go +++ b/cli/internal/azure/client/compute.go @@ -6,6 +6,7 @@ import ( "strconv" "time" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" "github.com/edgelesssys/constellation/cli/internal/azure" "github.com/edgelesssys/constellation/internal/cloud/cloudtypes" @@ -143,7 +144,9 @@ func (c *Client) createInstanceVM(ctx context.Context, input azure.VMInstance) ( return cloudtypes.Instance{}, err } - vm, err := poller.PollUntilDone(ctx, 30*time.Second) + vm, err := poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{ + Frequency: 30 * time.Second, + }) if err != nil { return cloudtypes.Instance{}, err } @@ -161,7 +164,7 @@ func (c *Client) createInstanceVM(ctx context.Context, input azure.VMInstance) ( return cloudtypes.Instance{}, err } - return cloudtypes.Instance{PublicIP: *res.PublicIPAddressesClientGetResult.PublicIPAddress.Properties.IPAddress, PrivateIP: privIP}, nil + return cloudtypes.Instance{PublicIP: *res.PublicIPAddress.Properties.IPAddress, PrivateIP: privIP}, nil } func (c *Client) createScaleSet(ctx context.Context, input CreateScaleSetInput) error { @@ -201,7 +204,9 @@ func (c *Client) createScaleSet(ctx context.Context, input CreateScaleSetInput) return err } - _, err = poller.PollUntilDone(ctx, 30*time.Second) + _, err = poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{ + Frequency: 30 * time.Second, + }) if err != nil { return err } @@ -214,14 +219,15 @@ func (c *Client) getInstanceIPs(ctx context.Context, scaleSet string, count int) for i := 0; i < count; i++ { // get public ip address var publicIPAddress string - pager := c.publicIPAddressesAPI.ListVirtualMachineScaleSetVMPublicIPAddresses( + pager := c.publicIPAddressesAPI.NewListVirtualMachineScaleSetVMPublicIPAddressesPager( c.resourceGroup, scaleSet, strconv.Itoa(i), scaleSet, scaleSet, nil) - // We always need one pager.NextPage, since calling - // pager.PageResponse() directly return no result. - // We expect to get one page with one entry for each VM. - for pager.NextPage(ctx) { - for _, v := range pager.PageResponse().Value { + for pager.More() { + page, err := pager.NextPage(ctx) + if err != nil { + return cloudtypes.Instances{}, err + } + for _, v := range page.Value { if v.Properties != nil && v.Properties.IPAddress != nil { publicIPAddress = *v.Properties.IPAddress break @@ -236,7 +242,7 @@ func (c *Client) getInstanceIPs(ctx context.Context, scaleSet string, count int) if err != nil { return nil, err } - configs := res.InterfacesClientGetVirtualMachineScaleSetNetworkInterfaceResult.Interface.Properties.IPConfigurations + configs := res.Interface.Properties.IPConfigurations for _, config := range configs { privateIPAddress = *config.Properties.PrivateIPAddress break @@ -288,7 +294,9 @@ func (c *Client) TerminateResourceGroup(ctx context.Context) error { return err } - if _, err = poller.PollUntilDone(ctx, 30*time.Second); err != nil { + if _, err = poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{ + Frequency: 30 * time.Second, + }); err != nil { return err } c.workers = nil diff --git a/cli/internal/azure/client/compute_test.go b/cli/internal/azure/client/compute_test.go index d3d5e6ce2..3cfcbdf33 100644 --- a/cli/internal/azure/client/compute_test.go +++ b/cli/internal/azure/client/compute_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" "github.com/edgelesssys/constellation/internal/cloud/cloudtypes" "github.com/stretchr/testify/assert" @@ -94,7 +94,7 @@ func TestTerminateResourceGroup(t *testing.T) { wantErr: true, }, "failed to poll terminate response": { - resourceGroupAPI: stubResourceGroupAPI{stubResponse: stubResourceGroupsDeletePollerResponse{pollerErr: someErr}}, + resourceGroupAPI: stubResourceGroupAPI{pollErr: someErr}, client: clientWithResourceGroup, wantErr: true, }, @@ -135,12 +135,8 @@ func TestCreateInstances(t *testing.T) { publicIPAddressesAPI: stubPublicIPAddressesAPI{}, networkInterfacesAPI: stubNetworkInterfacesAPI{}, scaleSetsAPI: stubScaleSetsAPI{ - stubResponse: stubVirtualMachineScaleSetsCreateOrUpdatePollerResponse{ - pollResponse: armcompute.VirtualMachineScaleSetsClientCreateOrUpdateResponse{ - VirtualMachineScaleSetsClientCreateOrUpdateResult: armcompute.VirtualMachineScaleSetsClientCreateOrUpdateResult{ - VirtualMachineScaleSet: armcompute.VirtualMachineScaleSet{Identity: &armcompute.VirtualMachineScaleSetIdentity{PrincipalID: to.StringPtr("principal-id")}}, - }, - }, + stubResponse: armcomputev2.VirtualMachineScaleSetsClientCreateOrUpdateResponse{ + VirtualMachineScaleSet: armcomputev2.VirtualMachineScaleSet{Identity: &armcomputev2.VirtualMachineScaleSetIdentity{PrincipalID: to.Ptr("principal-id")}}, }, }, resourceGroupAPI: newSuccessfulResourceGroupStub(), @@ -171,7 +167,7 @@ func TestCreateInstances(t *testing.T) { "error when polling create scale set response": { publicIPAddressesAPI: stubPublicIPAddressesAPI{}, networkInterfacesAPI: stubNetworkInterfacesAPI{}, - scaleSetsAPI: stubScaleSetsAPI{stubResponse: stubVirtualMachineScaleSetsCreateOrUpdatePollerResponse{pollErr: someErr}}, + scaleSetsAPI: stubScaleSetsAPI{pollErr: someErr}, resourceGroupAPI: newSuccessfulResourceGroupStub(), roleAssignmentsAPI: &stubRoleAssignmentsAPI{}, createInstancesInput: CreateInstancesInput{ @@ -250,13 +246,9 @@ func TestCreateInstancesVMs(t *testing.T) { publicIPAddressesAPI: stubPublicIPAddressesAPI{}, networkInterfacesAPI: stubNetworkInterfacesAPI{}, virtualMachinesAPI: stubVirtualMachinesAPI{ - stubResponse: stubVirtualMachinesClientCreateOrUpdatePollerResponse{ - pollResponse: armcompute.VirtualMachinesClientCreateOrUpdateResponse{VirtualMachinesClientCreateOrUpdateResult: armcompute.VirtualMachinesClientCreateOrUpdateResult{ - VirtualMachine: armcompute.VirtualMachine{ - Identity: &armcompute.VirtualMachineIdentity{PrincipalID: to.StringPtr("principal-id")}, - }, - }}, - }, + stubResponse: armcomputev2.VirtualMachinesClientCreateOrUpdateResponse{VirtualMachine: armcomputev2.VirtualMachine{ + Identity: &armcomputev2.VirtualMachineIdentity{PrincipalID: to.Ptr("principal-id")}, + }}, }, resourceGroupAPI: newSuccessfulResourceGroupStub(), roleAssignmentsAPI: &stubRoleAssignmentsAPI{}, @@ -284,7 +276,7 @@ func TestCreateInstancesVMs(t *testing.T) { "error when polling create scale set response": { publicIPAddressesAPI: stubPublicIPAddressesAPI{}, networkInterfacesAPI: stubNetworkInterfacesAPI{}, - virtualMachinesAPI: stubVirtualMachinesAPI{stubResponse: stubVirtualMachinesClientCreateOrUpdatePollerResponse{pollErr: someErr}}, + virtualMachinesAPI: stubVirtualMachinesAPI{pollErr: someErr}, resourceGroupAPI: newSuccessfulResourceGroupStub(), roleAssignmentsAPI: &stubRoleAssignmentsAPI{}, createInstancesInput: CreateInstancesInput{ @@ -378,7 +370,7 @@ func TestCreateInstancesVMs(t *testing.T) { func newSuccessfulResourceGroupStub() *stubResourceGroupAPI { return &stubResourceGroupAPI{ getResourceGroup: armresources.ResourceGroup{ - ID: to.StringPtr("resource-group-id"), + ID: to.Ptr("resource-group-id"), }, } } diff --git a/cli/internal/azure/client/network.go b/cli/internal/azure/client/network.go index 5541dde46..bef1bfb0a 100644 --- a/cli/internal/azure/client/network.go +++ b/cli/internal/azure/client/network.go @@ -4,6 +4,7 @@ import ( "context" "time" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" "github.com/edgelesssys/constellation/cli/internal/azure" @@ -39,25 +40,25 @@ func (c *Client) CreateVirtualNetwork(ctx context.Context) error { poller, err := c.networksAPI.BeginCreateOrUpdate( ctx, c.resourceGroup, createNetworkInput.name, armnetwork.VirtualNetwork{ - Name: to.StringPtr(createNetworkInput.name), // this is supposed to be read-only - Location: to.StringPtr(createNetworkInput.location), + Name: to.Ptr(createNetworkInput.name), // this is supposed to be read-only + Location: to.Ptr(createNetworkInput.location), Properties: &armnetwork.VirtualNetworkPropertiesFormat{ AddressSpace: &armnetwork.AddressSpace{ AddressPrefixes: []*string{ - to.StringPtr(createNetworkInput.addressSpace), + to.Ptr(createNetworkInput.addressSpace), }, }, Subnets: []*armnetwork.Subnet{ { - Name: to.StringPtr(nodeNetworkName), + Name: to.Ptr(nodeNetworkName), Properties: &armnetwork.SubnetPropertiesFormat{ - AddressPrefix: to.StringPtr(createNetworkInput.nodeAddressSpace), + AddressPrefix: to.Ptr(createNetworkInput.nodeAddressSpace), }, }, { - Name: to.StringPtr(podNetworkName), + Name: to.Ptr(podNetworkName), Properties: &armnetwork.SubnetPropertiesFormat{ - AddressPrefix: to.StringPtr(createNetworkInput.podAddressSpace), + AddressPrefix: to.Ptr(createNetworkInput.podAddressSpace), }, }, }, @@ -68,11 +69,13 @@ func (c *Client) CreateVirtualNetwork(ctx context.Context) error { if err != nil { return err } - resp, err := poller.PollUntilDone(ctx, 30*time.Second) + resp, err := poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{ + Frequency: 30 * time.Second, + }) if err != nil { return err } - c.subnetID = *resp.VirtualNetworksClientCreateOrUpdateResult.VirtualNetwork.Properties.Subnets[0].ID + c.subnetID = *resp.VirtualNetwork.Properties.Subnets[0].ID return nil } @@ -98,8 +101,8 @@ func (c *Client) CreateSecurityGroup(ctx context.Context, input NetworkSecurityG poller, err := c.networkSecurityGroupsAPI.BeginCreateOrUpdate( ctx, c.resourceGroup, createNetworkSecurityGroupInput.name, armnetwork.SecurityGroup{ - Name: to.StringPtr(createNetworkSecurityGroupInput.name), - Location: to.StringPtr(createNetworkSecurityGroupInput.location), + Name: to.Ptr(createNetworkSecurityGroupInput.name), + Location: to.Ptr(createNetworkSecurityGroupInput.location), Properties: &armnetwork.SecurityGroupPropertiesFormat{ SecurityRules: createNetworkSecurityGroupInput.rules, }, @@ -109,11 +112,13 @@ func (c *Client) CreateSecurityGroup(ctx context.Context, input NetworkSecurityG if err != nil { return err } - pollerResp, err := poller.PollUntilDone(ctx, 30*time.Second) + pollerResp, err := poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{ + Frequency: 30 * time.Second, + }) if err != nil { return err } - c.networkSecurityGroup = *pollerResp.SecurityGroupsClientCreateOrUpdateResult.SecurityGroup.ID + c.networkSecurityGroup = *pollerResp.SecurityGroup.ID return nil } @@ -123,20 +128,20 @@ func (c *Client) createNIC(ctx context.Context, name, publicIPAddressID string) poller, err := c.networkInterfacesAPI.BeginCreateOrUpdate( ctx, c.resourceGroup, name, armnetwork.Interface{ - Location: to.StringPtr(c.location), + Location: to.Ptr(c.location), Properties: &armnetwork.InterfacePropertiesFormat{ NetworkSecurityGroup: &armnetwork.SecurityGroup{ - ID: to.StringPtr(c.networkSecurityGroup), + ID: to.Ptr(c.networkSecurityGroup), }, IPConfigurations: []*armnetwork.InterfaceIPConfiguration{ { - Name: to.StringPtr(name), + Name: to.Ptr(name), Properties: &armnetwork.InterfaceIPConfigurationPropertiesFormat{ Subnet: &armnetwork.Subnet{ - ID: to.StringPtr(c.subnetID), + ID: to.Ptr(c.subnetID), }, PublicIPAddress: &armnetwork.PublicIPAddress{ - ID: to.StringPtr(publicIPAddressID), + ID: to.Ptr(publicIPAddressID), }, }, }, @@ -148,12 +153,14 @@ func (c *Client) createNIC(ctx context.Context, name, publicIPAddressID string) if err != nil { return "", "", err } - pollerResp, err := poller.PollUntilDone(ctx, 30*time.Second) + pollerResp, err := poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{ + Frequency: 30 * time.Second, + }) if err != nil { return "", "", err } - netInterface := pollerResp.InterfacesClientCreateOrUpdateResult.Interface + netInterface := pollerResp.Interface return *netInterface.Properties.IPConfigurations[0].Properties.PrivateIPAddress, *netInterface.ID, @@ -164,12 +171,12 @@ func (c *Client) createPublicIPAddress(ctx context.Context, name string) (*armne poller, err := c.publicIPAddressesAPI.BeginCreateOrUpdate( ctx, c.resourceGroup, name, armnetwork.PublicIPAddress{ - Location: to.StringPtr(c.location), + Location: to.Ptr(c.location), SKU: &armnetwork.PublicIPAddressSKU{ - Name: armnetwork.PublicIPAddressSKUNameStandard.ToPtr(), + Name: to.Ptr(armnetwork.PublicIPAddressSKUNameStandard), }, Properties: &armnetwork.PublicIPAddressPropertiesFormat{ - PublicIPAllocationMethod: armnetwork.IPAllocationMethodStatic.ToPtr(), + PublicIPAllocationMethod: to.Ptr(armnetwork.IPAllocationMethodStatic), }, }, nil, @@ -177,12 +184,14 @@ func (c *Client) createPublicIPAddress(ctx context.Context, name string) (*armne if err != nil { return nil, err } - pollerResp, err := poller.PollUntilDone(ctx, 30*time.Second) + pollerResp, err := poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{ + Frequency: 30 * time.Second, + }) if err != nil { return nil, err } - return &pollerResp.PublicIPAddressesClientCreateOrUpdateResult.PublicIPAddress, nil + return &pollerResp.PublicIPAddress, nil } // NetworkSecurityGroupInput defines firewall rules to be set. @@ -220,7 +229,9 @@ func (c *Client) CreateExternalLoadBalancer(ctx context.Context) error { return err } - _, err = poller.PollUntilDone(ctx, 30*time.Second) + _, err = poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{ + Frequency: 30 * time.Second, + }) if err != nil { return err } diff --git a/cli/internal/azure/client/network_test.go b/cli/internal/azure/client/network_test.go index d5f5f27ae..c0c2e9298 100644 --- a/cli/internal/azure/client/network_test.go +++ b/cli/internal/azure/client/network_test.go @@ -19,7 +19,7 @@ func TestCreateVirtualNetwork(t *testing.T) { networksAPI: stubNetworksAPI{}, }, "failed to get response from successful create": { - networksAPI: stubNetworksAPI{stubResponse: stubVirtualNetworksCreateOrUpdatePollerResponse{pollerErr: someErr}}, + networksAPI: stubNetworksAPI{pollErr: someErr}, wantErr: true, }, "failed create": { @@ -83,7 +83,7 @@ func TestCreateSecurityGroup(t *testing.T) { networkSecurityGroupsAPI: stubNetworkSecurityGroupsAPI{}, }, "failed to get response from successful create": { - networkSecurityGroupsAPI: stubNetworkSecurityGroupsAPI{stubPoller: stubNetworkSecurityGroupsCreateOrUpdatePollerResponse{pollerErr: someErr}}, + networkSecurityGroupsAPI: stubNetworkSecurityGroupsAPI{pollErr: someErr}, wantErr: true, }, "failed create": { @@ -133,7 +133,7 @@ func TestCreateNIC(t *testing.T) { publicIPAddressID: "pubIP-id", }, "failed to get response from successful create": { - networkInterfacesAPI: stubNetworkInterfacesAPI{stubResp: stubInterfacesClientCreateOrUpdatePollerResponse{pollErr: someErr}}, + networkInterfacesAPI: stubNetworkInterfacesAPI{pollErr: someErr}, wantErr: true, }, "failed create": { @@ -182,7 +182,7 @@ func TestCreatePublicIPAddress(t *testing.T) { name: "nic-name", }, "failed to get response from successful create": { - publicIPAddressesAPI: stubPublicIPAddressesAPI{stubCreateResponse: stubPublicIPAddressesClientCreateOrUpdatePollerResponse{pollErr: someErr}}, + publicIPAddressesAPI: stubPublicIPAddressesAPI{pollErr: someErr}, wantErr: true, }, "failed create": { @@ -226,11 +226,11 @@ func TestCreateExternalLoadBalancer(t *testing.T) { wantErr bool }{ "successful create": { - publicIPAddressesAPI: stubPublicIPAddressesAPI{stubCreateResponse: stubPublicIPAddressesClientCreateOrUpdatePollerResponse{}}, + publicIPAddressesAPI: stubPublicIPAddressesAPI{}, loadBalancersAPI: stubLoadBalancersAPI{}, }, "failed to get response from successful create": { - loadBalancersAPI: stubLoadBalancersAPI{stubResponse: stubLoadBalancersClientCreateOrUpdatePollerResponse{pollErr: someErr}}, + loadBalancersAPI: stubLoadBalancersAPI{pollErr: someErr}, publicIPAddressesAPI: stubPublicIPAddressesAPI{}, wantErr: true, }, diff --git a/cli/internal/azure/instances.go b/cli/internal/azure/instances.go index d15a866c3..76b6156e2 100644 --- a/cli/internal/azure/instances.go +++ b/cli/internal/azure/instances.go @@ -6,7 +6,7 @@ package azure import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" ) // VMInstance describes a single instance. @@ -23,58 +23,58 @@ type VMInstance struct { // Azure makes a new virtual machine template with default values. // TODO: deprecate as soon as scale sets are available. -func (i VMInstance) Azure() armcompute.VirtualMachine { - return armcompute.VirtualMachine{ - Name: to.StringPtr(i.Name), - Location: to.StringPtr(i.Location), - Properties: &armcompute.VirtualMachineProperties{ - HardwareProfile: &armcompute.HardwareProfile{ - VMSize: (*armcompute.VirtualMachineSizeTypes)(to.StringPtr(i.InstanceType)), +func (i VMInstance) Azure() armcomputev2.VirtualMachine { + return armcomputev2.VirtualMachine{ + Name: to.Ptr(i.Name), + Location: to.Ptr(i.Location), + Properties: &armcomputev2.VirtualMachineProperties{ + HardwareProfile: &armcomputev2.HardwareProfile{ + VMSize: (*armcomputev2.VirtualMachineSizeTypes)(to.Ptr(i.InstanceType)), }, - OSProfile: &armcompute.OSProfile{ - ComputerName: to.StringPtr(i.Name), - AdminPassword: to.StringPtr(i.Password), - AdminUsername: to.StringPtr(i.Username), + OSProfile: &armcomputev2.OSProfile{ + ComputerName: to.Ptr(i.Name), + AdminPassword: to.Ptr(i.Password), + AdminUsername: to.Ptr(i.Username), }, - SecurityProfile: &armcompute.SecurityProfile{ - UefiSettings: &armcompute.UefiSettings{ - SecureBootEnabled: to.BoolPtr(true), - VTpmEnabled: to.BoolPtr(true), + SecurityProfile: &armcomputev2.SecurityProfile{ + UefiSettings: &armcomputev2.UefiSettings{ + SecureBootEnabled: to.Ptr(true), + VTpmEnabled: to.Ptr(true), }, - SecurityType: armcompute.SecurityTypesConfidentialVM.ToPtr(), + SecurityType: to.Ptr(armcomputev2.SecurityTypesConfidentialVM), }, - NetworkProfile: &armcompute.NetworkProfile{ - NetworkInterfaces: []*armcompute.NetworkInterfaceReference{ + NetworkProfile: &armcomputev2.NetworkProfile{ + NetworkInterfaces: []*armcomputev2.NetworkInterfaceReference{ { - ID: to.StringPtr(i.NIC), + ID: to.Ptr(i.NIC), }, }, }, - StorageProfile: &armcompute.StorageProfile{ - OSDisk: &armcompute.OSDisk{ - CreateOption: armcompute.DiskCreateOptionTypesFromImage.ToPtr(), - ManagedDisk: &armcompute.ManagedDiskParameters{ - StorageAccountType: armcompute.StorageAccountTypesPremiumLRS.ToPtr(), - SecurityProfile: &armcompute.VMDiskSecurityProfile{ - SecurityEncryptionType: armcompute.SecurityEncryptionTypesVMGuestStateOnly.ToPtr(), + StorageProfile: &armcomputev2.StorageProfile{ + OSDisk: &armcomputev2.OSDisk{ + CreateOption: to.Ptr(armcomputev2.DiskCreateOptionTypesFromImage), + ManagedDisk: &armcomputev2.ManagedDiskParameters{ + StorageAccountType: to.Ptr(armcomputev2.StorageAccountTypesPremiumLRS), + SecurityProfile: &armcomputev2.VMDiskSecurityProfile{ + SecurityEncryptionType: to.Ptr(armcomputev2.SecurityEncryptionTypesVMGuestStateOnly), }, }, }, - ImageReference: &armcompute.ImageReference{ - Publisher: to.StringPtr("0001-com-ubuntu-confidential-vm-focal"), - Offer: to.StringPtr("canonical"), - SKU: to.StringPtr("20_04-lts-gen2"), - Version: to.StringPtr("latest"), + ImageReference: &armcomputev2.ImageReference{ + Publisher: to.Ptr("0001-com-ubuntu-confidential-vm-focal"), + Offer: to.Ptr("canonical"), + SKU: to.Ptr("20_04-lts-gen2"), + Version: to.Ptr("latest"), }, }, - DiagnosticsProfile: &armcompute.DiagnosticsProfile{ - BootDiagnostics: &armcompute.BootDiagnostics{ - Enabled: to.BoolPtr(true), + DiagnosticsProfile: &armcomputev2.DiagnosticsProfile{ + BootDiagnostics: &armcomputev2.BootDiagnostics{ + Enabled: to.Ptr(true), }, }, }, - Identity: &armcompute.VirtualMachineIdentity{ - Type: armcompute.ResourceIdentityTypeSystemAssigned.ToPtr(), + Identity: &armcomputev2.VirtualMachineIdentity{ + Type: to.Ptr(armcomputev2.ResourceIdentityTypeSystemAssigned), }, } } diff --git a/cli/internal/azure/loadbalancer.go b/cli/internal/azure/loadbalancer.go index 0914ace5a..c0993ff85 100644 --- a/cli/internal/azure/loadbalancer.go +++ b/cli/internal/azure/loadbalancer.go @@ -32,138 +32,138 @@ func (l LoadBalancer) Azure() armnetwork.LoadBalancer { backEndAddressPoolControlPlaneName := BackendAddressPoolControlPlaneName + "-" + l.UID return armnetwork.LoadBalancer{ - Name: to.StringPtr(l.Name), - Location: to.StringPtr(l.Location), - SKU: &armnetwork.LoadBalancerSKU{Name: armnetwork.LoadBalancerSKUNameStandard.ToPtr()}, + Name: to.Ptr(l.Name), + Location: to.Ptr(l.Location), + SKU: &armnetwork.LoadBalancerSKU{Name: to.Ptr(armnetwork.LoadBalancerSKUNameStandard)}, Properties: &armnetwork.LoadBalancerPropertiesFormat{ FrontendIPConfigurations: []*armnetwork.FrontendIPConfiguration{ { - Name: to.StringPtr(frontEndIPConfigName), + Name: to.Ptr(frontEndIPConfigName), Properties: &armnetwork.FrontendIPConfigurationPropertiesFormat{ PublicIPAddress: &armnetwork.PublicIPAddress{ - ID: to.StringPtr(l.PublicIPID), + ID: to.Ptr(l.PublicIPID), }, }, }, }, BackendAddressPools: []*armnetwork.BackendAddressPool{ { - Name: to.StringPtr(backEndAddressPoolNodeName), + Name: to.Ptr(backEndAddressPoolNodeName), }, { - Name: to.StringPtr(backEndAddressPoolControlPlaneName), + Name: to.Ptr(backEndAddressPoolControlPlaneName), }, { - Name: to.StringPtr("all"), + Name: to.Ptr("all"), }, }, Probes: []*armnetwork.Probe{ { - Name: to.StringPtr(kubeHealthProbeName), + Name: to.Ptr(kubeHealthProbeName), Properties: &armnetwork.ProbePropertiesFormat{ - Protocol: armnetwork.ProbeProtocolTCP.ToPtr(), - Port: to.Int32Ptr(int32(6443)), + Protocol: to.Ptr(armnetwork.ProbeProtocolTCP), + Port: to.Ptr(int32(6443)), }, }, { - Name: to.StringPtr(verifyHealthProbeName), + Name: to.Ptr(verifyHealthProbeName), Properties: &armnetwork.ProbePropertiesFormat{ - Protocol: armnetwork.ProbeProtocolTCP.ToPtr(), - Port: to.Int32Ptr(constants.VerifyServiceNodePortGRPC), + Protocol: to.Ptr(armnetwork.ProbeProtocolTCP), + Port: to.Ptr[int32](constants.VerifyServiceNodePortGRPC), }, }, { - Name: to.StringPtr(coordHealthProbeName), + Name: to.Ptr(coordHealthProbeName), Properties: &armnetwork.ProbePropertiesFormat{ - Protocol: armnetwork.ProbeProtocolTCP.ToPtr(), - Port: to.Int32Ptr(int32(constants.BootstrapperPort)), + Protocol: to.Ptr(armnetwork.ProbeProtocolTCP), + Port: to.Ptr[int32](constants.BootstrapperPort), }, }, { - Name: to.StringPtr(debugdHealthProbeName), + Name: to.Ptr(debugdHealthProbeName), Properties: &armnetwork.ProbePropertiesFormat{ - Protocol: armnetwork.ProbeProtocolTCP.ToPtr(), - Port: to.Int32Ptr(int32(4000)), + Protocol: to.Ptr(armnetwork.ProbeProtocolTCP), + Port: to.Ptr[int32](4000), }, }, }, LoadBalancingRules: []*armnetwork.LoadBalancingRule{ { - Name: to.StringPtr("kubeLoadBalancerRule"), + Name: to.Ptr("kubeLoadBalancerRule"), Properties: &armnetwork.LoadBalancingRulePropertiesFormat{ FrontendIPConfiguration: &armnetwork.SubResource{ - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), }, - FrontendPort: to.Int32Ptr(int32(6443)), - BackendPort: to.Int32Ptr(int32(6443)), - Protocol: armnetwork.TransportProtocolTCP.ToPtr(), + FrontendPort: to.Ptr[int32](6443), + BackendPort: to.Ptr[int32](6443), + Protocol: to.Ptr(armnetwork.TransportProtocolTCP), Probe: &armnetwork.SubResource{ - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/probes/" + kubeHealthProbeName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/probes/" + kubeHealthProbeName), }, - DisableOutboundSnat: to.BoolPtr(true), + DisableOutboundSnat: to.Ptr(true), BackendAddressPools: []*armnetwork.SubResource{ { - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/" + backEndAddressPoolControlPlaneName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/" + backEndAddressPoolControlPlaneName), }, }, }, }, { - Name: to.StringPtr("verifyLoadBalancerRule"), + Name: to.Ptr("verifyLoadBalancerRule"), Properties: &armnetwork.LoadBalancingRulePropertiesFormat{ FrontendIPConfiguration: &armnetwork.SubResource{ - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), }, - FrontendPort: to.Int32Ptr(constants.VerifyServiceNodePortGRPC), - BackendPort: to.Int32Ptr(constants.VerifyServiceNodePortGRPC), - Protocol: armnetwork.TransportProtocolTCP.ToPtr(), + FrontendPort: to.Ptr[int32](constants.VerifyServiceNodePortGRPC), + BackendPort: to.Ptr[int32](constants.VerifyServiceNodePortGRPC), + Protocol: to.Ptr(armnetwork.TransportProtocolTCP), Probe: &armnetwork.SubResource{ - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/probes/" + verifyHealthProbeName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/probes/" + verifyHealthProbeName), }, - DisableOutboundSnat: to.BoolPtr(true), + DisableOutboundSnat: to.Ptr(true), BackendAddressPools: []*armnetwork.SubResource{ { - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/" + backEndAddressPoolControlPlaneName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/" + backEndAddressPoolControlPlaneName), }, }, }, }, { - Name: to.StringPtr("coordLoadBalancerRule"), + Name: to.Ptr("coordLoadBalancerRule"), Properties: &armnetwork.LoadBalancingRulePropertiesFormat{ FrontendIPConfiguration: &armnetwork.SubResource{ - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), }, - FrontendPort: to.Int32Ptr(int32(constants.BootstrapperPort)), - BackendPort: to.Int32Ptr(int32(constants.BootstrapperPort)), - Protocol: armnetwork.TransportProtocolTCP.ToPtr(), + FrontendPort: to.Ptr[int32](constants.BootstrapperPort), + BackendPort: to.Ptr[int32](constants.BootstrapperPort), + Protocol: to.Ptr(armnetwork.TransportProtocolTCP), Probe: &armnetwork.SubResource{ - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/probes/" + coordHealthProbeName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/probes/" + coordHealthProbeName), }, - DisableOutboundSnat: to.BoolPtr(true), + DisableOutboundSnat: to.Ptr(true), BackendAddressPools: []*armnetwork.SubResource{ { - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/" + backEndAddressPoolControlPlaneName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/" + backEndAddressPoolControlPlaneName), }, }, }, }, { - Name: to.StringPtr("debudLoadBalancerRule"), + Name: to.Ptr("debudLoadBalancerRule"), Properties: &armnetwork.LoadBalancingRulePropertiesFormat{ FrontendIPConfiguration: &armnetwork.SubResource{ - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), }, - FrontendPort: to.Int32Ptr(int32(4000)), - BackendPort: to.Int32Ptr(int32(4000)), - Protocol: armnetwork.TransportProtocolTCP.ToPtr(), + FrontendPort: to.Ptr[int32](4000), + BackendPort: to.Ptr[int32](4000), + Protocol: to.Ptr(armnetwork.TransportProtocolTCP), Probe: &armnetwork.SubResource{ - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/probes/" + debugdHealthProbeName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/probes/" + debugdHealthProbeName), }, - DisableOutboundSnat: to.BoolPtr(true), + DisableOutboundSnat: to.Ptr(true), BackendAddressPools: []*armnetwork.SubResource{ { - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/" + backEndAddressPoolControlPlaneName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/" + backEndAddressPoolControlPlaneName), }, }, }, @@ -171,17 +171,17 @@ func (l LoadBalancer) Azure() armnetwork.LoadBalancer { }, OutboundRules: []*armnetwork.OutboundRule{ { - Name: to.StringPtr("outboundRuleControlPlane"), + Name: to.Ptr("outboundRuleControlPlane"), Properties: &armnetwork.OutboundRulePropertiesFormat{ FrontendIPConfigurations: []*armnetwork.SubResource{ { - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/frontendIPConfigurations/" + frontEndIPConfigName), }, }, BackendAddressPool: &armnetwork.SubResource{ - ID: to.StringPtr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/all"), + ID: to.Ptr("/subscriptions/" + l.Subscription + "/resourceGroups/" + l.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + l.Name + "/backendAddressPools/all"), }, - Protocol: armnetwork.LoadBalancerOutboundRuleProtocolAll.ToPtr(), + Protocol: to.Ptr(armnetwork.LoadBalancerOutboundRuleProtocolAll), }, }, }, diff --git a/cli/internal/azure/scaleset.go b/cli/internal/azure/scaleset.go index 44ebc562b..76b405b3e 100644 --- a/cli/internal/azure/scaleset.go +++ b/cli/internal/azure/scaleset.go @@ -5,7 +5,7 @@ import ( "math/big" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" ) // ScaleSet defines a Azure scale set. @@ -30,92 +30,92 @@ type ScaleSet struct { } // Azure returns the Azure representation of ScaleSet. -func (s ScaleSet) Azure() armcompute.VirtualMachineScaleSet { - return armcompute.VirtualMachineScaleSet{ - Name: to.StringPtr(s.Name), - Location: to.StringPtr(s.Location), - SKU: &armcompute.SKU{ - Name: to.StringPtr(s.InstanceType), - Capacity: to.Int64Ptr(s.Count), +func (s ScaleSet) Azure() armcomputev2.VirtualMachineScaleSet { + return armcomputev2.VirtualMachineScaleSet{ + Name: to.Ptr(s.Name), + Location: to.Ptr(s.Location), + SKU: &armcomputev2.SKU{ + Name: to.Ptr(s.InstanceType), + Capacity: to.Ptr(s.Count), }, - Properties: &armcompute.VirtualMachineScaleSetProperties{ - Overprovision: to.BoolPtr(false), - UpgradePolicy: &armcompute.UpgradePolicy{ - Mode: armcompute.UpgradeModeManual.ToPtr(), - AutomaticOSUpgradePolicy: &armcompute.AutomaticOSUpgradePolicy{ - EnableAutomaticOSUpgrade: to.BoolPtr(false), - DisableAutomaticRollback: to.BoolPtr(false), + Properties: &armcomputev2.VirtualMachineScaleSetProperties{ + Overprovision: to.Ptr(false), + UpgradePolicy: &armcomputev2.UpgradePolicy{ + Mode: to.Ptr(armcomputev2.UpgradeModeManual), + AutomaticOSUpgradePolicy: &armcomputev2.AutomaticOSUpgradePolicy{ + EnableAutomaticOSUpgrade: to.Ptr(false), + DisableAutomaticRollback: to.Ptr(false), }, }, - VirtualMachineProfile: &armcompute.VirtualMachineScaleSetVMProfile{ - OSProfile: &armcompute.VirtualMachineScaleSetOSProfile{ - ComputerNamePrefix: to.StringPtr(s.NamePrefix), - AdminUsername: to.StringPtr(s.Username), - AdminPassword: to.StringPtr(s.Password), - LinuxConfiguration: &armcompute.LinuxConfiguration{}, + VirtualMachineProfile: &armcomputev2.VirtualMachineScaleSetVMProfile{ + OSProfile: &armcomputev2.VirtualMachineScaleSetOSProfile{ + ComputerNamePrefix: to.Ptr(s.NamePrefix), + AdminUsername: to.Ptr(s.Username), + AdminPassword: to.Ptr(s.Password), + LinuxConfiguration: &armcomputev2.LinuxConfiguration{}, }, - StorageProfile: &armcompute.VirtualMachineScaleSetStorageProfile{ - ImageReference: &armcompute.ImageReference{ - ID: to.StringPtr(s.Image), + StorageProfile: &armcomputev2.VirtualMachineScaleSetStorageProfile{ + ImageReference: &armcomputev2.ImageReference{ + ID: to.Ptr(s.Image), }, - DataDisks: []*armcompute.VirtualMachineScaleSetDataDisk{ + DataDisks: []*armcomputev2.VirtualMachineScaleSetDataDisk{ { - CreateOption: armcompute.DiskCreateOptionTypesEmpty.ToPtr(), - DiskSizeGB: to.Int32Ptr(s.StateDiskSizeGB), - Lun: to.Int32Ptr(0), - ManagedDisk: &armcompute.VirtualMachineScaleSetManagedDiskParameters{ - StorageAccountType: (*armcompute.StorageAccountTypes)(to.StringPtr(s.StateDiskType)), + CreateOption: to.Ptr(armcomputev2.DiskCreateOptionTypesEmpty), + DiskSizeGB: to.Ptr(s.StateDiskSizeGB), + Lun: to.Ptr[int32](0), + ManagedDisk: &armcomputev2.VirtualMachineScaleSetManagedDiskParameters{ + StorageAccountType: (*armcomputev2.StorageAccountTypes)(to.Ptr(s.StateDiskType)), }, }, }, }, - NetworkProfile: &armcompute.VirtualMachineScaleSetNetworkProfile{ - NetworkInterfaceConfigurations: []*armcompute.VirtualMachineScaleSetNetworkConfiguration{ + NetworkProfile: &armcomputev2.VirtualMachineScaleSetNetworkProfile{ + NetworkInterfaceConfigurations: []*armcomputev2.VirtualMachineScaleSetNetworkConfiguration{ { - Name: to.StringPtr(s.Name), - Properties: &armcompute.VirtualMachineScaleSetNetworkConfigurationProperties{ - Primary: to.BoolPtr(true), - EnableIPForwarding: to.BoolPtr(true), - IPConfigurations: []*armcompute.VirtualMachineScaleSetIPConfiguration{ + Name: to.Ptr(s.Name), + Properties: &armcomputev2.VirtualMachineScaleSetNetworkConfigurationProperties{ + Primary: to.Ptr(true), + EnableIPForwarding: to.Ptr(true), + IPConfigurations: []*armcomputev2.VirtualMachineScaleSetIPConfiguration{ { - Name: to.StringPtr(s.Name), - Properties: &armcompute.VirtualMachineScaleSetIPConfigurationProperties{ - Primary: to.BoolPtr(true), - Subnet: &armcompute.APIEntityReference{ - ID: to.StringPtr(s.SubnetID), + Name: to.Ptr(s.Name), + Properties: &armcomputev2.VirtualMachineScaleSetIPConfigurationProperties{ + Primary: to.Ptr(true), + Subnet: &armcomputev2.APIEntityReference{ + ID: to.Ptr(s.SubnetID), }, - LoadBalancerBackendAddressPools: []*armcompute.SubResource{ + LoadBalancerBackendAddressPools: []*armcomputev2.SubResource{ { - ID: to.StringPtr("/subscriptions/" + s.Subscription + "/resourcegroups/" + s.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + s.LoadBalancerName + "/backendAddressPools/" + s.LoadBalancerBackendAddressPool), + ID: to.Ptr("/subscriptions/" + s.Subscription + "/resourcegroups/" + s.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + s.LoadBalancerName + "/backendAddressPools/" + s.LoadBalancerBackendAddressPool), }, { - ID: to.StringPtr("/subscriptions/" + s.Subscription + "/resourcegroups/" + s.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + s.LoadBalancerName + "/backendAddressPools/all"), + ID: to.Ptr("/subscriptions/" + s.Subscription + "/resourcegroups/" + s.ResourceGroup + "/providers/Microsoft.Network/loadBalancers/" + s.LoadBalancerName + "/backendAddressPools/all"), }, }, }, }, }, - NetworkSecurityGroup: &armcompute.SubResource{ - ID: to.StringPtr(s.NetworkSecurityGroup), + NetworkSecurityGroup: &armcomputev2.SubResource{ + ID: to.Ptr(s.NetworkSecurityGroup), }, }, }, }, }, - SecurityProfile: &armcompute.SecurityProfile{ - SecurityType: armcompute.SecurityTypesTrustedLaunch.ToPtr(), - UefiSettings: &armcompute.UefiSettings{VTpmEnabled: to.BoolPtr(true)}, + SecurityProfile: &armcomputev2.SecurityProfile{ + SecurityType: to.Ptr(armcomputev2.SecurityTypesTrustedLaunch), + UefiSettings: &armcomputev2.UefiSettings{VTpmEnabled: to.Ptr(true)}, }, - DiagnosticsProfile: &armcompute.DiagnosticsProfile{ - BootDiagnostics: &armcompute.BootDiagnostics{ - Enabled: to.BoolPtr(true), + DiagnosticsProfile: &armcomputev2.DiagnosticsProfile{ + BootDiagnostics: &armcomputev2.BootDiagnostics{ + Enabled: to.Ptr(true), }, }, }, }, - Identity: &armcompute.VirtualMachineScaleSetIdentity{ - Type: armcompute.ResourceIdentityTypeUserAssigned.ToPtr(), - UserAssignedIdentities: map[string]*armcompute.VirtualMachineScaleSetIdentityUserAssignedIdentitiesValue{ + Identity: &armcomputev2.VirtualMachineScaleSetIdentity{ + Type: to.Ptr(armcomputev2.ResourceIdentityTypeUserAssigned), + UserAssignedIdentities: map[string]*armcomputev2.UserAssignedIdentitiesValue{ s.UserAssignedIdentity: {}, }, }, diff --git a/cli/internal/azure/scaleset_test.go b/cli/internal/azure/scaleset_test.go index 7bee1a965..14975db72 100644 --- a/cli/internal/azure/scaleset_test.go +++ b/cli/internal/azure/scaleset_test.go @@ -3,7 +3,7 @@ package azure import ( "testing" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute" + armcomputev2 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -88,7 +88,7 @@ func TestFirewallPermissions(t *testing.T) { // Verify vTPM require.NotNil(scaleSetAzure.Properties.VirtualMachineProfile.SecurityProfile) require.NotNil(scaleSetAzure.Properties.VirtualMachineProfile.SecurityProfile.SecurityType) - assert.Equal(armcompute.SecurityTypesTrustedLaunch, *scaleSetAzure.Properties.VirtualMachineProfile.SecurityProfile.SecurityType) + assert.Equal(armcomputev2.SecurityTypesTrustedLaunch, *scaleSetAzure.Properties.VirtualMachineProfile.SecurityProfile.SecurityType) require.NotNil(scaleSetAzure.Properties.VirtualMachineProfile.SecurityProfile.UefiSettings) require.NotNil(scaleSetAzure.Properties.VirtualMachineProfile.SecurityProfile.UefiSettings.VTpmEnabled) assert.True(*scaleSetAzure.Properties.VirtualMachineProfile.SecurityProfile.UefiSettings.VTpmEnabled) @@ -96,7 +96,7 @@ func TestFirewallPermissions(t *testing.T) { // Verify UserAssignedIdentity require.NotNil(scaleSetAzure.Identity) require.NotNil(scaleSetAzure.Identity.Type) - assert.Equal(armcompute.ResourceIdentityTypeUserAssigned, *scaleSetAzure.Identity.Type) + assert.Equal(armcomputev2.ResourceIdentityTypeUserAssigned, *scaleSetAzure.Identity.Type) require.Len(scaleSetAzure.Identity.UserAssignedIdentities, 1) assert.Contains(scaleSetAzure.Identity.UserAssignedIdentities, scaleSet.UserAssignedIdentity) } diff --git a/go.mod b/go.mod index a5f3f1c76..57e3a3f2e 100644 --- a/go.mod +++ b/go.mod @@ -41,15 +41,15 @@ require ( cloud.google.com/go/resourcemanager v1.2.0 cloud.google.com/go/storage v1.22.1 github.com/Azure/azure-sdk-for-go v66.0.0+incompatible - github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.2 - github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.3.0 - github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.5.0 - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v0.2.1 - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v0.5.0 - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v0.3.1 - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v0.3.1 - github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 + github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.6.0 + github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.8.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v1.0.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 v2.0.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.0.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 github.com/Azure/go-autorest/autorest v0.11.27 github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 github.com/Azure/go-autorest/autorest/date v0.3.0 @@ -67,7 +67,7 @@ require ( github.com/go-playground/universal-translator v0.18.0 github.com/go-playground/validator/v10 v10.11.0 github.com/google/go-tpm v0.3.3 - github.com/google/go-tpm-tools v0.3.5 + github.com/google/go-tpm-tools v0.3.8 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/google/tink/go v1.6.1 github.com/google/uuid v1.3.0 @@ -77,17 +77,17 @@ require ( github.com/martinjungblut/go-cryptsetup v0.0.0-20220520180014-fd0874fd07a6 github.com/microsoft/ApplicationInsights-Go v0.4.4 github.com/schollz/progressbar/v3 v3.8.6 - github.com/spf13/afero v1.8.2 + github.com/spf13/afero v1.9.2 github.com/spf13/cobra v1.5.0 - github.com/stretchr/testify v1.7.4 + github.com/stretchr/testify v1.7.5 github.com/talos-systems/talos/pkg/machinery v1.0.4 go.uber.org/goleak v1.1.12 go.uber.org/multierr v1.8.0 go.uber.org/zap v1.21.0 - golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd - golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 - google.golang.org/api v0.85.0 - google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad + golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88 + golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e + google.golang.org/api v0.86.0 + google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f google.golang.org/grpc v1.47.0 google.golang.org/protobuf v1.28.0 gopkg.in/yaml.v3 v3.0.1 @@ -110,6 +110,7 @@ require ( ) require ( + github.com/dnaeon/go-vcr v1.2.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect github.com/googleapis/go-type-adapters v1.0.0 // indirect github.com/letsencrypt/boulder v0.0.0-20220331220046-b23ab962616e // indirect @@ -122,15 +123,15 @@ require ( require ( cloud.google.com/go v0.102.0 // indirect code.cloudfoundry.org/clock v0.0.0-20180518195852-02e53af36e6c // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v0.9.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.2.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.5.0 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 // indirect github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect @@ -156,7 +157,7 @@ require ( github.com/emicklei/go-restful v2.9.5+incompatible // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/go-errors/errors v1.4.2 // indirect - github.com/go-logr/logr v1.2.2 // indirect + github.com/go-logr/logr v1.2.3 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.19.6 // indirect github.com/go-openapi/swag v0.21.1 // indirect @@ -169,7 +170,7 @@ require ( github.com/golang/protobuf v1.5.2 // indirect github.com/google/certificate-transparency-go v1.1.2 // indirect github.com/google/gnostic v0.5.7-v3refs // indirect - github.com/google/go-attestation v0.4.3 // indirect + github.com/google/go-attestation v0.4.4-0.20220404204839-8820d49b18d9 // indirect github.com/google/go-cmp v0.5.8 // indirect github.com/google/go-tspi v0.3.0 // indirect github.com/google/gofuzz v1.2.0 // indirect @@ -203,9 +204,9 @@ require ( go.opencensus.io v0.23.0 // indirect go.starlark.net v0.0.0-20220223235035-243c74974e97 // indirect go.uber.org/atomic v1.9.0 // indirect - golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb // indirect + golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 // indirect golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect - golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c // indirect + golang.org/x/sys v0.0.0-20220624220833-87e55d714810 // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 // indirect diff --git a/go.sum b/go.sum index 15f714175..1de46428c 100644 --- a/go.sum +++ b/go.sum @@ -108,35 +108,30 @@ github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9mo github.com/Azure/azure-sdk-for-go v55.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v66.0.0+incompatible h1:bmmC38SlE8/E81nNADlgmVGurPWMHDX2YNXVQMrBpEE= github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.20.0/go.mod h1:ZPW/Z0kLCTdDZaDbYTetxc9Cxl/2lNqxYHYNOF2bti0= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.0/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0 h1:zBJcBJwte0x6PcPK7XaWDMvK2o2ZM2f1sMaqNNavQ5g= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.0/go.mod h1:TmXReXZ9yPp5D5TBRMTAtyz+UyOl15Py4hL5E5p6igQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.1/go.mod h1:+nVKciyKD2J9TyVcEQ82Bo9b+3F92PiQfHrIE/zqLqM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.2 h1:mM/yraAumqMMIYev6zX0oxHqX6hreUs5wXf76W47r38= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.2/go.mod h1:+nVKciyKD2J9TyVcEQ82Bo9b+3F92PiQfHrIE/zqLqM= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.1/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.9.1 h1:sLZ/Y+P/5RRtsXWylBjB5lkgixYfm0MQPiwrSX//JSo= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.9.1/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.3.0 h1:FVbZiAs9cncAB9eIUwDrfBA2PfJIMeTcdMxy6W2nRMo= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.3.0/go.mod h1:Klp8aJcaCELXQHa/Cg0rFFIFlE0EjOUAzt9x1cB00TY= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.5.0 h1:8OgHKRX8uTyIiEV3I9wIoOkXX/OMeFOGguN8wyqjCZM= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.5.0/go.mod h1:uQSVRwN3dRA6hguqKpgzwonvQtpxaWo7/t5cbz3iHbE= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.2.1 h1:lirjIOHv5RrmDbZXw9lUz/fY68uU05qR4uIef58WMvQ= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.2.1/go.mod h1:j1J9XXIo/eXD7YSrr73sYZTEY/AQ0+/Q6Aa96z1e2j8= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v0.2.1 h1:H+YaV8IY4sVFxrkSmyvfvXZv+wxUq/qTQOa9TkqUqPE= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v0.2.1/go.mod h1:IwvRqY+EcaQzfAGUdIZpzWELUdsZzuItWRP6cNTzgr0= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v0.5.0 h1:kqRtiAe9aH0WzzQm3Mq7N6mzcdZHGJZrdteepKT7ymU= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v0.5.0/go.mod h1:isx+19QmRnAX0Ls0Adm/8SL3b8bIaZiSPbhpoyZX5Mw= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v0.3.1 h1:CyGPbnjITjA63agVN1nNznge7Tip0g7OiAvFPiT0btU= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v0.3.1/go.mod h1:FfdF+9+Gnv8lCHCuS38lg8+9aiiy92NzDVc/t5FzpIQ= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v0.3.1 h1:EXTDtCSTfPauGawsG+Ae/W46B1PkrgzuKNrcFqy4ljM= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v0.3.1/go.mod h1:PoA99xQAlN13MyUjzgIPWMZEr0etHpYSuT25LmhR3zQ= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0 h1:Px2UA+2RvSSvv+RvJNuUB6n7rs5Wsel4dXLe90Um2n4= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 h1:tz19qLF65vuu2ibfTqGVJxG/zZAI27NEIIbvAOQwYbw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 h1:jp0dGvZ7ZK0mgqnTSClMxa5xuRL7NZgHameVYF6BurY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.6.0 h1:3Onh5qkCDHpIJplrRI/DbbzWPnFKHRjQV4idRwLrghQ= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.6.0/go.mod h1:y8KaF8j2nkUhLFJPccRG+vCxSKF22wZEit6pMINlvEo= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.8.0 h1:A6Kf8v5DPFR+V7/qQOefHEU8W71OBVJvXu7UO0EHJkA= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.8.0/go.mod h1:u5EGU7cPuj/T2qhJWXDbWgv0dy3ORAEaAzR1zP6p4X8= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.5.0 h1:9cn6ICCGiWFNA/slKnrkf+ENyvaCRKHtuoGtnLIAgao= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.5.0/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v1.0.0 h1:BpGGvzarSyE7kQF1x1hptUcGmNzZEE3yYI+uqBSNRxk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v1.0.0/go.mod h1:1ijUM40peD7YK5MFEJja2wjjp4eimFNWv0NXoY3nsZM= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v1.0.0 h1:/Di3vB4sNeQ+7A8efjUVENvyB945Wruvstucqp7ZArg= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 v2.0.0 h1:xxe4naFUPYEW1W6C8yWrfFNmyZLnEbO+CsbsSF83wDo= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 v2.0.0/go.mod h1:aLFjumYDvv63tH1qnqkcmdjdZ6Sn+/viPv7H3jft0oY= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.0.0 h1:lMW1lD/17LUA5z1XTURo7LcVG2ICBPlyMHjIUrcFZNQ= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.0.0 h1:nBy98uKOIfun5z6wx6jwWLrULcM0+cjBalBFZlEZ7CA= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.0.0/go.mod h1:243D9iHbcQXoFUtgHJwL7gl2zx1aDuDMjvBZVGr2uW0= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 h1:ECsQtyERDVz3NP3kvDOTLvbQhqWp/x9EsGKtb4ogUr8= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 h1:QSdcrd/UFJv6Bp/CfoVf2SrENpFn9P6Yh8yb+xNhYMM= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1/go.mod h1:eZ4g6GUvXiGulfIbbhh1Xr4XwUYaYaWMqzGD/284wCA= github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= @@ -169,8 +164,8 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 h1:WVsrXCnHlDDX8ls+tootqRE87/hL9S/g4ewig9RsD/c= -github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= +github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 h1:BWe8a+f/t+7KY7zH2mqygeUD0t8hNFXe08p1Pb3/jKE= +github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -424,7 +419,6 @@ github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQ github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/distribution v2.8.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= @@ -529,8 +523,8 @@ github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7 github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -670,8 +664,8 @@ github.com/google/certificate-transparency-go v1.1.2/go.mod h1:3OL+HKDqHPUfdKrHV github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-attestation v0.3.2/go.mod h1:N0ADdnY0cr7eLJyZ75o8kofGGTUF2XrZTJuTPo5acwk= -github.com/google/go-attestation v0.4.3 h1:hHhPfym1TZm88L7sWmdc/moikHt80ls6mEiU+QvhRvk= -github.com/google/go-attestation v0.4.3/go.mod h1:7L6MpeaeEmJVJHpr/5cCrOE0SjNA2aFLfJF1Og0AJS8= +github.com/google/go-attestation v0.4.4-0.20220404204839-8820d49b18d9 h1:uspQ6yStR6DVxLT7UomcSc/cKEOtM3z6MOslXeXH1Gg= +github.com/google/go-attestation v0.4.4-0.20220404204839-8820d49b18d9/go.mod h1:KDsPHk8a2MX9g20kYSdxB21t7je5NghSaFeVn0Zu3Ao= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -703,8 +697,8 @@ github.com/google/go-tpm-tools v0.0.0-20190906225433-1614c142f845/go.mod h1:AVfH github.com/google/go-tpm-tools v0.2.0/go.mod h1:npUd03rQ60lxN7tzeBJreG38RvWwme2N1reF/eeiBk4= github.com/google/go-tpm-tools v0.2.1/go.mod h1:npUd03rQ60lxN7tzeBJreG38RvWwme2N1reF/eeiBk4= github.com/google/go-tpm-tools v0.3.1/go.mod h1:PSg+r5hSZI5tP3X7LBQx2sW1VSZUqZHBSrKyDqrB21U= -github.com/google/go-tpm-tools v0.3.5 h1:gcjAoa/iK98ybY41Icn2zkGlJLhVg44nOmI6fFju5IY= -github.com/google/go-tpm-tools v0.3.5/go.mod h1:qfHzQi877eMFmaOWngbcJPz5IOASSHmgeMWvT00aYyA= +github.com/google/go-tpm-tools v0.3.8 h1:ecZgxez5lyKWjnkK8lP3ru4rkgLyIM7pPY36FOFnAx4= +github.com/google/go-tpm-tools v0.3.8/go.mod h1:rp+rDmmDCnWiMmxOTF3ypWxpChEQ4vwA6wtAIq09Qtc= github.com/google/go-tspi v0.2.1-0.20190423175329-115dea689aad/go.mod h1:xfMGI3G0PhxCdNVcYr1C4C+EizojDg/TXuX5by8CiHI= github.com/google/go-tspi v0.3.0 h1:ADtq8RKfP+jrTyIWIZDIYcKOMecRqNJFOew2IT0Inus= github.com/google/go-tspi v0.3.0/go.mod h1:xfMGI3G0PhxCdNVcYr1C4C+EizojDg/TXuX5by8CiHI= @@ -1323,8 +1317,8 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= -github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= @@ -1370,8 +1364,8 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.4 h1:wZRexSlwd7ZXfKINDLsO4r7WBt3gTKONc6K/VesHvHM= -github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.7.5 h1:s5PTfem8p8EbKQOctVV53k6jCJt3UX4IEJzwh+C324Q= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/sylvia7788/contextcheck v1.0.4/go.mod h1:vuPKJMQ7MQ91ZTqfdyreNKwZjyUg6KO+IebVyQDedZQ= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -1558,7 +1552,6 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= @@ -1570,8 +1563,8 @@ golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd h1:XcWmESyNjXJMLahc3mqVQJcgSTDxFxhETVlfk9uGc38= -golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88 h1:Tgea0cVUD0ivh5ADBX4WwuI12DUd2to3nCYe2eayMIw= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1665,7 +1658,6 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -1681,7 +1673,6 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1692,8 +1683,8 @@ golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 h1:Yqz/iviulwKwAREEeUd3nbBFn0XuyJqkoft2IlrvOhc= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1719,8 +1710,9 @@ golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb h1:8tDJ3aechhddbdPAxpycgXHJRMLpk/Ab+aa4OgdN5/g= golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 h1:+jnHzr9VPj32ykQVai5DNahi9+NSp7yYuCsl5eAQtL0= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1864,8 +1856,8 @@ golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c h1:aFV+BgZ4svzjfabn8ERpuB4JI4N6/rdy1iusx77G3oU= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810 h1:rHZQSjJdAI4Xf5Qzeh2bBc5YJIkPFVM6oDtMFYmgws0= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= @@ -2069,8 +2061,8 @@ google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69 google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0 h1:8rJoHuRxx+vCmZtAO/3k1dRLvYNVyTJtZ5oaFZvhgvc= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.86.0 h1:ZAnyOHQFIuWso1BodVfSaRyffD74T9ERGFa3k1fNk/U= +google.golang.org/api v0.86.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2182,8 +2174,8 @@ google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad h1:kqrS+lhvaMHCxul6sKQvKJ8nAAhlVItmZV822hYFH/U= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f h1:hJ/Y5SqPXbarffmAsApliUlcvMU+wScNGfyop4bZm8o= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= diff --git a/hack/go.mod b/hack/go.mod index a6cc49087..2a0dcc05d 100644 --- a/hack/go.mod +++ b/hack/go.mod @@ -38,9 +38,9 @@ require ( github.com/edgelesssys/constellation v1.0.0 github.com/go-git/go-git/v5 v5.4.2 github.com/google/go-tpm-tools v0.3.8 - github.com/spf13/afero v1.8.2 + github.com/spf13/afero v1.9.2 github.com/spf13/cobra v1.5.0 - github.com/stretchr/testify v1.7.4 + github.com/stretchr/testify v1.7.5 go.uber.org/goleak v1.1.12 go.uber.org/zap v1.21.0 golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 @@ -49,6 +49,24 @@ require ( libvirt.org/go/libvirt v1.8004.0 ) +require ( + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 v2.0.0 // indirect + github.com/Microsoft/go-winio v0.5.2 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect + github.com/acomagu/bufpipe v1.0.3 // indirect + github.com/emirpasic/gods v1.12.0 // indirect + github.com/go-git/gcfg v1.5.0 // indirect + github.com/go-git/go-billy/v5 v5.3.1 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect + github.com/googleapis/go-type-adapters v1.0.0 // indirect + github.com/imdario/mergo v0.3.12 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect + github.com/sergi/go-diff v1.2.0 // indirect + github.com/xanzy/ssh-agent v0.3.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect +) + require ( cloud.google.com/go v0.102.0 // indirect cloud.google.com/go/compute v1.7.0 // indirect @@ -57,17 +75,16 @@ require ( cloud.google.com/go/resourcemanager v1.2.0 // indirect cloud.google.com/go/storage v1.22.1 // indirect github.com/Azure/azure-sdk-for-go v66.0.0+incompatible // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.2 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v0.9.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.3.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.5.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.2.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v0.2.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v0.5.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v0.3.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v0.3.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.6.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.8.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.5.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.27 // indirect github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect @@ -78,10 +95,7 @@ require ( github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 // indirect - github.com/Microsoft/go-winio v0.5.2 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect - github.com/acomagu/bufpipe v1.0.3 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 // indirect github.com/aws/aws-sdk-go-v2 v1.16.5 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1 // indirect github.com/aws/aws-sdk-go-v2/config v1.15.11 // indirect @@ -105,9 +119,6 @@ require ( github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dimchansky/utfbom v1.1.1 // indirect - github.com/emirpasic/gods v1.12.0 // indirect - github.com/go-git/gcfg v1.5.0 // indirect - github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect github.com/go-playground/validator/v10 v10.11.0 // indirect @@ -123,45 +134,40 @@ require ( github.com/google/go-tspi v0.3.0 // indirect github.com/google/tink/go v1.6.1 // indirect github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect github.com/googleapis/gax-go/v2 v2.4.0 // indirect - github.com/googleapis/go-type-adapters v1.0.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect - github.com/imdario/mergo v0.3.12 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-urn v1.2.1 // indirect github.com/letsencrypt/boulder v0.0.0-20220331220046-b23ab962616e // indirect + github.com/matryer/is v1.4.0 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sergi/go-diff v1.2.0 // indirect github.com/sigstore/sigstore v1.3.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/talos-systems/talos/pkg/machinery v1.0.4 // indirect github.com/theupdateframework/go-tuf v0.3.0 // indirect github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect - github.com/xanzy/ssh-agent v0.3.0 // indirect go.opencensus.io v0.23.0 // indirect + go.opentelemetry.io/otel v1.3.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd // indirect - golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 // indirect - golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb // indirect - golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c // indirect + golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88 // indirect + golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e // indirect + golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 // indirect + golang.org/x/sys v0.0.0-20220624220833-87e55d714810 // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 // indirect golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect - google.golang.org/api v0.85.0 // indirect + google.golang.org/api v0.86.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad // indirect + google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f // indirect google.golang.org/protobuf v1.28.0 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect - gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect ) diff --git a/hack/go.sum b/hack/go.sum index 230923b42..881ee30bc 100644 --- a/hack/go.sum +++ b/hack/go.sum @@ -50,6 +50,7 @@ cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6m cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk= +cloud.google.com/go/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= @@ -96,35 +97,30 @@ github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9mo github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v66.0.0+incompatible h1:bmmC38SlE8/E81nNADlgmVGurPWMHDX2YNXVQMrBpEE= github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.20.0/go.mod h1:ZPW/Z0kLCTdDZaDbYTetxc9Cxl/2lNqxYHYNOF2bti0= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.0/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0 h1:zBJcBJwte0x6PcPK7XaWDMvK2o2ZM2f1sMaqNNavQ5g= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.0/go.mod h1:TmXReXZ9yPp5D5TBRMTAtyz+UyOl15Py4hL5E5p6igQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.1/go.mod h1:+nVKciyKD2J9TyVcEQ82Bo9b+3F92PiQfHrIE/zqLqM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.2 h1:mM/yraAumqMMIYev6zX0oxHqX6hreUs5wXf76W47r38= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.2/go.mod h1:+nVKciyKD2J9TyVcEQ82Bo9b+3F92PiQfHrIE/zqLqM= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.1/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.9.1 h1:sLZ/Y+P/5RRtsXWylBjB5lkgixYfm0MQPiwrSX//JSo= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.9.1/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.3.0 h1:FVbZiAs9cncAB9eIUwDrfBA2PfJIMeTcdMxy6W2nRMo= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.3.0/go.mod h1:Klp8aJcaCELXQHa/Cg0rFFIFlE0EjOUAzt9x1cB00TY= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.5.0 h1:8OgHKRX8uTyIiEV3I9wIoOkXX/OMeFOGguN8wyqjCZM= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.5.0/go.mod h1:uQSVRwN3dRA6hguqKpgzwonvQtpxaWo7/t5cbz3iHbE= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.2.1 h1:lirjIOHv5RrmDbZXw9lUz/fY68uU05qR4uIef58WMvQ= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.2.1/go.mod h1:j1J9XXIo/eXD7YSrr73sYZTEY/AQ0+/Q6Aa96z1e2j8= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v0.2.1 h1:H+YaV8IY4sVFxrkSmyvfvXZv+wxUq/qTQOa9TkqUqPE= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v0.2.1/go.mod h1:IwvRqY+EcaQzfAGUdIZpzWELUdsZzuItWRP6cNTzgr0= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v0.5.0 h1:kqRtiAe9aH0WzzQm3Mq7N6mzcdZHGJZrdteepKT7ymU= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v0.5.0/go.mod h1:isx+19QmRnAX0Ls0Adm/8SL3b8bIaZiSPbhpoyZX5Mw= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v0.3.1 h1:CyGPbnjITjA63agVN1nNznge7Tip0g7OiAvFPiT0btU= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v0.3.1/go.mod h1:FfdF+9+Gnv8lCHCuS38lg8+9aiiy92NzDVc/t5FzpIQ= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v0.3.1 h1:EXTDtCSTfPauGawsG+Ae/W46B1PkrgzuKNrcFqy4ljM= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v0.3.1/go.mod h1:PoA99xQAlN13MyUjzgIPWMZEr0etHpYSuT25LmhR3zQ= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0 h1:Px2UA+2RvSSvv+RvJNuUB6n7rs5Wsel4dXLe90Um2n4= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 h1:tz19qLF65vuu2ibfTqGVJxG/zZAI27NEIIbvAOQwYbw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 h1:jp0dGvZ7ZK0mgqnTSClMxa5xuRL7NZgHameVYF6BurY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.6.0 h1:3Onh5qkCDHpIJplrRI/DbbzWPnFKHRjQV4idRwLrghQ= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.6.0/go.mod h1:y8KaF8j2nkUhLFJPccRG+vCxSKF22wZEit6pMINlvEo= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.8.0 h1:A6Kf8v5DPFR+V7/qQOefHEU8W71OBVJvXu7UO0EHJkA= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.8.0/go.mod h1:u5EGU7cPuj/T2qhJWXDbWgv0dy3ORAEaAzR1zP6p4X8= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.5.0 h1:9cn6ICCGiWFNA/slKnrkf+ENyvaCRKHtuoGtnLIAgao= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.5.0/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v1.0.0 h1:BpGGvzarSyE7kQF1x1hptUcGmNzZEE3yYI+uqBSNRxk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights v1.0.0/go.mod h1:1ijUM40peD7YK5MFEJja2wjjp4eimFNWv0NXoY3nsZM= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v1.0.0 h1:/Di3vB4sNeQ+7A8efjUVENvyB945Wruvstucqp7ZArg= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 v2.0.0 h1:xxe4naFUPYEW1W6C8yWrfFNmyZLnEbO+CsbsSF83wDo= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 v2.0.0/go.mod h1:aLFjumYDvv63tH1qnqkcmdjdZ6Sn+/viPv7H3jft0oY= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.0.0 h1:lMW1lD/17LUA5z1XTURo7LcVG2ICBPlyMHjIUrcFZNQ= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.0.0 h1:nBy98uKOIfun5z6wx6jwWLrULcM0+cjBalBFZlEZ7CA= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.0.0/go.mod h1:243D9iHbcQXoFUtgHJwL7gl2zx1aDuDMjvBZVGr2uW0= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 h1:ECsQtyERDVz3NP3kvDOTLvbQhqWp/x9EsGKtb4ogUr8= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 h1:QSdcrd/UFJv6Bp/CfoVf2SrENpFn9P6Yh8yb+xNhYMM= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1/go.mod h1:eZ4g6GUvXiGulfIbbhh1Xr4XwUYaYaWMqzGD/284wCA= github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= @@ -152,8 +148,8 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 h1:WVsrXCnHlDDX8ls+tootqRE87/hL9S/g4ewig9RsD/c= -github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= +github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 h1:BWe8a+f/t+7KY7zH2mqygeUD0t8hNFXe08p1Pb3/jKE= +github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo= @@ -348,9 +344,7 @@ github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8 github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= github.com/docker/docker v20.10.16+incompatible h1:2Db6ZR/+FUR3hqPMwnogOPHFn405crbpxvWzKovETOQ= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= @@ -425,6 +419,9 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= @@ -753,8 +750,9 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= +github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= +github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -774,8 +772,9 @@ github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= @@ -798,7 +797,6 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -964,8 +962,8 @@ github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= -github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= @@ -998,8 +996,8 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.4 h1:wZRexSlwd7ZXfKINDLsO4r7WBt3gTKONc6K/VesHvHM= -github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.7.5 h1:s5PTfem8p8EbKQOctVV53k6jCJt3UX4IEJzwh+C324Q= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/talos-systems/talos/pkg/machinery v1.0.4 h1:zUZgIRSxAXOI6LygMDUqgS0rtFTf4DpDCL35UpW/6s4= @@ -1083,8 +1081,9 @@ go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9 go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/propagators v0.19.0 h1:HrixVNZYFjUl/Db+Tr3DhqzLsVW9GeVf/Gye+C5dNUY= -go.opentelemetry.io/otel v0.20.0 h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel v1.3.0 h1:APxLf0eiBwLl+SOXiJJCVYzA1OOJNyAoV8C5RNRyy7Y= +go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= @@ -1093,6 +1092,7 @@ go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/otel/trace v1.3.0 h1:doy8Hzb1RJ+I3yFhtDmwNc7tIyw1tNMOIsyPzp1NOGY= +go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1135,7 +1135,6 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= @@ -1143,8 +1142,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd h1:XcWmESyNjXJMLahc3mqVQJcgSTDxFxhETVlfk9uGc38= -golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88 h1:Tgea0cVUD0ivh5ADBX4WwuI12DUd2to3nCYe2eayMIw= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1227,7 +1226,6 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -1241,9 +1239,6 @@ golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5o golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1251,8 +1246,8 @@ golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 h1:Yqz/iviulwKwAREEeUd3nbBFn0XuyJqkoft2IlrvOhc= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1277,8 +1272,9 @@ golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb h1:8tDJ3aechhddbdPAxpycgXHJRMLpk/Ab+aa4OgdN5/g= golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 h1:+jnHzr9VPj32ykQVai5DNahi9+NSp7yYuCsl5eAQtL0= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1385,7 +1381,6 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1394,12 +1389,13 @@ golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c h1:aFV+BgZ4svzjfabn8ERpuB4JI4N6/rdy1iusx77G3oU= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810 h1:rHZQSjJdAI4Xf5Qzeh2bBc5YJIkPFVM6oDtMFYmgws0= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1504,6 +1500,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -1552,8 +1549,8 @@ google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69 google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0 h1:8rJoHuRxx+vCmZtAO/3k1dRLvYNVyTJtZ5oaFZvhgvc= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.86.0 h1:ZAnyOHQFIuWso1BodVfSaRyffD74T9ERGFa3k1fNk/U= +google.golang.org/api v0.86.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1660,8 +1657,8 @@ google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad h1:kqrS+lhvaMHCxul6sKQvKJ8nAAhlVItmZV822hYFH/U= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f h1:hJ/Y5SqPXbarffmAsApliUlcvMU+wScNGfyop4bZm8o= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= @@ -1703,6 +1700,8 @@ google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ5 google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= diff --git a/internal/cloud/cloudtypes/firewall.go b/internal/cloud/cloudtypes/firewall.go index 3d563d64e..29c126a53 100644 --- a/internal/cloud/cloudtypes/firewall.go +++ b/internal/cloud/cloudtypes/firewall.go @@ -3,6 +3,7 @@ package cloudtypes import ( "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types" "github.com/edgelesssys/constellation/internal/config" @@ -67,8 +68,8 @@ func (f Firewall) Azure() ([]*armnetwork.SecurityRule, error) { SourcePortRange: proto.String("*"), DestinationAddressPrefix: proto.String(rule.IPRange), DestinationPortRange: proto.String(dstPortRange), - Access: armnetwork.SecurityRuleAccessAllow.ToPtr(), - Direction: armnetwork.SecurityRuleDirectionInbound.ToPtr(), + Access: to.Ptr(armnetwork.SecurityRuleAccessAllow), + Direction: to.Ptr(armnetwork.SecurityRuleDirectionInbound), // Each security role needs a unique priority Priority: proto.Int32(int32(100 * (i + 1))), }, diff --git a/internal/cloud/cloudtypes/firewall_test.go b/internal/cloud/cloudtypes/firewall_test.go index 591cc5715..e164e239d 100644 --- a/internal/cloud/cloudtypes/firewall_test.go +++ b/internal/cloud/cloudtypes/firewall_test.go @@ -4,6 +4,7 @@ import ( "strconv" "testing" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork" ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types" "github.com/stretchr/testify/assert" @@ -93,13 +94,13 @@ func TestFirewallAzure(t *testing.T) { Name: proto.String("perm1"), Properties: &armnetwork.SecurityRulePropertiesFormat{ Description: proto.String("perm1 description"), - Protocol: armnetwork.SecurityRuleProtocolTCP.ToPtr(), + Protocol: to.Ptr(armnetwork.SecurityRuleProtocolTCP), SourceAddressPrefix: proto.String("192.0.2.0/24"), SourcePortRange: proto.String("*"), DestinationAddressPrefix: proto.String("192.0.2.0/24"), DestinationPortRange: proto.String("22"), - Access: armnetwork.SecurityRuleAccessAllow.ToPtr(), - Direction: armnetwork.SecurityRuleDirectionInbound.ToPtr(), + Access: to.Ptr(armnetwork.SecurityRuleAccessAllow), + Direction: to.Ptr(armnetwork.SecurityRuleDirectionInbound), Priority: proto.Int32(100), }, }, @@ -107,13 +108,13 @@ func TestFirewallAzure(t *testing.T) { Name: proto.String("perm2"), Properties: &armnetwork.SecurityRulePropertiesFormat{ Description: proto.String("perm2 description"), - Protocol: armnetwork.SecurityRuleProtocolUDP.ToPtr(), + Protocol: to.Ptr(armnetwork.SecurityRuleProtocolUDP), SourceAddressPrefix: proto.String("192.0.2.0/24"), SourcePortRange: proto.String("*"), DestinationAddressPrefix: proto.String("192.0.2.0/24"), DestinationPortRange: proto.String("4433"), - Access: armnetwork.SecurityRuleAccessAllow.ToPtr(), - Direction: armnetwork.SecurityRuleDirectionInbound.ToPtr(), + Access: to.Ptr(armnetwork.SecurityRuleAccessAllow), + Direction: to.Ptr(armnetwork.SecurityRuleDirectionInbound), Priority: proto.Int32(200), }, }, @@ -121,13 +122,13 @@ func TestFirewallAzure(t *testing.T) { Name: proto.String("perm3"), Properties: &armnetwork.SecurityRulePropertiesFormat{ Description: proto.String("perm3 description"), - Protocol: armnetwork.SecurityRuleProtocolTCP.ToPtr(), + Protocol: to.Ptr(armnetwork.SecurityRuleProtocolTCP), SourceAddressPrefix: proto.String("192.0.2.0/24"), SourcePortRange: proto.String("*"), DestinationAddressPrefix: proto.String("192.0.2.0/24"), DestinationPortRange: proto.String("4433"), - Access: armnetwork.SecurityRuleAccessAllow.ToPtr(), - Direction: armnetwork.SecurityRuleDirectionInbound.ToPtr(), + Access: to.Ptr(armnetwork.SecurityRuleAccessAllow), + Direction: to.Ptr(armnetwork.SecurityRuleDirectionInbound), Priority: proto.Int32(300), }, }, diff --git a/kms/internal/storage/azurestorage.go b/kms/internal/storage/azurestorage.go index 14690fe0d..efc23f098 100644 --- a/kms/internal/storage/azurestorage.go +++ b/kms/internal/storage/azurestorage.go @@ -13,20 +13,20 @@ import ( ) type azureContainerAPI interface { - Create(ctx context.Context, options *azblob.CreateContainerOptions) (azblob.ContainerCreateResponse, error) - NewBlockBlobClient(blobName string) azureBlobAPI + Create(ctx context.Context, options *azblob.ContainerCreateOptions) (azblob.ContainerCreateResponse, error) + NewBlockBlobClient(blobName string) (azureBlobAPI, error) } type azureBlobAPI interface { - DownloadBlobToWriterAt(ctx context.Context, offset int64, count int64, writer io.WriterAt, o azblob.HighLevelDownloadFromBlobOptions) error - Upload(ctx context.Context, body io.ReadSeekCloser, options *azblob.UploadBlockBlobOptions) (azblob.BlockBlobUploadResponse, error) + DownloadToWriterAt(ctx context.Context, offset int64, count int64, writer io.WriterAt, options azblob.DownloadOptions) error + Upload(ctx context.Context, body io.ReadSeekCloser, options *azblob.BlockBlobUploadOptions) (azblob.BlockBlobUploadResponse, error) } type wrappedAzureClient struct { azblob.ContainerClient } -func (c wrappedAzureClient) NewBlockBlobClient(blobName string) azureBlobAPI { +func (c wrappedAzureClient) NewBlockBlobClient(blobName string) (azureBlobAPI, error) { return c.ContainerClient.NewBlockBlobClient(blobName) } @@ -40,7 +40,7 @@ type AzureStorage struct { // AzureOpts are additional options to be used when interacting with the Azure API. type AzureOpts struct { - upload *azblob.UploadBlockBlobOptions + upload *azblob.BlockBlobUploadOptions service *azblob.ClientOptions } @@ -79,14 +79,14 @@ func (s *AzureStorage) Get(ctx context.Context, keyID string) ([]byte, error) { // the Azure SDK requires an io.WriterAt, the AWS SDK provides a utility function to create one from a byte slice keyBuffer := manager.NewWriteAtBuffer([]byte{}) - opts := azblob.HighLevelDownloadFromBlobOptions{ + opts := azblob.DownloadOptions{ RetryReaderOptionsPerBlock: azblob.RetryReaderOptions{ MaxRetryRequests: 5, TreatEarlyCloseAsError: true, }, } - if err := client.DownloadBlobToWriterAt(ctx, 0, 0, keyBuffer, opts); err != nil { + if err := client.DownloadToWriterAt(ctx, 0, 0, keyBuffer, opts); err != nil { var storeErr *azblob.StorageError if errors.As(err, &storeErr) && (storeErr.ErrorCode == azblob.StorageErrorCodeBlobNotFound) { return nil, ErrDEKUnset @@ -118,7 +118,7 @@ func (s *AzureStorage) createContainerOrContinue(ctx context.Context) error { } var storeErr *azblob.StorageError - _, err = client.Create(ctx, &azblob.CreateContainerOptions{ + _, err = client.Create(ctx, &azblob.ContainerCreateOptions{ Metadata: config.StorageTags, }) if (err == nil) || (errors.As(err, &storeErr) && (storeErr.ErrorCode == azblob.StorageErrorCodeContainerAlreadyExists)) { @@ -134,7 +134,7 @@ func (s *AzureStorage) newBlobClient(ctx context.Context, blobName string) (azur if err != nil { return nil, err } - return c.NewBlockBlobClient(blobName), nil + return c.NewBlockBlobClient(blobName) } func azureContainerClientFactory(ctx context.Context, connectionString, containerName string, opts *azblob.ClientOptions) (azureContainerAPI, error) { @@ -143,7 +143,11 @@ func azureContainerClientFactory(ctx context.Context, connectionString, containe return nil, fmt.Errorf("creating storage client from connection string: %w", err) } - return wrappedAzureClient{service.NewContainerClient(containerName)}, nil + containerClient, err := service.NewContainerClient(containerName) + if err != nil { + return nil, fmt.Errorf("creating storage container client: %w", err) + } + return &wrappedAzureClient{*containerClient}, err } // readSeekNopCloser is a wrapper for io.ReadSeeker implementing the Close method. This is required by the Azure SDK. diff --git a/kms/internal/storage/azurestorage_test.go b/kms/internal/storage/azurestorage_test.go index 807669d5e..9fcce05af 100644 --- a/kms/internal/storage/azurestorage_test.go +++ b/kms/internal/storage/azurestorage_test.go @@ -23,13 +23,13 @@ func newStubClientFactory(stub stubAzureContainerAPI) func(ctx context.Context, } } -func (s stubAzureContainerAPI) Create(ctx context.Context, options *azblob.CreateContainerOptions) (azblob.ContainerCreateResponse, error) { +func (s stubAzureContainerAPI) Create(ctx context.Context, options *azblob.ContainerCreateOptions) (azblob.ContainerCreateResponse, error) { *s.createCalled = true return azblob.ContainerCreateResponse{}, s.createErr } -func (s stubAzureContainerAPI) NewBlockBlobClient(blobName string) azureBlobAPI { - return s.blockBlobAPI +func (s stubAzureContainerAPI) NewBlockBlobClient(blobName string) (azureBlobAPI, error) { + return s.blockBlobAPI, nil } type stubAzureBlockBlobAPI struct { @@ -39,14 +39,14 @@ type stubAzureBlockBlobAPI struct { uploadData chan []byte } -func (s stubAzureBlockBlobAPI) DownloadBlobToWriterAt(ctx context.Context, offset int64, count int64, writer io.WriterAt, o azblob.HighLevelDownloadFromBlobOptions) error { +func (s stubAzureBlockBlobAPI) DownloadToWriterAt(ctx context.Context, offset int64, count int64, writer io.WriterAt, o azblob.DownloadOptions) error { if _, err := writer.WriteAt(s.downloadBlobToWriterOutput, 0); err != nil { panic(err) } return s.downloadBlobToWriterAtErr } -func (s stubAzureBlockBlobAPI) Upload(ctx context.Context, body io.ReadSeekCloser, options *azblob.UploadBlockBlobOptions) (azblob.BlockBlobUploadResponse, error) { +func (s stubAzureBlockBlobAPI) Upload(ctx context.Context, body io.ReadSeekCloser, options *azblob.BlockBlobUploadOptions) (azblob.BlockBlobUploadResponse, error) { res, err := io.ReadAll(body) if err != nil { panic(err) diff --git a/kms/kms/azure/azure.go b/kms/kms/azure/azure.go index 215c0961b..f9decd771 100644 --- a/kms/kms/azure/azure.go +++ b/kms/kms/azure/azure.go @@ -7,6 +7,7 @@ import ( "fmt" "strings" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets" @@ -32,8 +33,8 @@ const ( type VaultSuffix string type kmsClientAPI interface { - SetSecret(ctx context.Context, secretName string, value string, options *azsecrets.SetSecretOptions) (azsecrets.SetSecretResponse, error) - GetSecret(ctx context.Context, secretName string, options *azsecrets.GetSecretOptions) (azsecrets.GetSecretResponse, error) + SetSecret(ctx context.Context, secretName string, parameters azsecrets.SetSecretParameters, options *azsecrets.SetSecretOptions) (azsecrets.SetSecretResponse, error) + GetSecret(ctx context.Context, secretName string, version string, options *azsecrets.GetSecretOptions) (azsecrets.GetSecretResponse, error) } // KMSClient implements the CloudKMS interface for Azure Key Vault. @@ -46,7 +47,7 @@ type KMSClient struct { // Opts are optional settings for AKV clients. type Opts struct { credentials *azidentity.DefaultAzureCredentialOptions - client *azsecrets.ClientOptions + client *azcore.ClientOptions } // New initializes a KMS client for Azure Key Vault. @@ -58,17 +59,13 @@ func New(ctx context.Context, vaultName string, vaultType VaultSuffix, store kms if err != nil { return nil, fmt.Errorf("loading credentials: %w", err) } - client, err := azsecrets.NewClient(vaultPrefix+vaultName+string(vaultType), cred, opts.client) - if err != nil { - return nil, fmt.Errorf("creating vault client: %w", err) - } + client := azsecrets.NewClient(vaultPrefix+vaultName+string(vaultType), cred, opts.client) // `azsecrets.NewClient()` does not error if the vault is non existent // Test here if we can reach the vault, and error otherwise - pager := client.ListSecrets(nil) - pager.NextPage(ctx) - if pager.Err() != nil { - return nil, fmt.Errorf("AKV not reachable: %w", pager.Err()) + pager := client.NewListSecretsPager(nil) + if _, err := pager.NextPage(ctx); err != nil { + return nil, fmt.Errorf("AKV not reachable: %w", err) } if store == nil { @@ -91,10 +88,12 @@ func (c *KMSClient) CreateKEK(ctx context.Context, keyID string, key []byte) err } // Saving symmetric keys in Azure Key Vault requires encoding them to base64 - _, err := c.client.SetSecret(ctx, keyID, base64.StdEncoding.EncodeToString(key), &azsecrets.SetSecretOptions{ - ContentType: to.StringPtr("KeyEncryptionKey"), - Tags: config.KmsTags, - }) + secretValue := azsecrets.SetSecretParameters{ + Value: to.Ptr(base64.StdEncoding.EncodeToString(key)), + ContentType: to.Ptr("KeyEncryptionKey"), + Tags: toAzureTags(config.KmsTags), + } + _, err := c.client.SetSecret(ctx, keyID, secretValue, &azsecrets.SetSecretOptions{}) if err != nil { return fmt.Errorf("importing KEK to Azure Key Vault: %w", err) } @@ -139,7 +138,7 @@ func (c *KMSClient) putDEK(ctx context.Context, keyID string, kek, plainDEK []by // getKEK loads a Key Encryption Key from Azure Key Vault. func (c *KMSClient) getKEK(ctx context.Context, kekID string) ([]byte, error) { - res, err := c.client.GetSecret(ctx, kekID, nil) + res, err := c.client.GetSecret(ctx, kekID, "", nil) if err != nil { if strings.Contains(err.Error(), "SecretNotFound") { return nil, kms.ErrKEKUnknown diff --git a/kms/kms/azure/azure_test.go b/kms/kms/azure/azure_test.go index 48e394b9e..7c3afff9e 100644 --- a/kms/kms/azure/azure_test.go +++ b/kms/kms/azure/azure_test.go @@ -28,14 +28,16 @@ type stubAzureClient struct { secret []byte } -func (s *stubAzureClient) SetSecret(ctx context.Context, secretName string, value string, options *azsecrets.SetSecretOptions) (azsecrets.SetSecretResponse, error) { +func (s *stubAzureClient) SetSecret(ctx context.Context, secretName string, parameters azsecrets.SetSecretParameters, options *azsecrets.SetSecretOptions) (azsecrets.SetSecretResponse, error) { s.setSecretCalled = true return azsecrets.SetSecretResponse{}, s.setSecretErr } -func (s *stubAzureClient) GetSecret(ctx context.Context, secretName string, options *azsecrets.GetSecretOptions) (azsecrets.GetSecretResponse, error) { +func (s *stubAzureClient) GetSecret(ctx context.Context, secretName string, version string, options *azsecrets.GetSecretOptions) (azsecrets.GetSecretResponse, error) { return azsecrets.GetSecretResponse{ - Secret: azsecrets.Secret{Value: to.StringPtr(base64.StdEncoding.EncodeToString(s.secret))}, + SecretBundle: azsecrets.SecretBundle{ + Value: to.Ptr(base64.StdEncoding.EncodeToString(s.secret)), + }, }, s.getSecretErr } diff --git a/kms/kms/azure/hsm.go b/kms/kms/azure/hsm.go index 9e540c7e9..f22103341 100644 --- a/kms/kms/azure/hsm.go +++ b/kms/kms/azure/hsm.go @@ -4,14 +4,11 @@ import ( "context" "errors" "fmt" - "net/url" - "strings" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/crypto" "github.com/edgelesssys/constellation/kms/internal/config" "github.com/edgelesssys/constellation/kms/internal/storage" "github.com/edgelesssys/constellation/kms/kms" @@ -19,14 +16,11 @@ import ( ) type hsmClientAPI interface { - CreateOCTKey(ctx context.Context, name string, options *azkeys.CreateOCTKeyOptions) (azkeys.CreateOCTKeyResponse, error) - ImportKey(ctx context.Context, keyName string, key azkeys.JSONWebKey, options *azkeys.ImportKeyOptions) (azkeys.ImportKeyResponse, error) - GetKey(ctx context.Context, keyName string, options *azkeys.GetKeyOptions) (azkeys.GetKeyResponse, error) -} - -type cryptoClientAPI interface { - UnwrapKey(ctx context.Context, alg crypto.KeyWrapAlgorithm, encryptedKey []byte, options *crypto.UnwrapKeyOptions) (crypto.UnwrapKeyResponse, error) - WrapKey(ctx context.Context, alg crypto.KeyWrapAlgorithm, key []byte, options *crypto.WrapKeyOptions) (crypto.WrapKeyResponse, error) + CreateKey(ctx context.Context, name string, parameters azkeys.CreateKeyParameters, options *azkeys.CreateKeyOptions) (azkeys.CreateKeyResponse, error) + ImportKey(ctx context.Context, name string, parameters azkeys.ImportKeyParameters, options *azkeys.ImportKeyOptions) (azkeys.ImportKeyResponse, error) + GetKey(ctx context.Context, name string, version string, options *azkeys.GetKeyOptions) (azkeys.GetKeyResponse, error) + UnwrapKey(ctx context.Context, name string, version string, parameters azkeys.KeyOperationsParameters, options *azkeys.UnwrapKeyOptions) (azkeys.UnwrapKeyResponse, error) + WrapKey(ctx context.Context, name string, version string, parameters azkeys.KeyOperationsParameters, options *azkeys.WrapKeyOptions) (azkeys.WrapKeyResponse, error) } // HSMDefaultCloud is the suffix for HSM Vaults. @@ -34,12 +28,11 @@ const HSMDefaultCloud VaultSuffix = ".managedhsm.azure.net/" // HSMClient implements the CloudKMS interface for Azure managed HSM. type HSMClient struct { - credentials azcore.TokenCredential - client hsmClientAPI - storage kms.Storage - vaultURL string - newCryptoClient func(keyURL string, credential azcore.TokenCredential, options *crypto.ClientOptions) (cryptoClientAPI, error) - opts *crypto.ClientOptions + credentials azcore.TokenCredential + client hsmClientAPI + storage kms.Storage + vaultURL string + opts *azcore.ClientOptions } // NewHSM initializes a KMS client for Azure manged HSM Key Vault. @@ -53,16 +46,12 @@ func NewHSM(ctx context.Context, vaultName string, store kms.Storage, opts *Opts } vaultURL := vaultPrefix + vaultName + string(HSMDefaultCloud) - client, err := azkeys.NewClient(vaultURL, cred, (*azkeys.ClientOptions)(opts.client)) - if err != nil { - return nil, fmt.Errorf("creating HSM client: %w", err) - } + client := azkeys.NewClient(vaultURL, cred, opts.client) // `azkeys.NewClient()` does not error if the vault is non existent // Test here if we can reach the vault, and error otherwise - pager := client.ListKeys(&azkeys.ListKeysOptions{MaxResults: to.Int32Ptr(2)}) - pager.NextPage(ctx) - if pager.Err() != nil { + pager := client.NewListKeysPager(&azkeys.ListKeysOptions{MaxResults: to.Ptr[int32](2)}) + if _, err := pager.NextPage(ctx); err != nil { return nil, fmt.Errorf("HSM not reachable: %w", err) } @@ -71,12 +60,11 @@ func NewHSM(ctx context.Context, vaultName string, store kms.Storage, opts *Opts } return &HSMClient{ - vaultURL: vaultURL, - client: client, - credentials: cred, - storage: store, - opts: (*crypto.ClientOptions)(opts.client), - newCryptoClient: cryptoClientFactory, + vaultURL: vaultURL, + client: client, + credentials: cred, + storage: store, + opts: opts.client, }, nil } @@ -85,11 +73,11 @@ func NewHSM(ctx context.Context, vaultName string, store kms.Storage, opts *Opts // If no key material is provided, a new key is generated by the HSM, otherwise the key material is used to import the key. func (c *HSMClient) CreateKEK(ctx context.Context, keyID string, key []byte) error { if len(key) == 0 { - if _, err := c.client.CreateOCTKey(ctx, keyID, &azkeys.CreateOCTKeyOptions{ - HardwareProtected: true, - KeySize: to.Int32Ptr(config.SymmetricKeyLength * 8), - Tags: config.KmsTags, - }); err != nil { + if _, err := c.client.CreateKey(ctx, keyID, azkeys.CreateKeyParameters{ + Kty: to.Ptr(azkeys.JSONWebKeyTypeOctHSM), + KeySize: to.Ptr[int32](config.SymmetricKeyLength * 8), + Tags: toAzureTags(config.KmsTags), + }, &azkeys.CreateKeyOptions{}); err != nil { return fmt.Errorf("creating new KEK: %w", err) } return nil @@ -98,22 +86,21 @@ func (c *HSMClient) CreateKEK(ctx context.Context, keyID string, key []byte) err jwk := azkeys.JSONWebKey{ K: key, KeyOps: []*string{ - to.StringPtr("wrapKey"), - to.StringPtr("unwrapKey"), + to.Ptr("wrapKey"), + to.Ptr("unwrapKey"), }, - KeyType: (*azkeys.KeyType)(to.StringPtr(string(azkeys.OctHSM))), + Kty: to.Ptr(azkeys.JSONWebKeyTypeOctHSM), } - importOpts := &azkeys.ImportKeyOptions{ - Hsm: to.BoolPtr(true), + importParams := azkeys.ImportKeyParameters{ + HSM: to.Ptr(true), KeyAttributes: &azkeys.KeyAttributes{ - Attributes: azkeys.Attributes{ - Enabled: to.BoolPtr(true), - }, + Enabled: to.Ptr(true), }, - Tags: config.KmsTags, + Tags: toAzureTags(config.KmsTags), + Key: &jwk, } - if _, err := c.client.ImportKey(ctx, keyID, jwk, importOpts); err != nil { + if _, err := c.client.ImportKey(ctx, keyID, importParams, &azkeys.ImportKeyOptions{}); err != nil { return fmt.Errorf("importing KEK to Azure HSM: %w", err) } return nil @@ -139,17 +126,11 @@ func (c *HSMClient) GetDEK(ctx context.Context, kekID string, keyID string, dekS return newDEK, nil } - version, err := c.getKeyVersion(ctx, kekID) - if err != nil { - return nil, fmt.Errorf("unable to detect key version: %w", err) + params := azkeys.KeyOperationsParameters{ + Algorithm: to.Ptr(azkeys.JSONWebKeyEncryptionAlgorithmA256KW), + Value: encryptedDEK, } - - cryptoClient, err := c.newCryptoClient(fmt.Sprintf("%skeys/%s/%s", c.vaultURL, kekID, version), c.credentials, c.opts) - if err != nil { - return nil, fmt.Errorf("creating crypto client for KEK: %s: %w", kekID, err) - } - - res, err := cryptoClient.UnwrapKey(ctx, crypto.AES256, encryptedDEK, nil) + res, err := c.client.UnwrapKey(ctx, kekID, "", params, &azkeys.UnwrapKeyOptions{}) if err != nil { return nil, fmt.Errorf("unwrapping key: %w", err) } @@ -159,16 +140,11 @@ func (c *HSMClient) GetDEK(ctx context.Context, kekID string, keyID string, dekS // putDEK wraps a key using an HSM-backed key and saves it to storage. func (c *HSMClient) putDEK(ctx context.Context, kekID, keyID string, plainDEK []byte) error { - version, err := c.getKeyVersion(ctx, kekID) - if err != nil { - return fmt.Errorf("unable to detect key version: %w", err) + params := azkeys.KeyOperationsParameters{ + Algorithm: to.Ptr(azkeys.JSONWebKeyEncryptionAlgorithmA256KW), + Value: plainDEK, } - cryptoClient, err := c.newCryptoClient(fmt.Sprintf("%skeys/%s/%s", c.vaultURL, kekID, version), c.credentials, c.opts) - if err != nil { - return fmt.Errorf("creating crypto client for KEK: %s: %w", kekID, err) - } - - res, err := cryptoClient.WrapKey(ctx, crypto.AES256, plainDEK, &crypto.WrapKeyOptions{}) + res, err := c.client.WrapKey(ctx, kekID, "", params, &azkeys.WrapKeyOptions{}) if err != nil { return fmt.Errorf("wrapping key: %w", err) } @@ -176,26 +152,11 @@ func (c *HSMClient) putDEK(ctx context.Context, kekID, keyID string, plainDEK [] return c.storage.Put(ctx, keyID, res.Result) } -// getKeyVersion detects the latests version number of a given key. -func (c *HSMClient) getKeyVersion(ctx context.Context, kekID string) (string, error) { - kek, err := c.client.GetKey(ctx, kekID, &azkeys.GetKeyOptions{}) - if err != nil { - return "", err +// toAzureTags converts a map of tags to map of tag pointers. +func toAzureTags(tags map[string]string) map[string]*string { + tagsOut := make(map[string]*string) + for k, v := range tags { + tagsOut[k] = to.Ptr(v) } - - parsed, err := url.Parse(*kek.Key.ID) - if err != nil { - return "", err - } - - path := strings.Split(strings.TrimPrefix(parsed.Path, "/keys/"), "/") - if len(path) != 2 { - return "", fmt.Errorf("invalid key ID URL: %s", *kek.Key.ID) - } - - return path[1], nil -} - -func cryptoClientFactory(keyURL string, credential azcore.TokenCredential, options *crypto.ClientOptions) (cryptoClientAPI, error) { - return crypto.NewClient(keyURL, credential, options) + return tagsOut } diff --git a/kms/kms/azure/hsm_test.go b/kms/kms/azure/hsm_test.go index 5bf574e27..ef155faf0 100644 --- a/kms/kms/azure/hsm_test.go +++ b/kms/kms/azure/hsm_test.go @@ -3,13 +3,11 @@ package azure import ( "context" "errors" - "fmt" "testing" "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys" - "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys/crypto" - "github.com/Azure/go-autorest/autorest/to" "github.com/edgelesssys/constellation/kms/internal/storage" "github.com/edgelesssys/constellation/kms/kms" "github.com/stretchr/testify/assert" @@ -21,52 +19,42 @@ type stubHSMClient struct { createOCTKeyErr error importKeyErr error getKeyErr error - keyVersion string -} - -func (s *stubHSMClient) CreateOCTKey(ctx context.Context, name string, options *azkeys.CreateOCTKeyOptions) (azkeys.CreateOCTKeyResponse, error) { - s.keyCreated = true - return azkeys.CreateOCTKeyResponse{}, s.createOCTKeyErr -} - -func (s *stubHSMClient) ImportKey(ctx context.Context, keyName string, key azkeys.JSONWebKey, options *azkeys.ImportKeyOptions) (azkeys.ImportKeyResponse, error) { - s.keyCreated = true - return azkeys.ImportKeyResponse{}, s.importKeyErr -} - -func (s *stubHSMClient) GetKey(ctx context.Context, keyName string, options *azkeys.GetKeyOptions) (azkeys.GetKeyResponse, error) { - return azkeys.GetKeyResponse{ - KeyBundle: azkeys.KeyBundle{ - Key: &azkeys.JSONWebKey{ - ID: to.StringPtr(s.keyVersion), - }, - }, - }, s.getKeyErr -} - -type stubCryptoClient struct { - createErr error + keyID string unwrapKeyErr error unwrapKeyResult []byte wrapKeyErr error } -func newStubCryptoClientFactory(stub *stubCryptoClient) func(keyURL string, credential azcore.TokenCredential, options *crypto.ClientOptions) (cryptoClientAPI, error) { - return func(keyURL string, credential azcore.TokenCredential, options *crypto.ClientOptions) (cryptoClientAPI, error) { - return stub, stub.createErr - } +func (s *stubHSMClient) CreateKey(ctx context.Context, name string, parameters azkeys.CreateKeyParameters, options *azkeys.CreateKeyOptions) (azkeys.CreateKeyResponse, error) { + s.keyCreated = true + return azkeys.CreateKeyResponse{}, s.createOCTKeyErr } -func (s *stubCryptoClient) UnwrapKey(ctx context.Context, alg crypto.KeyWrapAlgorithm, encryptedKey []byte, options *crypto.UnwrapKeyOptions) (crypto.UnwrapKeyResponse, error) { - return crypto.UnwrapKeyResponse{ - KeyOperationResult: crypto.KeyOperationResult{ +func (s *stubHSMClient) ImportKey(ctx context.Context, name string, parameters azkeys.ImportKeyParameters, options *azkeys.ImportKeyOptions) (azkeys.ImportKeyResponse, error) { + s.keyCreated = true + return azkeys.ImportKeyResponse{}, s.importKeyErr +} + +func (s *stubHSMClient) GetKey(ctx context.Context, name string, version string, options *azkeys.GetKeyOptions) (azkeys.GetKeyResponse, error) { + return azkeys.GetKeyResponse{ + KeyBundle: azkeys.KeyBundle{ + Key: &azkeys.JSONWebKey{ + KID: to.Ptr(azkeys.ID(s.keyID)), + }, + }, + }, s.getKeyErr +} + +func (s *stubHSMClient) UnwrapKey(ctx context.Context, name string, version string, parameters azkeys.KeyOperationsParameters, options *azkeys.UnwrapKeyOptions) (azkeys.UnwrapKeyResponse, error) { + return azkeys.UnwrapKeyResponse{ + KeyOperationResult: azkeys.KeyOperationResult{ Result: s.unwrapKeyResult, }, }, s.unwrapKeyErr } -func (s *stubCryptoClient) WrapKey(ctx context.Context, alg crypto.KeyWrapAlgorithm, key []byte, options *crypto.WrapKeyOptions) (crypto.WrapKeyResponse, error) { - return crypto.WrapKeyResponse{}, s.wrapKeyErr +func (s *stubHSMClient) WrapKey(ctx context.Context, name string, version string, parameters azkeys.KeyOperationsParameters, options *azkeys.WrapKeyOptions) (azkeys.WrapKeyResponse, error) { + return azkeys.WrapKeyResponse{}, s.wrapKeyErr } type stubStorage struct { @@ -132,51 +120,34 @@ func TestHSMCreateKEK(t *testing.T) { func TestHSMGetNewDEK(t *testing.T) { someErr := errors.New("error") - keyVersion := "https://test.managedhsm.azure.net/keys/test-key/test-key-version" + keyID := "https://test.managedhsm.azure.net/keys/test-key/test-key-version" testCases := map[string]struct { - client hsmClientAPI - storage kms.Storage - cryptoClient *stubCryptoClient - wantErr bool + client hsmClientAPI + storage kms.Storage + wantErr bool }{ "successful": { - client: &stubHSMClient{keyVersion: keyVersion}, - cryptoClient: &stubCryptoClient{}, - storage: storage.NewMemMapStorage(), + client: &stubHSMClient{keyID: keyID}, + storage: storage.NewMemMapStorage(), }, "Get from storage fails": { - client: &stubHSMClient{keyVersion: keyVersion}, - cryptoClient: &stubCryptoClient{}, - storage: &stubStorage{getErr: someErr}, - wantErr: true, + client: &stubHSMClient{keyID: keyID}, + storage: &stubStorage{getErr: someErr}, + wantErr: true, }, "Put to storage fails": { - client: &stubHSMClient{keyVersion: keyVersion}, - cryptoClient: &stubCryptoClient{}, + client: &stubHSMClient{keyID: keyID}, storage: &stubStorage{ getErr: storage.ErrDEKUnset, putErr: someErr, }, wantErr: true, }, - "GetKey fails": { - client: &stubHSMClient{getKeyErr: someErr}, - cryptoClient: &stubCryptoClient{}, - storage: storage.NewMemMapStorage(), - wantErr: true, - }, "WrapKey fails": { - client: &stubHSMClient{keyVersion: keyVersion}, - cryptoClient: &stubCryptoClient{wrapKeyErr: someErr}, - storage: storage.NewMemMapStorage(), - wantErr: true, - }, - "creating crypto client fails": { - client: &stubHSMClient{keyVersion: keyVersion}, - cryptoClient: &stubCryptoClient{createErr: someErr}, - storage: storage.NewMemMapStorage(), - wantErr: true, + client: &stubHSMClient{keyID: keyID, wrapKeyErr: someErr}, + storage: storage.NewMemMapStorage(), + wantErr: true, }, } @@ -185,10 +156,9 @@ func TestHSMGetNewDEK(t *testing.T) { assert := assert.New(t) client := HSMClient{ - client: tc.client, - newCryptoClient: newStubCryptoClientFactory(tc.cryptoClient), - storage: tc.storage, - opts: &crypto.ClientOptions{}, + client: tc.client, + storage: tc.storage, + opts: &azcore.ClientOptions{}, } dek, err := client.GetDEK(context.Background(), "test-key", "volume-01", 32) @@ -208,31 +178,15 @@ func TestHSMGetExistingDEK(t *testing.T) { testKey := []byte("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") testCases := map[string]struct { - client hsmClientAPI - cryptoClient *stubCryptoClient - wantErr bool + client hsmClientAPI + wantErr bool }{ "successful": { - client: &stubHSMClient{keyVersion: keyVersion}, - cryptoClient: &stubCryptoClient{unwrapKeyResult: testKey}, - }, - "GetKey fails": { - client: &stubHSMClient{ - keyVersion: keyVersion, - getKeyErr: someErr, - }, - cryptoClient: &stubCryptoClient{}, - wantErr: true, + client: &stubHSMClient{keyID: keyVersion, unwrapKeyResult: testKey}, }, "UnwrapKey fails": { - client: &stubHSMClient{keyVersion: keyVersion}, - cryptoClient: &stubCryptoClient{unwrapKeyErr: someErr}, - wantErr: true, - }, - "creating crypto client fails": { - client: &stubHSMClient{keyVersion: keyVersion}, - cryptoClient: &stubCryptoClient{createErr: someErr}, - wantErr: true, + client: &stubHSMClient{keyID: keyVersion, unwrapKeyErr: someErr}, + wantErr: true, }, } @@ -246,10 +200,9 @@ func TestHSMGetExistingDEK(t *testing.T) { require.NoError(storage.Put(context.Background(), keyID, testKey)) client := HSMClient{ - client: tc.client, - newCryptoClient: newStubCryptoClientFactory(tc.cryptoClient), - storage: storage, - opts: &crypto.ClientOptions{}, + client: tc.client, + storage: storage, + opts: &azcore.ClientOptions{}, } dek, err := client.GetDEK(context.Background(), "test-key", keyID, len(testKey)) @@ -262,43 +215,3 @@ func TestHSMGetExistingDEK(t *testing.T) { }) } } - -func TestGetKeyVersion(t *testing.T) { - testVersion := "test-key-version" - testCases := map[string]struct { - client *stubHSMClient - wantErr bool - }{ - "valid key version": { - client: &stubHSMClient{keyVersion: fmt.Sprintf("https://test.managedhsm.azure.net/keys/test-key/%s", testVersion)}, - }, - "GetKey fails": { - client: &stubHSMClient{getKeyErr: errors.New("error")}, - wantErr: true, - }, - "key ID is not an URL": { - client: &stubHSMClient{keyVersion: string([]byte{0x0, 0x1, 0x2})}, - wantErr: true, - }, - "invalid key ID URL": { - client: &stubHSMClient{keyVersion: "https://test.managedhsm.azure.net/keys/test-key/test-key-version/another-version/and-another-one"}, - wantErr: true, - }, - } - - for name, tc := range testCases { - t.Run(name, func(t *testing.T) { - assert := assert.New(t) - - client := HSMClient{client: tc.client} - - keyVersion, err := client.getKeyVersion(context.Background(), "test") - if tc.wantErr { - assert.Error(err) - } else { - assert.NoError(err) - assert.Equal(testVersion, keyVersion) - } - }) - } -}