github.com/drycc/workflow-cli@v1.5.3-0.20240322092846-d4ee25983af9/cmd/gateways.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/drycc/controller-sdk-go/api"
     8  	"github.com/drycc/controller-sdk-go/gateways"
     9  )
    10  
    11  // GatewaysList lists gateways for the app
    12  func (d *DryccCmd) GatewaysList(appID string, results int) error {
    13  	s, appID, err := load(d.ConfigFile, appID)
    14  
    15  	if err != nil {
    16  		return err
    17  	}
    18  	if results == defaultLimit {
    19  		results = s.Limit
    20  	}
    21  
    22  	gateways, count, err := gateways.List(s.Client, appID, results)
    23  	if d.checkAPICompatibility(s.Client, err) != nil {
    24  		return err
    25  	}
    26  	if count == 0 {
    27  		d.Println(fmt.Sprintf("No gateways found in %s app.", appID))
    28  	} else {
    29  		table := d.getDefaultFormatTable([]string{"NAME", "LISENTER", "PORT", "PROTOCOL", "ADDRESSES"})
    30  		for _, gateway := range gateways {
    31  			addresesStr := parseAddress(gateway.Addresses)
    32  			for _, listener := range gateway.Listeners {
    33  				table.Append([]string{gateway.Name, listener.Name, fmt.Sprint(listener.Port), listener.Protocol, addresesStr})
    34  			}
    35  		}
    36  		table.Render()
    37  	}
    38  	return nil
    39  }
    40  
    41  // GatewaysAdd adds a gateway to an app.
    42  func (d *DryccCmd) GatewaysAdd(appID, name string, port int, protocol string) error {
    43  	s, appID, err := load(d.ConfigFile, appID)
    44  
    45  	if err != nil {
    46  		return err
    47  	}
    48  	d.Printf("Adding gateway %s to %s... ", name, appID)
    49  
    50  	quit := progress(d.WOut)
    51  	err = gateways.New(s.Client, appID, name, port, protocol)
    52  	quit <- true
    53  	<-quit
    54  	if d.checkAPICompatibility(s.Client, err) != nil {
    55  		return err
    56  	}
    57  
    58  	d.Println("done")
    59  	return nil
    60  }
    61  
    62  // GatewaysRemove removes a gateway registered with an app.
    63  func (d *DryccCmd) GatewaysRemove(appID, name string, port int, protocol string) error {
    64  	s, appID, err := load(d.ConfigFile, appID)
    65  
    66  	if err != nil {
    67  		return err
    68  	}
    69  	d.Printf("Removing gateway %s to %s... ", name, appID)
    70  
    71  	quit := progress(d.WOut)
    72  	err = gateways.Delete(s.Client, appID, name, port, protocol)
    73  	quit <- true
    74  	<-quit
    75  	if d.checkAPICompatibility(s.Client, err) != nil {
    76  		return err
    77  	}
    78  
    79  	d.Println("done")
    80  	return nil
    81  }
    82  
    83  func parseAddress(addresses []api.Address) string {
    84  	var addresList []string
    85  	for _, address := range addresses {
    86  		addresList = append(addresList, address.Value)
    87  	}
    88  	addresStr := strings.Join(addresList, ",")
    89  	return addresStr
    90  }