Skip to content

Commit 2879449

Browse files
committed
add output formatter
Signed-off-by: Maskym Vavilov <mvavilov@redhat.com>
1 parent 29c576c commit 2879449

File tree

13 files changed

+428
-213
lines changed

13 files changed

+428
-213
lines changed

cmd/plugin/cleanup_old_txt.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"sigs.k8s.io/external-dns/plan"
1717

1818
"github.com/kuadrant/dns-operator/cmd/plugin/common"
19+
"github.com/kuadrant/dns-operator/cmd/plugin/output"
1920
"github.com/kuadrant/dns-operator/internal/common/slice"
2021
"github.com/kuadrant/dns-operator/internal/external-dns/registry"
2122
"github.com/kuadrant/dns-operator/internal/provider"
@@ -52,7 +53,6 @@ func init() {
5253
}
5354

5455
func deleteOldTXT(_ *cobra.Command, args []string) error {
55-
log = logf.Log.WithName("prune-legacy-txt")
5656

5757
if cleanupOldTXTCMDFlags.domain == "" {
5858
return fmt.Errorf("domain is required")
@@ -80,18 +80,18 @@ func deleteOldTXT(_ *cobra.Command, args []string) error {
8080
Name: secretName,
8181
}
8282

83-
log.Info("obtaining list of endpoints from the provider")
83+
output.Formatter.Info("obtaining list of endpoints from the provider")
8484
endpointProvider, err := common.GetProviderForConfig(ctx, secretRef, provider.Config{
8585
DomainFilter: externaldns.NewRegexDomainFilter(domainRegexp, nil),
8686
})
8787
if err != nil {
88-
log.Error(err, "failed to get provider")
88+
output.Formatter.Error(err, "failed to get provider")
8989
return err
9090
}
9191

9292
endpoints, err := endpointProvider.Records(ctx)
9393
if err != nil {
94-
log.Error(err, "failed to get endpoints")
94+
output.Formatter.Error(err, "failed to get endpoints")
9595
return err
9696
}
9797

@@ -111,7 +111,7 @@ func deleteOldTXT(_ *cobra.Command, args []string) error {
111111
// owner and version in targets
112112
owner, epVersion, epLabels, err := registry.NewLabelsFromString(e.Targets[0], []byte{})
113113
if err != nil {
114-
log.Info(fmt.Sprintf("failed to extract owner labels: %v\n ep name: %s, targets: %s", err, e.DNSName, e.Targets))
114+
output.Formatter.Info(fmt.Sprintf("failed to extract owner labels: %v\n ep name: %s, targets: %s", err, e.DNSName, e.Targets))
115115
return false
116116
}
117117

@@ -137,44 +137,44 @@ func deleteOldTXT(_ *cobra.Command, args []string) error {
137137
})
138138

139139
if len(endpoints) == 0 {
140-
log.Info("no endpoints to be deleted found")
140+
output.Formatter.Info("no endpoints to be deleted found")
141141
return nil
142142
}
143143

144144
// display what is about to be deleted
145-
log.Info(fmt.Sprintf("TXT records (%d) to be deleted:", len(endpoints)))
145+
output.Formatter.Info(fmt.Sprintf("TXT records (%d) to be deleted:", len(endpoints)))
146146
for _, txtRecord := range endpoints {
147147
logf.Log.Info(fmt.Sprintf("%s\t IN\t %s\t %s", txtRecord.DNSName, txtRecord.RecordType, txtRecord.Targets))
148148
}
149-
log.Info(fmt.Sprintf("Do you want to proceed? [Y/N]"))
149+
output.Formatter.Info(fmt.Sprintf("Do you want to proceed? [Y/N]"))
150150
reader := bufio.NewReader(os.Stdin)
151151

152152
var answer string
153153

154154
if !cleanupOldTXTCMDFlags.assumeyes {
155155
answer, err = reader.ReadString('\n')
156156
if err != nil {
157-
log.Error(err, "failed to read answer", "answer", answer)
157+
output.Formatter.Error(err, fmt.Sprintf("failed to read answer: %s", answer))
158158
}
159159
answer = strings.TrimSpace(strings.ToLower(answer))
160160
}
161161

162162
if answer == "y" || cleanupOldTXTCMDFlags.assumeyes {
163163
//delete
164-
log.Info("deleting old TXT records...")
164+
output.Formatter.Info("deleting old TXT records...")
165165
err = endpointProvider.ApplyChanges(ctx, &plan.Changes{
166166
Delete: endpoints,
167167
})
168168
if err != nil {
169-
log.Error(err, "failed to delete old TXT records")
169+
output.Formatter.Error(err, "failed to delete old TXT records")
170170
return err
171171
}
172-
log.Info("records are deleted")
172+
output.Formatter.Info("records are deleted")
173173
return nil
174174
}
175175

176176
// do nothing
177-
log.Info("canceling")
177+
output.Formatter.Info("canceling")
178178
return nil
179179

180180
}

cmd/plugin/common/logging.go

Lines changed: 0 additions & 25 deletions
This file was deleted.

cmd/plugin/common/pretty.go

Lines changed: 0 additions & 36 deletions
This file was deleted.

cmd/plugin/delete_owner.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package main
33
import (
44
"github.com/spf13/cobra"
55

6-
logf "sigs.k8s.io/controller-runtime/pkg/log"
6+
"github.com/kuadrant/dns-operator/cmd/plugin/output"
77
)
88

99
var removeOwnerCMD = &cobra.Command{
@@ -12,8 +12,6 @@ var removeOwnerCMD = &cobra.Command{
1212
}
1313

1414
func removeOwner(_ *cobra.Command, _ []string) error {
15-
log = logf.Log.WithName("remove-owner")
16-
17-
log.Info("Deleting owner: TODO")
15+
output.Formatter.Info("Deleting owner: TODO")
1816
return nil
1917
}

cmd/plugin/get-zone-records.go

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
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

8988
func 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

231228
func 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

Comments
 (0)