func (l *List) Run(cli *cli.Context) (err error) { if err = l.processParams(); err != nil { return err } if l.Debug.Debug > 0 { log.SetLevel(log.DebugLevel) trace.Logger.Level = log.DebugLevel } if len(cli.Args()) > 0 { log.Errorf("Unknown argument: %s", cli.Args()[0]) return errors.New("invalid CLI arguments") } log.Infof("### Listing VCHs ####") ctx, cancel := context.WithTimeout(context.Background(), l.Timeout) defer cancel() defer func() { if ctx.Err() != nil && ctx.Err() == context.DeadlineExceeded { //context deadline exceeded, replace returned error message err = errors.Errorf("List timed out: use --timeout to add more time") } }() var validator *validate.Validator if l.Data.ComputeResourcePath == "" { validator, err = validate.CreateNoDCCheck(ctx, l.Data) } else { validator, err = validate.NewValidator(ctx, l.Data) } if err != nil { log.Errorf("List cannot continue - failed to create validator: %s", err) return errors.New("list failed") } _, err = validator.ValidateTarget(ctx, l.Data) if err != nil { log.Errorf("List cannot continue - target validation failed: %s", err) return err } _, err = validator.ValidateCompute(ctx, l.Data) if err != nil { log.Errorf("List cannot continue - compute resource validation failed: %s", err) return err } executor := management.NewDispatcher(validator.Context, validator.Session, nil, false) vchs, err := executor.SearchVCHs(validator.ResourcePoolPath) if err != nil { log.Errorf("List cannot continue - failed to search VCHs in %s: %s", validator.ResourcePoolPath, err) } l.prettyPrint(cli, ctx, vchs, executor) return nil }