diff --git a/internal/common/cloudproviderapi/client.go b/internal/common/cloudproviderapi/client.go index 3cc86f529..7b9487bd4 100644 --- a/internal/common/cloudproviderapi/client.go +++ b/internal/common/cloudproviderapi/client.go @@ -14,9 +14,10 @@ import ( ) type Client struct { - authToken string - apiURL url.URL - client *http.Client + authToken string + apiURL url.URL + client *http.Client + defaultHeaders map[string]string } const ( @@ -24,7 +25,7 @@ const ( defaultTimeout = 90 * time.Second ) -func NewClient(authToken string, rawAPIURL string, client *http.Client) (*Client, error) { +func NewClient(authToken string, rawAPIURL string, client *http.Client, defaultHeaders map[string]string) (*Client, error) { parsedAPIURL, err := url.Parse(rawAPIURL) if err != nil { return nil, fmt.Errorf("failed to parse Cloud Provider API url: %w", err) @@ -38,9 +39,10 @@ func NewClient(authToken string, rawAPIURL string, client *http.Client) (*Client } return &Client{ - authToken: authToken, - apiURL: *parsedAPIURL, - client: client, + authToken: authToken, + apiURL: *parsedAPIURL, + client: client, + defaultHeaders: defaultHeaders, }, nil } @@ -195,6 +197,9 @@ func (c *Client) doAPIRequest(ctx context.Context, method string, path string, b } req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", c.authToken)) req.Header.Add("Content-Type", "application/json") + for k, v := range c.defaultHeaders { + req.Header.Add(k, v) + } resp, err = c.client.Do(req) if err != nil { diff --git a/pkg/provider/configure_clients.go b/pkg/provider/configure_clients.go index c462df757..9e2d742f8 100644 --- a/pkg/provider/configure_clients.go +++ b/pkg/provider/configure_clients.go @@ -179,10 +179,16 @@ func createOnCallClient(providerConfig ProviderConfig) (*onCallAPI.Client, error } func createCloudProviderClient(client *common.Client, providerConfig ProviderConfig) error { + providerHeaders, err := getHTTPHeadersMap(providerConfig) + if err != nil { + return fmt.Errorf("failed to get provider default HTTP headers: %w", err) + } + apiClient, err := cloudproviderapi.NewClient( providerConfig.CloudProviderAccessToken.ValueString(), providerConfig.CloudProviderURL.ValueString(), getRetryClient(providerConfig), + providerHeaders, ) if err != nil { return err