@@ -359,54 +359,15 @@ func configure(version string, p *schema.Provider) func(context.Context, *schema
359359func createGrafanaClient (d * schema.ResourceData ) (string , * gapi.Config , * gapi.Client , error ) {
360360 cli := cleanhttp .DefaultClient ()
361361 transport := cleanhttp .DefaultTransport ()
362- transport .TLSClientConfig = & tls.Config {}
363362 // limiting the amount of concurrent HTTP connections from the provider
364363 // makes it not overload the API and DB
365364 transport .MaxConnsPerHost = 2
366365
367- // TLS Config
368- tlsKeyFile , tempFile , err := createTempFileIfLiteral (d .Get ("tls_key" ).(string ))
366+ tlsClientConfig , err := parseTLSconfig (d )
369367 if err != nil {
370368 return "" , nil , nil , err
371369 }
372- if tempFile {
373- defer os .Remove (tlsKeyFile )
374- }
375- tlsCertFile , tempFile , err := createTempFileIfLiteral (d .Get ("tls_cert" ).(string ))
376- if err != nil {
377- return "" , nil , nil , err
378- }
379- if tempFile {
380- defer os .Remove (tlsCertFile )
381- }
382- caCertFile , tempFile , err := createTempFileIfLiteral (d .Get ("ca_cert" ).(string ))
383- if err != nil {
384- return "" , nil , nil , err
385- }
386- if tempFile {
387- defer os .Remove (caCertFile )
388- }
389-
390- insecure := d .Get ("insecure_skip_verify" ).(bool )
391- if caCertFile != "" {
392- ca , err := os .ReadFile (caCertFile )
393- if err != nil {
394- return "" , nil , nil , err
395- }
396- pool := x509 .NewCertPool ()
397- pool .AppendCertsFromPEM (ca )
398- transport .TLSClientConfig .RootCAs = pool
399- }
400- if tlsKeyFile != "" && tlsCertFile != "" {
401- cert , err := tls .LoadX509KeyPair (tlsCertFile , tlsKeyFile )
402- if err != nil {
403- return "" , nil , nil , err
404- }
405- transport .TLSClientConfig .Certificates = []tls.Certificate {cert }
406- }
407- if insecure {
408- transport .TLSClientConfig .InsecureSkipVerify = true
409- }
370+ transport .TLSClientConfig = tlsClientConfig
410371
411372 apiURL := d .Get ("url" ).(string )
412373 cli .Transport = logging .NewSubsystemLoggingHTTPTransport ("Grafana" , transport )
@@ -440,6 +401,11 @@ func createGrafanaClient(d *schema.ResourceData) (string, *gapi.Config, *gapi.Cl
440401}
441402
442403func createGrafanaOAPIClient (apiURL string , d * schema.ResourceData ) (* goapi.GrafanaHTTPAPI , error ) {
404+ tlsClientConfig , err := parseTLSconfig (d )
405+ if err != nil {
406+ return nil , err
407+ }
408+
443409 u , err := url .Parse (apiURL )
444410 if err != nil {
445411 return nil , fmt .Errorf ("failed to parse API url: %v" , err .Error ())
@@ -454,6 +420,7 @@ func createGrafanaOAPIClient(apiURL string, d *schema.ResourceData) (*goapi.Graf
454420 Host : u .Host ,
455421 BasePath : "/api" ,
456422 Schemes : []string {u .Scheme },
423+ TLSConfig : tlsClientConfig ,
457424 BasicAuth : userInfo ,
458425 OrgID : orgID ,
459426 APIKey : APIKey ,
@@ -589,3 +556,52 @@ func parseAuth(d *schema.ResourceData) (*url.Userinfo, int64, string, error) {
589556 }
590557 return nil , 0 , "" , nil
591558}
559+
560+ func parseTLSconfig (d * schema.ResourceData ) (* tls.Config , error ) {
561+ tlsClientConfig := & tls.Config {}
562+
563+ tlsKeyFile , tempFile , err := createTempFileIfLiteral (d .Get ("tls_key" ).(string ))
564+ if err != nil {
565+ return nil , err
566+ }
567+ if tempFile {
568+ defer os .Remove (tlsKeyFile )
569+ }
570+ tlsCertFile , tempFile , err := createTempFileIfLiteral (d .Get ("tls_cert" ).(string ))
571+ if err != nil {
572+ return nil , err
573+ }
574+ if tempFile {
575+ defer os .Remove (tlsCertFile )
576+ }
577+ caCertFile , tempFile , err := createTempFileIfLiteral (d .Get ("ca_cert" ).(string ))
578+ if err != nil {
579+ return nil , err
580+ }
581+ if tempFile {
582+ defer os .Remove (caCertFile )
583+ }
584+
585+ insecure := d .Get ("insecure_skip_verify" ).(bool )
586+ if caCertFile != "" {
587+ ca , err := os .ReadFile (caCertFile )
588+ if err != nil {
589+ return nil , err
590+ }
591+ pool := x509 .NewCertPool ()
592+ pool .AppendCertsFromPEM (ca )
593+ tlsClientConfig .RootCAs = pool
594+ }
595+ if tlsKeyFile != "" && tlsCertFile != "" {
596+ cert , err := tls .LoadX509KeyPair (tlsCertFile , tlsKeyFile )
597+ if err != nil {
598+ return nil , err
599+ }
600+ tlsClientConfig .Certificates = []tls.Certificate {cert }
601+ }
602+ if insecure {
603+ tlsClientConfig .InsecureSkipVerify = true
604+ }
605+
606+ return tlsClientConfig , nil
607+ }
0 commit comments