Compare commits

...

3 Commits

10 changed files with 2963 additions and 3096 deletions

View File

@ -40,4 +40,4 @@ vendor:
schema:
@echo "✓ Generating json-schema ..."
@go run $(shell find ./bundle/internal/schema -name "*.go" ! -name "*_test.go") ./bundle/internal/schema ./bundle/schema/jsonschema.json
@go run ./bundle/internal/schema ./bundle/internal/schema ./bundle/schema/jsonschema.json

View File

@ -2,7 +2,6 @@ package main
import (
"bytes"
"fmt"
"os"
"reflect"
"strings"
@ -13,6 +12,7 @@ import (
"github.com/databricks/cli/libs/dyn/convert"
"github.com/databricks/cli/libs/dyn/merge"
"github.com/databricks/cli/libs/dyn/yamlloader"
"github.com/databricks/cli/libs/dyn/yamlsaver"
"github.com/databricks/cli/libs/jsonschema"
)
@ -25,10 +25,12 @@ type annotation struct {
}
type annotationHandler struct {
ref map[string]annotation
empty map[string]annotation
ref annotationFile
empty annotationFile
}
type annotationFile map[string]map[string]annotation
const Placeholder = "PLACEHOLDER"
// Adds annotations to the JSON schema reading from the annotation files.
@ -50,7 +52,7 @@ func newAnnotationHandler(sources []string) (*annotationHandler, error) {
}
}
var data map[string]annotation
var data annotationFile
err := convert.ToTyped(&data, prev)
if err != nil {
@ -59,45 +61,43 @@ func newAnnotationHandler(sources []string) (*annotationHandler, error) {
d := &annotationHandler{}
d.ref = data
d.empty = map[string]annotation{}
d.empty = annotationFile{}
return d, nil
}
func (d *annotationHandler) addAnnotations(typ reflect.Type, s jsonschema.Schema) jsonschema.Schema {
refPath := jsonschema.TypePath(typ)
items := map[string]*jsonschema.Schema{}
items[refPath] = &s
for k, v := range s.Properties {
itemRefPath := fmt.Sprintf("%s.%s", refPath, k)
items[itemRefPath] = v
refPath := getPath(typ)
shouldHandle := strings.HasPrefix(refPath, "github.com")
if !shouldHandle {
return s
}
for k, v := range items {
// Skipping all default types like int, string, etc.
shouldHandle := strings.HasPrefix(refPath, "github.com")
if !shouldHandle {
continue
}
annotations := d.ref[refPath]
if annotations == nil {
annotations = map[string]annotation{}
}
item, ok := d.ref[k]
rootTypeAnnotation, ok := annotations[RootTypeKey]
if ok {
assingAnnotation(&s, rootTypeAnnotation)
}
for k, v := range s.Properties {
item, ok := annotations[k]
if !ok {
item = annotation{}
}
if item.Description == "" {
item.Description = Placeholder
d.empty[k] = item
}
if item.Description != Placeholder {
v.Description = item.Description
}
if item.Default != nil {
v.Default = item.Default
emptyAnnotations := d.empty[refPath]
if emptyAnnotations == nil {
emptyAnnotations = map[string]annotation{}
d.empty[refPath] = emptyAnnotations
}
emptyAnnotations[k] = item
}
v.MarkdownDescription = item.MarkdownDescription
v.Title = item.Title
v.Enum = item.Enum
assingAnnotation(v, item)
}
return s
}
@ -109,22 +109,46 @@ func (d *annotationHandler) sync(outputPath string) error {
return err
}
existing := map[string]annotation{}
err = yaml.Unmarshal(file, &existing)
existing, err := yamlloader.LoadYAML(outputPath, bytes.NewBuffer(file))
if err != nil {
return err
}
emptyB, err := yaml.Marshal(d.empty)
if err != nil {
return err
}
for k, v := range d.empty {
existing[k] = v
}
empty, err := yamlloader.LoadYAML("", bytes.NewBuffer(emptyB))
if err != nil {
return err
}
b, err := yaml.Marshal(existing)
mergedFile, err := merge.Merge(existing, empty)
if err != nil {
return err
}
err = os.WriteFile(outputPath, b, 0644)
saver := yamlsaver.NewSaver()
config, _ := mergedFile.AsMap()
err = saver.SaveAsYAML(config, outputPath, true)
if err != nil {
return err
}
return nil
}
func getPath(typ reflect.Type) string {
return typ.PkgPath() + "." + typ.Name()
}
func assingAnnotation(s *jsonschema.Schema, a annotation) {
if a.Description != Placeholder {
s.Description = a.Description
}
if a.Default != nil {
s.Default = a.Default
}
s.MarkdownDescription = a.MarkdownDescription
s.Title = a.Title
s.Enum = a.Enum
}

View File

@ -1,325 +1,289 @@
github.com/databricks/cli/bundle/config.Artifact:
description: Defines the attributes to build an artifact.
title: Artifact
github.com/databricks/cli/bundle/config.Artifact.build:
description: The command to build the artifact.
github.com/databricks/cli/bundle/config.Artifact.executable:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Artifact.files:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Artifact.path:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Artifact.type:
description: PLACEHOLDER
build:
description: An optional set of non-default build commands that you want to run locally before deployment. For Python wheel builds, the Databricks CLI assumes that it can find a local install of the Python wheel package to run builds, and it runs the command python setup.py bdist_wheel by default during each bundle deployment. To specify multiple build commands, separate each command with double-ampersand (&&) characters.
executable:
description: PLACEHOLDER
files:
description: PLACEHOLDER
path:
description: PLACEHOLDER
type:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.ArtifactFile:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.ArtifactFile.source:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.ArtifactType:
description: PLACEHOLDER
source:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Bundle:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Bundle.cluster_id:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Bundle.compute_id:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Bundle.databricks_cli_version:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Bundle.deployment:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Bundle.git:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Bundle.name:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Bundle.uuid:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Command:
description: PLACEHOLDER
cluster_id:
description: PLACEHOLDER
compute_id:
description: PLACEHOLDER
databricks_cli_version:
description: PLACEHOLDER
deployment:
description: PLACEHOLDER
git:
description: PLACEHOLDER
name:
description: PLACEHOLDER
uuid:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Deployment:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Deployment.fail_on_active_runs:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Deployment.lock:
description: PLACEHOLDER
fail_on_active_runs:
description: PLACEHOLDER
lock:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Experimental:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Experimental.pydabs:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Experimental.python_wheel_wrapper:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Experimental.scripts:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Experimental.use_legacy_run_as:
description: PLACEHOLDER
pydabs:
description: PLACEHOLDER
python_wheel_wrapper:
description: PLACEHOLDER
scripts:
description: PLACEHOLDER
use_legacy_run_as:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Git:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Git.branch:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Git.origin_url:
description: PLACEHOLDER
branch:
description: PLACEHOLDER
origin_url:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Lock:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Lock.enabled:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Lock.force:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Mode:
description: PLACEHOLDER
enabled:
description: PLACEHOLDER
force:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Presets:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Presets.jobs_max_concurrent_runs:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Presets.name_prefix:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Presets.pipelines_development:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Presets.source_linked_deployment:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Presets.tags:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Presets.trigger_pause_status:
description: PLACEHOLDER
jobs_max_concurrent_runs:
description: PLACEHOLDER
name_prefix:
description: PLACEHOLDER
pipelines_development:
description: PLACEHOLDER
source_linked_deployment:
description: PLACEHOLDER
tags:
description: PLACEHOLDER
trigger_pause_status:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.PyDABs:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.PyDABs.enabled:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.PyDABs.import:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.PyDABs.venv_path:
description: PLACEHOLDER
enabled:
description: PLACEHOLDER
import:
description: PLACEHOLDER
venv_path:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.clusters:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.dashboards:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.experiments:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.jobs:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.model_serving_endpoints:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.models:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.pipelines:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.quality_monitors:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.registered_models:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.schemas:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Resources.volumes:
description: PLACEHOLDER
clusters:
description: PLACEHOLDER
dashboards:
description: PLACEHOLDER
experiments:
description: PLACEHOLDER
jobs:
description: PLACEHOLDER
model_serving_endpoints:
description: PLACEHOLDER
models:
description: PLACEHOLDER
pipelines:
description: PLACEHOLDER
quality_monitors:
description: PLACEHOLDER
registered_models:
description: PLACEHOLDER
schemas:
description: PLACEHOLDER
volumes:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.artifacts:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.bundle:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.experimental:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.include:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.permissions:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.presets:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.resources:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.run_as:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.sync:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.targets:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.variables:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Root.workspace:
description: PLACEHOLDER
artifacts:
description: Defines the attributes to build an artifact
bundle:
description: PLACEHOLDER
experimental:
description: PLACEHOLDER
include:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
presets:
description: PLACEHOLDER
resources:
description: PLACEHOLDER
run_as:
description: PLACEHOLDER
sync:
description: PLACEHOLDER
targets:
description: PLACEHOLDER
variables:
description: PLACEHOLDER
workspace:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Sync:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Sync.exclude:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Sync.include:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Sync.paths:
description: PLACEHOLDER
exclude:
description: PLACEHOLDER
include:
description: PLACEHOLDER
paths:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.artifacts:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.bundle:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.cluster_id:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.compute_id:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.default:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.git:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.mode:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.permissions:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.presets:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.resources:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.run_as:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.sync:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.variables:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Target.workspace:
description: PLACEHOLDER
artifacts:
description: PLACEHOLDER
bundle:
description: PLACEHOLDER
cluster_id:
description: PLACEHOLDER
compute_id:
description: PLACEHOLDER
default:
description: PLACEHOLDER
git:
description: PLACEHOLDER
mode:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
presets:
description: PLACEHOLDER
resources:
description: PLACEHOLDER
run_as:
description: PLACEHOLDER
sync:
description: PLACEHOLDER
variables:
description: PLACEHOLDER
workspace:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.artifact_path:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.auth_type:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.azure_client_id:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.azure_environment:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.azure_login_app_id:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.azure_tenant_id:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.azure_use_msi:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.azure_workspace_resource_id:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.client_id:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.file_path:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.google_service_account:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.host:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.profile:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.resource_path:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.root_path:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config.Workspace.state_path:
description: PLACEHOLDER
artifact_path:
description: PLACEHOLDER
auth_type:
description: PLACEHOLDER
azure_client_id:
description: PLACEHOLDER
azure_environment:
description: PLACEHOLDER
azure_login_app_id:
description: PLACEHOLDER
azure_tenant_id:
description: PLACEHOLDER
azure_use_msi:
description: PLACEHOLDER
azure_workspace_resource_id:
description: PLACEHOLDER
client_id:
description: PLACEHOLDER
file_path:
description: PLACEHOLDER
google_service_account:
description: PLACEHOLDER
host:
description: PLACEHOLDER
profile:
description: PLACEHOLDER
resource_path:
description: PLACEHOLDER
root_path:
description: PLACEHOLDER
state_path:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Grant:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Grant.principal:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Grant.privileges:
description: PLACEHOLDER
principal:
description: PLACEHOLDER
privileges:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Permission:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Permission.group_name:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Permission.level:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Permission.service_principal_name:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Permission.user_name:
description: PLACEHOLDER
group_name:
description: PLACEHOLDER
level:
description: PLACEHOLDER
service_principal_name:
description: PLACEHOLDER
user_name:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.alert:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.cluster:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.cluster_policy:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.dashboard:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.instance_pool:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.job:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.metastore:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.notification_destination:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.pipeline:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.query:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.service_principal:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Lookup.warehouse:
description: PLACEHOLDER
alert:
description: PLACEHOLDER
cluster:
description: PLACEHOLDER
cluster_policy:
description: PLACEHOLDER
dashboard:
description: PLACEHOLDER
instance_pool:
description: PLACEHOLDER
job:
description: PLACEHOLDER
metastore:
description: PLACEHOLDER
notification_destination:
description: PLACEHOLDER
pipeline:
description: PLACEHOLDER
query:
description: PLACEHOLDER
service_principal:
description: PLACEHOLDER
warehouse:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.TargetVariable:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.TargetVariable.default:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.TargetVariable.description:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.TargetVariable.lookup:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.TargetVariable.type:
description: PLACEHOLDER
default:
description: PLACEHOLDER
description:
description: PLACEHOLDER
lookup:
description: PLACEHOLDER
type:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Variable:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Variable.default:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Variable.description:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Variable.lookup:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.Variable.type:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/variable.VariableType:
description: PLACEHOLDER
github.com/databricks/cli/libs/exec.ExecutableType:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.RestartWindowDaysOfWeek:
description: PLACEHOLDER
default:
description: PLACEHOLDER
description:
description: PLACEHOLDER
lookup:
description: PLACEHOLDER
type:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.Ai21LabsConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.Ai21LabsConfig.ai21labs_api_key:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.Ai21LabsConfig.ai21labs_api_key_plaintext:
description: PLACEHOLDER
ai21labs_api_key:
description: PLACEHOLDER
ai21labs_api_key_plaintext:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.GoogleCloudVertexAiConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.GoogleCloudVertexAiConfig.private_key:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.GoogleCloudVertexAiConfig.private_key_plaintext:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.GoogleCloudVertexAiConfig.project_id:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.GoogleCloudVertexAiConfig.region:
description: PLACEHOLDER
private_key:
description: PLACEHOLDER
private_key_plaintext:
description: PLACEHOLDER
project_id:
description: PLACEHOLDER
region:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.microsoft_entra_client_id:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.microsoft_entra_client_secret:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.microsoft_entra_client_secret_plaintext:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.microsoft_entra_tenant_id:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.openai_api_base:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.openai_api_key:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.openai_api_key_plaintext:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.openai_api_type:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.openai_api_version:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.openai_deployment_name:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.OpenAiConfig.openai_organization:
description: PLACEHOLDER
microsoft_entra_client_id:
description: PLACEHOLDER
microsoft_entra_client_secret:
description: PLACEHOLDER
microsoft_entra_client_secret_plaintext:
description: PLACEHOLDER
microsoft_entra_tenant_id:
description: PLACEHOLDER
openai_api_base:
description: PLACEHOLDER
openai_api_key:
description: PLACEHOLDER
openai_api_key_plaintext:
description: PLACEHOLDER
openai_api_type:
description: PLACEHOLDER
openai_api_version:
description: PLACEHOLDER
openai_deployment_name:
description: PLACEHOLDER
openai_organization:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.PaLmConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.PaLmConfig.palm_api_key:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.PaLmConfig.palm_api_key_plaintext:
description: PLACEHOLDER
palm_api_key:
description: PLACEHOLDER
palm_api_key_plaintext:
description: PLACEHOLDER

File diff suppressed because it is too large Load Diff

View File

@ -1,344 +1,112 @@
github.com/databricks/cli/bundle/config/resources.Cluster:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Cluster.data_security_mode:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Cluster.docker_image:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Cluster.permissions:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Cluster.runtime_engine:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Cluster.workload_type:
description: PLACEHOLDER
data_security_mode:
description: PLACEHOLDER
docker_image:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
runtime_engine:
description: PLACEHOLDER
workload_type:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Dashboard:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Dashboard.embed_credentials:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Dashboard.file_path:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Dashboard.permissions:
description: PLACEHOLDER
embed_credentials:
description: PLACEHOLDER
file_path:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Job:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Job.health:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Job.permissions:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Job.run_as:
description: PLACEHOLDER
health:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
run_as:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.MlflowExperiment:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.MlflowExperiment.permissions:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.MlflowModel:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.MlflowModel.permissions:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.ModelServingEndpoint:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.ModelServingEndpoint.permissions:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Pipeline:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Pipeline.permissions:
description: PLACEHOLDER
permissions:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.QualityMonitor:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.QualityMonitor.table_name:
description: PLACEHOLDER
table_name:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.RegisteredModel:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.RegisteredModel.grants:
description: PLACEHOLDER
grants:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Schema:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Schema.grants:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Schema.properties:
description: PLACEHOLDER
grants:
description: PLACEHOLDER
properties:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Volume:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Volume.grants:
description: PLACEHOLDER
github.com/databricks/cli/bundle/config/resources.Volume.volume_type:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/catalog.MonitorCronSchedule:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/catalog.MonitorDataClassificationConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/catalog.MonitorDestination:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/catalog.MonitorInferenceLog:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/catalog.MonitorMetric:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/catalog.MonitorNotifications:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/catalog.MonitorSnapshot:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/catalog.MonitorTimeSeries:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/catalog.VolumeType:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.Adlsgen2Info:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.AutoScale:
description: PLACEHOLDER
grants:
description: PLACEHOLDER
volume_type:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.AwsAttributes:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.AwsAttributes.availability:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.AwsAttributes.ebs_volume_type:
description: PLACEHOLDER
availability:
description: PLACEHOLDER
ebs_volume_type:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.AzureAttributes:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.AzureAttributes.availability:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.ClientsTypes:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.ClusterLogConf:
description: PLACEHOLDER
availability:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.ClusterSpec:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.ClusterSpec.data_security_mode:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.ClusterSpec.docker_image:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.ClusterSpec.runtime_engine:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.ClusterSpec.workload_type:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.DbfsStorageInfo:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.DockerBasicAuth:
description: PLACEHOLDER
data_security_mode:
description: PLACEHOLDER
docker_image:
description: PLACEHOLDER
runtime_engine:
description: PLACEHOLDER
workload_type:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.DockerImage:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.DockerImage.basic_auth:
description: PLACEHOLDER
basic_auth:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.GcpAttributes:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.GcpAttributes.availability:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.GcsStorageInfo:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.InitScriptInfo:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.Library:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.LocalFileInfo:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.LogAnalyticsInfo:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.MavenLibrary:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.PythonPyPiLibrary:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.RCranLibrary:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.S3StorageInfo:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.VolumesStorageInfo:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.WorkloadType:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/compute.WorkspaceStorageInfo:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/dashboards.LifecycleState:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.Condition:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.ConditionTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.Continuous:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.CronSchedule:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.DbtTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.FileArrivalTriggerConfiguration:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.ForEachTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.Format:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.GitProvider:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.GitSource.git_snapshot:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobCluster:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobDeployment:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobEmailNotifications:
description: PLACEHOLDER
availability:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.GitSource:
git_snapshot:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobEnvironment:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobEnvironment.spec:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobNotificationSettings:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobParameterDefinition:
description: PLACEHOLDER
spec:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobsHealthRule:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobsHealthRule.metric:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobsHealthRule.op:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobsHealthRules.rules:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.NotebookTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.PauseStatus:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.PeriodicTriggerConfiguration:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.PeriodicTriggerConfigurationTimeUnit:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.PipelineParams:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.PipelineTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.PythonWheelTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.QueueSettings:
description: PLACEHOLDER
metric:
description: PLACEHOLDER
op:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.JobsHealthRules:
rules:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.RunJobTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.RunJobTask.python_named_params:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.SparkJarTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.SparkPythonTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.SparkSubmitTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.SqlTask:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.SqlTaskAlert:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.SqlTaskDashboard:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.SqlTaskFile:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.SqlTaskQuery:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.SqlTaskSubscription:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.TableUpdateTriggerConfiguration:
description: PLACEHOLDER
python_named_params:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.Task:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.Task.health:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.TaskDependency:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.TaskEmailNotifications:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.TaskNotificationSettings:
description: PLACEHOLDER
health:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.TriggerSettings:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.TriggerSettings.table_update:
description: PLACEHOLDER
table_update:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.Webhook:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.Webhook.id:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/jobs.WebhookNotifications:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/ml.ExperimentTag:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/ml.ModelTag:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/ml.ModelVersion:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/ml.ModelVersionTag:
description: PLACEHOLDER
id:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.CronTrigger:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.CronTrigger.quartz_cron_schedule:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.CronTrigger.timezone_id:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.FileLibrary:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.Filters:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.IngestionConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.IngestionGatewayPipelineDefinition:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.IngestionPipelineDefinition:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.ManualTrigger:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.NotebookLibrary:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.Notifications:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.PipelineCluster:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.PipelineClusterAutoscale:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.PipelineDeployment:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.PipelineLibrary:
description: PLACEHOLDER
quartz_cron_schedule:
description: PLACEHOLDER
timezone_id:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.PipelineTrigger:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.PipelineTrigger.cron:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.PipelineTrigger.manual:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.ReportSpec:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.RestartWindow:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.SchemaSpec:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.TableSpec:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/pipelines.TableSpecificConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AiGatewayConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AiGatewayGuardrailParameters:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AiGatewayGuardrailPiiBehavior:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AiGatewayGuardrails:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AiGatewayInferenceTableConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AiGatewayRateLimit:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AiGatewayUsageTrackingConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AmazonBedrockConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AnthropicConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.AutoCaptureConfigInput:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.CohereConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.DatabricksModelServingConfig:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.EndpointCoreConfigInput:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.EndpointTag:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.ExternalModel:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.RateLimit:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.Route:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.ServedEntityInput:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.ServedModelInput:
description: PLACEHOLDER
github.com/databricks/databricks-sdk-go/service/serving.TrafficConfig:
description: PLACEHOLDER
cron:
description: PLACEHOLDER
manual:
description: PLACEHOLDER

View File

@ -4,9 +4,13 @@ import (
"io"
"os"
"path"
"reflect"
"runtime"
"testing"
"github.com/databricks/cli/bundle/config"
"github.com/databricks/cli/libs/jsonschema"
"github.com/ghodss/yaml"
"github.com/stretchr/testify/assert"
)
@ -61,3 +65,48 @@ func TestRequiredAnnotationsForNewFields(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, string(original), string(copied), "Missing JSON-schema descriptions for new config fields in bundle/internal/schema/annotations.yml")
}
// Checks whether types in annotation files are still present in Config type
func TestNoDetachedAnnotations(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip()
}
files := []string{
"annotations.yml",
"annotations_openapi.yml",
"annotations_openapi_overrides.yml",
}
types := map[string]bool{}
for _, file := range files {
annotations, err := getAnnotations(file)
assert.NoError(t, err)
for k := range annotations {
types[k] = false
}
}
_, err := jsonschema.FromType(reflect.TypeOf(config.Root{}), []func(reflect.Type, jsonschema.Schema) jsonschema.Schema{
func(typ reflect.Type, s jsonschema.Schema) jsonschema.Schema {
delete(types, getPath(typ))
return s
},
})
assert.NoError(t, err)
for typ := range types {
t.Errorf("Type `%s` in annotations file is not found in `root.Config` type", typ)
}
assert.Empty(t, types, "Detached annotations found, regenerate schema and check for package path changes")
}
func getAnnotations(path string) (annotationFile, error) {
b, err := os.ReadFile(path)
if err != nil {
return nil, err
}
var data annotationFile
err = yaml.Unmarshal(b, &data)
return data, err
}

