Merge branch 'master' into 7241-azure-blob-volume
[arvados.git] / services / datamanager / datamanager.go
index 9cfd2ee5d71891fd6dfb1ff99f496d314abcdf7c..a9306ce83a6011002cef96b86eb6caf700feda23 100644 (file)
@@ -44,7 +44,7 @@ func main() {
        if minutesBetweenRuns == 0 {
                err := singlerun(makeArvadosClient())
                if err != nil {
-                       log.Fatalf("Got an error: %v", err)
+                       log.Fatalf("singlerun: %v", err)
                }
        } else {
                waitTime := time.Minute * time.Duration(minutesBetweenRuns)
@@ -52,7 +52,7 @@ func main() {
                        log.Println("Beginning Run")
                        err := singlerun(makeArvadosClient())
                        if err != nil {
-                               log.Printf("Got an error: %v", err)
+                               log.Printf("singlerun: %v", err)
                        }
                        log.Printf("Sleeping for %d minutes", minutesBetweenRuns)
                        time.Sleep(waitTime)
@@ -68,16 +68,12 @@ func makeArvadosClient() arvadosclient.ArvadosClient {
        return arv
 }
 
-var dataManagerToken string
-
 func singlerun(arv arvadosclient.ArvadosClient) error {
        var err error
-       if is_admin, err := util.UserIsAdmin(arv); err != nil {
-               log.Printf("Error querying current arvados user %s", err.Error())
-               return err
-       } else if !is_admin {
-               log.Printf("Current user is not an admin. Datamanager can only be run by admins.")
-               return errors.New("Current user is not an admin. Datamanager can only be run by admins.")
+       if isAdmin, err := util.UserIsAdmin(arv); err != nil {
+               return errors.New("Error verifying admin token: " + err.Error())
+       } else if !isAdmin {
+               return errors.New("Current user is not an admin. Datamanager requires a privileged token.")
        }
 
        var arvLogger *logger.Logger
@@ -93,21 +89,6 @@ func singlerun(arv arvadosclient.ArvadosClient) error {
                arvLogger.AddWriteHook(loggerutil.LogMemoryAlloc)
        }
 
-       // Verify that datamanager token belongs to an admin user
-       if dataManagerToken == "" {
-               dataManagerToken = keep.GetDataManagerToken(arvLogger)
-       }
-       origArvToken := arv.ApiToken
-       arv.ApiToken = dataManagerToken
-       if is_admin, err := util.UserIsAdmin(arv); err != nil {
-               log.Printf("Error querying arvados user for data manager token %s", err.Error())
-               return err
-       } else if !is_admin {
-               log.Printf("Datamanager token does not belong to an admin user.")
-               return errors.New("Datamanager token does not belong to an admin user.")
-       }
-       arv.ApiToken = origArvToken
-
        var (
                dataFetcher     summary.DataFetcher
                readCollections collection.ReadCollections
@@ -177,14 +158,13 @@ func singlerun(arv arvadosclient.ArvadosClient) error {
 
        if trashErr != nil {
                return err
-       } else {
-               keep.SendTrashLists(dataManagerToken, kc, trashLists)
        }
+       keep.SendTrashLists(kc, trashLists)
 
        return nil
 }
 
-// Returns a data fetcher that fetches data from remote servers.
+// BuildDataFetcher returns a data fetcher that fetches data from remote servers.
 func BuildDataFetcher(arv arvadosclient.ArvadosClient) summary.DataFetcher {
        return func(arvLogger *logger.Logger,
                readCollections *collection.ReadCollections,