@@ -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"
@@ -109,14 +110,22 @@ func (p *Params) WithFeatures(feature Feature) *Params {
109
110
// GetOrCreate gets a cached session or creates a new one if one does not
110
111
// already exist.
111
112
func GetOrCreate (ctx context.Context , params * Params ) (* Session , error ) {
112
- logger := ctrl .LoggerFrom (ctx ).WithName ("session" )
113
+ logger := ctrl .LoggerFrom (ctx ).WithName ("session" ).WithValues (
114
+ "server" , params .server ,
115
+ "datacenter" , params .datacenter ,
116
+ "username" , params .userinfo .Username ())
117
+
113
118
sessionMU .Lock ()
114
119
defer sessionMU .Unlock ()
115
120
116
- sessionKey := params .server + params .userinfo .Username () + params .datacenter
121
+ userPassword , _ := params .userinfo .Password ()
122
+ h := sha256 .New ()
123
+ h .Write ([]byte (userPassword ))
124
+ hashedUserPassword := h .Sum (nil )
125
+ sessionKey := fmt .Sprintf ("%s#%s#%s#%x" , params .server , params .datacenter , params .userinfo .Username (),
126
+ hashedUserPassword )
117
127
if cachedSession , ok := sessionCache .Load (sessionKey ); ok {
118
128
s := cachedSession .(* Session )
119
- logger = logger .WithValues ("server" , params .server , "datacenter" , params .datacenter )
120
129
121
130
vimSessionActive , err := s .SessionManager .SessionIsActive (ctx )
122
131
if err != nil {
@@ -215,7 +224,7 @@ func newClient(ctx context.Context, logger logr.Logger, sessionKey string, url *
215
224
_ , err := methods .GetCurrentTime (ctx , tripper )
216
225
if err != nil {
217
226
logger .Error (err , "failed to keep alive govmomi client" )
218
- logger .Info ("clearing the session" , "key" , sessionKey )
227
+ logger .Info ("clearing the session" )
219
228
sessionCache .Delete (sessionKey )
220
229
}
221
230
return err
@@ -240,7 +249,7 @@ func newManager(ctx context.Context, logger logr.Logger, sessionKey string, clie
240
249
return nil
241
250
}
242
251
243
- logger .Info ("rest client session expired, clearing session" , "key" , sessionKey )
252
+ logger .Info ("rest client session expired, clearing session" )
244
253
sessionCache .Delete (sessionKey )
245
254
return errors .New ("rest client session expired" )
246
255
})
0 commit comments