View File

@ -26,6 +26,8 @@ type openapiParser struct {
ref map[string]jsonschema.Schema
}
const RootTypeKey = "_"
func newParser(path string) (*openapiParser, error) {
b, err := os.ReadFile(path)
if err != nil {
@ -93,8 +95,8 @@ func (p *openapiParser) findRef(typ reflect.Type) (jsonschema.Schema, bool) {
// Use the OpenAPI spec to load descriptions for the given type.
func (p *openapiParser) extractAnnotations(typ reflect.Type, outputPath, overridesPath string) error {
annotations := map[string]annotation{}
overrides := map[string]annotation{}
annotations := annotationFile{}
overrides := annotationFile{}
b, err := os.ReadFile(overridesPath)
if err != nil {
@ -105,7 +107,7 @@ func (p *openapiParser) extractAnnotations(typ reflect.Type, outputPath, overrid
return err
}
if overrides == nil {
overrides = map[string]annotation{}
overrides = annotationFile{}
}
_, err = jsonschema.FromType(typ, []func(reflect.Type, jsonschema.Schema) jsonschema.Schema{
@ -115,25 +117,22 @@ func (p *openapiParser) extractAnnotations(typ reflect.Type, outputPath, overrid
return s
}
basePath := jsonschema.TypePath(typ)
annotations[basePath] = annotation{
Description: ref.Description,
Enum: ref.Enum,
}
if ref.Description == "" {
addEmptyOverride(basePath, overrides)
basePath := getPath(typ)
pkg := map[string]annotation{}
annotations[basePath] = pkg
if ref.Description != "" || ref.Enum != nil {
pkg[RootTypeKey] = annotation{Description: ref.Description, Enum: ref.Enum}
}
for k := range s.Properties {
itemPath := fmt.Sprintf("%s.%s", basePath, k)
if refProp, ok := ref.Properties[k]; ok {
annotations[itemPath] = annotation{Description: refProp.Description, Enum: refProp.Enum}
pkg[k] = annotation{Description: refProp.Description, Enum: refProp.Enum}
if refProp.Description == "" {
addEmptyOverride(itemPath, overrides)
addEmptyOverride(k, basePath, overrides)
}
} else {
addEmptyOverride(itemPath, overrides)
addEmptyOverride(k, basePath, overrides)
}
}
return s
@ -166,17 +165,22 @@ func (p *openapiParser) extractAnnotations(typ reflect.Type, outputPath, overrid
return nil
}
func addEmptyOverride(path string, overrides map[string]annotation) {
if overrides[path].Description == "" {
overrides[path] = annotation{Description: Placeholder}
func addEmptyOverride(key, pkg string, overridesFile annotationFile) {
if overridesFile[pkg] == nil {
overridesFile[pkg] = map[string]annotation{}
}
a, ok := overrides[path]
overrides := overridesFile[pkg]
if overrides[key].Description == "" {
overrides[key] = annotation{Description: Placeholder}
}
a, ok := overrides[key]
if !ok {
a = annotation{}
}
if a.Description == "" {
a.Description = Placeholder
}
overrides[path] = a
overrides[key] = a
}

View File

@ -935,10 +935,9 @@
"anyOf": [
{
"type": "object",
"description": "Defines the attributes to build an artifact.",
"properties": {
"build": {
"description": "The command to build the artifact.",
"description": "An optional set of non-default build commands that you want to run locally before deployment. For Python wheel builds, the Databricks CLI assumes that it can find a local install of the Python wheel package to run builds, and it runs the command python setup.py bdist_wheel by default during each bundle deployment. To specify multiple build commands, separate each command with double-ampersand (\u0026\u0026) characters.",
"$ref": "#/$defs/string"
},
"executable": {
@ -957,8 +956,7 @@
"additionalProperties": false,
"required": [
"type"
],
"title": "Artifact"
]
},
{
"type": "string",
@ -6159,6 +6157,7 @@
"type": "object",
"properties": {
"artifacts": {
"description": "Defines the attributes to build an artifact",
"$ref": "#/$defs/map/github.com/databricks/cli/bundle/config.Artifact"
},
"bundle": {

View File

@ -52,7 +52,7 @@ func (c *constructor) Definitions() map[string]any {
// Remove the root type from the definitions. We don't need to include it in
// the definitions because it will be inlined as the root of the generated JSON schema.
delete(defs, TypePath(c.root))
delete(defs, typePath(c.root))
if len(defs) == 0 {
return nil
@ -106,14 +106,14 @@ func FromType(typ reflect.Type, fns []func(typ reflect.Type, s Schema) Schema) (
}
}
res := c.definitions[TypePath(typ)]
res := c.definitions[typePath(typ)]
res.Definitions = c.Definitions()
return res, nil
}
// TypePath computes a unique string representation of the type. $ref in the generated
// typePath computes a unique string representation of the type. $ref in the generated
// JSON schema will refer to this path. See TestTypePath for examples outputs.
func TypePath(typ reflect.Type) string {
func typePath(typ reflect.Type) string {
// Pointers have a typ.Name() of "". Dereference them to get the underlying type.
for typ.Kind() == reflect.Ptr {
typ = typ.Elem()
@ -125,7 +125,7 @@ func TypePath(typ reflect.Type) string {
// Recursively call typePath, to handle slices of slices / maps.
if typ.Kind() == reflect.Slice {
return path.Join("slice", TypePath(typ.Elem()))
return path.Join("slice", typePath(typ.Elem()))
}
if typ.Kind() == reflect.Map {
@ -134,7 +134,7 @@ func TypePath(typ reflect.Type) string {
}
// Recursively call typePath, to handle maps of maps / slices.
return path.Join("map", TypePath(typ.Elem()))
return path.Join("map", typePath(typ.Elem()))
}
switch {
@ -157,7 +157,7 @@ func (c *constructor) walk(typ reflect.Type) (string, error) {
typ = typ.Elem()
}
typPath := TypePath(typ)
typPath := typePath(typ)
// Return early if the type has already been seen, to avoid infinite recursion.
if _, ok := c.seen[typPath]; ok {

View File

@ -510,12 +510,12 @@ func TestTypePath(t *testing.T) {
for _, tc := range tcases {
t.Run(tc.typ.String(), func(t *testing.T) {
assert.Equal(t, tc.path, TypePath(tc.typ))
assert.Equal(t, tc.path, typePath(tc.typ))
})
}
// Maps with non-string keys should panic.
assert.PanicsWithValue(t, "found map with non-string key: int", func() {
TypePath(reflect.TypeOf(map[int]int{}))
typePath(reflect.TypeOf(map[int]int{}))
})
}