Add dashboards to summary output

This commit is contained in:
Pieter Noordhuis 2024-10-18 15:41:10 +02:00
parent 43f9155de5
commit 5fb35e358f
No known key found for this signature in database
GPG Key ID: 12ACCCC104CF2930
3 changed files with 39 additions and 5 deletions

View File

@ -85,6 +85,12 @@ func TestInitializeURLs(t *testing.T) {
}, },
}, },
}, },
Dashboards: map[string]*resources.Dashboard{
"dashboard1": {
ID: "01ef8d56871e1d50ae30ce7375e42478",
DisplayName: "My special dashboard",
},
},
}, },
}, },
} }
@ -99,6 +105,7 @@ func TestInitializeURLs(t *testing.T) {
"qualityMonitor1": "https://mycompany.databricks.com/explore/data/catalog/schema/qualityMonitor1?o=123456", "qualityMonitor1": "https://mycompany.databricks.com/explore/data/catalog/schema/qualityMonitor1?o=123456",
"schema1": "https://mycompany.databricks.com/explore/data/catalog/schema?o=123456", "schema1": "https://mycompany.databricks.com/explore/data/catalog/schema?o=123456",
"cluster1": "https://mycompany.databricks.com/compute/clusters/1017-103929-vlr7jzcf?o=123456", "cluster1": "https://mycompany.databricks.com/compute/clusters/1017-103929-vlr7jzcf?o=123456",
"dashboard1": "https://mycompany.databricks.com/dashboardsv3/01ef8d56871e1d50ae30ce7375e42478/published?o=123456",
} }
initializeForWorkspace(b, "123456", "https://mycompany.databricks.com/") initializeForWorkspace(b, "123456", "https://mycompany.databricks.com/")

View File

@ -78,6 +78,7 @@ func (r *Resources) AllResources() []ResourceGroup {
collectResourceMap(descriptions["quality_monitors"], r.QualityMonitors), collectResourceMap(descriptions["quality_monitors"], r.QualityMonitors),
collectResourceMap(descriptions["schemas"], r.Schemas), collectResourceMap(descriptions["schemas"], r.Schemas),
collectResourceMap(descriptions["clusters"], r.Clusters), collectResourceMap(descriptions["clusters"], r.Clusters),
collectResourceMap(descriptions["dashboards"], r.Dashboards),
} }
} }
@ -176,5 +177,11 @@ func SupportedResources() map[string]ResourceDescription {
SingularTitle: "Cluster", SingularTitle: "Cluster",
PluralTitle: "Clusters", PluralTitle: "Clusters",
}, },
"dashboards": {
SingularName: "dashboard",
PluralName: "dashboards",
SingularTitle: "Dashboard",
PluralTitle: "Dashboards",
},
} }
} }

View File

@ -2,6 +2,8 @@ package resources
import ( import (
"context" "context"
"fmt"
"net/url"
"github.com/databricks/cli/libs/log" "github.com/databricks/cli/libs/log"
"github.com/databricks/databricks-sdk-go" "github.com/databricks/databricks-sdk-go"
@ -13,6 +15,7 @@ type Dashboard struct {
ID string `json:"id,omitempty" bundle:"readonly"` ID string `json:"id,omitempty" bundle:"readonly"`
Permissions []Permission `json:"permissions,omitempty"` Permissions []Permission `json:"permissions,omitempty"`
ModifiedStatus ModifiedStatus `json:"modified_status,omitempty" bundle:"internal"` ModifiedStatus ModifiedStatus `json:"modified_status,omitempty" bundle:"internal"`
URL string `json:"url,omitempty" bundle:"internal"`
// =========================== // ===========================
// === BEGIN OF API FIELDS === // === BEGIN OF API FIELDS ===
@ -50,12 +53,12 @@ type Dashboard struct {
FilePath string `json:"file_path,omitempty"` FilePath string `json:"file_path,omitempty"`
} }
func (s *Dashboard) UnmarshalJSON(b []byte) error { func (r *Dashboard) UnmarshalJSON(b []byte) error {
return marshal.Unmarshal(b, s) return marshal.Unmarshal(b, r)
} }
func (s Dashboard) MarshalJSON() ([]byte, error) { func (r Dashboard) MarshalJSON() ([]byte, error) {
return marshal.Marshal(s) return marshal.Marshal(r)
} }
func (*Dashboard) Exists(ctx context.Context, w *databricks.WorkspaceClient, id string) (bool, error) { func (*Dashboard) Exists(ctx context.Context, w *databricks.WorkspaceClient, id string) (bool, error) {
@ -63,7 +66,7 @@ func (*Dashboard) Exists(ctx context.Context, w *databricks.WorkspaceClient, id
DashboardId: id, DashboardId: id,
}) })
if err != nil { if err != nil {
log.Debugf(ctx, "Dashboard %s does not exist", id) log.Debugf(ctx, "dashboard %s does not exist", id)
return false, err return false, err
} }
return true, nil return true, nil
@ -72,3 +75,20 @@ func (*Dashboard) Exists(ctx context.Context, w *databricks.WorkspaceClient, id
func (*Dashboard) TerraformResourceName() string { func (*Dashboard) TerraformResourceName() string {
return "databricks_dashboard" return "databricks_dashboard"
} }
func (r *Dashboard) InitializeURL(baseURL url.URL) {
if r.ID == "" {
return
}
baseURL.Path = fmt.Sprintf("dashboardsv3/%s/published", r.ID)
r.URL = baseURL.String()
}
func (r *Dashboard) GetName() string {
return r.DisplayName
}
func (r *Dashboard) GetURL() string {
return r.URL
}