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 }