Skip to content

Commit 528b8a7

Browse files
justaugustusk8s-ci-robot
authored andcommitted
Wire context-based logging in scopes (#214)
* Add logging interface (github.com/go-logr/logr) to cloudtest Signed-off-by: Stephen Augustus <[email protected]> * Update scope and machine scope to use logr.Logger Signed-off-by: Stephen Augustus <[email protected]>
1 parent 1db1fc4 commit 528b8a7

File tree

9 files changed

+226
-18
lines changed

9 files changed

+226
-18
lines changed

Gopkg.lock

Lines changed: 7 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/cloud/azure/actuators/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ go_library(
1515
"//pkg/cloud/azure:go_default_library",
1616
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
1717
"//vendor/github.com/Azure/go-autorest/autorest/azure/auth:go_default_library",
18+
"//vendor/github.com/go-logr/logr:go_default_library",
1819
"//vendor/github.com/pkg/errors:go_default_library",
1920
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
2021
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
2122
"//vendor/k8s.io/klog:go_default_library",
23+
"//vendor/k8s.io/klog/klogr:go_default_library",
2224
"//vendor/sigs.k8s.io/cluster-api/pkg/apis/cluster/v1alpha1:go_default_library",
2325
"//vendor/sigs.k8s.io/cluster-api/pkg/client/clientset_generated/clientset/typed/cluster/v1alpha1:go_default_library",
2426
"//vendor/sigs.k8s.io/yaml:go_default_library",

pkg/cloud/azure/actuators/machine_scope.go

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ limitations under the License.
1717
package actuators
1818

1919
import (
20+
"fmt"
21+
22+
"github.com/go-logr/logr"
2023
"github.com/pkg/errors"
2124
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2225
"k8s.io/apimachinery/pkg/runtime"
@@ -33,17 +36,23 @@ type MachineScopeParams struct {
3336
Cluster *clusterv1.Cluster
3437
Machine *clusterv1.Machine
3538
Client client.ClusterV1alpha1Interface
39+
Logger logr.Logger
3640
}
3741

3842
// NewMachineScope creates a new MachineScope from the supplied parameters.
3943
// This is meant to be called for each machine actuator operation.
4044
func NewMachineScope(params MachineScopeParams) (*MachineScope, error) {
41-
scope, err := NewScope(ScopeParams{AzureClients: params.AzureClients, Client: params.Client, Cluster: params.Cluster})
45+
scope, err := NewScope(ScopeParams{
46+
AzureClients: params.AzureClients,
47+
Client: params.Client,
48+
Cluster: params.Cluster,
49+
Logger: params.Logger,
50+
})
4251
if err != nil {
4352
return nil, err
4453
}
4554

46-
machineConfig, err := MachineConfigFromProviderSpec(params.Client, params.Machine.Spec.ProviderSpec)
55+
machineConfig, err := MachineConfigFromProviderSpec(params.Client, params.Machine.Spec.ProviderSpec, scope.Logger)
4756
if err != nil {
4857
return nil, errors.Wrap(err, "failed to get machine config")
4958
}
@@ -137,43 +146,43 @@ func (m *MachineScope) Close() {
137146
}
138147

139148
// MachineConfigFromProviderSpec tries to decode the JSON-encoded spec, falling back on getting a MachineClass if the value is absent.
140-
func MachineConfigFromProviderSpec(clusterClient client.MachineClassesGetter, providerConfig clusterv1.ProviderSpec) (*v1alpha1.AzureMachineProviderSpec, error) {
149+
func MachineConfigFromProviderSpec(clusterClient client.MachineClassesGetter, providerConfig clusterv1.ProviderSpec, log logr.Logger) (*v1alpha1.AzureMachineProviderSpec, error) {
141150
var config v1alpha1.AzureMachineProviderSpec
142151
if providerConfig.Value != nil {
143-
klog.V(4).Info("Decoding ProviderConfig from Value")
144-
return unmarshalProviderSpec(providerConfig.Value)
152+
log.V(4).Info("Decoding ProviderConfig from Value")
153+
return unmarshalProviderSpec(providerConfig.Value, log)
145154
}
146155

147156
if providerConfig.ValueFrom != nil && providerConfig.ValueFrom.MachineClass != nil {
148157
ref := providerConfig.ValueFrom.MachineClass
149-
klog.V(4).Info("Decoding ProviderConfig from MachineClass")
150-
klog.V(6).Infof("ref: %v", ref)
151-
if ref.Provider != "" && ref.Provider != "azure" {
158+
log.V(4).Info("Decoding ProviderConfig from MachineClass")
159+
log.V(6).Info("Machine class reference", "ref", fmt.Sprintf("%+v", ref))
160+
if ref.Provider != "" && ref.Provider != "aws" {
152161
return nil, errors.Errorf("Unsupported provider: %q", ref.Provider)
153162
}
154163

155164
if len(ref.Namespace) > 0 && len(ref.Name) > 0 {
156-
klog.V(4).Infof("Getting MachineClass: %s/%s", ref.Namespace, ref.Name)
165+
log.V(4).Info("Getting MachineClass", "reference-namespace", ref.Namespace, "reference-name", ref.Name)
157166
mc, err := clusterClient.MachineClasses(ref.Namespace).Get(ref.Name, metav1.GetOptions{})
158-
klog.V(6).Infof("Retrieved MachineClass: %+v", mc)
167+
log.V(6).Info("Retrieved MachineClass", "machine-class", fmt.Sprintf("%+v", mc))
159168
if err != nil {
160169
return nil, err
161170
}
162171
providerConfig.Value = &mc.ProviderSpec
163-
return unmarshalProviderSpec(&mc.ProviderSpec)
172+
return unmarshalProviderSpec(&mc.ProviderSpec, log)
164173
}
165174
}
166175

167176
return &config, nil
168177
}
169178

170-
func unmarshalProviderSpec(spec *runtime.RawExtension) (*v1alpha1.AzureMachineProviderSpec, error) {
179+
func unmarshalProviderSpec(spec *runtime.RawExtension, log logr.Logger) (*v1alpha1.AzureMachineProviderSpec, error) {
171180
var config v1alpha1.AzureMachineProviderSpec
172181
if spec != nil {
173182
if err := yaml.Unmarshal(spec.Raw, &config); err != nil {
174183
return nil, err
175184
}
176185
}
177-
klog.V(6).Infof("Found ProviderSpec: %+v", config)
186+
log.V(6).Info("Found ProviderSpec", "provider-spec", fmt.Sprintf("%+v", config))
178187
return &config, nil
179188
}

pkg/cloud/azure/actuators/scope.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ import (
2121
"os"
2222

2323
"github.com/Azure/go-autorest/autorest/azure/auth"
24+
"github.com/go-logr/logr"
2425
"github.com/pkg/errors"
2526
"k8s.io/klog"
27+
"k8s.io/klog/klogr"
2628
"sigs.k8s.io/cluster-api-provider-azure/pkg/apis/azureprovider/v1alpha1"
2729
clusterv1 "sigs.k8s.io/cluster-api/pkg/apis/cluster/v1alpha1"
2830
client "sigs.k8s.io/cluster-api/pkg/client/clientset_generated/clientset/typed/cluster/v1alpha1"
@@ -33,6 +35,7 @@ type ScopeParams struct {
3335
AzureClients
3436
Cluster *clusterv1.Cluster
3537
Client client.ClusterV1alpha1Interface
38+
Logger logr.Logger
3639
}
3740

3841
// NewScope creates a new Scope from the supplied parameters.
@@ -44,12 +47,12 @@ func NewScope(params ScopeParams) (*Scope, error) {
4447

4548
clusterConfig, err := v1alpha1.ClusterConfigFromProviderSpec(params.Cluster.Spec.ProviderSpec)
4649
if err != nil {
47-
return nil, errors.Wrap(err, "failed to load cluster provider config")
50+
return nil, errors.Errorf("failed to load cluster provider config: %v", err)
4851
}
4952

5053
clusterStatus, err := v1alpha1.ClusterStatusFromProviderStatus(params.Cluster.Status.ProviderStatus)
5154
if err != nil {
52-
return nil, errors.Wrap(err, "failed to load cluster provider status")
55+
return nil, errors.Errorf("failed to load cluster provider status: %v", err)
5356
}
5457

5558
authorizer, err := auth.NewAuthorizerFromEnvironment()
@@ -69,13 +72,18 @@ func NewScope(params ScopeParams) (*Scope, error) {
6972
clusterClient = params.Client.Clusters(params.Cluster.Namespace)
7073
}
7174

75+
if params.Logger == nil {
76+
params.Logger = klogr.New().WithName("default-logger")
77+
}
78+
7279
return &Scope{
7380
AzureClients: params.AzureClients,
7481
Cluster: params.Cluster,
7582
ClusterClient: clusterClient,
7683
ClusterConfig: clusterConfig,
7784
ClusterStatus: clusterStatus,
7885
Context: context.Background(),
86+
Logger: params.Logger.WithName(params.Cluster.APIVersion).WithName(params.Cluster.Namespace).WithName(params.Cluster.Name),
7987
}, nil
8088
}
8189

@@ -87,6 +95,7 @@ type Scope struct {
8795
ClusterConfig *v1alpha1.AzureClusterProviderSpec
8896
ClusterStatus *v1alpha1.AzureClusterProviderStatus
8997
Context context.Context
98+
logr.Logger
9099
}
91100

92101
// Network returns the cluster network object.

pkg/cloudtest/BUILD.bazel

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,8 @@ go_library(
55
srcs = ["cloudtest.go"],
66
importpath = "sigs.k8s.io/cluster-api-provider-azure/pkg/cloudtest",
77
visibility = ["//visibility:public"],
8-
deps = ["//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library"],
8+
deps = [
9+
"//vendor/github.com/go-logr/logr:go_default_library",
10+
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
11+
],
912
)

pkg/cloudtest/cloudtest.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"encoding/json"
2121
"testing"
2222

23+
"github.com/go-logr/logr"
2324
"k8s.io/apimachinery/pkg/runtime"
2425
)
2526

@@ -36,3 +37,14 @@ func RuntimeRawExtension(t *testing.T, p interface{}) *runtime.RawExtension {
3637
Raw: out,
3738
}
3839
}
40+
41+
// Log implements logr.Logger for testing. Do not use if you actually want to
42+
// test log messages.
43+
type Log struct{}
44+
45+
func (l *Log) Error(err error, msg string, keysAndValues ...interface{}) {}
46+
func (l *Log) V(level int) logr.InfoLogger { return l }
47+
func (l *Log) WithValues(keysAndValues ...interface{}) logr.Logger { return l }
48+
func (l *Log) WithName(name string) logr.Logger { return l }
49+
func (l *Log) Info(msg string, keysAndValues ...interface{}) {}
50+
func (l *Log) Enabled() bool { return false }

vendor/k8s.io/klog/klogr/BUILD.bazel

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/k8s.io/klog/klogr/README.md

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/k8s.io/klog/klogr/klogr.go

Lines changed: 147 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)