@@ -41,7 +41,7 @@ func printRouteGroupTable(cfg *config.RouteGroupList, out io.Writer, rgs []*mode
4141 t .AddRow (routegroupRow {
4242 Name : rg .Name ,
4343 RoutingKey : rg .RoutingKey ,
44- Cluster : rg .Spec .Cluster ,
44+ Cluster : getCluster ( rg .Spec .Cluster ) ,
4545 Created : timeago .NoMax (timeago .English ).Format (createdAt ),
4646 Status : readiness (rg .Status ),
4747 Ready : sbxStatus ,
@@ -55,7 +55,7 @@ func printRouteGroupDetails(cfg *config.RouteGroup, out io.Writer, rg *models.Ro
5555
5656 fmt .Fprintf (tw , "Name:\t %s\n " , rg .Name )
5757 fmt .Fprintf (tw , "Routing Key:\t %s\n " , rg .RoutingKey )
58- fmt .Fprintf (tw , "Cluster:\t %s\n " , rg .Spec .Cluster )
58+ fmt .Fprintf (tw , "Cluster:\t %s\n " , getCluster ( rg .Spec .Cluster ) )
5959 fmt .Fprintf (tw , "Created:\t %s\n " , utils .FormatTimestamp (rg .CreatedAt ))
6060 fmt .Fprintf (tw , "TTL:\t %s\n " , formatTTL (rg .Spec , rg .Status .ScheduledDeleteTime ))
6161 fmt .Fprintf (tw , "Dashboard page:\t %s\n " , cfg .DashboardURL )
@@ -67,14 +67,21 @@ func printRouteGroupDetails(cfg *config.RouteGroup, out io.Writer, rg *models.Ro
6767
6868 if len (rg .Endpoints ) > 0 {
6969 fmt .Fprintln (out )
70- if err := printEndpointTable (out , rg . Endpoints ); err != nil {
70+ if err := printEndpointTable (out , rg ); err != nil {
7171 return err
7272 }
7373 }
7474
7575 return nil
7676}
7777
78+ func getCluster (cluster string ) string {
79+ if cluster != "" {
80+ return cluster
81+ }
82+ return "(multi-cluster)"
83+ }
84+
7885func readiness (status * models.RouteGroupStatus ) string {
7986 if status .Ready {
8087 return "Ready"
@@ -119,21 +126,49 @@ func formatTTL(spec *models.RouteGroupSpec, deletionTime string) string {
119126 return fmt .Sprintf ("%s (%s)" , local , timeago .NoMax (timeago .English ).Format (t ))
120127}
121128
122- type endpointRow struct {
123- Name string `sdtab:"ROUTEGROUP ENDPOINT"`
124- Target string `sdtab:"TARGET"`
125- URL string `sdtab:"URL"`
129+ func printEndpointTable (out io.Writer , rg * models.RouteGroup ) error {
130+ if rg .Spec .Cluster == "" {
131+ return printMultiClusterRGEndpointTable (out , rg .Endpoints )
132+ }
133+ return printRegularRGEndpointTable (out , rg .Endpoints )
126134}
127135
128- func printEndpointTable (out io.Writer , endpoints []* models.RoutegroupsEndpointURL ) error {
129- t := sdtab.New [endpointRow ](out )
136+ func printRegularRGEndpointTable (out io.Writer , endpoints []* models.RoutegroupsEndpointURL ) error {
137+ type row struct {
138+ Name string `sdtab:"ROUTEGROUP ENDPOINT"`
139+ Target string `sdtab:"TARGET"`
140+ URL string `sdtab:"URL"`
141+ }
142+
143+ t := sdtab.New [row ](out )
130144 t .AddHeader ()
131145 for _ , ep := range endpoints {
132- t .AddRow (endpointRow {
146+ t .AddRow (row {
133147 Name : ep .Name ,
134148 Target : ep .Target ,
135149 URL : ep .URL ,
136150 })
137151 }
138152 return t .Flush ()
139153}
154+
155+ func printMultiClusterRGEndpointTable (out io.Writer , endpoints []* models.RoutegroupsEndpointURL ) error {
156+ type row struct {
157+ Name string `sdtab:"ROUTEGROUP ENDPOINT"`
158+ Cluster string `sdtab:"CLUSTER"`
159+ Target string `sdtab:"TARGET"`
160+ URL string `sdtab:"URL"`
161+ }
162+
163+ t := sdtab.New [row ](out )
164+ t .AddHeader ()
165+ for _ , ep := range endpoints {
166+ t .AddRow (row {
167+ Name : ep .Name ,
168+ Cluster : ep .Cluster ,
169+ Target : ep .Target ,
170+ URL : ep .URL ,
171+ })
172+ }
173+ return t .Flush ()
174+ }
0 commit comments