github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/create_org_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/sharedaction" 5 "code.cloudfoundry.org/cli/actor/v7action" 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 7 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 8 "code.cloudfoundry.org/cli/command" 9 "code.cloudfoundry.org/cli/command/flag" 10 "code.cloudfoundry.org/cli/command/v7/shared" 11 "code.cloudfoundry.org/clock" 12 ) 13 14 //go:generate counterfeiter . CreateOrgActor 15 16 type CreateOrgActor interface { 17 CreateOrganization(orgName string) (v7action.Organization, v7action.Warnings, error) 18 CreateOrgRole(roleType constant.RoleType, orgGUID string, userNameOrGUID string, userOrigin string, isClient bool) (v7action.Warnings, error) 19 } 20 21 type CreateOrgCommand struct { 22 RequiredArgs flag.Organization `positional-args:"yes"` 23 usage interface{} `usage:"CF_NAME create-org ORG"` 24 relatedCommands interface{} `related_commands:"create-space, orgs, quotas, set-org-role"` 25 26 UI command.UI 27 Config command.Config 28 Actor CreateOrgActor 29 SharedActor command.SharedActor 30 } 31 32 func (cmd *CreateOrgCommand) Setup(config command.Config, ui command.UI) error { 33 cmd.UI = ui 34 cmd.Config = config 35 sharedActor := sharedaction.NewActor(config) 36 cmd.SharedActor = sharedActor 37 38 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 39 if err != nil { 40 return err 41 } 42 cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock()) 43 return nil 44 } 45 46 func (cmd CreateOrgCommand) Execute(args []string) error { 47 err := cmd.SharedActor.CheckTarget(false, false) 48 if err != nil { 49 return err 50 } 51 52 user, err := cmd.Config.CurrentUser() 53 if err != nil { 54 return err 55 } 56 57 orgName := cmd.RequiredArgs.Organization 58 59 cmd.UI.DisplayTextWithFlavor("Creating org {{.Organization}} as {{.User}}...", 60 map[string]interface{}{ 61 "User": user.Name, 62 "Organization": orgName, 63 }) 64 65 org, warnings, err := cmd.Actor.CreateOrganization(orgName) 66 67 cmd.UI.DisplayWarnings(warnings) 68 if err != nil { 69 if _, ok := err.(ccerror.OrganizationNameTakenError); ok { 70 cmd.UI.DisplayText(err.Error()) 71 cmd.UI.DisplayOK() 72 return nil 73 } 74 return err 75 } 76 cmd.UI.DisplayOK() 77 78 cmd.UI.DisplayTextWithFlavor("Assigning role OrgManager to user {{.User}} in org {{.Organization}} as {{.User}}...", 79 map[string]interface{}{ 80 "User": user.Name, 81 "Organization": orgName, 82 }) 83 warnings, err = cmd.Actor.CreateOrgRole(constant.OrgManagerRole, org.GUID, user.Name, user.Origin, user.IsClient) 84 cmd.UI.DisplayWarnings(warnings) 85 if err != nil { 86 return err 87 } 88 cmd.UI.DisplayOK() 89 90 cmd.UI.DisplayText(`TIP: Use 'cf target -o "{{.Organization}}"' to target new org`, 91 map[string]interface{}{ 92 "Organization": orgName, 93 }) 94 95 return nil 96 }