github.com/pluralsh/plural-cli@v0.9.5/cmd/plural/cd_credentials.go (about)

     1  package plural
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/pkg/errors"
     7  	gqlclient "github.com/pluralsh/console-client-go"
     8  	"github.com/pluralsh/plural-cli/pkg/utils"
     9  	"github.com/urfave/cli"
    10  )
    11  
    12  func (p *Plural) cdCredentials() cli.Command {
    13  	return cli.Command{
    14  		Name:        "credentials",
    15  		Subcommands: p.cdCredentialsCommands(),
    16  		Usage:       "manage Provider credentials",
    17  	}
    18  }
    19  
    20  func (p *Plural) cdCredentialsCommands() []cli.Command {
    21  	return []cli.Command{
    22  		{
    23  			Name:      "create",
    24  			ArgsUsage: "PROVIDER_NAME",
    25  			Action:    latestVersion(requireArgs(p.handleCreateProviderCredentials, []string{"PROVIDER_NAME"})),
    26  			Usage:     "create provider credentials",
    27  		},
    28  		{
    29  			Name:      "delete",
    30  			ArgsUsage: "ID",
    31  			Action:    latestVersion(requireArgs(p.handleDeleteProviderCredentials, []string{"ID"})),
    32  			Usage:     "delete provider credentials",
    33  		},
    34  	}
    35  }
    36  
    37  func (p *Plural) handleDeleteProviderCredentials(c *cli.Context) error {
    38  	id := c.Args().Get(0)
    39  	if err := p.InitConsoleClient(consoleToken, consoleURL); err != nil {
    40  		return err
    41  	}
    42  	if _, err := p.ConsoleClient.DeleteProviderCredentials(id); err != nil {
    43  		return err
    44  	}
    45  	utils.Success("Provider credential %s has been deleted successfully", id)
    46  	return nil
    47  }
    48  
    49  func (p *Plural) handleCreateProviderCredentials(c *cli.Context) error {
    50  	providerName := c.Args().Get(0)
    51  	if err := p.InitConsoleClient(consoleToken, consoleURL); err != nil {
    52  		return err
    53  	}
    54  
    55  	attr, err := p.credentialsPreflights()
    56  	if err != nil {
    57  		return err
    58  	}
    59  
    60  	resp, err := p.ConsoleClient.CreateProviderCredentials(providerName, *attr)
    61  	if err != nil {
    62  		errList := errors.New("CreateProviderCredentials")
    63  		errList = errors.Wrap(errList, err.Error())
    64  		if *attr.Kind == kindSecret {
    65  			if err := p.SecretDelete(*attr.Namespace, attr.Name); err != nil {
    66  				errList = errors.Wrap(errList, err.Error())
    67  			}
    68  		}
    69  		return errList
    70  	}
    71  	if resp == nil {
    72  		return fmt.Errorf("the response from CreateProviderCredentials is empty")
    73  	}
    74  
    75  	headers := []string{"Id", "Name", "Namespace"}
    76  	return utils.PrintTable([]*gqlclient.ProviderCredentialFragment{resp.CreateProviderCredential}, headers, func(sd *gqlclient.ProviderCredentialFragment) ([]string, error) {
    77  		return []string{sd.ID, sd.Name, sd.Namespace}, nil
    78  	})
    79  }