DiscoveryDoc Dict
}
-// Create a new ArvadosClient, initialized with standard Arvados environment
-// variables ARVADOS_API_HOST, ARVADOS_API_TOKEN, and (optionally)
-// ARVADOS_API_HOST_INSECURE.
+// APIConfig struct consists of:
+// APIToken string
+// APIHost string
+// APIHostInsecure bool
+// ExternalClient bool
+type APIConfig struct {
+ APIToken string
+ APIHost string
+ APIHostInsecure bool
+ ExternalClient bool
+}
+
+// Create a new ArvadosClient, initialized with standard Arvados environment variables
+// ARVADOS_API_HOST, ARVADOS_API_TOKEN, ARVADOS_API_HOST_INSECURE, ARVADOS_EXTERNAL_CLIENT.
func MakeArvadosClient() (ac ArvadosClient, err error) {
- config := make(map[string]string)
- config["ARVADOS_API_TOKEN"] = os.Getenv("ARVADOS_API_TOKEN")
- config["ARVADOS_API_HOST"] = os.Getenv("ARVADOS_API_HOST")
- config["ARVADOS_API_HOST_INSECURE"] = os.Getenv("ARVADOS_API_HOST_INSECURE")
- config["ARVADOS_EXTERNAL_CLIENT"] = os.Getenv("ARVADOS_EXTERNAL_CLIENT")
+ var config APIConfig
+ config.APIToken = os.Getenv("ARVADOS_API_TOKEN")
+ config.APIHost = os.Getenv("ARVADOS_API_HOST")
+
+ var matchTrue = regexp.MustCompile("^(?i:1|yes|true)$")
+
+ config.APIHostInsecure = matchTrue.MatchString(os.Getenv("ARVADOS_API_HOST_INSECURE"))
+ config.ExternalClient = matchTrue.MatchString(os.Getenv("ARVADOS_EXTERNAL_CLIENT"))
return MakeArvadosClientWithConfig(config)
}
// Create a new ArvadosClient, using the given input parameters.
-func MakeArvadosClientWithConfig(config map[string]string) (ac ArvadosClient, err error) {
- var matchTrue = regexp.MustCompile("^(?i:1|yes|true)$")
-
- insecure := matchTrue.MatchString(config["ARVADOS_API_HOST_INSECURE"])
- external := matchTrue.MatchString(config["ARVADOS_EXTERNAL_CLIENT"])
-
+func MakeArvadosClientWithConfig(config APIConfig) (ac ArvadosClient, err error) {
ac = ArvadosClient{
- ApiServer: config["ARVADOS_API_HOST"],
- ApiToken: config["ARVADOS_API_TOKEN"],
- ApiInsecure: insecure,
+ ApiServer: config.APIHost,
+ ApiToken: config.APIToken,
+ ApiInsecure: config.APIHostInsecure,
Client: &http.Client{Transport: &http.Transport{
- TLSClientConfig: &tls.Config{InsecureSkipVerify: insecure}}},
- External: external}
+ TLSClientConfig: &tls.Config{InsecureSkipVerify: config.APIHostInsecure}}},
+ External: config.ExternalClient}
if ac.ApiServer == "" {
return ac, MissingArvadosApiHost
"git.curoverse.com/arvados.git/sdk/go/keepclient"
"io/ioutil"
"log"
+ "regexp"
"strings"
)
// keep-rsync arguments
var (
- srcConfig map[string]string
- dstConfig map[string]string
+ srcConfig arvadosclient.APIConfig
+ dstConfig arvadosclient.APIConfig
srcKeepServicesJSON string
dstKeepServicesJSON string
replications int
var err error
+ // Load config
if srcConfigFile == "" {
log.Fatal("-src-config-file must be specified.")
}
log.Fatal("Error reading destination configuration: %s", err.Error())
}
+ // Initialize keep-rsync
err = initializeKeepRsync()
if err != nil {
log.Fatal("Error configurating keep-rsync: %s", err.Error())
}
}
+var matchTrue = regexp.MustCompile("^(?i:1|yes|true)$")
+
// Reads config from file
-func readConfigFromFile(filename string) (map[string]string, error) {
+func readConfigFromFile(filename string) (arvadosclient.APIConfig, error) {
+ var config arvadosclient.APIConfig
+
content, err := ioutil.ReadFile(filename)
if err != nil {
- return nil, err
+ return config, err
}
- config := make(map[string]string)
lines := strings.Split(string(content), "\n")
for _, line := range lines {
if line == "" {
continue
}
kv := strings.Split(line, "=")
- config[kv[0]] = kv[1]
+
+ switch kv[0] {
+ case "ARVADOS_API_TOKEN":
+ config.APIToken = kv[1]
+ case "ARVADOS_API_HOST":
+ config.APIHost = kv[1]
+ case "ARVADOS_API_HOST_INSECURE":
+ config.APIHostInsecure = matchTrue.MatchString(kv[1])
+ case "ARVADOS_EXTERNAL_CLIENT":
+ config.ExternalClient = matchTrue.MatchString(kv[1])
+ }
}
return config, nil
}
return
}
}
+ kcDst.Want_replicas = replications
return
}
"fmt"
"io/ioutil"
"os"
+ "regexp"
"testing"
"git.curoverse.com/arvados.git/sdk/go/arvadostest"
// to create the keep servers to be used as destination.
func setupRsync(c *C) {
// srcConfig
- srcConfig = make(map[string]string)
- srcConfig["ARVADOS_API_HOST"] = os.Getenv("ARVADOS_API_HOST")
- srcConfig["ARVADOS_API_TOKEN"] = os.Getenv("ARVADOS_API_TOKEN")
- srcConfig["ARVADOS_API_HOST_INSECURE"] = os.Getenv("ARVADOS_API_HOST_INSECURE")
+ srcConfig.APIHost = os.Getenv("ARVADOS_API_HOST")
+ srcConfig.APIToken = os.Getenv("ARVADOS_API_TOKEN")
+ srcConfig.APIHostInsecure = matchTrue.MatchString(os.Getenv("ARVADOS_API_HOST_INSECURE"))
// dstConfig
- dstConfig = make(map[string]string)
- dstConfig["ARVADOS_API_HOST"] = os.Getenv("ARVADOS_API_HOST")
- dstConfig["ARVADOS_API_TOKEN"] = os.Getenv("ARVADOS_API_TOKEN")
- dstConfig["ARVADOS_API_HOST_INSECURE"] = os.Getenv("ARVADOS_API_HOST_INSECURE")
+ dstConfig.APIHost = os.Getenv("ARVADOS_API_HOST")
+ dstConfig.APIToken = os.Getenv("ARVADOS_API_TOKEN")
+ dstConfig.APIHostInsecure = matchTrue.MatchString(os.Getenv("ARVADOS_API_HOST_INSECURE"))
+ replications = 1
+
+ // Start API and Keep servers
arvadostest.StartAPI()
arvadostest.StartKeep()
// Invoke readConfigFromFile method with this test filename
config, err := readConfigFromFile(file.Name())
c.Assert(err, Equals, nil)
- c.Assert(config["ARVADOS_API_HOST"], Equals, "testhost")
- c.Assert(config["ARVADOS_API_TOKEN"], Equals, "testtoken")
- c.Assert(config["ARVADOS_API_HOST_INSECURE"], Equals, "true")
- c.Assert(config["EXTERNAL_CLIENT"], Equals, "")
+ c.Assert(config.APIHost, Equals, "testhost")
+ c.Assert(config.APIToken, Equals, "testtoken")
+ c.Assert(config.APIHostInsecure, Equals, true)
+ c.Assert(config.ExternalClient, Equals, false)
}
// Test keep-rsync initialization, with src and dst keep servers.
c.Check(localRoots != nil, Equals, true)
foundIt := false
- for k, _ := range localRoots {
+ for k := range localRoots {
if k == "zzzzz-bi6l4-123456789012340" {
foundIt = true
}
c.Check(foundIt, Equals, true)
foundIt = false
- for k, _ := range localRoots {
+ for k := range localRoots {
if k == "zzzzz-bi6l4-123456789012341" {
foundIt = true
}