Skip to content

Skip loading default profile if host is already configured#363

Merged
pietern merged 3 commits intomainfrom
skip-default-profile-load-with-host-set
Apr 6, 2023
Merged

Skip loading default profile if host is already configured#363
pietern merged 3 commits intomainfrom
skip-default-profile-load-with-host-set

Conversation

@pietern
Copy link
Copy Markdown
Contributor

@pietern pietern commented Apr 6, 2023

Changes

If a user specified a host to connect to without authentication details (either directly or via the DATABRICKS_HOST environment variable), the config file loader would load the profile named DEFAULT from the config file and overwrite whatever was already configured. This means it was possible to configure the host of workspace A and end up connecting to workspace B (if configured as DEFAULT profile in the config file). This PR prevents this behavior.

Also see #304.

Tests

  • Added unit tests.
  • Confirmed behavior with manual test.

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

Patch coverage: 100.00% and project coverage change: -0.08 ⚠️

Comparison is base (3edd346) 41.89% compared to head (88aee71) 41.82%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #363      +/-   ##
==========================================
- Coverage   41.89%   41.82%   -0.08%     
==========================================
  Files          50       50              
  Lines        2788     2788              
==========================================
- Hits         1168     1166       -2     
- Misses       1517     1518       +1     
- Partials      103      104       +1     
Impacted Files Coverage Δ
config/config.go 80.00% <100.00%> (ø)
config/config_file.go 81.81% <100.00%> (ø)

... and 1 file with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@pietern pietern requested review from alexott and nfx April 6, 2023 09:16
Copy link
Copy Markdown
Contributor

@mgyucht mgyucht left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

// IsAws returns if the client is configured for Databricks on AWS.
func (c *Config) IsAws() bool {
return !c.IsAzure() && !c.IsGcp()
return c.Host != "" && !c.IsAzure() && !c.IsGcp()
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Allow-list version may also be safer:

strings.Contains(c.Host, ".dev.databricks.com") || strings.Contains(c.Host, ".cloud.databricks.com")

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, but we would have this problem: #363 (comment)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ack

Copy link
Copy Markdown
Contributor

@alexott alexott left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@pietern pietern merged commit cafc8c9 into main Apr 6, 2023
@pietern pietern deleted the skip-default-profile-load-with-host-set branch April 6, 2023 09:29
@nfx nfx mentioned this pull request Apr 20, 2023
nfx added a commit that referenced this pull request Apr 20, 2023
# Version changelog

## 0.8.0

* Added more code generation utilities
([#369](#369)).
* Body logger for non-JSON payload as well
([#365](#365)).
* Cleanup ephemeral groups in integration tests
([#368](#368)).
* Fixed external entity generation
([#372](#372)).
* Skip loading default profile if host is already configured
([#363](#363)).
* Update debug messages in config loader to display correct path
([#362](#362)).

Dependency updates:

* Bump golang.org/x/oauth2 from 0.6.0 to 0.7.0
([#364](#364)).
* Bump google.golang.org/api from 0.115.0 to 0.116.0
([#361](#361)).
* Bump google.golang.org/api from 0.116.0 to 0.118.0
([#367](#367)).
 
API changes:

 * Moved `clusterpolicies` APIs to `compute` package.
 * Moved `clusters` APIs to `compute` package.
 * Moved `commands` APIs to `compute` package.
 * Moved `globalinitscripts` APIs to `compute` package.
 * Moved `instancepools` APIs to `compute` package.
 * Moved `scim` APIs to `iam` package.
 * Moved `permissions` APIs to `iam` package.
 * Moved `ipaccesslists` APIs to `settings` package.
 * Moved `tokenmanagement` APIs to `settings` package.
 * Moved `tokens` APIs to `settings` package.
 * Moved `workspaceconf` APIs to `settings` package.
 * Moved `gitcredentials` APIs to `workspace` package.
 * Moved `repos` APIs to `workspace` package.
 * Moved `secrets` APIs to `workspace` package.
 * Split `unitcatalog` package to `catalog` and `sharing`.
 * Renamed `mlflow` package to `ml`.
 * Renamed `dbfs` package to `files`.
 * Renamed `deployment` package to `provisioning`.
 * Renamed `endpoints` package to `serving`.
 * Renamed `clusters.List` type to `compute.ListClustersRequest`.
 * Renamed `jobs.ListRuns` type to `jobs.ListRunsRequest`.
 * Renamed `jobs.ExportRun` type to `jobs.ExportRunRequest`.
* Renamed `clusterpolicies.List` type to
`compute.ListClusterPoliciesRequest`.
 * Renamed `jobs.List` type to `jobs.ListJobsRequest`.
* Renamed `permissions.GetPermissionLevels` type to
`iam.GetPermissionLevelsRequest`.
* Renamed `pipelines.ListPipelineEvents` type to
`pipelines.ListPipelineEventsRequest`.
* Renamed `pipelines.ListPipelines` type to
`pipelines.ListPipelinesRequest`.
* Renamed `workspaceconf.GetStatus` type to `settings.GetStatusRequest`.
 * Renamed `repos.List` type to `workspace.ListReposRequest`.
* Renamed `tokenmanagement.List` type to
`settings.ListTokenManagementRequest`.
 * Renamed `workspace.Export` type to `workspace.ExportRequest`.
 * Renamed `workspace.List` type to `workspace.ListWorkspaceRequest`.
pietern added a commit to databricks/databricks-sdk-py that referenced this pull request Jun 13, 2023
## Changes

Incorporate auth permutations tests from
databricks/databricks-sdk-go#363 and databricks/databricks-sdk-go#496.

## Tests

- [x] `make test` run locally
- [x] `make fmt` applied
- [ ] relevant integration tests applied
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants