@@ -18,6 +18,7 @@ package session
18
18
19
19
import (
20
20
"context"
21
+ "crypto/sha256"
21
22
"fmt"
22
23
"net/netip"
23
24
"net/url"
@@ -113,14 +114,22 @@ func (p *Params) WithFeatures(feature Feature) *Params {
113
114
// GetOrCreate gets a cached session or creates a new one if one does not
114
115
// already exist.
115
116
func GetOrCreate (ctx context.Context , params * Params ) (* Session , error ) {
116
- logger := ctrl .LoggerFrom (ctx ).WithName ("session" )
117
+ logger := ctrl .LoggerFrom (ctx ).WithName ("session" ).WithValues (
118
+ "server" , params .server ,
119
+ "datacenter" , params .datacenter ,
120
+ "username" , params .userinfo .Username ())
121
+
117
122
sessionMU .Lock ()
118
123
defer sessionMU .Unlock ()
119
124
120
- sessionKey := params .server + params .userinfo .Username () + params .datacenter
125
+ userPassword , _ := params .userinfo .Password ()
126
+ h := sha256 .New ()
127
+ h .Write ([]byte (userPassword ))
128
+ hashedUserPassword := h .Sum (nil )
129
+ sessionKey := fmt .Sprintf ("%s#%s#%s#%x" , params .server , params .datacenter , params .userinfo .Username (),
130
+ hashedUserPassword )
121
131
if cachedSession , ok := sessionCache .Load (sessionKey ); ok {
122
132
s := cachedSession .(* Session )
123
- logger = logger .WithValues ("server" , params .server , "datacenter" , params .datacenter )
124
133
125
134
vimSessionActive , err := s .SessionManager .SessionIsActive (ctx )
126
135
if err != nil {
@@ -220,7 +229,7 @@ func newClient(ctx context.Context, logger logr.Logger, sessionKey string, url *
220
229
_ , err := methods .GetCurrentTime (ctx , tripper )
221
230
if err != nil {
222
231
logger .Error (err , "failed to keep alive govmomi client" )
223
- logger .Info ("clearing the session" , "key" , sessionKey )
232
+ logger .Info ("clearing the session" )
224
233
sessionCache .Delete (sessionKey )
225
234
}
226
235
return err
@@ -247,7 +256,7 @@ func newManager(ctx context.Context, logger logr.Logger, sessionKey string, clie
247
256
return nil
248
257
}
249
258
250
- logger .Info ("rest client session expired, clearing session" , "key" , sessionKey )
259
+ logger .Info ("rest client session expired, clearing session" )
251
260
sessionCache .Delete (sessionKey )
252
261
return errors .New ("rest client session expired" )
253
262
})
0 commit comments