mirror of https://github.com/databricks/cli.git
Inline SDK struct
This commit is contained in:
parent
866bfc5be7
commit
93155f1c77
|
@ -214,7 +214,7 @@ func (m *applyPresets) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnos
|
||||||
|
|
||||||
// Dashboards: Prefix
|
// Dashboards: Prefix
|
||||||
for key, dashboard := range r.Dashboards {
|
for key, dashboard := range r.Dashboards {
|
||||||
if dashboard == nil {
|
if dashboard == nil || dashboard.CreateDashboardRequest == nil {
|
||||||
diags = diags.Extend(diag.Errorf("dashboard %s s is not defined", key))
|
diags = diags.Extend(diag.Errorf("dashboard %s s is not defined", key))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"github.com/databricks/cli/bundle/config/resources"
|
"github.com/databricks/cli/bundle/config/resources"
|
||||||
"github.com/databricks/cli/bundle/internal/bundletest"
|
"github.com/databricks/cli/bundle/internal/bundletest"
|
||||||
"github.com/databricks/cli/libs/dyn"
|
"github.com/databricks/cli/libs/dyn"
|
||||||
|
"github.com/databricks/databricks-sdk-go/service/dashboards"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
@ -25,12 +26,16 @@ func TestConfigureDashboardDefaultsParentPath(t *testing.T) {
|
||||||
"d1": {
|
"d1": {
|
||||||
// Empty string is skipped.
|
// Empty string is skipped.
|
||||||
// See below for how it is set.
|
// See below for how it is set.
|
||||||
|
CreateDashboardRequest: &dashboards.CreateDashboardRequest{
|
||||||
ParentPath: "",
|
ParentPath: "",
|
||||||
},
|
},
|
||||||
|
},
|
||||||
"d2": {
|
"d2": {
|
||||||
// Non-empty string is skipped.
|
// Non-empty string is skipped.
|
||||||
|
CreateDashboardRequest: &dashboards.CreateDashboardRequest{
|
||||||
ParentPath: "already-set",
|
ParentPath: "already-set",
|
||||||
},
|
},
|
||||||
|
},
|
||||||
"d3": {
|
"d3": {
|
||||||
// No parent path set.
|
// No parent path set.
|
||||||
},
|
},
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"github.com/databricks/cli/bundle/config/resources"
|
"github.com/databricks/cli/bundle/config/resources"
|
||||||
"github.com/databricks/databricks-sdk-go/service/catalog"
|
"github.com/databricks/databricks-sdk-go/service/catalog"
|
||||||
"github.com/databricks/databricks-sdk-go/service/compute"
|
"github.com/databricks/databricks-sdk-go/service/compute"
|
||||||
|
"github.com/databricks/databricks-sdk-go/service/dashboards"
|
||||||
"github.com/databricks/databricks-sdk-go/service/jobs"
|
"github.com/databricks/databricks-sdk-go/service/jobs"
|
||||||
"github.com/databricks/databricks-sdk-go/service/ml"
|
"github.com/databricks/databricks-sdk-go/service/ml"
|
||||||
"github.com/databricks/databricks-sdk-go/service/pipelines"
|
"github.com/databricks/databricks-sdk-go/service/pipelines"
|
||||||
|
@ -88,11 +89,13 @@ func TestInitializeURLs(t *testing.T) {
|
||||||
Dashboards: map[string]*resources.Dashboard{
|
Dashboards: map[string]*resources.Dashboard{
|
||||||
"dashboard1": {
|
"dashboard1": {
|
||||||
ID: "01ef8d56871e1d50ae30ce7375e42478",
|
ID: "01ef8d56871e1d50ae30ce7375e42478",
|
||||||
|
CreateDashboardRequest: &dashboards.CreateDashboardRequest{
|
||||||
DisplayName: "My special dashboard",
|
DisplayName: "My special dashboard",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedURLs := map[string]string{
|
expectedURLs := map[string]string{
|
||||||
|
|
|
@ -14,6 +14,7 @@ import (
|
||||||
sdkconfig "github.com/databricks/databricks-sdk-go/config"
|
sdkconfig "github.com/databricks/databricks-sdk-go/config"
|
||||||
"github.com/databricks/databricks-sdk-go/service/catalog"
|
"github.com/databricks/databricks-sdk-go/service/catalog"
|
||||||
"github.com/databricks/databricks-sdk-go/service/compute"
|
"github.com/databricks/databricks-sdk-go/service/compute"
|
||||||
|
"github.com/databricks/databricks-sdk-go/service/dashboards"
|
||||||
"github.com/databricks/databricks-sdk-go/service/iam"
|
"github.com/databricks/databricks-sdk-go/service/iam"
|
||||||
"github.com/databricks/databricks-sdk-go/service/jobs"
|
"github.com/databricks/databricks-sdk-go/service/jobs"
|
||||||
"github.com/databricks/databricks-sdk-go/service/ml"
|
"github.com/databricks/databricks-sdk-go/service/ml"
|
||||||
|
@ -124,7 +125,11 @@ func mockBundle(mode config.Mode) *bundle.Bundle {
|
||||||
"cluster1": {ClusterSpec: &compute.ClusterSpec{ClusterName: "cluster1", SparkVersion: "13.2.x", NumWorkers: 1}},
|
"cluster1": {ClusterSpec: &compute.ClusterSpec{ClusterName: "cluster1", SparkVersion: "13.2.x", NumWorkers: 1}},
|
||||||
},
|
},
|
||||||
Dashboards: map[string]*resources.Dashboard{
|
Dashboards: map[string]*resources.Dashboard{
|
||||||
"dashboard1": {DisplayName: "dashboard1"},
|
"dashboard1": {
|
||||||
|
CreateDashboardRequest: &dashboards.CreateDashboardRequest{
|
||||||
|
DisplayName: "dashboard1",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -17,27 +17,18 @@ type Dashboard struct {
|
||||||
ModifiedStatus ModifiedStatus `json:"modified_status,omitempty" bundle:"internal"`
|
ModifiedStatus ModifiedStatus `json:"modified_status,omitempty" bundle:"internal"`
|
||||||
URL string `json:"url,omitempty" bundle:"internal"`
|
URL string `json:"url,omitempty" bundle:"internal"`
|
||||||
|
|
||||||
// ===========================
|
*dashboards.CreateDashboardRequest
|
||||||
// === BEGIN OF API FIELDS ===
|
|
||||||
// ===========================
|
|
||||||
|
|
||||||
// DisplayName is the display name of the dashboard (both as title and as basename in the workspace).
|
// =========================
|
||||||
DisplayName string `json:"display_name"`
|
// === Additional fields ===
|
||||||
|
// =========================
|
||||||
// WarehouseID is the ID of the SQL Warehouse used to run the dashboard's queries.
|
|
||||||
WarehouseID string `json:"warehouse_id"`
|
|
||||||
|
|
||||||
// SerializedDashboard holds the contents of the dashboard in serialized JSON form.
|
// SerializedDashboard holds the contents of the dashboard in serialized JSON form.
|
||||||
// Note: its type is any and not string such that it can be inlined as YAML.
|
// We override the field's type from the SDK struct here to allow for inlining as YAML.
|
||||||
// If it is not a string, its contents will be marshalled as JSON.
|
// If the value is a string, it is used as is.
|
||||||
|
// If it is not a string, its contents is marshalled as JSON.
|
||||||
SerializedDashboard any `json:"serialized_dashboard,omitempty"`
|
SerializedDashboard any `json:"serialized_dashboard,omitempty"`
|
||||||
|
|
||||||
// ParentPath is the workspace path of the folder containing the dashboard.
|
|
||||||
// Includes leading slash and no trailing slash.
|
|
||||||
//
|
|
||||||
// Defaults to ${workspace.resource_path} if not set.
|
|
||||||
ParentPath string `json:"parent_path,omitempty"`
|
|
||||||
|
|
||||||
// EmbedCredentials is a flag to indicate if the publisher's credentials should
|
// EmbedCredentials is a flag to indicate if the publisher's credentials should
|
||||||
// be embedded in the published dashboard. These embedded credentials will be used
|
// be embedded in the published dashboard. These embedded credentials will be used
|
||||||
// to execute the published dashboard's queries.
|
// to execute the published dashboard's queries.
|
||||||
|
@ -45,10 +36,6 @@ type Dashboard struct {
|
||||||
// Defaults to false if not set.
|
// Defaults to false if not set.
|
||||||
EmbedCredentials bool `json:"embed_credentials,omitempty"`
|
EmbedCredentials bool `json:"embed_credentials,omitempty"`
|
||||||
|
|
||||||
// ===========================
|
|
||||||
// ==== END OF API FIELDS ====
|
|
||||||
// ===========================
|
|
||||||
|
|
||||||
// FilePath points to the local `.lvdash.json` file containing the dashboard definition.
|
// FilePath points to the local `.lvdash.json` file containing the dashboard definition.
|
||||||
FilePath string `json:"file_path,omitempty"`
|
FilePath string `json:"file_path,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,13 @@ func mockDashboardBundle(t *testing.T) *bundle.Bundle {
|
||||||
Resources: config.Resources{
|
Resources: config.Resources{
|
||||||
Dashboards: map[string]*resources.Dashboard{
|
Dashboards: map[string]*resources.Dashboard{
|
||||||
"dash1": {
|
"dash1": {
|
||||||
|
CreateDashboardRequest: &dashboards.CreateDashboardRequest{
|
||||||
DisplayName: "My Special Dashboard",
|
DisplayName: "My Special Dashboard",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/databricks/cli/libs/dyn/convert"
|
"github.com/databricks/cli/libs/dyn/convert"
|
||||||
"github.com/databricks/databricks-sdk-go/service/catalog"
|
"github.com/databricks/databricks-sdk-go/service/catalog"
|
||||||
"github.com/databricks/databricks-sdk-go/service/compute"
|
"github.com/databricks/databricks-sdk-go/service/compute"
|
||||||
|
"github.com/databricks/databricks-sdk-go/service/dashboards"
|
||||||
"github.com/databricks/databricks-sdk-go/service/jobs"
|
"github.com/databricks/databricks-sdk-go/service/jobs"
|
||||||
"github.com/databricks/databricks-sdk-go/service/ml"
|
"github.com/databricks/databricks-sdk-go/service/ml"
|
||||||
"github.com/databricks/databricks-sdk-go/service/pipelines"
|
"github.com/databricks/databricks-sdk-go/service/pipelines"
|
||||||
|
@ -791,10 +792,12 @@ func TestTerraformToBundleEmptyRemoteResources(t *testing.T) {
|
||||||
},
|
},
|
||||||
Dashboards: map[string]*resources.Dashboard{
|
Dashboards: map[string]*resources.Dashboard{
|
||||||
"test_dashboard": {
|
"test_dashboard": {
|
||||||
|
CreateDashboardRequest: &dashboards.CreateDashboardRequest{
|
||||||
DisplayName: "test_dashboard",
|
DisplayName: "test_dashboard",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
var tfState = resourcesState{
|
var tfState = resourcesState{
|
||||||
Resources: nil,
|
Resources: nil,
|
||||||
|
@ -948,13 +951,17 @@ func TestTerraformToBundleModifiedResources(t *testing.T) {
|
||||||
},
|
},
|
||||||
Dashboards: map[string]*resources.Dashboard{
|
Dashboards: map[string]*resources.Dashboard{
|
||||||
"test_dashboard": {
|
"test_dashboard": {
|
||||||
|
CreateDashboardRequest: &dashboards.CreateDashboardRequest{
|
||||||
DisplayName: "test_dashboard",
|
DisplayName: "test_dashboard",
|
||||||
},
|
},
|
||||||
|
},
|
||||||
"test_dashboard_new": {
|
"test_dashboard_new": {
|
||||||
|
CreateDashboardRequest: &dashboards.CreateDashboardRequest{
|
||||||
DisplayName: "test_dashboard_new",
|
DisplayName: "test_dashboard_new",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
var tfState = resourcesState{
|
var tfState = resourcesState{
|
||||||
Resources: []stateResource{
|
Resources: []stateResource{
|
||||||
|
|
|
@ -8,15 +8,19 @@ import (
|
||||||
"github.com/databricks/cli/bundle/internal/tf/schema"
|
"github.com/databricks/cli/bundle/internal/tf/schema"
|
||||||
"github.com/databricks/cli/libs/dyn"
|
"github.com/databricks/cli/libs/dyn"
|
||||||
"github.com/databricks/cli/libs/dyn/convert"
|
"github.com/databricks/cli/libs/dyn/convert"
|
||||||
|
"github.com/databricks/databricks-sdk-go/service/dashboards"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestConvertDashboard(t *testing.T) {
|
func TestConvertDashboard(t *testing.T) {
|
||||||
var src = resources.Dashboard{
|
var src = resources.Dashboard{
|
||||||
|
CreateDashboardRequest: &dashboards.CreateDashboardRequest{
|
||||||
DisplayName: "my dashboard",
|
DisplayName: "my dashboard",
|
||||||
WarehouseID: "f00dcafe",
|
WarehouseId: "f00dcafe",
|
||||||
ParentPath: "/some/path",
|
ParentPath: "/some/path",
|
||||||
|
},
|
||||||
|
|
||||||
EmbedCredentials: true,
|
EmbedCredentials: true,
|
||||||
|
|
||||||
Permissions: []resources.Permission{
|
Permissions: []resources.Permission{
|
||||||
|
|
Loading…
Reference in New Issue