Moved Keep code to its own package.
[arvados.git] / services / datamanager / datamanager.go
index e00f103da6d941fbb9cfa9e0cd0f705d55588b9c..a2edc7be2f6859d7a5dd3c9ce6beb20b74c52dbb 100644 (file)
@@ -4,39 +4,46 @@ package main
 
 import (
        //"git.curoverse.com/arvados.git/sdk/go/keepclient"
-       "fmt"
        "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
+       "git.curoverse.com/arvados.git/sdk/go/util"
        "git.curoverse.com/arvados.git/services/datamanager/collection"
+       "git.curoverse.com/arvados.git/services/datamanager/keep"
        "log"
 )
 
 // Helper type so we don't have to write out 'map[string]interface{}' every time.
 type Dict map[string]interface{}
 
-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
-}
-
 func main() {
-       fmt.Println("Hello, world\n")
-
        arv, err := arvadosclient.MakeArvadosClient()
        if err != nil {
                log.Fatalf("Error setting up arvados client %s", err.Error())
        }
 
-       if is_admin, err := UserIsAdmin(arv); err != nil {
+       if is_admin, err := util.UserIsAdmin(arv); err != nil {
                log.Fatalf("Error querying current arvados user %s", err.Error())
        } else if !is_admin {
                log.Fatalf("Current user is not an admin. Datamanager can only be run by admins.")
        }
 
-       readCollections := collection.GetCollections(arv)
+       readCollections := collection.GetCollections(
+               collection.GetCollectionsParams{
+                       Client: arv, Limit: 50, LogEveryNthCollectionProcessed: 10})
+
+       //log.Printf("Read Collections: %v", readCollections)
+
+       // TODO(misha): Add a "readonly" flag. If we're in readonly mode,
+       // lots of behaviors can become warnings (and obviously we can't
+       // write anything).
+       // if !readCollections.ReadAllCollections {
+       //      log.Fatalf("Did not read all collections")
+       // }
+
+       log.Printf("Read and processed %d collections",
+               len(readCollections.UuidToCollection))
+
+       readServers := keep.GetKeepServers(
+               keep.GetKeepServersParams{Client: arv, Limit: 1000})
 
-       log.Printf("Read Collections: %v", readCollections)
+       log.Printf("Returned %d keep disks", len(readServers.AddressToContents))
 }