@@ -132,9 +132,14 @@ func GetOrCreate(ctx context.Context, params *Params) (*Session, error) {
132132 logger .V (2 ).Info ("found active cached vSphere client session" )
133133 return s , nil
134134 }
135- }
136135
137- clearCache (logger , sessionKey )
136+ logger .V (2 ).Info ("logout the session because it is inactive" )
137+ if err := s .Client .Logout (ctx ); err != nil {
138+ logger .Error (err , "unable to logout session" )
139+ } else {
140+ logger .Info ("logout session succeed" )
141+ }
142+ }
138143
139144 // soap.ParseURL expects a valid URL. In the case of a bare, unbracketed
140145 // IPv6 address (e.g fd00::1) ParseURL will fail. Surround unbracketed IPv6
@@ -206,16 +211,11 @@ func newClient(ctx context.Context, logger logr.Logger, sessionKey string, url *
206211 }
207212
208213 vimClient .RoundTripper = session .KeepAliveHandler (vimClient .RoundTripper , feature .KeepAliveDuration , func (tripper soap.RoundTripper ) error {
209- // we tried implementing
210- // c.Login here but the client once logged out
211- // keeps errong in invalid username or password
212- // we tried with cached username and password in session still the error persisted
213- // hence we just clear the cache and expect the client to
214- // be recreated in next GetOrCreate call
215214 _ , err := methods .GetCurrentTime (ctx , tripper )
216215 if err != nil {
217216 logger .Error (err , "failed to keep alive govmomi client" )
218- clearCache (logger , sessionKey )
217+ logger .Info ("clearing the session" , "key" , sessionKey )
218+ sessionCache .Delete (sessionKey )
219219 }
220220 return err
221221 })
@@ -227,18 +227,6 @@ func newClient(ctx context.Context, logger logr.Logger, sessionKey string, url *
227227 return c , nil
228228}
229229
230- func clearCache (logger logr.Logger , sessionKey string ) {
231- if cachedSession , ok := sessionCache .Load (sessionKey ); ok {
232- s := cachedSession .(* Session )
233-
234- logger .Info ("performing session log out and clearing session" , "key" , sessionKey )
235- if err := s .Logout (context .Background ()); err != nil {
236- logger .Error (err , "unable to logout session" )
237- }
238- }
239- sessionCache .Delete (sessionKey )
240- }
241-
242230// newManager creates a Manager that encompasses the REST Client for the VSphere tagging API.
243231func newManager (ctx context.Context , logger logr.Logger , sessionKey string , client * vim25.Client , user * url.Userinfo , feature Feature ) (* tags.Manager , error ) {
244232 rc := rest .NewClient (client )
@@ -251,8 +239,8 @@ func newManager(ctx context.Context, logger logr.Logger, sessionKey string, clie
251239 return nil
252240 }
253241
254- logger .Info ("rest client session expired, clearing cache" )
255- clearCache ( logger , sessionKey )
242+ logger .Info ("rest client session expired, clearing session" , "key" , sessionKey )
243+ sessionCache . Delete ( sessionKey )
256244 return errors .New ("rest client session expired" )
257245 })
258246 if err := rc .Login (ctx , user ); err != nil {
0 commit comments