databricks-cli/cmd/workspace/groups/groups.go

293 lines
7.8 KiB
Go
Executable File

// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
package groups
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: "groups",
Short: `Groups simplify identity management, making it easier to assign access to Databricks workspace, data, and other securable objects.`,
Long: `Groups simplify identity management, making it easier to assign access to
Databricks workspace, data, and other securable objects.
It is best practice to assign access to workspaces and access-control policies
in Unity Catalog to groups, instead of to users individually. All Databricks
workspace identities can be assigned as members of groups, and members inherit
permissions that are assigned to their group.`,
}
// start create command
var createReq iam.Group
var createJson flags.JsonFlag
func init() {
Cmd.AddCommand(createCmd)
// TODO: short flags
createCmd.Flags().Var(&createJson, "json", `either inline JSON string or @path/to/file.json with request body`)
createCmd.Flags().StringVar(&createReq.DisplayName, "display-name", createReq.DisplayName, `String that represents a human-readable group name.`)
// TODO: array: entitlements
createCmd.Flags().StringVar(&createReq.ExternalId, "external-id", createReq.ExternalId, ``)
// TODO: array: groups
createCmd.Flags().StringVar(&createReq.Id, "id", createReq.Id, `Databricks group ID.`)
// TODO: array: members
// TODO: array: roles
}
var createCmd = &cobra.Command{
Use: "create",
Short: `Create a new group.`,
Long: `Create a new group.
Creates a group in the Databricks workspace with a unique name, using the
supplied group details.`,
Annotations: map[string]string{},
PreRunE: root.MustWorkspaceClient,
RunE: func(cmd *cobra.Command, args []string) (err error) {
ctx := cmd.Context()
w := root.WorkspaceClient(ctx)
err = createJson.Unmarshal(&createReq)
if err != nil {
return err
}
createReq.Id = args[0]
response, err := w.Groups.Create(ctx, createReq)
if err != nil {
return err
}
return cmdio.Render(ctx, response)
},
}
// start delete command
var deleteReq iam.DeleteGroupRequest
func init() {
Cmd.AddCommand(deleteCmd)
// TODO: short flags
}
var deleteCmd = &cobra.Command{
Use: "delete ID",
Short: `Delete a group.`,
Long: `Delete a group.
Deletes a group from the Databricks workspace.`,
Annotations: map[string]string{},
PreRunE: root.MustWorkspaceClient,
RunE: func(cmd *cobra.Command, args []string) (err error) {
ctx := cmd.Context()
w := root.WorkspaceClient(ctx)
if len(args) == 0 {
names, err := w.Groups.GroupDisplayNameToIdMap(ctx, iam.ListGroupsRequest{})
if err != nil {
return err
}
id, err := cmdio.Select(ctx, names, "Unique ID for a group in the Databricks workspace")
if err != nil {
return err
}
args = append(args, id)
}
if len(args) != 1 {
return fmt.Errorf("expected to have unique id for a group in the databricks workspace")
}
deleteReq.Id = args[0]
err = w.Groups.Delete(ctx, deleteReq)
if err != nil {
return err
}
return nil
},
}
// start get command
var getReq iam.GetGroupRequest
func init() {
Cmd.AddCommand(getCmd)
// TODO: short flags
}
var getCmd = &cobra.Command{
Use: "get ID",
Short: `Get group details.`,
Long: `Get group details.
Gets the information for a specific group in the Databricks workspace.`,
Annotations: map[string]string{},
PreRunE: root.MustWorkspaceClient,
RunE: func(cmd *cobra.Command, args []string) (err error) {
ctx := cmd.Context()
w := root.WorkspaceClient(ctx)
if len(args) == 0 {
names, err := w.Groups.GroupDisplayNameToIdMap(ctx, iam.ListGroupsRequest{})
if err != nil {
return err
}
id, err := cmdio.Select(ctx, names, "Unique ID for a group in the Databricks workspace")
if err != nil {
return err
}
args = append(args, id)
}
if len(args) != 1 {
return fmt.Errorf("expected to have unique id for a group in the databricks workspace")
}
getReq.Id = args[0]
response, err := w.Groups.Get(ctx, getReq)
if err != nil {
return err
}
return cmdio.Render(ctx, response)
},
}
// start list command
var listReq iam.ListGroupsRequest
func init() {
Cmd.AddCommand(listCmd)
// TODO: short flags
listCmd.Flags().StringVar(&listReq.Attributes, "attributes", listReq.Attributes, `Comma-separated list of attributes to return in response.`)
listCmd.Flags().IntVar(&listReq.Count, "count", listReq.Count, `Desired number of results per page.`)
listCmd.Flags().StringVar(&listReq.ExcludedAttributes, "excluded-attributes", listReq.ExcludedAttributes, `Comma-separated list of attributes to exclude in response.`)
listCmd.Flags().StringVar(&listReq.Filter, "filter", listReq.Filter, `Query by which the results have to be filtered.`)
listCmd.Flags().StringVar(&listReq.SortBy, "sort-by", listReq.SortBy, `Attribute to sort the results.`)
listCmd.Flags().Var(&listReq.SortOrder, "sort-order", `The order to sort the results.`)
listCmd.Flags().IntVar(&listReq.StartIndex, "start-index", listReq.StartIndex, `Specifies the index of the first result.`)
}
var listCmd = &cobra.Command{
Use: "list",
Short: `List group details.`,
Long: `List group details.
Gets all details of the groups associated with the Databricks workspace.`,
Annotations: map[string]string{},
Args: cobra.ExactArgs(0),
PreRunE: root.MustWorkspaceClient,
RunE: func(cmd *cobra.Command, args []string) (err error) {
ctx := cmd.Context()
w := root.WorkspaceClient(ctx)
response, err := w.Groups.ListAll(ctx, listReq)
if err != nil {
return err
}
return cmdio.Render(ctx, response)
},
}
// start patch command
var patchReq iam.PartialUpdate
var patchJson flags.JsonFlag
func init() {
Cmd.AddCommand(patchCmd)
// TODO: short flags
patchCmd.Flags().Var(&patchJson, "json", `either inline JSON string or @path/to/file.json with request body`)
// TODO: array: operations
}
var patchCmd = &cobra.Command{
Use: "patch",
Short: `Update group details.`,
Long: `Update group details.
Partially updates the details of a group.`,
Annotations: map[string]string{},
PreRunE: root.MustWorkspaceClient,
RunE: func(cmd *cobra.Command, args []string) (err error) {
ctx := cmd.Context()
w := root.WorkspaceClient(ctx)
err = patchJson.Unmarshal(&patchReq)
if err != nil {
return err
}
patchReq.Id = args[0]
err = w.Groups.Patch(ctx, patchReq)
if err != nil {
return err
}
return nil
},
}
// start update command
var updateReq iam.Group
var updateJson flags.JsonFlag
func init() {
Cmd.AddCommand(updateCmd)
// TODO: short flags
updateCmd.Flags().Var(&updateJson, "json", `either inline JSON string or @path/to/file.json with request body`)
updateCmd.Flags().StringVar(&updateReq.DisplayName, "display-name", updateReq.DisplayName, `String that represents a human-readable group name.`)
// TODO: array: entitlements
updateCmd.Flags().StringVar(&updateReq.ExternalId, "external-id", updateReq.ExternalId, ``)
// TODO: array: groups
updateCmd.Flags().StringVar(&updateReq.Id, "id", updateReq.Id, `Databricks group ID.`)
// TODO: array: members
// TODO: array: roles
}
var updateCmd = &cobra.Command{
Use: "update",
Short: `Replace a group.`,
Long: `Replace a group.
Updates the details of a group by replacing the entire group entity.`,
Annotations: map[string]string{},
PreRunE: root.MustWorkspaceClient,
RunE: func(cmd *cobra.Command, args []string) (err error) {
ctx := cmd.Context()
w := root.WorkspaceClient(ctx)
err = updateJson.Unmarshal(&updateReq)
if err != nil {
return err
}
updateReq.Id = args[0]
err = w.Groups.Update(ctx, updateReq)
if err != nil {
return err
}
return nil
},
}
// end service Groups