@@ -17,19 +17,17 @@ limitations under the License.
17
17
package describe
18
18
19
19
import (
20
- "context"
21
20
"fmt"
22
21
"os"
23
22
24
23
"github.com/spf13/cobra"
25
- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
26
24
27
- gatewayv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1"
28
25
"sigs.k8s.io/gateway-api/gwctl/pkg/cmd/utils"
29
- "sigs.k8s.io/gateway-api/gwctl/pkg/cmd/utils/printer"
30
- "sigs.k8s.io/gateway-api/gwctl/pkg/common/resourcehelpers"
31
- "sigs.k8s.io/gateway-api/gwctl/pkg/effectivepolicy"
32
26
"sigs.k8s.io/gateway-api/gwctl/pkg/policymanager"
27
+ "sigs.k8s.io/gateway-api/gwctl/pkg/printer"
28
+ "sigs.k8s.io/gateway-api/gwctl/pkg/resourcediscovery"
29
+
30
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33
31
)
34
32
35
33
type describeFlags struct {
@@ -58,15 +56,18 @@ func runDescribe(args []string, params *utils.CmdParams, flags *describeFlags) {
58
56
kind := args [0 ]
59
57
ns := flags .namespace
60
58
if flags .allNamespaces {
61
- ns = ""
59
+ ns = metav1 . NamespaceAll
62
60
}
63
61
64
- epc := effectivepolicy .NewCalculator (params .K8sClients , params .PolicyManager )
62
+ discoverer := resourcediscovery.Discoverer {
63
+ K8sClients : params .K8sClients ,
64
+ PolicyManager : params .PolicyManager ,
65
+ }
65
66
policiesPrinter := & printer.PoliciesPrinter {Out : params .Out }
66
- httpRoutesPrinter := & printer.HTTPRoutesPrinter {Out : params .Out , EPC : epc }
67
- gwPrinter := & printer.GatewaysPrinter {Out : params .Out , EPC : epc }
68
- gwcPrinter := & printer.GatewayClassesPrinter {Out : params .Out , EPC : epc }
69
- backendsPrinter := & printer.BackendsPrinter {Out : params .Out , EPC : epc }
67
+ httpRoutesPrinter := & printer.HTTPRoutesPrinter {Out : params .Out }
68
+ gwPrinter := & printer.GatewaysPrinter {Out : params .Out }
69
+ gwcPrinter := & printer.GatewayClassesPrinter {Out : params .Out }
70
+ backendsPrinter := & printer.BackendsPrinter {Out : params .Out }
70
71
71
72
switch kind {
72
73
case "policy" , "policies" :
@@ -86,76 +87,50 @@ func runDescribe(args []string, params *utils.CmdParams, flags *describeFlags) {
86
87
policiesPrinter .PrintDescribeView (policyList )
87
88
88
89
case "httproute" , "httproutes" :
89
- var httpRoutes []gatewayv1beta1.HTTPRoute
90
- if len (args ) == 1 {
91
- var err error
92
- httpRoutes , err = resourcehelpers .ListHTTPRoutes (context .TODO (), params .K8sClients , ns )
93
- if err != nil {
94
- panic (err )
95
- }
96
- } else {
97
- httpRoute , err := resourcehelpers .GetHTTPRoute (context .TODO (), params .K8sClients , ns , args [1 ])
98
- if err != nil {
99
- panic (err )
100
- }
101
- httpRoutes = []gatewayv1beta1.HTTPRoute {httpRoute }
90
+ filter := resourcediscovery.Filter {Namespace : ns }
91
+ if len (args ) > 1 {
92
+ filter .Name = args [1 ]
93
+ }
94
+ resourceModel , err := discoverer .DiscoverResourcesForHTTPRoute (filter )
95
+ if err != nil {
96
+ panic (err )
102
97
}
103
- httpRoutesPrinter .PrintDescribeView (context . TODO (), httpRoutes )
98
+ httpRoutesPrinter .PrintDescribeView (resourceModel )
104
99
105
100
case "gateway" , "gateways" :
106
- var gws []gatewayv1beta1.Gateway
107
- if len (args ) == 1 {
108
- var err error
109
- gws , err = resourcehelpers .ListGateways (context .TODO (), params .K8sClients , ns )
110
- if err != nil {
111
- panic (err )
112
- }
113
- } else {
114
- gw , err := resourcehelpers .GetGateways (context .TODO (), params .K8sClients , ns , args [1 ])
115
- if err != nil {
116
- panic (err )
117
- }
118
- gws = []gatewayv1beta1.Gateway {gw }
101
+ filter := resourcediscovery.Filter {Namespace : ns }
102
+ if len (args ) > 1 {
103
+ filter .Name = args [1 ]
104
+ }
105
+ resourceModel , err := discoverer .DiscoverResourcesForGateway (filter )
106
+ if err != nil {
107
+ panic (err )
119
108
}
120
- gwPrinter .PrintDescribeView (context . TODO (), gws )
109
+ gwPrinter .PrintDescribeView (resourceModel )
121
110
122
111
case "gatewayclass" , "gatewayclasses" :
123
- var gwClasses []gatewayv1beta1.GatewayClass
124
- if len (args ) == 1 {
125
- var err error
126
- gwClasses , err = resourcehelpers .ListGatewayClasses (context .TODO (), params .K8sClients )
127
- if err != nil {
128
- panic (err )
129
- }
130
- } else {
131
- gwc , err := resourcehelpers .GetGatewayClass (context .TODO (), params .K8sClients , args [1 ])
132
- if err != nil {
133
- panic (err )
134
- }
135
- gwClasses = []gatewayv1beta1.GatewayClass {gwc }
112
+ filter := resourcediscovery.Filter {}
113
+ if len (args ) > 1 {
114
+ filter .Name = args [1 ]
136
115
}
137
- gwcPrinter .PrintDescribeView (context .TODO (), gwClasses )
116
+ resourceModel , err := discoverer .DiscoverResourcesForGatewayClass (filter )
117
+ if err != nil {
118
+ panic (err )
119
+ }
120
+ gwcPrinter .PrintDescribeView (resourceModel )
138
121
139
122
case "backend" , "backends" :
140
- var backendsList []unstructured.Unstructured
141
-
142
- // We default the backends to just "Service" types initially.
143
- resourceType := "service"
144
-
145
- if len (args ) == 1 {
146
- var err error
147
- backendsList , err = resourcehelpers .ListBackends (context .TODO (), params .K8sClients , resourceType , ns )
148
- if err != nil {
149
- panic (err )
150
- }
151
- } else {
152
- backend , err := resourcehelpers .GetBackend (context .TODO (), params .K8sClients , resourceType , ns , args [1 ])
153
- if err != nil {
154
- panic (err )
155
- }
156
- backendsList = []unstructured.Unstructured {backend }
123
+ filter := resourcediscovery.Filter {
124
+ Namespace : ns ,
125
+ }
126
+ if len (args ) > 1 {
127
+ filter .Name = args [1 ]
128
+ }
129
+ resourceModel , err := discoverer .DiscoverResourcesForBackend (filter )
130
+ if err != nil {
131
+ panic (err )
157
132
}
158
- backendsPrinter .PrintDescribeView (context . TODO (), backendsList )
133
+ backendsPrinter .PrintDescribeView (resourceModel )
159
134
160
135
default :
161
136
fmt .Fprintf (os .Stderr , "Unrecognized RESOURCE_TYPE\n " )
0 commit comments