// FindTools returns al ist of tools matching the specified version number and // series, and, arch. If arch is blank, a default will be used. func (st *State) FindTools(v version.Number, series string, arch string) (tools.List, error) { args := params.FindToolsParams{ Number: v, Series: series, MajorVersion: -1, MinorVersion: -1, } if arch != "" { args.Arch = arch } var result params.FindToolsResult if err := st.facade.FacadeCall("FindTools", args, &result); err != nil { return nil, err } if result.Error != nil { return nil, result.Error } return result.List, nil }
func (s *provisionerSuite) testFindTools(c *gc.C, matchArch bool, apiError, logicError error) { var toolsList = coretools.List{&coretools.Tools{Version: version.Current}} var called bool provisioner.PatchFacadeCall(s, s.provisioner, func(request string, args, response interface{}) error { called = true c.Assert(request, gc.Equals, "FindTools") expected := params.FindToolsParams{ Number: version.Current.Number, Series: version.Current.Series, MinorVersion: -1, MajorVersion: -1, } if matchArch { expected.Arch = arch.HostArch() } c.Assert(args, gc.Equals, expected) result := response.(*params.FindToolsResult) result.List = toolsList if logicError != nil { result.Error = common.ServerError(logicError) } return apiError }) var a *string if matchArch { arch := arch.HostArch() a = &arch } apiList, err := s.provisioner.FindTools(version.Current.Number, version.Current.Series, a) c.Assert(called, jc.IsTrue) if apiError != nil { c.Assert(err, gc.Equals, apiError) } else if logicError != nil { c.Assert(err.Error(), gc.Equals, logicError.Error()) } else { c.Assert(err, jc.ErrorIsNil) c.Assert(apiList, jc.SameContents, toolsList) } }