mirror of https://github.com/databricks/cli.git
feedback fixes
This commit is contained in:
parent
0583dedf16
commit
86630b61dd
|
@ -23,7 +23,7 @@ func TestAppInterpolateVariables(t *testing.T) {
|
|||
Config: map[string]any{
|
||||
"command": []string{"echo", "hello"},
|
||||
"env": []map[string]string{
|
||||
{"name": "JOB_ID", "value": "${resources.jobs.my_job.id}"},
|
||||
{"name": "JOB_ID", "value": "${databricks_job.my_job.id}"},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -26,23 +26,12 @@ func (u *uploadConfig) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnos
|
|||
var diags diag.Diagnostics
|
||||
errGroup, ctx := errgroup.WithContext(ctx)
|
||||
|
||||
mu := &sync.Mutex{}
|
||||
mu := sync.Mutex{}
|
||||
for key, app := range b.Config.Resources.Apps {
|
||||
// If the app has a config, we need to deploy it first.
|
||||
// It means we need to write app.yml file with the content of the config field
|
||||
// to the remote source code path of the app.
|
||||
if app.Config != nil {
|
||||
if !strings.HasPrefix(app.SourceCodePath, b.Config.Workspace.FilePath) {
|
||||
diags = append(diags, diag.Diagnostic{
|
||||
Severity: diag.Error,
|
||||
Summary: "App source code invalid",
|
||||
Detail: fmt.Sprintf("App source code path %s is not within file path %s", app.SourceCodePath, b.Config.Workspace.FilePath),
|
||||
Locations: b.Config.GetLocations(fmt.Sprintf("resources.apps.%s.source_code_path", key)),
|
||||
})
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
appPath := strings.TrimPrefix(app.SourceCodePath, b.Config.Workspace.FilePath)
|
||||
|
||||
buf, err := configToYaml(app)
|
||||
|
@ -50,7 +39,6 @@ func (u *uploadConfig) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnos
|
|||
return diag.FromErr(err)
|
||||
}
|
||||
|
||||
// When the app is started, create a new app deployment and wait for it to complete.
|
||||
f, err := u.filerFactory(b)
|
||||
if err != nil {
|
||||
return diag.FromErr(err)
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/databricks/cli/bundle"
|
||||
"github.com/databricks/cli/libs/diag"
|
||||
|
@ -21,7 +22,7 @@ func (v *validate) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnostics
|
|||
diags = append(diags, diag.Diagnostic{
|
||||
Severity: diag.Error,
|
||||
Summary: "Duplicate app source code path",
|
||||
Detail: fmt.Sprintf("app resource '%s' has the same source code path as app resource '%s'", key, usedSourceCodePaths[app.SourceCodePath]),
|
||||
Detail: fmt.Sprintf("app resource '%s' has the same source code path as app resource '%s', this will lead to the app configuration being overriden by each other", key, usedSourceCodePaths[app.SourceCodePath]),
|
||||
Locations: b.Config.GetLocations(fmt.Sprintf("resources.apps.%s.source_code_path", key)),
|
||||
})
|
||||
}
|
||||
|
@ -37,6 +38,15 @@ func (v *validate) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnostics
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
if !strings.HasPrefix(app.SourceCodePath, b.Config.Workspace.FilePath) {
|
||||
diags = append(diags, diag.Diagnostic{
|
||||
Severity: diag.Error,
|
||||
Summary: "App source code invalid",
|
||||
Detail: fmt.Sprintf("App source code path %s is not within file path %s", app.SourceCodePath, b.Config.Workspace.FilePath),
|
||||
Locations: b.Config.GetLocations(fmt.Sprintf("resources.apps.%s.source_code_path", key)),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return diags
|
||||
|
|
|
@ -11,6 +11,7 @@ import (
|
|||
"github.com/databricks/cli/bundle/config/resources"
|
||||
"github.com/databricks/cli/bundle/internal/bundletest"
|
||||
"github.com/databricks/cli/internal/testutil"
|
||||
"github.com/databricks/cli/libs/diag"
|
||||
"github.com/databricks/cli/libs/dyn"
|
||||
"github.com/databricks/cli/libs/vfs"
|
||||
"github.com/databricks/databricks-sdk-go/service/apps"
|
||||
|
@ -89,3 +90,36 @@ func TestAppsValidateSameSourcePath(t *testing.T) {
|
|||
require.Equal(t, "Duplicate app source code path", diags[0].Summary)
|
||||
require.Contains(t, diags[0].Detail, "has the same source code path as app resource")
|
||||
}
|
||||
|
||||
func TestAppsValidateIncorrectSourceCodePath(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
|
||||
b := &bundle.Bundle{
|
||||
BundleRootPath: tmpDir,
|
||||
SyncRootPath: tmpDir,
|
||||
SyncRoot: vfs.MustNew(tmpDir),
|
||||
Config: config.Root{
|
||||
Workspace: config.Workspace{
|
||||
FilePath: "/Workspace/Users/foo@bar.com/files",
|
||||
},
|
||||
Resources: config.Resources{
|
||||
Apps: map[string]*resources.App{
|
||||
"app1": {
|
||||
App: &apps.App{
|
||||
Name: "app1",
|
||||
},
|
||||
SourceCodePath: "/Workspace/Random/app1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
bundletest.SetLocation(b, ".", []dyn.Location{{File: filepath.Join(tmpDir, "databricks.yml")}})
|
||||
|
||||
diags := bundle.Apply(context.Background(), b, bundle.Seq(Validate()))
|
||||
require.Len(t, diags, 1)
|
||||
require.Equal(t, diag.Error, diags[0].Severity)
|
||||
require.Equal(t, "App source code invalid", diags[0].Summary)
|
||||
require.Contains(t, diags[0].Detail, "App source code path /Workspace/Random/app1 is not within file path /Workspace/Users/foo@bar.com/files")
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ func (a *App) TerraformResourceName() string {
|
|||
}
|
||||
|
||||
func (a *App) InitializeURL(baseURL url.URL) {
|
||||
if a.Name == "" {
|
||||
if a.ModifiedStatus == "" || a.ModifiedStatus == ModifiedStatusCreated {
|
||||
return
|
||||
}
|
||||
baseURL.Path = fmt.Sprintf("apps/%s", a.Name)
|
||||
|
|
|
@ -204,6 +204,10 @@ func TerraformToBundle(state *resourcesState, config *config.Root) error {
|
|||
cur := config.Resources.Apps[resource.Name]
|
||||
if cur == nil {
|
||||
cur = &resources.App{ModifiedStatus: resources.ModifiedStatusDeleted, App: &apps.App{}}
|
||||
} else {
|
||||
// If the app exists in terraform and bundle, we always set modified status to updated
|
||||
// because we don't really know if the app source code was updated or not.
|
||||
cur.ModifiedStatus = resources.ModifiedStatusUpdated
|
||||
}
|
||||
cur.Name = instance.Attributes.Name
|
||||
config.Resources.Apps[resource.Name] = cur
|
||||
|
@ -272,7 +276,7 @@ func TerraformToBundle(state *resourcesState, config *config.Root) error {
|
|||
}
|
||||
}
|
||||
for _, src := range config.Resources.Apps {
|
||||
if src.ModifiedStatus == "" && src.Name == "" {
|
||||
if src.ModifiedStatus == "" {
|
||||
src.ModifiedStatus = resources.ModifiedStatusCreated
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1019,12 +1019,12 @@ func TestTerraformToBundleModifiedResources(t *testing.T) {
|
|||
Apps: map[string]*resources.App{
|
||||
"test_app": {
|
||||
App: &apps.App{
|
||||
Description: "test_app",
|
||||
Name: "test_app",
|
||||
},
|
||||
},
|
||||
"test_app_new": {
|
||||
App: &apps.App{
|
||||
Description: "test_app_new",
|
||||
Name: "test_app_new",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -1213,7 +1213,7 @@ func TestTerraformToBundleModifiedResources(t *testing.T) {
|
|||
Mode: "managed",
|
||||
Name: "test_app",
|
||||
Instances: []stateResourceInstance{
|
||||
{Attributes: stateInstanceAttributes{Name: "app1"}},
|
||||
{Attributes: stateInstanceAttributes{Name: "test_app"}},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -1221,7 +1221,7 @@ func TestTerraformToBundleModifiedResources(t *testing.T) {
|
|||
Mode: "managed",
|
||||
Name: "test_app_old",
|
||||
Instances: []stateResourceInstance{
|
||||
{Attributes: stateInstanceAttributes{Name: "app2"}},
|
||||
{Attributes: stateInstanceAttributes{Name: "test_app_old"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -1306,11 +1306,11 @@ func TestTerraformToBundleModifiedResources(t *testing.T) {
|
|||
assert.Equal(t, "", config.Resources.Dashboards["test_dashboard_new"].ID)
|
||||
assert.Equal(t, resources.ModifiedStatusCreated, config.Resources.Dashboards["test_dashboard_new"].ModifiedStatus)
|
||||
|
||||
assert.Equal(t, "app1", config.Resources.Apps["test_app"].Name)
|
||||
assert.Equal(t, "", config.Resources.Apps["test_app"].ModifiedStatus)
|
||||
assert.Equal(t, "app2", config.Resources.Apps["test_app_old"].Name)
|
||||
assert.Equal(t, "test_app", config.Resources.Apps["test_app"].Name)
|
||||
assert.Equal(t, resources.ModifiedStatusUpdated, config.Resources.Apps["test_app"].ModifiedStatus)
|
||||
assert.Equal(t, "test_app_old", config.Resources.Apps["test_app_old"].Name)
|
||||
assert.Equal(t, resources.ModifiedStatusDeleted, config.Resources.Apps["test_app_old"].ModifiedStatus)
|
||||
assert.Equal(t, "", config.Resources.Apps["test_app_new"].Name)
|
||||
assert.Equal(t, "test_app_new", config.Resources.Apps["test_app_new"].Name)
|
||||
assert.Equal(t, resources.ModifiedStatusCreated, config.Resources.Apps["test_app_new"].ModifiedStatus)
|
||||
|
||||
AssertFullResourceCoverage(t, &config)
|
||||
|
|
|
@ -34,7 +34,7 @@ type stateResourceInstance struct {
|
|||
|
||||
type stateInstanceAttributes struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Name string `json:"name,omitempty"` // Some resources such as Apps do not have an ID, so we use the name instead.
|
||||
ETag string `json:"etag,omitempty"`
|
||||
}
|
||||
|
||||
|
|
|
@ -1,161 +1,3 @@
|
|||
github.com/databricks/databricks-sdk-go/service/apps.AppResourceJob:
|
||||
"id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"permission":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.ComputeStatus:
|
||||
"message":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"state":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppDeploymentArtifacts:
|
||||
"source_code_path":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppResourceSqlWarehouse:
|
||||
"id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"permission":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/cli/bundle/config/resources.App:
|
||||
"create_time":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"permissions":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"resources":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"url":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"active_deployment":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"description":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"default_source_code_path":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"service_principal_client_id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"service_principal_name":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"config":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"source_code_path":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"service_principal_id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"name":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"compute_status":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"creator":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"app_status":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"pending_deployment":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"update_time":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"updater":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppResource:
|
||||
"name":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"secret":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"serving_endpoint":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"sql_warehouse":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"description":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"job":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppDeployment:
|
||||
"create_time":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"creator":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"deployment_artifacts":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"deployment_id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"mode":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"source_code_path":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"status":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"update_time":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.ApplicationStatus:
|
||||
"state":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"message":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppDeploymentStatus:
|
||||
"message":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"state":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppResourceSecret:
|
||||
"key":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"permission":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"scope":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppResourceServingEndpoint:
|
||||
"permission":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"name":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/cli/bundle/config.Artifact:
|
||||
"build":
|
||||
"description": |-
|
||||
|
@ -511,6 +353,64 @@ github.com/databricks/cli/bundle/config.Workspace:
|
|||
"state_path":
|
||||
"description": |-
|
||||
The workspace state path
|
||||
github.com/databricks/cli/bundle/config/resources.App:
|
||||
"active_deployment":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"app_status":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"compute_status":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"config":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"create_time":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"creator":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"default_source_code_path":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"description":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"name":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"pending_deployment":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"permissions":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"resources":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"service_principal_client_id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"service_principal_id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"service_principal_name":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"source_code_path":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"update_time":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"updater":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"url":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/cli/bundle/config/resources.Grant:
|
||||
"principal":
|
||||
"description": |-
|
||||
|
@ -599,3 +499,103 @@ github.com/databricks/cli/bundle/config/variable.Variable:
|
|||
"type":
|
||||
"description": |-
|
||||
The type of the variable.
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppDeployment:
|
||||
"create_time":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"creator":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"deployment_artifacts":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"deployment_id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"mode":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"source_code_path":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"status":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"update_time":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppDeploymentArtifacts:
|
||||
"source_code_path":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppDeploymentStatus:
|
||||
"message":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"state":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppResource:
|
||||
"description":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"job":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"name":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"secret":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"serving_endpoint":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"sql_warehouse":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppResourceJob:
|
||||
"id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"permission":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppResourceSecret:
|
||||
"key":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"permission":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"scope":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppResourceServingEndpoint:
|
||||
"name":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"permission":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.AppResourceSqlWarehouse:
|
||||
"id":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"permission":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.ApplicationStatus:
|
||||
"message":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"state":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
github.com/databricks/databricks-sdk-go/service/apps.ComputeStatus:
|
||||
"message":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
"state":
|
||||
"description": |-
|
||||
PLACEHOLDER
|
||||
|
|
|
@ -59,6 +59,81 @@
|
|||
"cli": {
|
||||
"bundle": {
|
||||
"config": {
|
||||
"resources.App": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"active_deployment": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppDeployment"
|
||||
},
|
||||
"app_status": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.ApplicationStatus"
|
||||
},
|
||||
"compute_status": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.ComputeStatus"
|
||||
},
|
||||
"config": {
|
||||
"$ref": "#/$defs/map/interface"
|
||||
},
|
||||
"create_time": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"creator": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"default_source_code_path": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"description": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"name": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"pending_deployment": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppDeployment"
|
||||
},
|
||||
"permissions": {
|
||||
"$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.Permission"
|
||||
},
|
||||
"resources": {
|
||||
"$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/apps.AppResource"
|
||||
},
|
||||
"service_principal_client_id": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"service_principal_id": {
|
||||
"$ref": "#/$defs/int64"
|
||||
},
|
||||
"service_principal_name": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"source_code_path": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"update_time": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"updater": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"url": {
|
||||
"$ref": "#/$defs/string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"source_code_path",
|
||||
"name"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"resources.Cluster": {
|
||||
"oneOf": [
|
||||
{
|
||||
|
@ -1239,6 +1314,9 @@
|
|||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"apps": {
|
||||
"$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.App"
|
||||
},
|
||||
"clusters": {
|
||||
"description": "The cluster definitions for the bundle.",
|
||||
"$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.Cluster",
|
||||
|
@ -1494,6 +1572,280 @@
|
|||
},
|
||||
"databricks-sdk-go": {
|
||||
"service": {
|
||||
"apps.AppDeployment": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"create_time": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"creator": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"deployment_artifacts": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppDeploymentArtifacts"
|
||||
},
|
||||
"deployment_id": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"mode": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppDeploymentMode"
|
||||
},
|
||||
"source_code_path": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppDeploymentStatus"
|
||||
},
|
||||
"update_time": {
|
||||
"$ref": "#/$defs/string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apps.AppDeploymentArtifacts": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"source_code_path": {
|
||||
"$ref": "#/$defs/string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apps.AppDeploymentMode": {
|
||||
"type": "string"
|
||||
},
|
||||
"apps.AppDeploymentState": {
|
||||
"type": "string"
|
||||
},
|
||||
"apps.AppDeploymentStatus": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"message": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"state": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppDeploymentState"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apps.AppResource": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"description": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"job": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceJob"
|
||||
},
|
||||
"name": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"secret": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceSecret"
|
||||
},
|
||||
"serving_endpoint": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceServingEndpoint"
|
||||
},
|
||||
"sql_warehouse": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceSqlWarehouse"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apps.AppResourceJob": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"permission": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceJobJobPermission"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"id",
|
||||
"permission"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apps.AppResourceJobJobPermission": {
|
||||
"type": "string"
|
||||
},
|
||||
"apps.AppResourceSecret": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"key": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"permission": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceSecretSecretPermission"
|
||||
},
|
||||
"scope": {
|
||||
"$ref": "#/$defs/string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"key",
|
||||
"permission",
|
||||
"scope"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apps.AppResourceSecretSecretPermission": {
|
||||
"type": "string"
|
||||
},
|
||||
"apps.AppResourceServingEndpoint": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"permission": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceServingEndpointServingEndpointPermission"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"permission"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apps.AppResourceServingEndpointServingEndpointPermission": {
|
||||
"type": "string"
|
||||
},
|
||||
"apps.AppResourceSqlWarehouse": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"permission": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceSqlWarehouseSqlWarehousePermission"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"id",
|
||||
"permission"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apps.AppResourceSqlWarehouseSqlWarehousePermission": {
|
||||
"type": "string"
|
||||
},
|
||||
"apps.ApplicationState": {
|
||||
"type": "string"
|
||||
},
|
||||
"apps.ApplicationStatus": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"message": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"state": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.ApplicationState"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apps.ComputeState": {
|
||||
"type": "string"
|
||||
},
|
||||
"apps.ComputeStatus": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"message": {
|
||||
"$ref": "#/$defs/string"
|
||||
},
|
||||
"state": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.ComputeState"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"catalog.MonitorCronSchedule": {
|
||||
"oneOf": [
|
||||
{
|
||||
|
@ -5684,6 +6036,20 @@
|
|||
"cli": {
|
||||
"bundle": {
|
||||
"config": {
|
||||
"resources.App": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.App"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"resources.Cluster": {
|
||||
"oneOf": [
|
||||
{
|
||||
|
@ -5913,6 +6279,20 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"interface": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"$ref": "#/$defs/interface"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"string": {
|
||||
"oneOf": [
|
||||
{
|
||||
|
@ -5981,6 +6361,20 @@
|
|||
},
|
||||
"databricks-sdk-go": {
|
||||
"service": {
|
||||
"apps.AppResource": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResource"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"catalog.MonitorMetric": {
|
||||
"oneOf": [
|
||||
{
|
||||
|
|
|
@ -16,6 +16,12 @@ import (
|
|||
func TestDeployBundleWithApp(t *testing.T) {
|
||||
ctx, wt := acc.WorkspaceTest(t)
|
||||
|
||||
// TODO: should only skip app run when app can be created with no_compute option.
|
||||
if testing.Short() {
|
||||
t.Log("Skip the app creation and run in short mode")
|
||||
return
|
||||
}
|
||||
|
||||
if testutil.GetCloud(t) == testutil.GCP {
|
||||
t.Skip("Skipping test for GCP cloud because /api/2.0/apps is temporarily unavailable there.")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue