func getClient()

in pkg/cloud/azureclient.go [144:176]


func getClient(env azure.Environment, subscriptionID string, credential azcore.TokenCredential, client *http.Client) (*AzureClient, error) {
	auth, err := kiotaauth.NewAzureIdentityAuthenticationProviderWithScopes(credential, []string{getGraphScope(env)})
	if err != nil {
		return nil, errors.Wrap(err, "failed to create authentication provider")
	}

	adapter, err := msgraphsdk.NewGraphRequestAdapterWithParseNodeFactoryAndSerializationWriterFactoryAndHttpClient(auth, nil, nil, client)
	if err != nil {
		return nil, errors.Wrap(err, "failed to create request adapter")
	}

	roleAssignmentsClient, err := armauthorization.NewRoleAssignmentsClient(subscriptionID, credential, nil)
	if err != nil {
		return nil, errors.Wrap(err, "failed to create role assignments client")
	}

	roleDefinitionsClient, err := armauthorization.NewRoleDefinitionsClient(credential, nil)
	if err != nil {
		return nil, errors.Wrap(err, "failed to create role definitions client")
	}

	azClient := &AzureClient{
		environment:    env,
		subscriptionID: subscriptionID,

		graphServiceClient: msgraphsdk.NewGraphServiceClient(adapter),

		roleAssignmentsClient: roleAssignmentsClient,
		roleDefinitionsClient: roleDefinitionsClient,
	}

	return azClient, nil
}