github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/unbind_service_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"github.com/LukasHeimann/cloudfoundrycli/v8/actor/actionerror"
     5  	"github.com/LukasHeimann/cloudfoundrycli/v8/actor/v7action"
     6  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/flag"
     7  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/v7/shared"
     8  )
     9  
    10  type UnbindServiceCommand struct {
    11  	BaseCommand
    12  
    13  	RequiredArgs    flag.BindServiceArgs `positional-args:"yes"`
    14  	Wait            bool                 `short:"w" long:"wait" description:"Wait for the operation to complete"`
    15  	relatedCommands interface{}          `related_commands:"apps, delete-service, services"`
    16  }
    17  
    18  func (cmd UnbindServiceCommand) Execute(args []string) error {
    19  	if err := cmd.SharedActor.CheckTarget(true, true); err != nil {
    20  		return err
    21  	}
    22  
    23  	if err := cmd.displayIntro(); err != nil {
    24  		return err
    25  	}
    26  
    27  	stream, warnings, err := cmd.Actor.DeleteServiceAppBinding(v7action.DeleteServiceAppBindingParams{
    28  		SpaceGUID:           cmd.Config.TargetedSpace().GUID,
    29  		ServiceInstanceName: cmd.RequiredArgs.ServiceInstanceName,
    30  		AppName:             cmd.RequiredArgs.AppName,
    31  	})
    32  	cmd.UI.DisplayWarnings(warnings)
    33  	switch err.(type) {
    34  	case nil:
    35  	case actionerror.ServiceBindingNotFoundError:
    36  		cmd.UI.DisplayText("Binding between {{.ServiceInstanceName}} and {{.AppName}} did not exist", cmd.names())
    37  		cmd.UI.DisplayOK()
    38  		return nil
    39  	default:
    40  		return err
    41  	}
    42  
    43  	completed, err := shared.WaitForResult(stream, cmd.UI, cmd.Wait)
    44  	switch {
    45  	case err != nil:
    46  		return err
    47  	case completed:
    48  		cmd.UI.DisplayOK()
    49  		return nil
    50  	default:
    51  		cmd.UI.DisplayOK()
    52  		cmd.UI.DisplayText("Unbinding in progress. Use 'cf service {{.ServiceInstanceName}}' to check operation status.", cmd.names())
    53  		return nil
    54  	}
    55  
    56  	return nil
    57  }
    58  
    59  func (cmd UnbindServiceCommand) Usage() string {
    60  	return `CF_NAME unbind-service APP_NAME SERVICE_INSTANCE`
    61  }
    62  
    63  func (cmd UnbindServiceCommand) displayIntro() error {
    64  	user, err := cmd.Actor.GetCurrentUser()
    65  	if err != nil {
    66  		return err
    67  	}
    68  
    69  	cmd.UI.DisplayTextWithFlavor(
    70  		"Unbinding app {{.AppName}} from service {{.ServiceInstance}} in org {{.Org}} / space {{.Space}} as {{.User}}...",
    71  		map[string]interface{}{
    72  			"ServiceInstance": cmd.RequiredArgs.ServiceInstanceName,
    73  			"AppName":         cmd.RequiredArgs.AppName,
    74  			"User":            user.Name,
    75  			"Space":           cmd.Config.TargetedSpace().Name,
    76  			"Org":             cmd.Config.TargetedOrganization().Name,
    77  		},
    78  	)
    79  
    80  	return nil
    81  }
    82  
    83  func (cmd UnbindServiceCommand) names() map[string]interface{} {
    84  	return map[string]interface{}{
    85  		"ServiceInstanceName": cmd.RequiredArgs.ServiceInstanceName,
    86  		"AppName":             cmd.RequiredArgs.AppName,
    87  	}
    88  }