mirror of https://github.com/databricks/cli.git
40 lines
864 B
Go
40 lines
864 B
Go
|
package tfdyn
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"github.com/databricks/cli/bundle/internal/tf/schema"
|
||
|
"github.com/databricks/cli/libs/dyn"
|
||
|
)
|
||
|
|
||
|
func convertGrantsResource(ctx context.Context, vin dyn.Value) *schema.ResourceGrants {
|
||
|
grants, ok := vin.Get("grants").AsSequence()
|
||
|
if !ok || len(grants) == 0 {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
resource := &schema.ResourceGrants{}
|
||
|
for _, permission := range grants {
|
||
|
principal, _ := permission.Get("principal").AsString()
|
||
|
v, _ := permission.Get("privileges").AsSequence()
|
||
|
|
||
|
// Turn privileges into a slice of strings.
|
||
|
var privileges []string
|
||
|
for _, privilege := range v {
|
||
|
str, ok := privilege.AsString()
|
||
|
if !ok {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
privileges = append(privileges, str)
|
||
|
}
|
||
|
|
||
|
resource.Grant = append(resource.Grant, schema.ResourceGrantsGrant{
|
||
|
Principal: principal,
|
||
|
Privileges: privileges,
|
||
|
})
|
||
|
}
|
||
|
|
||
|
return resource
|
||
|
}
|