2023-06-12 12:23:21 +00:00
// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
package access_control
import (
"fmt"
"github.com/databricks/cli/cmd/root"
"github.com/databricks/cli/libs/cmdio"
"github.com/databricks/cli/libs/flags"
"github.com/databricks/databricks-sdk-go/service/iam"
"github.com/spf13/cobra"
)
var Cmd = & cobra . Command {
Use : "access-control" ,
Short : ` These APIs manage access rules on resources in an account. ` ,
Long : ` These APIs manage access rules on resources in an account . Currently , only
grant rules are supported . A grant rule specifies a role assigned to a set of
principals . A list of rules attached to a resource is called a rule set . ` ,
2023-06-13 15:20:42 +00:00
Annotations : map [ string ] string {
"package" : "iam" ,
} ,
2023-06-12 12:23:21 +00:00
}
2023-06-21 07:43:07 +00:00
// start get-assignable-roles-for-resource command
2023-06-12 12:23:21 +00:00
2023-06-21 07:43:07 +00:00
var getAssignableRolesForResourceReq iam . GetAssignableRolesForResourceRequest
var getAssignableRolesForResourceJson flags . JsonFlag
2023-06-12 12:23:21 +00:00
func init ( ) {
2023-06-21 07:43:07 +00:00
Cmd . AddCommand ( getAssignableRolesForResourceCmd )
2023-06-12 12:23:21 +00:00
// TODO: short flags
2023-06-21 07:43:07 +00:00
getAssignableRolesForResourceCmd . Flags ( ) . Var ( & getAssignableRolesForResourceJson , "json" , ` either inline JSON string or @path/to/file.json with request body ` )
2023-06-12 12:23:21 +00:00
}
2023-06-21 07:43:07 +00:00
var getAssignableRolesForResourceCmd = & cobra . Command {
Use : "get-assignable-roles-for-resource RESOURCE" ,
Short : ` Get assignable roles for a resource. ` ,
Long : ` Get assignable roles for a resource .
2023-06-12 12:23:21 +00:00
2023-06-21 07:43:07 +00:00
Gets all the roles that can be granted on an account level resource . A role is
grantable if the rule set on the resource can contain an access rule of the
role . ` ,
2023-06-12 12:23:21 +00:00
Annotations : map [ string ] string { } ,
Args : func ( cmd * cobra . Command , args [ ] string ) error {
2023-06-21 07:43:07 +00:00
check := cobra . ExactArgs ( 1 )
2023-06-12 12:23:21 +00:00
if cmd . Flags ( ) . Changed ( "json" ) {
check = cobra . ExactArgs ( 0 )
}
return check ( cmd , args )
} ,
PreRunE : root . MustAccountClient ,
RunE : func ( cmd * cobra . Command , args [ ] string ) ( err error ) {
ctx := cmd . Context ( )
a := root . AccountClient ( ctx )
if cmd . Flags ( ) . Changed ( "json" ) {
2023-06-21 07:43:07 +00:00
err = getAssignableRolesForResourceJson . Unmarshal ( & getAssignableRolesForResourceReq )
2023-06-12 12:23:21 +00:00
if err != nil {
return err
}
} else {
2023-06-21 07:43:07 +00:00
getAssignableRolesForResourceReq . Resource = args [ 0 ]
2023-06-12 12:23:21 +00:00
}
2023-06-21 07:43:07 +00:00
response , err := a . AccessControl . GetAssignableRolesForResource ( ctx , getAssignableRolesForResourceReq )
2023-06-12 12:23:21 +00:00
if err != nil {
return err
}
return cmdio . Render ( ctx , response )
} ,
2023-06-15 14:56:36 +00:00
// Disable completions since they are not applicable.
// Can be overridden by manual implementation in `override.go`.
ValidArgsFunction : cobra . NoFileCompletions ,
2023-06-12 12:23:21 +00:00
}
2023-06-21 07:43:07 +00:00
// start get-rule-set command
2023-06-12 12:23:21 +00:00
2023-06-21 07:43:07 +00:00
var getRuleSetReq iam . GetRuleSetRequest
var getRuleSetJson flags . JsonFlag
2023-06-12 12:23:21 +00:00
func init ( ) {
2023-06-21 07:43:07 +00:00
Cmd . AddCommand ( getRuleSetCmd )
2023-06-12 12:23:21 +00:00
// TODO: short flags
2023-06-21 07:43:07 +00:00
getRuleSetCmd . Flags ( ) . Var ( & getRuleSetJson , "json" , ` either inline JSON string or @path/to/file.json with request body ` )
2023-06-12 12:23:21 +00:00
}
2023-06-21 07:43:07 +00:00
var getRuleSetCmd = & cobra . Command {
Use : "get-rule-set NAME ETAG" ,
Short : ` Get a rule set. ` ,
Long : ` Get a rule set .
2023-06-12 12:23:21 +00:00
2023-06-21 07:43:07 +00:00
Get a rule set by its name . A rule set is always attached to a resource and
contains a list of access rules on the said resource . Currently only a default
rule set for each resource is supported . ` ,
2023-06-12 12:23:21 +00:00
Annotations : map [ string ] string { } ,
Args : func ( cmd * cobra . Command , args [ ] string ) error {
2023-06-21 07:43:07 +00:00
check := cobra . ExactArgs ( 2 )
2023-06-12 12:23:21 +00:00
if cmd . Flags ( ) . Changed ( "json" ) {
check = cobra . ExactArgs ( 0 )
}
return check ( cmd , args )
} ,
PreRunE : root . MustAccountClient ,
RunE : func ( cmd * cobra . Command , args [ ] string ) ( err error ) {
ctx := cmd . Context ( )
a := root . AccountClient ( ctx )
if cmd . Flags ( ) . Changed ( "json" ) {
2023-06-21 07:43:07 +00:00
err = getRuleSetJson . Unmarshal ( & getRuleSetReq )
2023-06-12 12:23:21 +00:00
if err != nil {
return err
}
} else {
2023-06-21 07:43:07 +00:00
getRuleSetReq . Name = args [ 0 ]
getRuleSetReq . Etag = args [ 1 ]
2023-06-12 12:23:21 +00:00
}
2023-06-21 07:43:07 +00:00
response , err := a . AccessControl . GetRuleSet ( ctx , getRuleSetReq )
2023-06-12 12:23:21 +00:00
if err != nil {
return err
}
return cmdio . Render ( ctx , response )
} ,
2023-06-15 14:56:36 +00:00
// Disable completions since they are not applicable.
// Can be overridden by manual implementation in `override.go`.
ValidArgsFunction : cobra . NoFileCompletions ,
2023-06-12 12:23:21 +00:00
}
2023-06-21 07:43:07 +00:00
// start update-rule-set command
2023-06-12 12:23:21 +00:00
2023-06-21 07:43:07 +00:00
var updateRuleSetReq iam . UpdateRuleSetRequest
var updateRuleSetJson flags . JsonFlag
2023-06-12 12:23:21 +00:00
func init ( ) {
2023-06-21 07:43:07 +00:00
Cmd . AddCommand ( updateRuleSetCmd )
2023-06-12 12:23:21 +00:00
// TODO: short flags
2023-06-21 07:43:07 +00:00
updateRuleSetCmd . Flags ( ) . Var ( & updateRuleSetJson , "json" , ` either inline JSON string or @path/to/file.json with request body ` )
2023-06-12 12:23:21 +00:00
}
2023-06-21 07:43:07 +00:00
var updateRuleSetCmd = & cobra . Command {
Use : "update-rule-set" ,
2023-06-12 12:23:21 +00:00
Short : ` Update a rule set. ` ,
Long : ` Update a rule set .
Replace the rules of a rule set . First , use get to read the current version of
the rule set before modifying it . This pattern helps prevent conflicts between
concurrent updates . ` ,
Annotations : map [ string ] string { } ,
PreRunE : root . MustAccountClient ,
RunE : func ( cmd * cobra . Command , args [ ] string ) ( err error ) {
ctx := cmd . Context ( )
a := root . AccountClient ( ctx )
if cmd . Flags ( ) . Changed ( "json" ) {
2023-06-21 07:43:07 +00:00
err = updateRuleSetJson . Unmarshal ( & updateRuleSetReq )
2023-06-12 12:23:21 +00:00
if err != nil {
return err
}
} else {
2023-06-21 07:43:07 +00:00
return fmt . Errorf ( "please provide command input in JSON format by specifying the --json flag" )
2023-06-12 12:23:21 +00:00
}
2023-06-21 07:43:07 +00:00
response , err := a . AccessControl . UpdateRuleSet ( ctx , updateRuleSetReq )
2023-06-12 12:23:21 +00:00
if err != nil {
return err
}
return cmdio . Render ( ctx , response )
} ,
2023-06-15 14:56:36 +00:00
// Disable completions since they are not applicable.
// Can be overridden by manual implementation in `override.go`.
ValidArgsFunction : cobra . NoFileCompletions ,
2023-06-12 12:23:21 +00:00
}
// end service AccountAccessControl