@@ -26,6 +26,7 @@ import (
2626 "sqlflow.org/sqlflow/go/database"
2727 "sqlflow.org/sqlflow/go/model"
2828 pb "sqlflow.org/sqlflow/go/proto"
29+ "sqlflow.org/sqlflow/go/step/tablewriter"
2930 "sqlflow.org/sqlflow/go/tar"
3031)
3132
@@ -267,3 +268,93 @@ func deleteRepo(opts *options) error {
267268 }
268269 return nil
269270}
271+
272+ func listModels (opts * options ) error {
273+ if err := checkModelZooParam (opts ); err != nil {
274+ return err
275+ }
276+ conn , err := getModelZooServerConn (opts )
277+ if err != nil {
278+ return err
279+ }
280+ defer conn .Close ()
281+
282+ writer , err := tablewriter .Create ("ascii" , 1024 , os .Stdout )
283+ if err != nil {
284+ return err
285+ }
286+ writer .SetHeader (map [string ]interface {}{
287+ "columnNames" : []string {
288+ "Name" , "Tag" , "ModelStoreUrl" , "ImageUrl" , "Description" , "Metric" },
289+ })
290+
291+ start := int64 (0 )
292+ client := pb .NewModelZooServerClient (conn )
293+ for {
294+ req := & pb.ListModelRequest {
295+ // (TODO: lhw) add authentication information in request
296+ Start : start ,
297+ Size : 100 ,
298+ }
299+ resp , err := client .ListModels (context .Background (), req )
300+ if err != nil {
301+ return err
302+ }
303+ if resp .Size <= 0 {
304+ break
305+ }
306+ for _ , m := range resp .ModelList {
307+ writer .AppendRow ([]interface {}{
308+ m .Name , m .Tag , m .ModelStoreUrl , m .ImageUrl , m .Description , m .Metric ,
309+ })
310+ }
311+ start += resp .Size
312+ }
313+ writer .Flush ()
314+ return nil
315+ }
316+
317+ func listRepos (opts * options ) error {
318+ if err := checkModelZooParam (opts ); err != nil {
319+ return err
320+ }
321+ conn , err := getModelZooServerConn (opts )
322+ if err != nil {
323+ return err
324+ }
325+ defer conn .Close ()
326+
327+ writer , err := tablewriter .Create ("ascii" , 1024 , os .Stdout )
328+ if err != nil {
329+ return err
330+ }
331+ writer .SetHeader (map [string ]interface {}{
332+ "columnNames" : []string {
333+ "ClassName" , "ImageUrl" , "Tag" , "ArgDescs" },
334+ })
335+
336+ start := int64 (0 )
337+ client := pb .NewModelZooServerClient (conn )
338+ for {
339+ req := & pb.ListModelRequest {
340+ // (TODO: lhw) add authentication information in request
341+ Start : start ,
342+ Size : 100 ,
343+ }
344+ resp , err := client .ListModelRepos (context .Background (), req )
345+ if err != nil {
346+ return err
347+ }
348+ if resp .Size <= 0 {
349+ break
350+ }
351+ for _ , r := range resp .ModelDefList {
352+ writer .AppendRow ([]interface {}{
353+ r .ClassName , r .ImageUrl , r .Tag , r .ArgDescs ,
354+ })
355+ }
356+ start += int64 (resp .Size )
357+ }
358+ writer .Flush ()
359+ return nil
360+ }
0 commit comments