func (i *vSphereInstanceManager) createClient(ctx context.Context) (*govmomi.Client, error) { client, err := govmomi.NewClient(ctx, i.vSphereURL, true) if err != nil { return nil, err } client.Client.RoundTripper = vim25.Retry(client.Client.RoundTripper, vim25.TemporaryNetworkError(3)) return client, nil }
// configure TLS and retry settings before making any connections func (flag *ClientFlag) configure(sc *soap.Client) (soap.RoundTripper, error) { if err := flag.SetRootCAs(sc); err != nil { return nil, err } if err := sc.LoadThumbprints(flag.tlsKnownHosts); err != nil { return nil, err } // Retry twice when a temporary I/O error occurs. // This means a maximum of 3 attempts. return vim25.Retry(sc, vim25.TemporaryNetworkError(3)), nil }
// configure TLS and retry settings before making any connections func (flag *ClientFlag) configure(sc *soap.Client) (soap.RoundTripper, error) { // Set namespace and version sc.Namespace = flag.vimNamespace sc.Version = flag.vimVersion sc.UserAgent = fmt.Sprintf("govc/%s", Version) if err := flag.SetRootCAs(sc); err != nil { return nil, err } if err := sc.LoadThumbprints(flag.tlsKnownHosts); err != nil { return nil, err } // Retry twice when a temporary I/O error occurs. // This means a maximum of 3 attempts. return vim25.Retry(sc, vim25.TemporaryNetworkError(3)), nil }
func newClient(cfg *VSphereConfig, ctx context.Context) (*govmomi.Client, error) { // Parse URL from string u, err := url.Parse(fmt.Sprintf("https://%s:%s/sdk", cfg.Global.VCenterIP, cfg.Global.VCenterPort)) if err != nil { return nil, err } // set username and password for the URL u.User = url.UserPassword(cfg.Global.User, cfg.Global.Password) // Connect and log in to ESX or vCenter c, err := govmomi.NewClient(ctx, u, cfg.Global.InsecureFlag) if err != nil { return nil, err } // Add retry functionality c.RoundTripper = vim25.Retry(c.RoundTripper, vim25.TemporaryNetworkError(int(cfg.Global.RoundTripperCount))) return c, nil }
// Retry twice when a temporary I/O error occurs. // This means a maximum of 3 attempts. func attachRetries(rt soap.RoundTripper) soap.RoundTripper { return vim25.Retry(rt, vim25.TemporaryNetworkError(3)) }