@@ -21,14 +21,17 @@ import (
2121 "errors"
2222 "fmt"
2323 "io"
24+ "log"
2425 "net/http"
2526 "net/url"
2627 "strings"
2728 "sync"
2829 "time"
2930
31+ "github.com/vmware/govmomi/session"
3032 "github.com/vmware/govmomi/vapi/rest"
3133 "github.com/vmware/govmomi/vapi/tags"
34+ "github.com/vmware/govmomi/vim25"
3235 "github.com/vmware/govmomi/vim25/mo"
3336 "github.com/vmware/govmomi/vim25/types"
3437 "github.com/vmware/govmomi/vim25/xml"
@@ -147,17 +150,42 @@ func newClientWithTimeout(ctx context.Context, u *url.URL, insecure bool, timeou
147150 clientCreateCtx , clientCreateCtxCancel := context .WithTimeout (ctx , timeout )
148151 defer clientCreateCtxCancel ()
149152 // It makes call to vcenter during new client creation, so pass context with timeout there.
150- client , err := govmomi .NewClient (clientCreateCtx , u , insecure )
151- if err != nil {
152- return nil , err
153- }
153+ /*
154+ client, err := govmomi.NewClient(clientCreateCtx, u, insecure)
155+ if err != nil {
156+ return nil, err
157+ }
158+
159+ */
154160
155161 customTransport := & CustomTransport {
156162 RoundTripper : http .DefaultTransport ,
157163 }
158164
165+ soapClient := soap .NewClient (u , insecure )
166+ soapClient .Transport = customTransport
167+
168+ // Create vim25 client
169+ vimClient , err := vim25 .NewClient (clientCreateCtx , soapClient )
170+ if err != nil {
171+ log .Fatalf ("Failed to create vim25 client: %v" , err )
172+ }
173+
174+ // Create govmomi client
175+ client := & govmomi.Client {
176+ Client : vimClient ,
177+ SessionManager : session .NewManager (vimClient ),
178+ }
179+
180+ // Login to vSphere
181+ err = client .Login (ctx , u .User )
182+ if err != nil {
183+ log .Fatalf ("Failed to login to vSphere: %v" , err )
184+ }
185+ defer client .Logout (clientCreateCtx )
186+
159187 // Create SOAP client with custom transport
160- client .Transport = customTransport
188+ // client.Transport = customTransport
161189
162190 client .Timeout = timeout
163191 return client , nil
0 commit comments