github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/objecttool/addObjects.go (about) 1 package main 2 3 import ( 4 "bufio" 5 "fmt" 6 "os" 7 8 "github.com/Cloud-Foundations/Dominator/lib/log" 9 objectclient "github.com/Cloud-Foundations/Dominator/lib/objectserver/client" 10 "github.com/Cloud-Foundations/Dominator/lib/srpc" 11 ) 12 13 func addObjectsSubcommand(args []string, logger log.DebugLogger) error { 14 if err := addObjects(fmt.Sprintf("%s:%d", 15 *objectServerHostname, *objectServerPortNum), args); err != nil { 16 return fmt.Errorf("Error adding objects hash: %s", err) 17 } 18 return nil 19 } 20 21 func addObjects(address string, filenames []string) error { 22 client, err := srpc.DialHTTP("tcp", address, 0) 23 if err != nil { 24 return err 25 } 26 defer client.Close() 27 objQ, err := objectclient.NewObjectAdderQueue(client) 28 if err != nil { 29 return err 30 } 31 for _, filename := range filenames { 32 if err := addObject(objQ, filename); err != nil { 33 objQ.Close() 34 return err 35 } 36 } 37 return objQ.Close() 38 } 39 40 func addObject(objQ *objectclient.ObjectAdderQueue, filename string) error { 41 file, err := os.Open(filename) 42 if err != nil { 43 return err 44 } 45 defer file.Close() 46 fi, err := file.Stat() 47 if err != nil { 48 return err 49 } 50 if !fi.Mode().IsRegular() { 51 return nil 52 } 53 _, err = objQ.Add(bufio.NewReader(file), uint64(fi.Size())) 54 return err 55 }