From b006aa84ac7d295debdc686e4f69c08a47dab7f0 Mon Sep 17 00:00:00 2001 From: Sriharsha Tikkireddy Date: Mon, 20 Apr 2020 20:32:09 -0400 Subject: [PATCH] injected version into user agent and refactored config to be public and accessible outside of service package --- .goreleaser.yml | 4 ++-- Makefile | 3 +-- client/service/apis.go | 6 +++--- client/service/main_test.go | 2 +- databricks/provider.go | 9 +++++---- databricks/resource_databricks_dbfs_file_sync.go | 8 ++++---- main.go | 6 +++++- 7 files changed, 21 insertions(+), 17 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index b5fe9de22..268521b8c 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -8,7 +8,7 @@ before: builds: - env: - CGO_ENABLED=0 - binary: terraform-provider-databricks_{{ replace .Version "-next" "" }} + binary: terraform-provider-databricks_{{ .Version }} goos: - darwin - linux @@ -34,7 +34,7 @@ archives: checksum: name_template: 'checksums.txt' snapshot: - name_template: "{{ .Tag }}-next" + name_template: "{{ .Tag }}-SNAPSHOT-{{ .ShortCommit }}" changelog: sort: asc filters: diff --git a/Makefile b/Makefile index 5fee4a872..e24842ee5 100644 --- a/Makefile +++ b/Makefile @@ -24,8 +24,7 @@ build: fmt lint: @echo "==> Linting source code with golint..." - @golint -set_exit_status ./databricks/... - @golint -set_exit_status ./client/... + @golint -set_exit_status ./databricks/... ./client/... fmt: lint @echo "==> Formatting source code with gofmt..." diff --git a/client/service/apis.go b/client/service/apis.go index fd67e6ddb..f821ae0d6 100644 --- a/client/service/apis.go +++ b/client/service/apis.go @@ -6,12 +6,12 @@ var scimHeaders = map[string]string{ // DBApiClient is the client struct that contains clients for all the services available on Databricks type DBApiClient struct { - config *DBApiClientConfig + Config *DBApiClientConfig } // SetConfig initializes the client func (c *DBApiClient) SetConfig(clientConfig *DBApiClientConfig) DBApiClient { - c.config = clientConfig + c.Config = clientConfig clientConfig.Setup() return *c } @@ -87,5 +87,5 @@ func (c DBApiClient) Commands() CommandsAPI { } func (c DBApiClient) performQuery(method, path string, apiVersion string, headers map[string]string, data interface{}, secretsMask *SecretsMask) ([]byte, error) { - return PerformQuery(c.config, method, path, apiVersion, headers, true, false, data, secretsMask) + return PerformQuery(c.Config, method, path, apiVersion, headers, true, false, data, secretsMask) } diff --git a/client/service/main_test.go b/client/service/main_test.go index 007e08ef6..68ebf18ae 100644 --- a/client/service/main_test.go +++ b/client/service/main_test.go @@ -51,7 +51,7 @@ func GetIntegrationDBAPIClient() *DBApiClient { } func GetCloudInstanceType(c *DBApiClient) string { - if strings.Contains(c.config.Host, "azure") { + if strings.Contains(c.Config.Host, "azure") { return "Standard_DS3_v2" } return "m4.large" diff --git a/databricks/provider.go b/databricks/provider.go index 849e9aaf8..51c22955f 100644 --- a/databricks/provider.go +++ b/databricks/provider.go @@ -1,6 +1,7 @@ package databricks import ( + "fmt" "github.com/databrickslabs/databricks-terraform/client/service" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/terraform" @@ -9,7 +10,7 @@ import ( ) // Provider returns the entire terraform provider object -func Provider() terraform.ResourceProvider { +func Provider(version string) terraform.ResourceProvider { provider := &schema.Provider{ DataSourcesMap: map[string]*schema.Resource{ "databricks_notebook": dataSourceNotebook(), @@ -96,13 +97,13 @@ func Provider() terraform.ResourceProvider { // We can therefore assume that if it's missing it's 0.10 or 0.11 terraformVersion = "0.11+compatible" } - return providerConfigure(d, terraformVersion) + return providerConfigure(d, version) } return provider } -func providerConfigure(d *schema.ResourceData, s string) (interface{}, error) { +func providerConfigure(d *schema.ResourceData, providerVersion string) (interface{}, error) { var config service.DBApiClientConfig if azureAuth, ok := d.GetOk("azure_auth"); !ok { if host, ok := d.GetOk("host"); ok { @@ -166,7 +167,7 @@ func providerConfigure(d *schema.ResourceData, s string) (interface{}, error) { //TODO: Bake the version of the provider using -ldflags to tell the golang linker to send //version information from go-releaser - config.UserAgent = "databricks-tf-provider" + config.UserAgent = fmt.Sprintf("databricks-tf-provider-%s", providerVersion) var dbClient service.DBApiClient dbClient.SetConfig(&config) return dbClient, nil diff --git a/databricks/resource_databricks_dbfs_file_sync.go b/databricks/resource_databricks_dbfs_file_sync.go index acc891fc8..712fdc376 100644 --- a/databricks/resource_databricks_dbfs_file_sync.go +++ b/databricks/resource_databricks_dbfs_file_sync.go @@ -62,7 +62,7 @@ func resourceDBFSFileSyncCreate(d *schema.ResourceData, m interface{}) error { } } - apiClient := parseSchemaToDBAPIClient(d) + apiClient := parseSchemaToDBAPIClient(d, &client) err := client.DBFS().Copy(srcPath, tgtPath, apiClient, true) if err != nil { return err @@ -101,7 +101,7 @@ func resourceDBFSFileSyncRead(d *schema.ResourceData, m interface{}) error { tgtPath := d.Get("tgt_path").(string) var srcAPIDBFSClient service.DBFSAPI - srcAPICLient := parseSchemaToDBAPIClient(d) + srcAPICLient := parseSchemaToDBAPIClient(d, &client) if srcAPICLient != nil { srcAPIDBFSClient = srcAPICLient.DBFS() } else { @@ -132,14 +132,14 @@ func resourceDBFSFileSyncDelete(d *schema.ResourceData, m interface{}) error { return err } -func parseSchemaToDBAPIClient(d *schema.ResourceData) *service.DBApiClient { +func parseSchemaToDBAPIClient(d *schema.ResourceData, currentClient *service.DBApiClient) *service.DBApiClient { host, hostOk := d.GetOk("host") token, tokenOk := d.GetOk("token") var config service.DBApiClientConfig if hostOk && tokenOk { config.Host = host.(string) config.Token = token.(string) - config.UserAgent = "databricks-tf-provider" + config.UserAgent = currentClient.Config.UserAgent var dbClient service.DBApiClient dbClient.SetConfig(&config) return &dbClient diff --git a/main.go b/main.go index a956edd63..3ba451dd3 100644 --- a/main.go +++ b/main.go @@ -6,10 +6,14 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/terraform" ) +var ( + version = "dev" +) + func main() { plugin.Serve(&plugin.ServeOpts{ ProviderFunc: func() terraform.ResourceProvider { - return databricks.Provider() + return databricks.Provider(version) }, }) }