@@ -37,16 +37,18 @@ const (
37
37
38
38
// VSphereConnection contains information for connecting to vCenter
39
39
type VSphereConnection struct {
40
- Client * vim25.Client
41
- Username string
42
- Password string
43
- Hostname string
44
- Port string
45
- CACert string
46
- Thumbprint string
47
- Insecure bool
48
- RoundTripperCount uint
49
- credentialsLock sync.Mutex
40
+ Client * vim25.Client
41
+ Username string
42
+ Password string
43
+ Hostname string
44
+ Port string
45
+ CACert string
46
+ Thumbprint string
47
+ Insecure bool
48
+ SessionManagerURL string
49
+ SessionManagerToken string
50
+ RoundTripperCount uint
51
+ credentialsLock sync.Mutex
50
52
}
51
53
52
54
var (
@@ -132,6 +134,22 @@ func (connection *VSphereConnection) login(ctx context.Context, client *vim25.Cl
132
134
connection .credentialsLock .Lock ()
133
135
defer connection .credentialsLock .Unlock ()
134
136
137
+ if connection .SessionManagerURL != "" && connection .SessionManagerToken != "" {
138
+ token , err := GetSharedToken (ctx , SharedTokenOptions {
139
+ URL : connection .SessionManagerURL ,
140
+ Token : connection .SessionManagerToken ,
141
+ })
142
+ if err != nil {
143
+ klog .Errorf ("error getting shared session token: %s" , err )
144
+ return err
145
+ }
146
+ if err := m .CloneSession (ctx , token ); err != nil {
147
+ klog .Errorf ("error getting shared cloned session token: %s" , err )
148
+ return err
149
+ }
150
+ return nil
151
+ }
152
+
135
153
signer , err := connection .Signer (ctx , client )
136
154
if err != nil {
137
155
return err
@@ -196,9 +214,11 @@ func (connection *VSphereConnection) NewClient(ctx context.Context) (*vim25.Clie
196
214
197
215
// UpdateCredentials updates username and password.
198
216
// Note: Updated username and password will be used when there is no session active
199
- func (connection * VSphereConnection ) UpdateCredentials (username string , password string ) {
217
+ func (connection * VSphereConnection ) UpdateCredentials (username string , password string , sessionmgrURL string , sessionmgrToken string ) {
200
218
connection .credentialsLock .Lock ()
201
219
defer connection .credentialsLock .Unlock ()
202
220
connection .Username = username
203
221
connection .Password = password
222
+ connection .SessionManagerURL = sessionmgrURL
223
+ connection .SessionManagerToken = sessionmgrToken
204
224
}
0 commit comments