This repository has been archived by the owner on Aug 16, 2022. It is now read-only.
/
compute.go
54 lines (42 loc) · 1.87 KB
/
compute.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//go:generate mockgen -destination=./mocks/compute.go -package=mocks . DisksClient,VirtualMachinesClient,VirtualMachineExtensionsClient,VirtualMachineScaleSetsClient
package services
import (
"context"
"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2021-03-01/compute"
"github.com/Azure/go-autorest/autorest"
)
type ComputeClient struct {
Disks DisksClient
VirtualMachines VirtualMachinesClient
VirtualMachineExtensions VirtualMachineExtensionsClient
VirtualMachineScaleSets VirtualMachineScaleSetsClient
}
type DisksClient interface {
List(ctx context.Context) (result compute.DiskListPage, err error)
}
type VirtualMachinesClient interface {
ListAll(ctx context.Context, statusOnly string) (result compute.VirtualMachineListResultPage, err error)
InstanceView(ctx context.Context, resourceGroupName string, VMName string) (result compute.VirtualMachineInstanceView, err error)
}
type VirtualMachineExtensionsClient interface {
List(ctx context.Context, resourceGroupName string, VMName string, expand string) (result compute.VirtualMachineExtensionsListResult, err error)
}
type VirtualMachineScaleSetsClient interface {
ListAll(ctx context.Context) (result compute.VirtualMachineScaleSetListWithLinkResultPage, err error)
}
func NewComputeClient(subscriptionId string, auth autorest.Authorizer) ComputeClient {
disks := compute.NewDisksClient(subscriptionId)
disks.Authorizer = auth
vmsSvc := compute.NewVirtualMachinesClient(subscriptionId)
vmsSvc.Authorizer = auth
vmsEx := compute.NewVirtualMachineExtensionsClient(subscriptionId)
vmsEx.Authorizer = auth
vmsScaleSets := compute.NewVirtualMachineScaleSetsClient(subscriptionId)
vmsScaleSets.Authorizer = auth
return ComputeClient{
Disks: disks,
VirtualMachines: vmsSvc,
VirtualMachineExtensions: vmsEx,
VirtualMachineScaleSets: vmsScaleSets,
}
}