in pkg/dataplane/client_factory.go [81:115]
func (c *clientFactory) NewClient(identityURL string) (Client, error) {
parsedURL, err := url.ParseRequestURI(identityURL)
if err != nil {
return nil, fmt.Errorf("error parsing identity URL: %w", err)
}
server := url.URL{
Scheme: parsedURL.Scheme,
Host: parsedURL.Host,
Path: parsedURL.Path,
}
azCoreClient, err := azcore.NewClient(moduleName, moduleVersion, runtime.PipelineOptions{
PerCall: []policy.Policy{
httpRequestDoerFunc(func(req *policy.Request) (*http.Response, error) {
// x-ms-identity-url header from ARM contains query parameters we need to keep
query := req.Raw().URL.Query()
for key, values := range parsedURL.Query() {
for _, value := range values {
query.Add(key, value)
}
}
req.Raw().URL.RawQuery = query.Encode()
return req.Next()
}),
newAuthenticatorPolicy(c.cred, c.audience),
},
}, c.clientOpts)
if err != nil {
return nil, fmt.Errorf("error creating azcore client: %w", err)
}
return &clientAdapter{
hostPath: server.String(),
delegate: client.NewManagedIdentityDataPlaneAPIClient(azCoreClient),
}, nil
}