@@ -4,9 +4,12 @@ import (
4
4
"context"
5
5
"fmt"
6
6
"os"
7
+ "strings"
7
8
8
- gatewayv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
9
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
10
+ gatewayv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1"
9
11
12
+ "github.com/gauravkghildiyal/gwctl/pkg/resources/backends"
10
13
"github.com/gauravkghildiyal/gwctl/pkg/resources/gatewayclasses"
11
14
"github.com/gauravkghildiyal/gwctl/pkg/resources/gateways"
12
15
"github.com/gauravkghildiyal/gwctl/pkg/resources/httproutes"
@@ -20,15 +23,15 @@ type describeFlags struct {
20
23
allNamespaces bool
21
24
}
22
25
23
- func NewDescribeCommand (clients * types.Clients ) * cobra.Command {
26
+ func NewDescribeCommand (params * types.Params ) * cobra.Command {
24
27
flags := & describeFlags {}
25
28
26
29
cmd := & cobra.Command {
27
30
Use : "describe {policies|httproutes|gateways|gatewayclasses} RESOURCE_NAME" ,
28
31
Short : "Show details of a specific resource or group of resources" ,
29
32
Args : cobra .RangeArgs (1 , 2 ),
30
33
Run : func (cmd * cobra.Command , args []string ) {
31
- runDescribe (args , clients , flags )
34
+ runDescribe (args , params , flags )
32
35
},
33
36
}
34
37
cmd .Flags ().StringVarP (& flags .namespace , "namespace" , "n" , "default" , "" )
@@ -37,7 +40,7 @@ func NewDescribeCommand(clients *types.Clients) *cobra.Command {
37
40
return cmd
38
41
}
39
42
40
- func runDescribe (args []string , clients * types.Clients , flags * describeFlags ) {
43
+ func runDescribe (args []string , params * types.Params , flags * describeFlags ) {
41
44
kind := args [0 ]
42
45
ns := flags .namespace
43
46
if flags .allNamespaces {
@@ -46,59 +49,83 @@ func runDescribe(args []string, clients *types.Clients, flags *describeFlags) {
46
49
47
50
switch kind {
48
51
case "policy" , "policies" :
49
- policyList , err := policies .List (context .TODO (), clients , ns )
50
- if err != nil {
51
- panic (err )
52
- }
53
- policies .PrintDescribeView (clients , policyList )
52
+ policyList := params .PolicyManager .GetPolicies ()
53
+ policies .PrintDescribeView (params , policyList )
54
54
case "httproute" , "httproutes" :
55
- var httpRoutes []gatewayv1alpha2 .HTTPRoute
55
+ var httpRoutes []gatewayv1beta1 .HTTPRoute
56
56
if len (args ) == 1 {
57
57
var err error
58
- httpRoutes , err = httproutes .List (context .TODO (), clients , ns )
58
+ httpRoutes , err = httproutes .List (context .TODO (), params , ns )
59
59
if err != nil {
60
60
panic (err )
61
61
}
62
62
} else {
63
- httpRoute , err := httproutes .Get (context .TODO (), clients , ns , args [1 ])
63
+ httpRoute , err := httproutes .Get (context .TODO (), params , ns , args [1 ])
64
64
if err != nil {
65
65
panic (err )
66
66
}
67
- httpRoutes = []gatewayv1alpha2 .HTTPRoute {httpRoute }
67
+ httpRoutes = []gatewayv1beta1 .HTTPRoute {httpRoute }
68
68
}
69
- httproutes .PrintDescribeView (context .TODO (), clients , httpRoutes )
69
+ httproutes .PrintDescribeView (context .TODO (), params , httpRoutes )
70
70
case "gateway" , "gateways" :
71
- var gws []gatewayv1alpha2 .Gateway
71
+ var gws []gatewayv1beta1 .Gateway
72
72
if len (args ) == 1 {
73
73
var err error
74
- gws , err = gateways .List (context .TODO (), clients , ns )
74
+ gws , err = gateways .List (context .TODO (), params , ns )
75
75
if err != nil {
76
76
panic (err )
77
77
}
78
78
} else {
79
- gw , err := gateways .Get (context .TODO (), clients , ns , args [1 ])
79
+ gw , err := gateways .Get (context .TODO (), params , ns , args [1 ])
80
80
if err != nil {
81
81
panic (err )
82
82
}
83
- gws = []gatewayv1alpha2 .Gateway {gw }
83
+ gws = []gatewayv1beta1 .Gateway {gw }
84
84
}
85
- gateways .PrintDescribeView (context .TODO (), clients , gws )
85
+ gateways .PrintDescribeView (context .TODO (), params , gws )
86
86
case "gatewayclass" , "gatewayclasses" :
87
- var gwClasses []gatewayv1alpha2 .GatewayClass
87
+ var gwClasses []gatewayv1beta1 .GatewayClass
88
88
if len (args ) == 1 {
89
89
var err error
90
- gwClasses , err = gatewayclasses .List (context .TODO (), clients )
90
+ gwClasses , err = gatewayclasses .List (context .TODO (), params )
91
+ if err != nil {
92
+ panic (err )
93
+ }
94
+ } else {
95
+ gwc , err := gatewayclasses .Get (context .TODO (), params , args [1 ])
96
+ if err != nil {
97
+ panic (err )
98
+ }
99
+ gwClasses = []gatewayv1beta1.GatewayClass {gwc }
100
+ }
101
+ gatewayclasses .PrintDescribeView (context .TODO (), params , gwClasses )
102
+ case "backend" , "backends" :
103
+ var backendsList []unstructured.Unstructured
104
+
105
+ resourceType := "service"
106
+ var resourceName string
107
+ if len (args ) > 1 {
108
+ resourceName = args [1 ]
109
+ a , b , ok := strings .Cut (args [1 ], "/" )
110
+ if ok {
111
+ resourceType , resourceName = a , b
112
+ }
113
+ }
114
+
115
+ if resourceName == "" {
116
+ var err error
117
+ backendsList , err = backends .List (context .TODO (), params , resourceType , ns )
91
118
if err != nil {
92
119
panic (err )
93
120
}
94
121
} else {
95
- gwc , err := gatewayclasses .Get (context .TODO (), clients , args [ 1 ] )
122
+ backend , err := backends .Get (context .TODO (), params , resourceType , ns , resourceName )
96
123
if err != nil {
97
124
panic (err )
98
125
}
99
- gwClasses = []gatewayv1alpha2. GatewayClass { gwc }
126
+ backendsList = []unstructured. Unstructured { backend }
100
127
}
101
- gatewayclasses .PrintDescribeView (context .TODO (), clients , gwClasses )
128
+ backends .PrintDescribeView (context .TODO (), params , backendsList )
102
129
default :
103
130
fmt .Fprintf (os .Stderr , "Unrecognized RESOURCE_TYPE\n " )
104
131
}
0 commit comments