github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/hyper-control/writeNetbootFiles.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 8 "github.com/Cloud-Foundations/Dominator/lib/log" 9 "github.com/Cloud-Foundations/Dominator/lib/srpc" 10 ) 11 12 func writeNetbootFilesSubcommand(args []string, logger log.DebugLogger) error { 13 err := writeNetbootFiles(args[0], args[1], logger) 14 if err != nil { 15 return fmt.Errorf("Error writing netboot files: %s", err) 16 } 17 return nil 18 } 19 20 func emptyTree(rootDir string) error { 21 dir, err := os.Open(rootDir) 22 if err != nil { 23 if os.IsNotExist(err) { 24 return nil 25 } 26 return err 27 } 28 names, err := dir.Readdirnames(-1) 29 dir.Close() 30 if err != nil { 31 return err 32 } 33 for _, name := range names { 34 if err := os.Remove(filepath.Join(rootDir, name)); err != nil { 35 return err 36 } 37 } 38 return nil 39 } 40 41 func writeNetbootFiles(hostname, dirname string, logger log.DebugLogger) error { 42 fmCR := srpc.NewClientResource("tcp", 43 fmt.Sprintf("%s:%d", *fleetManagerHostname, *fleetManagerPortNum)) 44 defer fmCR.ScheduleClose() 45 imageClient, err := srpc.DialHTTP("tcp", fmt.Sprintf("%s:%d", 46 *imageServerHostname, *imageServerPortNum), 0) 47 if err != nil { 48 return err 49 } 50 defer imageClient.Close() 51 _, _, configFiles, err := getInstallConfig(fmCR, imageClient, hostname, 52 false, logger) 53 if err != nil { 54 return err 55 } 56 if err := emptyTree(dirname); err != nil { 57 return err 58 } 59 return writeConfigFiles(dirname, configFiles) 60 }