github.com/wanddynosios/cli/v8@v8.7.9-0.20240221182337-1a92e3a7017f/command/v7/create_private_domain_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccerror"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  )
     9  
    10  type CreatePrivateDomainCommand struct {
    11  	BaseCommand
    12  
    13  	RequiredArgs    flag.OrgDomain `positional-args:"yes"`
    14  	usage           interface{}    `usage:"CF_NAME create-private-domain ORG DOMAIN"`
    15  	relatedCommands interface{}    `related_commands:"create-shared-domain, domains, share-private-domain"`
    16  }
    17  
    18  func (cmd CreatePrivateDomainCommand) Execute(args []string) error {
    19  	err := cmd.SharedActor.CheckTarget(false, false)
    20  	if err != nil {
    21  		return err
    22  	}
    23  
    24  	user, err := cmd.Actor.GetCurrentUser()
    25  	if err != nil {
    26  		return err
    27  	}
    28  
    29  	domain := cmd.RequiredArgs.Domain
    30  	orgName := cmd.RequiredArgs.Organization
    31  
    32  	cmd.UI.DisplayTextWithFlavor("Creating private domain {{.Domain}} for org {{.Organization}} as {{.User}}...",
    33  		map[string]interface{}{
    34  			"Domain":       domain,
    35  			"User":         user.Name,
    36  			"Organization": orgName,
    37  		})
    38  
    39  	warnings, err := cmd.Actor.CreatePrivateDomain(domain, orgName)
    40  
    41  	cmd.UI.DisplayWarnings(warnings)
    42  	if err != nil {
    43  		if e, ok := err.(ccerror.UnprocessableEntityError); ok {
    44  			inUse := fmt.Sprintf("The domain name \"%s\" is already in use", domain)
    45  			if e.Message == inUse {
    46  				cmd.UI.DisplayWarning(err.Error())
    47  				cmd.UI.DisplayOK()
    48  				return nil
    49  			}
    50  		}
    51  		return err
    52  	}
    53  
    54  	cmd.UI.DisplayOK()
    55  
    56  	cmd.UI.DisplayText("TIP: Domain '{{.Domain}}' is a private domain. Run 'cf share-private-domain' to share this domain with a different org.",
    57  		map[string]interface{}{
    58  			"Domain": domain,
    59  		})
    60  	return nil
    61  }