github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/unpacker-tool/getStatus.go (about) 1 package main 2 3 import ( 4 "errors" 5 "fmt" 6 "os" 7 8 "github.com/Cloud-Foundations/Dominator/imageunpacker/client" 9 "github.com/Cloud-Foundations/Dominator/lib/json" 10 "github.com/Cloud-Foundations/Dominator/lib/log" 11 "github.com/Cloud-Foundations/Dominator/lib/srpc" 12 ) 13 14 func getStatusSubcommand(args []string, logger log.DebugLogger) error { 15 if err := getStatus(getClient()); err != nil { 16 return fmt.Errorf("Error getting status: %s", err) 17 } 18 return nil 19 } 20 21 func getStatus(srpcClient *srpc.Client) error { 22 status, err := client.GetStatus(srpcClient) 23 if err != nil { 24 return err 25 } 26 return json.WriteWithIndent(os.Stdout, " ", status) 27 } 28 29 func getDeviceForStreamSubcommand(args []string, logger log.DebugLogger) error { 30 if err := getDeviceForStream(getClient(), args[0]); err != nil { 31 return fmt.Errorf("Error getting device for stream: %s", err) 32 } 33 return nil 34 } 35 36 func getDeviceForStream(srpcClient *srpc.Client, streamName string) error { 37 status, err := client.GetStatus(srpcClient) 38 if err != nil { 39 return err 40 } 41 streamInfo, ok := status.ImageStreams[streamName] 42 if !ok { 43 return errors.New("unknown stream: " + streamName) 44 } 45 if streamInfo.DeviceId == "" { 46 return errors.New("no device for stream: " + streamName) 47 } 48 _, err = fmt.Println(streamInfo.DeviceId) 49 return err 50 }