func UserIsAdmin(arv arvadosclient.ArvadosClient) (is_admin bool, err error) { type user struct { IsAdmin bool `json:"is_admin"` } var u user err = arv.Call("GET", "users", "", "current", nil, &u) return u.IsAdmin, err }
// Returns the total count of a particular type of resource // // resource - the arvados resource to count // return // count - the number of items of type resource the api server reports, if no error // err - error accessing the resource, or nil if no error func NumberItemsAvailable(client arvadosclient.ArvadosClient, resource string) (count int, err error) { var response struct { ItemsAvailable int `json:"items_available"` } sdkParams := arvadosclient.Dict{"limit": 0} err = client.List(resource, sdkParams, &response) if err == nil { count = response.ItemsAvailable } return }
// 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 }