github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/command/v6/set_org_default_isolation_segment_command.go (about) 1 package v6 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/sharedaction" 5 "code.cloudfoundry.org/cli/actor/v2action" 6 "code.cloudfoundry.org/cli/actor/v3action" 7 "code.cloudfoundry.org/cli/api/cloudcontroller/ccversion" 8 "code.cloudfoundry.org/cli/command" 9 "code.cloudfoundry.org/cli/command/flag" 10 "code.cloudfoundry.org/cli/command/v6/shared" 11 ) 12 13 //go:generate counterfeiter . SetOrgDefaultIsolationSegmentActor 14 15 type SetOrgDefaultIsolationSegmentActor interface { 16 CloudControllerAPIVersion() string 17 GetIsolationSegmentByName(isoSegName string) (v3action.IsolationSegment, v3action.Warnings, error) 18 SetOrganizationDefaultIsolationSegment(orgGUID string, isoSegGUID string) (v3action.Warnings, error) 19 } 20 21 //go:generate counterfeiter . SetOrgDefaultIsolationSegmentActorV2 22 23 type SetOrgDefaultIsolationSegmentActorV2 interface { 24 GetOrganizationByName(orgName string) (v2action.Organization, v2action.Warnings, error) 25 } 26 27 type SetOrgDefaultIsolationSegmentCommand struct { 28 RequiredArgs flag.OrgIsolationArgs `positional-args:"yes"` 29 usage interface{} `usage:"CF_NAME set-org-default-isolation-segment ORG_NAME SEGMENT_NAME"` 30 relatedCommands interface{} `related_commands:"org, set-space-isolation-segment"` 31 32 UI command.UI 33 Config command.Config 34 SharedActor command.SharedActor 35 Actor SetOrgDefaultIsolationSegmentActor 36 ActorV2 SetOrgDefaultIsolationSegmentActorV2 37 } 38 39 func (cmd *SetOrgDefaultIsolationSegmentCommand) Setup(config command.Config, ui command.UI) error { 40 cmd.UI = ui 41 cmd.Config = config 42 cmd.SharedActor = sharedaction.NewActor(config) 43 44 client, _, err := shared.NewV3BasedClients(config, ui, true, "") 45 if err != nil { 46 return err 47 } 48 cmd.Actor = v3action.NewActor(client, config, nil, nil) 49 50 ccClientV2, uaaClientV2, err := shared.NewClients(config, ui, true) 51 if err != nil { 52 return err 53 } 54 cmd.ActorV2 = v2action.NewActor(ccClientV2, uaaClientV2, config) 55 56 return nil 57 } 58 59 func (cmd SetOrgDefaultIsolationSegmentCommand) Execute(args []string) error { 60 err := command.MinimumCCAPIVersionCheck(cmd.Actor.CloudControllerAPIVersion(), ccversion.MinVersionIsolationSegmentV3) 61 if err != nil { 62 return err 63 } 64 65 err = cmd.SharedActor.CheckTarget(false, false) 66 if err != nil { 67 return err 68 } 69 70 user, err := cmd.Config.CurrentUser() 71 if err != nil { 72 return err 73 } 74 75 cmd.UI.DisplayTextWithFlavor("Setting isolation segment {{.IsolationSegmentName}} to default on org {{.OrgName}} as {{.CurrentUser}}...", map[string]interface{}{ 76 "IsolationSegmentName": cmd.RequiredArgs.IsolationSegmentName, 77 "OrgName": cmd.RequiredArgs.OrganizationName, 78 "CurrentUser": user.Name, 79 }) 80 81 org, v2Warnings, err := cmd.ActorV2.GetOrganizationByName(cmd.RequiredArgs.OrganizationName) 82 cmd.UI.DisplayWarnings(v2Warnings) 83 if err != nil { 84 return err 85 } 86 87 isoSeg, v3Warnings, err := cmd.Actor.GetIsolationSegmentByName(cmd.RequiredArgs.IsolationSegmentName) 88 cmd.UI.DisplayWarnings(v3Warnings) 89 if err != nil { 90 return err 91 } 92 93 v3Warnings, err = cmd.Actor.SetOrganizationDefaultIsolationSegment(org.GUID, isoSeg.GUID) 94 cmd.UI.DisplayWarnings(v3Warnings) 95 if err != nil { 96 return err 97 } 98 99 cmd.UI.DisplayOK() 100 cmd.UI.DisplayNewline() 101 cmd.UI.DisplayText("In order to move running applications to this isolation segment, they must be restarted.") 102 103 return nil 104 }