Skip to content

Commit cdb8936

Browse files
Add trace log for gophercloud client, fix contexts
This activates the default logging for the gophercloud client, when setting the log level to 6. This adapts some contexts. Signed-off-by: Sean Schneeweiss <[email protected]>
1 parent d520355 commit cdb8936

File tree

3 files changed

+30
-14
lines changed

3 files changed

+30
-14
lines changed

controllers/openstackcluster_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func (r *OpenStackClusterReconciler) Reconcile(ctx context.Context, req ctrl.Req
120120
func reconcileDelete(ctx context.Context, log logr.Logger, client client.Client, patchHelper *patch.Helper, cluster *clusterv1.Cluster, openStackCluster *infrav1.OpenStackCluster) (ctrl.Result, error) {
121121
log.Info("Reconciling Cluster delete")
122122

123-
osProviderClient, clientOpts, err := provider.NewClientFromCluster(client, openStackCluster)
123+
osProviderClient, clientOpts, err := provider.NewClientFromCluster(ctx, client, openStackCluster)
124124
if err != nil {
125125
return reconcile.Result{}, err
126126
}
@@ -230,7 +230,7 @@ func reconcileNormal(ctx context.Context, log logr.Logger, client client.Client,
230230
return reconcile.Result{}, err
231231
}
232232

233-
osProviderClient, clientOpts, err := provider.NewClientFromCluster(client, openStackCluster)
233+
osProviderClient, clientOpts, err := provider.NewClientFromCluster(ctx, client, openStackCluster)
234234
if err != nil {
235235
return reconcile.Result{}, err
236236
}

controllers/openstackmachine_controller.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,12 @@ func (r *OpenStackMachineReconciler) SetupWithManager(ctx context.Context, mgr c
172172
).
173173
Watches(
174174
&source.Kind{Type: &infrav1.OpenStackCluster{}},
175-
handler.EnqueueRequestsFromMapFunc(r.OpenStackClusterToOpenStackMachines(ctrl.LoggerFrom(ctx))),
175+
handler.EnqueueRequestsFromMapFunc(r.OpenStackClusterToOpenStackMachines(ctx)),
176176
).
177177
WithEventFilter(predicates.ResourceNotPausedAndHasFilterLabel(ctrl.LoggerFrom(ctx), r.WatchFilterValue)).
178178
Watches(
179179
&source.Kind{Type: &clusterv1.Cluster{}},
180-
handler.EnqueueRequestsFromMapFunc(r.requeueOpenStackMachinesForUnpausedCluster(ctrl.LoggerFrom(ctx))),
180+
handler.EnqueueRequestsFromMapFunc(r.requeueOpenStackMachinesForUnpausedCluster(ctx)),
181181
builder.WithPredicates(predicates.ClusterUnpausedAndInfrastructureReady(ctrl.LoggerFrom(ctx))),
182182
).
183183
Complete(r)
@@ -188,7 +188,7 @@ func (r *OpenStackMachineReconciler) reconcileDelete(ctx context.Context, logger
188188

189189
clusterName := fmt.Sprintf("%s-%s", cluster.ObjectMeta.Namespace, cluster.Name)
190190

191-
osProviderClient, clientOpts, err := provider.NewClientFromMachine(r.Client, openStackMachine)
191+
osProviderClient, clientOpts, err := provider.NewClientFromMachine(ctx, r.Client, openStackMachine)
192192
if err != nil {
193193
return ctrl.Result{}, err
194194
}
@@ -282,7 +282,7 @@ func (r *OpenStackMachineReconciler) reconcileNormal(ctx context.Context, logger
282282

283283
clusterName := fmt.Sprintf("%s-%s", cluster.ObjectMeta.Namespace, cluster.Name)
284284

285-
osProviderClient, clientOpts, err := provider.NewClientFromMachine(r.Client, openStackMachine)
285+
osProviderClient, clientOpts, err := provider.NewClientFromMachine(ctx, r.Client, openStackMachine)
286286
if err != nil {
287287
return ctrl.Result{}, err
288288
}
@@ -399,7 +399,8 @@ func (r *OpenStackMachineReconciler) reconcileLoadBalancerMember(logger logr.Log
399399

400400
// OpenStackClusterToOpenStackMachine is a handler.ToRequestsFunc to be used to enqeue requests for reconciliation
401401
// of OpenStackMachines.
402-
func (r *OpenStackMachineReconciler) OpenStackClusterToOpenStackMachines(log logr.Logger) handler.MapFunc {
402+
func (r *OpenStackMachineReconciler) OpenStackClusterToOpenStackMachines(ctx context.Context) handler.MapFunc {
403+
log := ctrl.LoggerFrom(ctx)
403404
return func(o client.Object) []ctrl.Request {
404405
c, ok := o.(*infrav1.OpenStackCluster)
405406
if !ok {
@@ -447,7 +448,8 @@ func (r *OpenStackMachineReconciler) getBootstrapData(machine *clusterv1.Machine
447448
return base64.StdEncoding.EncodeToString(value), nil
448449
}
449450

450-
func (r *OpenStackMachineReconciler) requeueOpenStackMachinesForUnpausedCluster(log logr.Logger) handler.MapFunc {
451+
func (r *OpenStackMachineReconciler) requeueOpenStackMachinesForUnpausedCluster(ctx context.Context) handler.MapFunc {
452+
log := ctrl.LoggerFrom(ctx)
451453
return func(o client.Object) []ctrl.Request {
452454
c, ok := o.(*clusterv1.Cluster)
453455
if !ok {

pkg/cloud/services/provider/provider.go

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@ import (
2525

2626
"github.com/gophercloud/gophercloud"
2727
"github.com/gophercloud/gophercloud/openstack"
28+
osclient "github.com/gophercloud/utils/client"
2829
"github.com/gophercloud/utils/openstack/clientconfig"
2930
v1 "k8s.io/api/core/v1"
3031
"k8s.io/apimachinery/pkg/types"
32+
"k8s.io/klog/v2"
3133
"sigs.k8s.io/controller-runtime/pkg/client"
3234
"sigs.k8s.io/yaml"
3335

@@ -39,7 +41,7 @@ const (
3941
CaSecretKey = "cacert"
4042
)
4143

42-
func NewClientFromMachine(ctrlClient client.Client, openStackMachine *infrav1.OpenStackMachine) (*gophercloud.ProviderClient, *clientconfig.ClientOpts, error) {
44+
func NewClientFromMachine(ctx context.Context, ctrlClient client.Client, openStackMachine *infrav1.OpenStackMachine) (*gophercloud.ProviderClient, *clientconfig.ClientOpts, error) {
4345
var cloud clientconfig.Cloud
4446
var caCert []byte
4547

@@ -49,15 +51,15 @@ func NewClientFromMachine(ctrlClient client.Client, openStackMachine *infrav1.Op
4951
namespace = openStackMachine.Namespace
5052
}
5153
var err error
52-
cloud, caCert, err = getCloudFromSecret(ctrlClient, namespace, openStackMachine.Spec.CloudsSecret.Name, openStackMachine.Spec.CloudName)
54+
cloud, caCert, err = getCloudFromSecret(ctx, ctrlClient, namespace, openStackMachine.Spec.CloudsSecret.Name, openStackMachine.Spec.CloudName)
5355
if err != nil {
5456
return nil, nil, err
5557
}
5658
}
5759
return NewClient(cloud, caCert)
5860
}
5961

60-
func NewClientFromCluster(ctrlClient client.Client, openStackCluster *infrav1.OpenStackCluster) (*gophercloud.ProviderClient, *clientconfig.ClientOpts, error) {
62+
func NewClientFromCluster(ctx context.Context, ctrlClient client.Client, openStackCluster *infrav1.OpenStackCluster) (*gophercloud.ProviderClient, *clientconfig.ClientOpts, error) {
6163
var cloud clientconfig.Cloud
6264
var caCert []byte
6365

@@ -67,7 +69,7 @@ func NewClientFromCluster(ctrlClient client.Client, openStackCluster *infrav1.Op
6769
namespace = openStackCluster.Namespace
6870
}
6971
var err error
70-
cloud, caCert, err = getCloudFromSecret(ctrlClient, namespace, openStackCluster.Spec.CloudsSecret.Name, openStackCluster.Spec.CloudName)
72+
cloud, caCert, err = getCloudFromSecret(ctx, ctrlClient, namespace, openStackCluster.Spec.CloudsSecret.Name, openStackCluster.Spec.CloudName)
7173
if err != nil {
7274
return nil, nil, err
7375
}
@@ -106,16 +108,28 @@ func NewClient(cloud clientconfig.Cloud, caCert []byte) (*gophercloud.ProviderCl
106108
}
107109

108110
provider.HTTPClient.Transport = &http.Transport{Proxy: http.ProxyFromEnvironment, TLSClientConfig: config}
111+
if klog.V(6).Enabled() {
112+
provider.HTTPClient.Transport = &osclient.RoundTripper{
113+
Rt: provider.HTTPClient.Transport,
114+
Logger: &defaultLogger{},
115+
}
116+
}
109117
err = openstack.Authenticate(provider, *opts)
110118
if err != nil {
111119
return nil, nil, fmt.Errorf("providerClient authentication err: %v", err)
112120
}
113121
return provider, clientOpts, nil
114122
}
115123

124+
type defaultLogger struct{}
125+
126+
// Printf is a default Printf method.
127+
func (defaultLogger) Printf(format string, args ...interface{}) {
128+
klog.V(6).Infof(format, args...)
129+
}
130+
116131
// getCloudFromSecret extract a Cloud from the given namespace:secretName.
117-
func getCloudFromSecret(ctrlClient client.Client, secretNamespace string, secretName string, cloudName string) (clientconfig.Cloud, []byte, error) {
118-
ctx := context.TODO()
132+
func getCloudFromSecret(ctx context.Context, ctrlClient client.Client, secretNamespace string, secretName string, cloudName string) (clientconfig.Cloud, []byte, error) {
119133
emptyCloud := clientconfig.Cloud{}
120134

121135
if secretName == "" {

0 commit comments

Comments
 (0)