github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/unshare_private_domain_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/command"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  	"code.cloudfoundry.org/cli/command/v7/shared"
     9  	"code.cloudfoundry.org/clock"
    10  )
    11  
    12  //go:generate counterfeiter . UnsharePrivateDomainActor
    13  
    14  type UnsharePrivateDomainActor interface {
    15  	UnsharePrivateDomain(domainName string, orgName string) (v7action.Warnings, error)
    16  }
    17  
    18  type UnsharePrivateDomainCommand struct {
    19  	RequiredArgs    flag.OrgDomain `positional-args:"yes"`
    20  	usage           interface{}    `usage:"CF_NAME unshare-private-domain ORG DOMAIN"`
    21  	relatedCommands interface{}    `related_commands:"delete-private-domain, domains"`
    22  
    23  	UI          command.UI
    24  	Config      command.Config
    25  	Actor       UnsharePrivateDomainActor
    26  	SharedActor command.SharedActor
    27  }
    28  
    29  func (cmd *UnsharePrivateDomainCommand) Setup(config command.Config, ui command.UI) error {
    30  	cmd.UI = ui
    31  	cmd.Config = config
    32  	sharedActor := sharedaction.NewActor(config)
    33  	cmd.SharedActor = sharedActor
    34  
    35  	ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "")
    36  	if err != nil {
    37  		return err
    38  	}
    39  	cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock())
    40  	return nil
    41  }
    42  
    43  func (cmd UnsharePrivateDomainCommand) Execute(args []string) error {
    44  	err := cmd.SharedActor.CheckTarget(false, false)
    45  	if err != nil {
    46  		return err
    47  	}
    48  
    49  	user, err := cmd.Config.CurrentUser()
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	domain := cmd.RequiredArgs.Domain
    55  	orgName := cmd.RequiredArgs.Organization
    56  
    57  	cmd.UI.DisplayTextWithFlavor("Warning: org {{.Organization}} will no longer be able to access private domain {{.Domain}}",
    58  		map[string]interface{}{
    59  			"Domain":       domain,
    60  			"Organization": orgName,
    61  		})
    62  
    63  	response, err := cmd.UI.DisplayBoolPrompt(false,
    64  		"Really unshare private domain {{.Domain}}?",
    65  		map[string]interface{}{
    66  			"Domain": domain,
    67  		},
    68  	)
    69  
    70  	if err != nil {
    71  		return err
    72  	}
    73  
    74  	if !response {
    75  		cmd.UI.DisplayTextWithFlavor("Domain {{.Domain}} has not been unshared from organization {{.Organization}}",
    76  			map[string]interface{}{
    77  				"Domain":       domain,
    78  				"Organization": orgName,
    79  			})
    80  		return nil
    81  	}
    82  
    83  	cmd.UI.DisplayTextWithFlavor("Unsharing domain {{.Domain}} from org {{.Organization}} as {{.User}}...",
    84  		map[string]interface{}{
    85  			"Domain":       domain,
    86  			"User":         user.Name,
    87  			"Organization": orgName,
    88  		})
    89  
    90  	warnings, err := cmd.Actor.UnsharePrivateDomain(domain, orgName)
    91  	cmd.UI.DisplayWarnings(warnings)
    92  	if err != nil {
    93  		return err
    94  	}
    95  
    96  	cmd.UI.DisplayOK()
    97  
    98  	return nil
    99  }