Skip to content

Commit c3779d3

Browse files
authored
Merge pull request #860 from Daimler/gopher-tracelog
✨ Add gophercloud request logs, fix contexts
2 parents d520355 + cdb8936 commit c3779d3

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)