// setup keepclient using the config provided func setupKeepClient(config apiConfig, keepServicesJSON string, isDst bool, replications int, srcBlobSignatureTTL time.Duration) (kc *keepclient.KeepClient, blobSignatureTTL time.Duration, err error) { arv := arvadosclient.ArvadosClient{ ApiToken: config.APIToken, ApiServer: config.APIHost, ApiInsecure: config.APIHostInsecure, Client: &http.Client{Transport: &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: config.APIHostInsecure}}}, External: config.ExternalClient, } // if keepServicesJSON is provided, use it to load services; else, use DiscoverKeepServers if keepServicesJSON == "" { kc, err = keepclient.MakeKeepClient(&arv) if err != nil { return nil, 0, err } } else { kc = keepclient.New(&arv) err = kc.LoadKeepServicesFromJSON(keepServicesJSON) if err != nil { return kc, 0, err } } if isDst { // Get default replications value from destination, if it is not already provided if replications == 0 { value, err := arv.Discovery("defaultCollectionReplication") if err == nil { replications = int(value.(float64)) } else { return nil, 0, err } } kc.Want_replicas = replications } // If srcBlobSignatureTTL is not provided, get it from API server discovery doc blobSignatureTTL = srcBlobSignatureTTL if !isDst && srcBlobSignatureTTL == 0 { value, err := arv.Discovery("blobSignatureTtl") if err == nil { blobSignatureTTL = time.Duration(int(value.(float64))) * time.Second } else { return nil, 0, err } } return kc, blobSignatureTTL, nil }
// New func creates a new KeepClient struct. // This func does not discover keep servers. It is the caller's responsibility. func New(arv *arvadosclient.ArvadosClient) *KeepClient { defaultReplicationLevel := 2 value, err := arv.Discovery("defaultCollectionReplication") if err == nil { v, ok := value.(float64) if ok && v > 0 { defaultReplicationLevel = int(v) } } kc := &KeepClient{ Arvados: arv, Want_replicas: defaultReplicationLevel, Client: &http.Client{Transport: &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: arv.ApiInsecure}}}, Retries: 2, } return kc }
// setup keepclient using the config provided func setupKeepClient(config apiConfig, keepServicesJSON string, blobSignatureTTL time.Duration) (kc *keepclient.KeepClient, ttl time.Duration, err error) { arv := arvadosclient.ArvadosClient{ ApiToken: config.APIToken, ApiServer: config.APIHost, ApiInsecure: config.APIHostInsecure, Client: &http.Client{Transport: &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: config.APIHostInsecure}}}, External: config.ExternalClient, } // if keepServicesJSON is provided, use it to load services; else, use DiscoverKeepServers if keepServicesJSON == "" { kc, err = keepclient.MakeKeepClient(&arv) if err != nil { return } } else { kc = keepclient.New(&arv) err = kc.LoadKeepServicesFromJSON(keepServicesJSON) if err != nil { return } } // Get if blobSignatureTTL is not provided ttl = blobSignatureTTL if blobSignatureTTL == 0 { value, err := arv.Discovery("blobSignatureTtl") if err == nil { ttl = time.Duration(int(value.(float64))) * time.Second } else { return nil, 0, err } } return }