mirror of https://github.com/databricks/cli.git
Function to return workspace client on bundle.Bundle (#100)
Complementary command to check the identity in the context of a bundle environment: For example: ``` bricks bundle debug whoami -e development ```
This commit is contained in:
parent
696e337516
commit
07f07694a4
|
@ -3,13 +3,20 @@ package bundle
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"sync"
|
||||||
|
|
||||||
"github.com/databricks/bricks/bundle/config"
|
"github.com/databricks/bricks/bundle/config"
|
||||||
"github.com/databricks/bricks/bundle/config/mutator"
|
"github.com/databricks/bricks/bundle/config/mutator"
|
||||||
|
"github.com/databricks/databricks-sdk-go/workspaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Bundle struct {
|
type Bundle struct {
|
||||||
Config config.Root
|
Config config.Root
|
||||||
|
|
||||||
|
// Store a pointer to the workspace client.
|
||||||
|
// It can be initialized on demand after loading the configuration.
|
||||||
|
clientOnce sync.Once
|
||||||
|
client *workspaces.WorkspacesClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bundle) MutateForEnvironment(env string) error {
|
func (b *Bundle) MutateForEnvironment(env string) error {
|
||||||
|
@ -51,3 +58,10 @@ func ConfigureForEnvironment(ctx context.Context, env string) (context.Context,
|
||||||
|
|
||||||
return Context(ctx, b), nil
|
return Context(ctx, b), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *Bundle) WorkspaceClient() *workspaces.WorkspacesClient {
|
||||||
|
b.clientOnce.Do(func() {
|
||||||
|
b.client = b.Config.Workspace.Client()
|
||||||
|
})
|
||||||
|
return b.client
|
||||||
|
}
|
||||||
|
|
|
@ -1,8 +1,53 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/databricks/databricks-sdk-go/databricks"
|
||||||
|
"github.com/databricks/databricks-sdk-go/workspaces"
|
||||||
|
)
|
||||||
|
|
||||||
// Workspace defines configurables at the workspace level.
|
// Workspace defines configurables at the workspace level.
|
||||||
type Workspace struct {
|
type Workspace struct {
|
||||||
// TODO: Add all unified authentication configurables.
|
// Unified authentication attributes.
|
||||||
|
//
|
||||||
|
// We omit sensitive attributes as they should never be hardcoded.
|
||||||
|
// They must be specified through environment variables instead.
|
||||||
|
//
|
||||||
|
// For example: token, password, Google credentials, Azure client secret, etc.
|
||||||
|
//
|
||||||
|
|
||||||
|
// Generic attributes.
|
||||||
Host string `json:"host,omitempty"`
|
Host string `json:"host,omitempty"`
|
||||||
Profile string `json:"profile,omitempty"`
|
Profile string `json:"profile,omitempty"`
|
||||||
|
|
||||||
|
// Google specific attributes.
|
||||||
|
GoogleServiceAccount string `json:"google_service_account,omitempty"`
|
||||||
|
|
||||||
|
// Azure specific attributes.
|
||||||
|
AzureResourceID string `json:"azure_workspace_resource_id,omitempty"`
|
||||||
|
AzureUseMSI bool `json:"azure_use_msi,omitempty"`
|
||||||
|
AzureClientID string `json:"azure_client_id,omitempty"`
|
||||||
|
AzureTenantID string `json:"azure_tenant_id,omitempty"`
|
||||||
|
AzureEnvironment string `json:"azure_environment,omitempty"`
|
||||||
|
AzureLoginAppID string `json:"azure_login_app_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *Workspace) Client() *workspaces.WorkspacesClient {
|
||||||
|
config := databricks.Config{
|
||||||
|
// Generic
|
||||||
|
Host: w.Host,
|
||||||
|
Profile: w.Profile,
|
||||||
|
|
||||||
|
// Google
|
||||||
|
GoogleServiceAccount: w.GoogleServiceAccount,
|
||||||
|
|
||||||
|
// Azure
|
||||||
|
AzureResourceID: w.AzureResourceID,
|
||||||
|
AzureUseMSI: w.AzureUseMSI,
|
||||||
|
AzureClientID: w.AzureClientID,
|
||||||
|
AzureTenantID: w.AzureTenantID,
|
||||||
|
AzureEnvironment: w.AzureEnvironment,
|
||||||
|
AzureLoginAppID: w.AzureLoginAppID,
|
||||||
|
}
|
||||||
|
|
||||||
|
return workspaces.New(&config)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
package debug
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
parent "github.com/databricks/bricks/cmd/bundle"
|
||||||
|
)
|
||||||
|
|
||||||
|
var debugCmd = &cobra.Command{
|
||||||
|
Use: "debug",
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
parent.AddCommand(debugCmd)
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
package debug
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/databricks/bricks/bundle"
|
||||||
|
parent "github.com/databricks/bricks/cmd/bundle"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
var whoamiCmd = &cobra.Command{
|
||||||
|
Use: "whoami",
|
||||||
|
|
||||||
|
PreRunE: parent.ConfigureBundle,
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
ctx := cmd.Context()
|
||||||
|
w := bundle.Get(ctx).WorkspaceClient()
|
||||||
|
user, err := w.CurrentUser.Me(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintln(cmd.OutOrStdout(), user.UserName)
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
debugCmd.AddCommand(whoamiCmd)
|
||||||
|
}
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
var validate = &cobra.Command{
|
var validateCmd = &cobra.Command{
|
||||||
Use: "validate",
|
Use: "validate",
|
||||||
Short: "Validate configuration",
|
Short: "Validate configuration",
|
||||||
|
|
||||||
|
@ -24,5 +24,5 @@ var validate = &cobra.Command{
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
AddCommand(validate)
|
AddCommand(validateCmd)
|
||||||
}
|
}
|
||||||
|
|
1
main.go
1
main.go
|
@ -3,6 +3,7 @@ package main
|
||||||
import (
|
import (
|
||||||
_ "github.com/databricks/bricks/cmd/api"
|
_ "github.com/databricks/bricks/cmd/api"
|
||||||
_ "github.com/databricks/bricks/cmd/bundle"
|
_ "github.com/databricks/bricks/cmd/bundle"
|
||||||
|
_ "github.com/databricks/bricks/cmd/bundle/debug"
|
||||||
_ "github.com/databricks/bricks/cmd/configure"
|
_ "github.com/databricks/bricks/cmd/configure"
|
||||||
_ "github.com/databricks/bricks/cmd/fs"
|
_ "github.com/databricks/bricks/cmd/fs"
|
||||||
_ "github.com/databricks/bricks/cmd/init"
|
_ "github.com/databricks/bricks/cmd/init"
|
||||||
|
|
Loading…
Reference in New Issue