mirror of https://github.com/databricks/cli.git
72 lines
2.0 KiB
Go
72 lines
2.0 KiB
Go
|
package resources
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"fmt"
|
|||
|
"net/url"
|
|||
|
|
|||
|
"github.com/databricks/cli/libs/log"
|
|||
|
"github.com/databricks/databricks-sdk-go"
|
|||
|
"github.com/databricks/databricks-sdk-go/marshal"
|
|||
|
"github.com/databricks/databricks-sdk-go/service/apps"
|
|||
|
)
|
|||
|
|
|||
|
type App struct {
|
|||
|
// This represents the id which is the name of the app that can be used
|
|||
|
// as a reference in other resources. This value is returned by terraform.
|
|||
|
ID string `json:"id,omitempty" bundle:"readonly"`
|
|||
|
|
|||
|
// SourceCodePath is a required field used by DABs to point databricks app source code
|
|||
|
// on local disk and use it to point to this source code in the app deployment
|
|||
|
SourceCodePath string `json:"source_code_path"`
|
|||
|
|
|||
|
// Config is an optional field which allows configuring the app following Databricks app configuration format like in app.yml.
|
|||
|
// When this field is set, DABs read the configuration set in this field and write
|
|||
|
// it to app.yml in the root of the source code folder in Databricks workspace.
|
|||
|
// If there’s app.yml defined already, it will be overridden.
|
|||
|
Config map[string]interface{} `json:"config,omitempty"`
|
|||
|
|
|||
|
Permissions []Permission `json:"permissions,omitempty"`
|
|||
|
ModifiedStatus ModifiedStatus `json:"modified_status,omitempty" bundle:"internal"`
|
|||
|
URL string `json:"url,omitempty" bundle:"internal"`
|
|||
|
|
|||
|
*apps.App
|
|||
|
}
|
|||
|
|
|||
|
func (a *App) UnmarshalJSON(b []byte) error {
|
|||
|
return marshal.Unmarshal(b, a)
|
|||
|
}
|
|||
|
|
|||
|
func (a App) MarshalJSON() ([]byte, error) {
|
|||
|
return marshal.Marshal(a)
|
|||
|
}
|
|||
|
|
|||
|
func (a *App) Exists(ctx context.Context, w *databricks.WorkspaceClient, name string) (bool, error) {
|
|||
|
_, err := w.Apps.GetByName(ctx, name)
|
|||
|
if err != nil {
|
|||
|
log.Debugf(ctx, "app %s does not exist", name)
|
|||
|
return false, err
|
|||
|
}
|
|||
|
return true, nil
|
|||
|
}
|
|||
|
|
|||
|
func (a *App) TerraformResourceName() string {
|
|||
|
return "databricks_cluster"
|
|||
|
}
|
|||
|
|
|||
|
func (a *App) InitializeURL(baseURL url.URL) {
|
|||
|
if a.ID == "" {
|
|||
|
return
|
|||
|
}
|
|||
|
baseURL.Path = fmt.Sprintf("apps/%s", a.ID)
|
|||
|
a.URL = baseURL.String()
|
|||
|
}
|
|||
|
|
|||
|
func (a *App) GetName() string {
|
|||
|
return a.Name
|
|||
|
}
|
|||
|
|
|||
|
func (a *App) GetURL() string {
|
|||
|
return a.URL
|
|||
|
}
|