github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/opc/config.go (about)

     1  package opc
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"net/url"
     7  	"strings"
     8  
     9  	"github.com/hashicorp/go-cleanhttp"
    10  	"github.com/hashicorp/go-oracle-terraform/compute"
    11  	"github.com/hashicorp/go-oracle-terraform/opc"
    12  	"github.com/hashicorp/terraform/helper/logging"
    13  )
    14  
    15  type Config struct {
    16  	User            string
    17  	Password        string
    18  	IdentityDomain  string
    19  	Endpoint        string
    20  	MaxRetryTimeout int
    21  }
    22  
    23  type OPCClient struct {
    24  	Client          *compute.Client
    25  	MaxRetryTimeout int
    26  }
    27  
    28  func (c *Config) Client() (*compute.Client, error) {
    29  	u, err := url.ParseRequestURI(c.Endpoint)
    30  	if err != nil {
    31  		return nil, fmt.Errorf("Invalid endpoint URI: %s", err)
    32  	}
    33  
    34  	config := opc.Config{
    35  		IdentityDomain: &c.IdentityDomain,
    36  		Username:       &c.User,
    37  		Password:       &c.Password,
    38  		APIEndpoint:    u,
    39  		HTTPClient:     cleanhttp.DefaultClient(),
    40  	}
    41  
    42  	if logging.IsDebugOrHigher() {
    43  		config.LogLevel = opc.LogDebug
    44  		config.Logger = opcLogger{}
    45  	}
    46  
    47  	return compute.NewComputeClient(&config)
    48  }
    49  
    50  type opcLogger struct{}
    51  
    52  func (l opcLogger) Log(args ...interface{}) {
    53  	tokens := make([]string, 0, len(args))
    54  	for _, arg := range args {
    55  		if token, ok := arg.(string); ok {
    56  			tokens = append(tokens, token)
    57  		}
    58  	}
    59  	log.Printf("[DEBUG] [go-oracle-terraform]: %s", strings.Join(tokens, " "))
    60  }