Merge branch 'master' into 7490-datamanager-dont-die-return-error
[arvados.git] / services / datamanager / summary / file.go
index ce7d6874122cd520d918d083c1b6deedc0a009f8..18b3aec8190408897d2857e3e6b2a212936bc21c 100644 (file)
@@ -26,6 +26,11 @@ var (
        readDataFrom string
 )
 
+// DataFetcher to fetch data from keep servers
+type DataFetcher func(arvLogger *logger.Logger,
+       readCollections *collection.ReadCollections,
+       keepServerInfo *keep.ReadServers)
+
 func init() {
        flag.StringVar(&writeDataTo,
                "write-data-to",
@@ -37,7 +42,7 @@ func init() {
                "Avoid network i/o and read summary data from this file instead. Used for development only.")
 }
 
-// Writes data we've read to a file.
+// MaybeWriteData writes data we've read to a file.
 //
 // This is useful for development, so that we don't need to read all
 // our data from the network every time we tweak something.
@@ -49,40 +54,45 @@ func MaybeWriteData(arvLogger *logger.Logger,
        keepServerInfo keep.ReadServers) bool {
        if writeDataTo == "" {
                return false
-       } else {
-               summaryFile, err := os.Create(writeDataTo)
-               if err != nil {
-                       loggerutil.FatalWithMessage(arvLogger,
-                               fmt.Sprintf("Failed to open %s: %v", writeDataTo, err))
-               }
-               defer summaryFile.Close()
+       }
+       summaryFile, err := os.Create(writeDataTo)
+       if err != nil {
+               loggerutil.FatalWithMessage(arvLogger,
+                       fmt.Sprintf("Failed to open %s: %v", writeDataTo, err))
+       }
+       defer summaryFile.Close()
 
-               enc := gob.NewEncoder(summaryFile)
-               data := serializedData{
-                       ReadCollections: readCollections,
-                       KeepServerInfo:  keepServerInfo}
-               err = enc.Encode(data)
-               if err != nil {
-                       loggerutil.FatalWithMessage(arvLogger,
-                               fmt.Sprintf("Failed to write summary data: %v", err))
-               }
-               log.Printf("Wrote summary data to: %s", writeDataTo)
-               return true
+       enc := gob.NewEncoder(summaryFile)
+       data := serializedData{
+               ReadCollections: readCollections,
+               KeepServerInfo:  keepServerInfo}
+       err = enc.Encode(data)
+       if err != nil {
+               loggerutil.FatalWithMessage(arvLogger,
+                       fmt.Sprintf("Failed to write summary data: %v", err))
        }
+       log.Printf("Wrote summary data to: %s", writeDataTo)
+       return true
 }
 
-// Reads data that we've written to a file.
+// ShouldReadData should not be used outside of development
+func ShouldReadData() bool {
+       return readDataFrom != ""
+}
+
+// ReadData reads data that we've written to a file.
 //
 // This is useful for development, so that we don't need to read all
 // our data from the network every time we tweak something.
 //
 // This should not be used outside of development, since you'll be
 // working with stale data.
-func MaybeReadData(arvLogger *logger.Logger,
+func ReadData(arvLogger *logger.Logger,
        readCollections *collection.ReadCollections,
-       keepServerInfo *keep.ReadServers) bool {
+       keepServerInfo *keep.ReadServers) {
        if readDataFrom == "" {
-               return false
+               loggerutil.FatalWithMessage(arvLogger,
+                       "ReadData() called with empty filename.")
        } else {
                summaryFile, err := os.Open(readDataFrom)
                if err != nil {
@@ -107,6 +117,5 @@ func MaybeReadData(arvLogger *logger.Logger,
                *readCollections = data.ReadCollections
                *keepServerInfo = data.KeepServerInfo
                log.Printf("Read summary data from: %s", readDataFrom)
-               return true
        }
 }