88 "strings"
99 "time"
1010
11- "github.com/go-logr/logr"
1211 "github.com/spf13/cobra"
1312
1413 corev1 "k8s.io/api/core/v1"
@@ -17,11 +16,11 @@ import (
1716 "k8s.io/client-go/kubernetes/scheme"
1817 controllerruntime "sigs.k8s.io/controller-runtime"
1918 "sigs.k8s.io/controller-runtime/pkg/client"
20- logf "sigs.k8s.io/controller-runtime/pkg/log"
2119 externaldns "sigs.k8s.io/external-dns/endpoint"
2220
2321 "github.com/kuadrant/dns-operator/api/v1alpha1"
2422 "github.com/kuadrant/dns-operator/cmd/plugin/common"
23+ "github.com/kuadrant/dns-operator/cmd/plugin/output"
2524 "github.com/kuadrant/dns-operator/internal/common/slice"
2625 "github.com/kuadrant/dns-operator/internal/provider"
2726 "github.com/kuadrant/dns-operator/internal/provider/endpoint"
@@ -87,86 +86,84 @@ func init() {
8786}
8887
8988func listZoneRecords (_ * cobra.Command , _ []string ) error {
90- log = logf .Log .WithName ("list-records" )
91-
9289 d := time .Now ().Add (time .Minute * 5 )
9390 ctx , cancel := context .WithDeadline (context .Background (), d )
9491 defer cancel ()
9592
96- log . V ( 1 ). Info ("Getting zone records" , "name" , name , " namespace" , namespace , " resourceType" , resourceType , " providerRef" , providerRef )
93+ output . Formatter . Debug ( fmt . Sprintf ("Getting zone records; Name: %s; Namespace: %s; resourceType: %s; providerRef: %s" , name , namespace , resourceType , providerRef ) )
9794
9895 runtime .Must (v1alpha1 .AddToScheme (scheme .Scheme ))
9996 config := controllerruntime .GetConfigOrDie ()
10097 k8sClient , err := client .New (config , client.Options {Scheme : scheme .Scheme })
10198 if err != nil {
102- log .Error (err , "failed to create client" )
99+ output . Formatter .Error (err , "failed to create client" )
103100 return err
104101 }
105102
106103 dynClient , err := dynamic .NewForConfig (config )
107104 if err != nil {
108- log .Error (err , "failed to create dynamic client" )
105+ output . Formatter .Error (err , "failed to create dynamic client" )
109106 return err
110107 }
111108
112109 switch strings .ToLower (resourceType ) {
113110 case host :
114- return hostWorkFlow (ctx , log , k8sClient , dynClient )
111+ return hostWorkFlow (ctx , k8sClient , dynClient )
115112 case DNSRecord :
116- return dnsRecordWorkFlow (ctx , log , k8sClient , dynClient )
113+ return dnsRecordWorkFlow (ctx , k8sClient , dynClient )
117114 default :
118115 return fmt .Errorf ("no workflow found for type: %s, this should be set to one of host of dnsrecord" , resourceType )
119116 }
120117}
121118
122- func hostWorkFlow (ctx context.Context , log logr. Logger , k8sClient client.Client , dynClient * dynamic.DynamicClient ) error {
123- log . V ( 1 ). Info ("Get secret from cluster based on the providerRef." )
119+ func hostWorkFlow (ctx context.Context , k8sClient client.Client , dynClient * dynamic.DynamicClient ) error {
120+ output . Formatter . Debug ("Get secret from cluster based on the providerRef." )
124121 secretRef , err := common .ParseProviderRef (providerRef )
125122 if err != nil {
126123 return err
127124 }
128125
129- log . V ( 1 ). Info ("secretRef" , " name" , secretRef .Name , "namespace" , secretRef .Namespace )
126+ output . Formatter . Debug ( fmt . Sprintf ("secretRef; name: %s; namespace: %s " , secretRef .Name , secretRef .Namespace ) )
130127
131128 secret := & corev1.Secret {}
132129 err = k8sClient .Get (ctx , client.ObjectKey {Name : secretRef .Name , Namespace : secretRef .Namespace }, secret )
133130 if err != nil {
134- log .Error (err , "failed to get secret" )
131+ output . Formatter .Error (err , "failed to get secret" )
135132 return err
136133 }
137134
138- log . V ( 1 ). Info ("found secret" , "secret" , secret )
135+ output . Formatter . Debug ( fmt . Sprintf ("found secret: %s" , secret ) )
139136
140- p , err := getProviderFromSecret (ctx , log , k8sClient , dynClient , secret , name )
137+ p , err := getProviderFromSecret (ctx , k8sClient , dynClient , secret , name )
141138 if err != nil {
142- log .Error (err , "unable to get configure provider" )
139+ output . Formatter .Error (err , "unable to get configure provider" )
143140 return err
144141 }
145142
146143 endpoints , err := getEndpoints (ctx , p , name )
147144 if err != nil {
148- log .Error (err , "unable to get endpoints from provider" )
145+ output . Formatter .Error (err , "unable to get endpoints from provider" )
149146 return err
150147 }
151148
152- common .RenderEndpoints (endpoints )
149+ output . Formatter .RenderEndpoints (endpoints )
153150
154151 return err
155152}
156153
157- func dnsRecordWorkFlow (ctx context.Context , log logr. Logger , k8sClient client.Client , dynClient * dynamic.DynamicClient ) error {
158- log . V ( 1 ). Info ("Get DNSRecord from the cluster based on the name and namespace provided" )
154+ func dnsRecordWorkFlow (ctx context.Context , k8sClient client.Client , dynClient * dynamic.DynamicClient ) error {
155+ output . Formatter . Debug ("Get DNSRecord from the cluster based on the name and namespace provided" )
159156 dnsRecord := & v1alpha1.DNSRecord {}
160157 err := k8sClient .Get (ctx , client.ObjectKey {Namespace : namespace , Name : name }, dnsRecord )
161158 if err != nil {
162- log . Error (err , "Unable to get DNSRecord" , "DNSRecord" , name )
159+ output . Formatter . Error (err , fmt . Sprintf ( "Unable to get DNSRecord; DNSREcord name: %s" , name ) )
163160 return err
164161 }
165162
166163 // get the provider factory
167164 providerFactory , err := provider .NewFactory (k8sClient , dynClient , provider .RegisteredDefaultProviders (), endpoint .NewAuthoritativeDNSRecordProvider )
168165 if err != nil {
169- log .Error (err , "failed to create provider factory" )
166+ output . Formatter .Error (err , "failed to create provider factory" )
170167 return err
171168 }
172169
@@ -175,52 +172,52 @@ func dnsRecordWorkFlow(ctx context.Context, log logr.Logger, k8sClient client.Cl
175172 _ , zoneHost , found := strings .Cut (dnsRecord .GetRootHost (), "." )
176173 if ! found {
177174 err = errors .New ("invalid dns record hostname: " + dnsRecord .GetRootHost ())
178- log .Error (err , "failed to prepare zone filter regexp" )
175+ output . Formatter .Error (err , "failed to prepare zone filter regexp" )
179176 return err
180177 }
181178
182179 p , err := providerFactory .ProviderFor (ctx , dnsRecord , provider.Config {
183180 DomainFilter : externaldns .NewDomainFilter ([]string {zoneHost }),
184181 })
185182 if err != nil {
186- log .Error (err , "unable to get configure provider" )
183+ output . Formatter .Error (err , "unable to get configure provider" )
187184 return err
188185 }
189186
190187 endpoints , err := getEndpoints (ctx , p , dnsRecord .GetRootHost ())
191188 if err != nil {
192- log .Error (err , "unable to get endpoints from provider" )
189+ output . Formatter .Error (err , "unable to get endpoints from provider" )
193190 return err
194191 }
195192
196- common .RenderEndpoints (endpoints )
193+ output . Formatter .RenderEndpoints (endpoints )
197194
198195 return err
199196}
200197
201- func getProviderFromSecret (ctx context.Context , log logr. Logger , k8sClient client.Client , dynClient * dynamic.DynamicClient , secret * corev1.Secret , host string ) (provider.Provider , error ) {
198+ func getProviderFromSecret (ctx context.Context , k8sClient client.Client , dynClient * dynamic.DynamicClient , secret * corev1.Secret , host string ) (provider.Provider , error ) {
202199 if secret == nil {
203200 err := errors .New ("secret can not be nil" )
204201
205- log .Error (err , "please check configuration" )
202+ output . Formatter .Error (err , "please check configuration" )
206203 return nil , err
207204 }
208205
209- log . V ( 1 ). Info ("secret passed" , "secret" , secret )
206+ output . Formatter . Debug ( fmt . Sprintf ("secret passed: %s" , secret ) )
210207
211208 providerFactory , err := provider .NewFactory (k8sClient , dynClient , provider .RegisteredDefaultProviders (), endpoint .NewAuthoritativeDNSRecordProvider )
212209 if err != nil {
213- log .Error (err , "failed to create provider factory" )
210+ output . Formatter .Error (err , "failed to create provider factory" )
214211 return nil , err
215212 }
216213
217214 // empty config to list all records
218- log . V ( 1 ). Info ("obtaining list of endpoints from the provider" )
215+ output . Formatter . Debug ("obtaining list of endpoints from the provider" )
219216 endpointProvider , err := providerFactory .ProviderForSecret (ctx , secret , provider.Config {
220217 DomainFilter : externaldns .NewDomainFilter ([]string {host }),
221218 })
222219 if err != nil {
223- log .Error (err , "failed to get provider" )
220+ output . Formatter .Error (err , "failed to get provider" )
224221 return nil , err
225222 }
226223
@@ -229,11 +226,11 @@ func getProviderFromSecret(ctx context.Context, log logr.Logger, k8sClient clien
229226}
230227
231228func getEndpoints (ctx context.Context , p provider.Provider , rootHost string ) ([]* externaldns.Endpoint , error ) {
232- log . V ( 1 ). Info ("get records from provider" , " provider.name" , p .Name (), "roothost" , rootHost )
229+ output . Formatter . Debug ( fmt . Sprintf ("get records from provider; provider.name: %s; rootHost: %s " , p .Name (), rootHost ) )
233230
234231 endpoints , err := p .Records (ctx )
235232 if err != nil {
236- log .Error (err , "unable to get records from provider" )
233+ output . Formatter .Error (err , "unable to get records from provider" )
237234 return nil , err
238235 }
239236
0 commit comments