Merge branch '7167-keep-rsync-test-setup' into 7167-keep-rsync
[arvados.git] / tools / keep-rsync / keep-rsync.go
index c06fb8a303e3d5ead97d77a12ddeafdf24979a94..f33c8167579c39a6191460cd580f1f3f14148b5e 100644 (file)
@@ -7,13 +7,15 @@ import (
        "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
+       blobSigningKey      string
        srcKeepServicesJSON string
        dstKeepServicesJSON string
        replications        int
@@ -30,7 +32,7 @@ func main() {
                "",
                "Source configuration filename with full path that contains "+
                        "an ARVADOS_API_TOKEN which is a valid datamanager token recognized by the source keep servers, "+
-                       "ARVADOS_API_HOST, ARVADOS_API_HOST_INSECURE, and ARVADOS_BLOB_SIGNING_KEY.")
+                       "ARVADOS_API_HOST, ARVADOS_API_HOST_INSECURE, ARVADOS_EXTERNAL_CLIENT and ARVADOS_BLOB_SIGNING_KEY.")
 
        flag.StringVar(
                &dstConfigFile,
@@ -38,7 +40,7 @@ func main() {
                "",
                "Destination configuration filename with full path that contains "+
                        "an ARVADOS_API_TOKEN which is a valid datamanager token recognized by the destination keep servers, "+
-                       "ARVADOS_API_HOST, ARVADOS_API_HOST_INSECURE, and ARVADOS_BLOB_SIGNING_KEY.")
+                       "ARVADOS_API_HOST, ARVADOS_API_HOST_INSECURE, ARVADOS_EXTERNAL_CLIENT and ARVADOS_BLOB_SIGNING_KEY.")
 
        flag.StringVar(
                &srcKeepServicesJSON,
@@ -97,21 +99,36 @@ func main() {
        performKeepRsync()
 }
 
+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])
+               case "ARVADOS_BLOB_SIGNING_KEY":
+                       blobSigningKey = kv[1]
+               }
        }
        return config, nil
 }
@@ -127,13 +144,13 @@ var (
 // Initializes keep-rsync using the config provided
 func initializeKeepRsync() (err error) {
        // arvSrc from srcConfig
-       arvSrc, err = arvadosclient.MakeArvadosClientWithConfig(srcConfig)
+       arvSrc, err = arvadosclient.New(srcConfig)
        if err != nil {
                return
        }
 
        // arvDst from dstConfig
-       arvDst, err = arvadosclient.MakeArvadosClientWithConfig(dstConfig)
+       arvDst, err = arvadosclient.New(dstConfig)
        if err != nil {
                return
        }