github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v6/enable_org_isolation_command.go (about)

     1  package v6
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/sharedaction"
     5  	"code.cloudfoundry.org/cli/actor/v3action"
     6  	"code.cloudfoundry.org/cli/command"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  	"code.cloudfoundry.org/cli/command/v6/shared"
     9  )
    10  
    11  //go:generate counterfeiter . EnableOrgIsolationActor
    12  
    13  type EnableOrgIsolationActor interface {
    14  	EntitleIsolationSegmentToOrganizationByName(isolationSegmentName string, orgName string) (v3action.Warnings, error)
    15  }
    16  
    17  type EnableOrgIsolationCommand struct {
    18  	RequiredArgs    flag.OrgIsolationArgs `positional-args:"yes"`
    19  	usage           interface{}           `usage:"CF_NAME enable-org-isolation ORG_NAME SEGMENT_NAME"`
    20  	relatedCommands interface{}           `related_commands:"create-isolation-segment, isolation-segments, set-org-default-isolation-segment, set-space-isolation-segment"`
    21  
    22  	UI          command.UI
    23  	Config      command.Config
    24  	SharedActor command.SharedActor
    25  	Actor       EnableOrgIsolationActor
    26  }
    27  
    28  func (cmd *EnableOrgIsolationCommand) Setup(config command.Config, ui command.UI) error {
    29  	cmd.UI = ui
    30  	cmd.Config = config
    31  	cmd.SharedActor = sharedaction.NewActor(config)
    32  
    33  	client, _, err := shared.NewV3BasedClients(config, ui, true)
    34  	if err != nil {
    35  		return err
    36  	}
    37  	cmd.Actor = v3action.NewActor(client, config, nil, nil)
    38  
    39  	return nil
    40  }
    41  
    42  func (cmd EnableOrgIsolationCommand) Execute(args []string) error {
    43  	err := cmd.SharedActor.CheckTarget(false, false)
    44  	if err != nil {
    45  		return err
    46  	}
    47  
    48  	user, err := cmd.Config.CurrentUser()
    49  	if err != nil {
    50  		return err
    51  	}
    52  
    53  	cmd.UI.DisplayTextWithFlavor("Enabling isolation segment {{.SegmentName}} for org {{.OrgName}} as {{.CurrentUser}}...", map[string]interface{}{
    54  		"SegmentName": cmd.RequiredArgs.IsolationSegmentName,
    55  		"OrgName":     cmd.RequiredArgs.OrganizationName,
    56  		"CurrentUser": user.Name,
    57  	})
    58  
    59  	warnings, err := cmd.Actor.EntitleIsolationSegmentToOrganizationByName(cmd.RequiredArgs.IsolationSegmentName, cmd.RequiredArgs.OrganizationName)
    60  	cmd.UI.DisplayWarnings(warnings)
    61  	if err != nil {
    62  		return err
    63  	}
    64  
    65  	cmd.UI.DisplayOK()
    66  
    67  	return nil
    68  }