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  }