mirror of https://github.com/databricks/cli.git
Finalize
This commit is contained in:
parent
7a99df58ec
commit
488a1fbb67
|
@ -41,178 +41,66 @@ type Lookup struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *Lookup) constructResolver() (resolver, error) {
|
func (l *Lookup) constructResolver() (resolver, error) {
|
||||||
|
var resolvers []resolver
|
||||||
|
|
||||||
if l.Alert != "" {
|
if l.Alert != "" {
|
||||||
return lookupAlert{name: l.Alert}, nil
|
resolvers = append(resolvers, lookupAlert{name: l.Alert})
|
||||||
}
|
}
|
||||||
if l.ClusterPolicy != "" {
|
if l.ClusterPolicy != "" {
|
||||||
return lookupClusterPolicy{name: l.ClusterPolicy}, nil
|
resolvers = append(resolvers, lookupClusterPolicy{name: l.ClusterPolicy})
|
||||||
}
|
}
|
||||||
if l.Cluster != "" {
|
if l.Cluster != "" {
|
||||||
return lookupCluster{name: l.Cluster}, nil
|
resolvers = append(resolvers, lookupCluster{name: l.Cluster})
|
||||||
}
|
}
|
||||||
if l.Dashboard != "" {
|
if l.Dashboard != "" {
|
||||||
return lookupDashboard{name: l.Dashboard}, nil
|
resolvers = append(resolvers, lookupDashboard{name: l.Dashboard})
|
||||||
}
|
}
|
||||||
if l.InstancePool != "" {
|
if l.InstancePool != "" {
|
||||||
return lookupInstancePool{name: l.InstancePool}, nil
|
resolvers = append(resolvers, lookupInstancePool{name: l.InstancePool})
|
||||||
}
|
}
|
||||||
if l.Job != "" {
|
if l.Job != "" {
|
||||||
return lookupJob{name: l.Job}, nil
|
resolvers = append(resolvers, lookupJob{name: l.Job})
|
||||||
}
|
}
|
||||||
if l.Metastore != "" {
|
if l.Metastore != "" {
|
||||||
return lookupMetastore{name: l.Metastore}, nil
|
resolvers = append(resolvers, lookupMetastore{name: l.Metastore})
|
||||||
}
|
}
|
||||||
if l.Pipeline != "" {
|
if l.Pipeline != "" {
|
||||||
return lookupPipeline{name: l.Pipeline}, nil
|
resolvers = append(resolvers, lookupPipeline{name: l.Pipeline})
|
||||||
}
|
}
|
||||||
if l.Query != "" {
|
if l.Query != "" {
|
||||||
return lookupQuery{name: l.Query}, nil
|
resolvers = append(resolvers, lookupQuery{name: l.Query})
|
||||||
}
|
}
|
||||||
if l.ServicePrincipal != "" {
|
if l.ServicePrincipal != "" {
|
||||||
return lookupServicePrincipal{name: l.ServicePrincipal}, nil
|
resolvers = append(resolvers, lookupServicePrincipal{name: l.ServicePrincipal})
|
||||||
}
|
}
|
||||||
if l.Warehouse != "" {
|
if l.Warehouse != "" {
|
||||||
return lookupWarehouse{name: l.Warehouse}, nil
|
resolvers = append(resolvers, lookupWarehouse{name: l.Warehouse})
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, fmt.Errorf("no valid lookup fields provided")
|
switch len(resolvers) {
|
||||||
|
case 0:
|
||||||
|
return nil, fmt.Errorf("no valid lookup fields provided")
|
||||||
|
case 1:
|
||||||
|
return resolvers[0], nil
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("exactly one lookup field must be provided")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// func LookupFromMap(m map[string]any) *Lookup {
|
func (l *Lookup) Resolve(ctx context.Context, w *databricks.WorkspaceClient) (string, error) {
|
||||||
// l := &Lookup{}
|
r, err := l.constructResolver()
|
||||||
// if v, ok := m["alert"]; ok {
|
if err != nil {
|
||||||
// l.Alert = v.(string)
|
return "", err
|
||||||
// }
|
}
|
||||||
// if v, ok := m["cluster_policy"]; ok {
|
|
||||||
// l.ClusterPolicy = v.(string)
|
|
||||||
// }
|
|
||||||
// if v, ok := m["cluster"]; ok {
|
|
||||||
// l.Cluster = v.(string)
|
|
||||||
// }
|
|
||||||
// if v, ok := m["dashboard"]; ok {
|
|
||||||
// l.Dashboard = v.(string)
|
|
||||||
// }
|
|
||||||
// if v, ok := m["instance_pool"]; ok {
|
|
||||||
// l.InstancePool = v.(string)
|
|
||||||
// }
|
|
||||||
// if v, ok := m["job"]; ok {
|
|
||||||
// l.Job = v.(string)
|
|
||||||
// }
|
|
||||||
// if v, ok := m["metastore"]; ok {
|
|
||||||
// l.Metastore = v.(string)
|
|
||||||
// }
|
|
||||||
// if v, ok := m["pipeline"]; ok {
|
|
||||||
// l.Pipeline = v.(string)
|
|
||||||
// }
|
|
||||||
// if v, ok := m["query"]; ok {
|
|
||||||
// l.Query = v.(string)
|
|
||||||
// }
|
|
||||||
// if v, ok := m["service_principal"]; ok {
|
|
||||||
// l.ServicePrincipal = v.(string)
|
|
||||||
// }
|
|
||||||
// if v, ok := m["warehouse"]; ok {
|
|
||||||
// l.Warehouse = v.(string)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return l
|
return r.Resolve(ctx, w)
|
||||||
// }
|
}
|
||||||
|
|
||||||
// func (l *Lookup) Resolve(ctx context.Context, w *databricks.WorkspaceClient) (string, error) {
|
|
||||||
// if err := l.validate(); err != nil {
|
|
||||||
// return "", err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// r := allResolvers()
|
|
||||||
// if l.Alert != "" {
|
|
||||||
// return r.Alert(ctx, w, l.Alert)
|
|
||||||
// }
|
|
||||||
// if l.ClusterPolicy != "" {
|
|
||||||
// return r.ClusterPolicy(ctx, w, l.ClusterPolicy)
|
|
||||||
// }
|
|
||||||
// if l.Cluster != "" {
|
|
||||||
// return r.Cluster(ctx, w, l.Cluster)
|
|
||||||
// }
|
|
||||||
// if l.Dashboard != "" {
|
|
||||||
// return r.Dashboard(ctx, w, l.Dashboard)
|
|
||||||
// }
|
|
||||||
// if l.InstancePool != "" {
|
|
||||||
// return r.InstancePool(ctx, w, l.InstancePool)
|
|
||||||
// }
|
|
||||||
// if l.Job != "" {
|
|
||||||
// return r.Job(ctx, w, l.Job)
|
|
||||||
// }
|
|
||||||
// if l.Metastore != "" {
|
|
||||||
// return r.Metastore(ctx, w, l.Metastore)
|
|
||||||
// }
|
|
||||||
// if l.Pipeline != "" {
|
|
||||||
// return r.Pipeline(ctx, w, l.Pipeline)
|
|
||||||
// }
|
|
||||||
// if l.Query != "" {
|
|
||||||
// return r.Query(ctx, w, l.Query)
|
|
||||||
// }
|
|
||||||
// if l.ServicePrincipal != "" {
|
|
||||||
// return r.ServicePrincipal(ctx, w, l.ServicePrincipal)
|
|
||||||
// }
|
|
||||||
// if l.Warehouse != "" {
|
|
||||||
// return r.Warehouse(ctx, w, l.Warehouse)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return "", fmt.Errorf("no valid lookup fields provided")
|
|
||||||
// }
|
|
||||||
|
|
||||||
func (l *Lookup) String() string {
|
func (l *Lookup) String() string {
|
||||||
r, _ := l.constructResolver()
|
r, _ := l.constructResolver()
|
||||||
if r != nil {
|
if r == nil {
|
||||||
return r.String()
|
return ""
|
||||||
}
|
}
|
||||||
return ""
|
|
||||||
}
|
return r.String()
|
||||||
|
|
||||||
func (l *Lookup) validate() error {
|
|
||||||
// Validate that only one field is set
|
|
||||||
count := 0
|
|
||||||
if l.Alert != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.ClusterPolicy != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.Cluster != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.Dashboard != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.InstancePool != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.Job != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.Metastore != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.Pipeline != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.Query != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.ServicePrincipal != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
if l.Warehouse != "" {
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
|
|
||||||
if count != 1 {
|
|
||||||
return fmt.Errorf("exactly one lookup field must be provided")
|
|
||||||
}
|
|
||||||
|
|
||||||
if strings.Contains(l.String(), "${var") {
|
|
||||||
return fmt.Errorf("lookup fields cannot contain variable references")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ type Variable struct {
|
||||||
|
|
||||||
// The value of this field will be used to lookup the resource by name
|
// The value of this field will be used to lookup the resource by name
|
||||||
// And assign the value of the variable to ID of the resource found.
|
// And assign the value of the variable to ID of the resource found.
|
||||||
// Lookup *Lookup `json:"lookup,omitempty"`
|
Lookup *Lookup `json:"lookup,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// True if the variable has been assigned a default value. Variables without a
|
// True if the variable has been assigned a default value. Variables without a
|
||||||
|
|
Loading…
Reference in New Issue