func NewAZClient()

in pkg/providers/instance/azure_client.go [114:169]


func NewAZClient(ctx context.Context, cfg *auth.Config, env *azure.Environment) (*AZClient, error) {
	defaultAzureCred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		return nil, err
	}
	cred := auth.NewTokenWrapper(defaultAzureCred)
	opts := armopts.DefaultArmOpts()
	extensionsClient, err := armcompute.NewVirtualMachineExtensionsClient(cfg.SubscriptionID, cred, opts)
	if err != nil {
		return nil, err
	}

	interfacesClient, err := armnetwork.NewInterfacesClient(cfg.SubscriptionID, cred, opts)
	if err != nil {
		return nil, err
	}
	klog.V(5).Infof("Created network interface client %v using token credential", interfacesClient)

	virtualMachinesClient, err := armcompute.NewVirtualMachinesClient(cfg.SubscriptionID, cred, opts)
	if err != nil {
		return nil, err
	}
	klog.V(5).Infof("Created virtual machines client %v, using a token credential", virtualMachinesClient)
	azureResourceGraphClient, err := armresourcegraph.NewClient(cred, opts)
	if err != nil {
		return nil, err
	}
	klog.V(5).Infof("Created azure resource graph client %v, using a token credential", azureResourceGraphClient)

	communityImageVersionsClient, err := armcomputev5.NewCommunityGalleryImageVersionsClient(cfg.SubscriptionID, cred, opts)
	if err != nil {
		return nil, err
	}
	klog.V(5).Infof("Created image versions client %v, using a token credential", communityImageVersionsClient)

	nodeImageVersionsClient := imagefamily.NewNodeImageVersionsClient(cred)

	loadBalancersClient, err := armnetwork.NewLoadBalancersClient(cfg.SubscriptionID, cred, opts)
	if err != nil {
		return nil, err
	}
	klog.V(5).Infof("Created load balancers client %v, using a token credential", loadBalancersClient)

	// TODO: this one is not enabled for rate limiting / throttling ...
	// TODO Move this over to track 2 when skewer is migrated
	skuClient := skuclient.NewSkuClient(ctx, cfg, env)

	return NewAZClientFromAPI(virtualMachinesClient,
		azureResourceGraphClient,
		extensionsClient,
		interfacesClient,
		loadBalancersClient,
		communityImageVersionsClient,
		nodeImageVersionsClient,
		skuClient), nil
}