Documentation ¶
Overview ¶
toreq implements a Traffic Ops client for features in the latest version.
This should only be used if an endpoint or field needed for config gen is in the latest.
Users should always check the returned bool, and if it's false, call the vendored toreq client and set the proper defaults for the new feature(s).
All TOClient functions should check for 404 or 503 and return a bool false if so.
Index ¶
- Constants
- func GetCDNByName(toClient *toclient.Session, name tc.CDNName, opts *toclient.RequestOptions) (tc.CDN, toclientlib.ReqInf, error)
- func GetDeliveryServiceURLSigKeys(toClient *toclient.Session, dsName string, opts *toclient.RequestOptions) (tc.URLSigKeys, toclientlib.ReqInf, error)
- func GetParametersByConfigFile(toClient *toclient.Session, configFile string, opts *toclient.RequestOptions) ([]tc.Parameter, toclientlib.ReqInf, error)
- func GetParametersByName(toClient *toclient.Session, name string, opts *toclient.RequestOptions) ([]tc.Parameter, toclientlib.ReqInf, error)
- func GetProfileByName(toClient *toclient.Session, name string, opts *toclient.RequestOptions) (tc.Profile, toclientlib.ReqInf, error)
- func InvalidationJobV4FromLegacy(job InvalidationJobV4PlusLegacy) (tc.InvalidationJobV4, error)
- func IsLatestSupported(toClient *toclient.Session) (bool, net.Addr, error)
- func LatestKnownAPIVersion() string
- func ReqOpts(hdr http.Header) *toclient.RequestOptions
- func RequestInfoStr(inf toclientlib.ReqInf, reqPath string) string
- func ServerV40FromLegacy(old ServerV40PlusLegacy) (tc.ServerV40, error)
- type InvalidationJobV4ForLegacy
- type InvalidationJobV4Legacy
- type InvalidationJobV4PlusLegacy
- type ServerV40PlusLegacy
- type TOClient
- func (cl *TOClient) FellBack() bool
- func (cl *TOClient) GetCDN(cdnName tc.CDNName, reqHdr http.Header) (tc.CDN, toclientlib.ReqInf, error)
- func (cl *TOClient) GetCDNDeliveryServices(cdnID int, reqHdr http.Header) ([]atscfg.DeliveryService, toclientlib.ReqInf, error)
- func (cl *TOClient) GetCDNSSLKeys(cdnName tc.CDNName, reqHdr http.Header) ([]tc.CDNSSLKeys, toclientlib.ReqInf, error)
- func (cl *TOClient) GetCDNs(reqHdr http.Header) ([]tc.CDN, toclientlib.ReqInf, error)
- func (cl *TOClient) GetCacheGroups(reqHdr http.Header) ([]tc.CacheGroupNullable, toclientlib.ReqInf, error)
- func (cl *TOClient) GetConfigFileParameters(configFile string, reqHdr http.Header) ([]tc.Parameter, toclientlib.ReqInf, error)
- func (cl *TOClient) GetDeliveryServiceRegexes(reqHdr http.Header) ([]tc.DeliveryServiceRegexes, toclientlib.ReqInf, error)
- func (cl *TOClient) GetDeliveryServiceRequiredCapabilitiesByID(dsIDs []int, reqHdr http.Header) (map[int]map[atscfg.ServerCapability]struct{}, toclientlib.ReqInf, error)
- func (cl *TOClient) GetDeliveryServiceServers(dsIDs []int, serverIDs []int, cdnName string, reqHdr http.Header) ([]tc.DeliveryServiceServer, toclientlib.ReqInf, error)
- func (cl *TOClient) GetGlobalParameters(reqHdr http.Header) ([]tc.Parameter, toclientlib.ReqInf, error)
- func (cl *TOClient) GetJobs(reqHdr http.Header, cdnName string) ([]atscfg.InvalidationJob, toclientlib.ReqInf, error)
- func (cl *TOClient) GetJobsCompat(opts toclient.RequestOptions) (tc.InvalidationJobsResponseV4, toclientlib.ReqInf, error)
- func (cl *TOClient) GetParametersByName(paramName string, reqHdr http.Header) ([]tc.Parameter, toclientlib.ReqInf, error)
- func (cl *TOClient) GetProfileByName(profileName string, reqHdr http.Header) (tc.Profile, toclientlib.ReqInf, error)
- func (cl *TOClient) GetServerByHostName(serverHostName string, reqHdr http.Header) (*atscfg.Server, toclientlib.ReqInf, error)
- func (cl *TOClient) GetServerCapabilitiesByID(serverIDs []int, reqHdr http.Header) (map[int]map[atscfg.ServerCapability]struct{}, toclientlib.ReqInf, error)
- func (cl *TOClient) GetServerProfileParameters(profileName string, reqHdr http.Header) ([]tc.Parameter, toclientlib.ReqInf, error)
- func (cl *TOClient) GetServerUpdateStatus(cacheHostName tc.CacheName, reqHdr http.Header) (atscfg.ServerUpdateStatus, toclientlib.ReqInf, error)
- func (cl *TOClient) GetServers(reqHdr http.Header) ([]atscfg.Server, toclientlib.ReqInf, error)
- func (cl *TOClient) GetServersCompat(opts toclient.RequestOptions) (tc.ServersV4Response, toclientlib.ReqInf, error)
- func (cl *TOClient) GetStatuses(reqHdr http.Header) ([]tc.Status, toclientlib.ReqInf, error)
- func (cl *TOClient) GetTopologies(reqHdr http.Header) ([]tc.Topology, toclientlib.ReqInf, error)
- func (cl *TOClient) GetURISigningKeys(dsName string, reqHdr http.Header) ([]byte, toclientlib.ReqInf, error)
- func (cl *TOClient) GetURLSigKeys(dsName string, reqHdr http.Header) (tc.URLSigKeys, toclientlib.ReqInf, error)
- func (cl *TOClient) HTTPClient() *http.Client
- func (cl *TOClient) SetServerUpdateStatus(cacheHostName tc.CacheName, configApply, revalApply *time.Time) (toclientlib.ReqInf, error)
- func (cl *TOClient) SetServerUpdateStatusBoolCompat(cacheHostName tc.CacheName, configApply *time.Time, revalApply *time.Time, ...) (toclientlib.ReqInf, error)
- func (cl *TOClient) SetServerUpdateStatusCompat(serverName string, configApplyTime, revalApplyTime *time.Time, ...) (tc.Alerts, toclientlib.ReqInf, error)
- func (cl *TOClient) SetURL(newURL string)
- func (cl *TOClient) URL() string
- func (cl *TOClient) WriteFsCookie(fileName string)
Constants ¶
const DeliveryServiceServersAlwaysGetAll = true
DeliveryServiceServersAlwaysGetAll indicates whether to always get all delivery service servers from Traffic Ops, and cache all in a file (but still return to the caller only the objects they requested). This exists and is currently true, because with an ORT run, it's typically more efficient to get them all in a single request, and re-use that cache; than for every config file to get and cache its own unique set. If your use case is more efficient to only get the needed objects, for example if you're frequently requesting one file, set this false to get and cache the specific needed delivery services and servers.
Variables ¶
This section is empty.
Functions ¶
func GetCDNByName ¶
func GetCDNByName(toClient *toclient.Session, name tc.CDNName, opts *toclient.RequestOptions) (tc.CDN, toclientlib.ReqInf, error)
func GetDeliveryServiceURLSigKeys ¶
func GetDeliveryServiceURLSigKeys(toClient *toclient.Session, dsName string, opts *toclient.RequestOptions) (tc.URLSigKeys, toclientlib.ReqInf, error)
GetDeliveryServiceURLSigKeys gets the URL Sig keys from Traffic Ops for the given delivery service. It is a helper function that calls traffic_ops/v4-client.Session.GetDeliveryServiceURLSignatureKeys to avoid confusion around the protocol named URL Sig.
func GetParametersByConfigFile ¶
func GetParametersByConfigFile(toClient *toclient.Session, configFile string, opts *toclient.RequestOptions) ([]tc.Parameter, toclientlib.ReqInf, error)
GetParametersByConfigFile returns the parameters with the given config file from Traffic Ops. It is a helper function equivalent to calling GetParameters with RequestOptions with the Values (query string) with the key configFile set to the config file. If opts.Values[configFile] exists, it is overwritten with name.
func GetParametersByName ¶
func GetParametersByName(toClient *toclient.Session, name string, opts *toclient.RequestOptions) ([]tc.Parameter, toclientlib.ReqInf, error)
GetParametersByName returns the parameters with the given name from Traffic Ops. It is a helper function equivalent to calling GetParameters with RequestOptions with the Values (query string) with the key name set to the name. If opts.Values[name] exists, it is overwritten with name.
func GetProfileByName ¶
func GetProfileByName(toClient *toclient.Session, name string, opts *toclient.RequestOptions) (tc.Profile, toclientlib.ReqInf, error)
GetProfileByName returns the profile with the given name from Traffic Ops. It is a helper function equivalent to calling GetProfiles with RequestOptions with the Values (query string) with the key name set to the Profile name. If opts.Values[name] exists, it is overwritten with name.
func InvalidationJobV4FromLegacy ¶
func InvalidationJobV4FromLegacy(job InvalidationJobV4PlusLegacy) (tc.InvalidationJobV4, error)
func IsLatestSupported ¶
IsLatestSupported returns whether toClient supports the latest API, the address of the Traffic Ops connected to (which may be nil), and any error.
A nil toClient may be passed, in which case it will be assumed that there was an error creating it and the latest isn't supported, and false will be returned with no address and no error.
func LatestKnownAPIVersion ¶
func LatestKnownAPIVersion() string
func ReqOpts ¶
func ReqOpts(hdr http.Header) *toclient.RequestOptions
ReqOpts takes an http.Header and returns a traffic_ops/v4-client.RequestOptions with that header. This is a helper function, for brevity.
func RequestInfoStr ¶
func RequestInfoStr(inf toclientlib.ReqInf, reqPath string) string
RequestInfoStr returns a loggable string with info about the Traffic Ops request.
The returned string does not have a trailing newline, nor anything in the standard logger prefix (time, level, etc). If the string isn't going to be logged via lib/go-log, it's advisable to add a timestamp.
This is safe to call even if the function returning a ReqInf returned an error; it checks for nil values in all cases, and the TO Client guarantees even if a non-nil error is returned, all ReqInf values are either nil or valid.
func ServerV40FromLegacy ¶
func ServerV40FromLegacy(old ServerV40PlusLegacy) (tc.ServerV40, error)
Types ¶
type InvalidationJobV4ForLegacy ¶
type InvalidationJobV4ForLegacy tc.InvalidationJobV4
InvalidationJobV4ForLegacy is a type alias to prevent MarshalJSON recursion.
type InvalidationJobV4Legacy ¶
type InvalidationJobV4PlusLegacy ¶
type InvalidationJobV4PlusLegacy struct { // StartTime overrides the StartTime in InvalidationJobV4 in order to unmarshal any string format. // // A json.Unmarshal will place a 'startTime' value in this field, // rather than the anonymous embedded InvalidationJobV4ForLegacy (tc.InvalidationJobV4). // // InvalidationJobV4FromLegacy will then parse multiple time formats that different Traffic Ops servers may return, // and put the parsed time in tc.InvalidationJobV4.StartTime. StartTime *string `json:"startTime"` InvalidationJobV4ForLegacy InvalidationJobV4Legacy }
InvalidationJobV4PlusLegacy has the data to deserialize both the latest and older versions that Traffic Ops could return.
type ServerV40PlusLegacy ¶
type TOClient ¶
type TOClient struct { // NumRetries is the number of times to retry Traffic Ops server failures // before giving up and returning an error to the caller. NumRetries int // contains filtered or unexported fields }
func New ¶
func New(url *url.URL, user string, pass string, insecure bool, timeout time.Duration, userAgent string) (*TOClient, error)
New logs into Traffic Ops, returning the TOClient which contains the logged-in client.
func (*TOClient) FellBack ¶
FellBack() returns whether the client fell back to the previous major version, because Traffic Ops didn't support the latest.
func (*TOClient) GetCDNDeliveryServices ¶
func (cl *TOClient) GetCDNDeliveryServices(cdnID int, reqHdr http.Header) ([]atscfg.DeliveryService, toclientlib.ReqInf, error)
GetCDNDeliveryServices returns the data, the Traffic Ops address, and any error.
func (*TOClient) GetCDNSSLKeys ¶
func (*TOClient) GetCacheGroups ¶
func (*TOClient) GetConfigFileParameters ¶
func (*TOClient) GetDeliveryServiceRegexes ¶
func (*TOClient) GetDeliveryServiceRequiredCapabilitiesByID ¶
func (*TOClient) GetDeliveryServiceServers ¶
func (*TOClient) GetGlobalParameters ¶
func (*TOClient) GetJobsCompat ¶
func (cl *TOClient) GetJobsCompat(opts toclient.RequestOptions) (tc.InvalidationJobsResponseV4, toclientlib.ReqInf, error)
GetJobsCompat gets jobs from any Traffic Ops built from the ATC `master` branch, and converts the different formats to the latest. This makes t3c work with old or new Traffic Ops deployed from `master`, though it doesn't make a version of t3c older than this work with a new TO, which isn't logically possible from the client.
func (*TOClient) GetParametersByName ¶
func (*TOClient) GetProfileByName ¶
func (*TOClient) GetServerByHostName ¶
func (*TOClient) GetServerCapabilitiesByID ¶
func (*TOClient) GetServerProfileParameters ¶
func (*TOClient) GetServerUpdateStatus ¶
func (cl *TOClient) GetServerUpdateStatus(cacheHostName tc.CacheName, reqHdr http.Header) (atscfg.ServerUpdateStatus, toclientlib.ReqInf, error)
GetServerUpdateStatus returns the data, the Traffic Ops address, and any error.
func (*TOClient) GetServers ¶
func (*TOClient) GetServersCompat ¶
func (cl *TOClient) GetServersCompat(opts toclient.RequestOptions) (tc.ServersV4Response, toclientlib.ReqInf, error)
GetServersCompat gets servers from any Traffic Ops built from the ATC `master` branch, and converts the different formats to the latest. This makes t3c work with old or new Traffic Ops deployed from `master`, though it doesn't make a version of t3c older than this work with a new TO, which isn't logically possible from the client.
func (*TOClient) GetStatuses ¶
func (*TOClient) GetTopologies ¶
GetTopologies returns the data, the Traffic Ops address, and any error.
func (*TOClient) GetURISigningKeys ¶
func (*TOClient) GetURLSigKeys ¶
func (*TOClient) HTTPClient ¶
func (*TOClient) SetServerUpdateStatus ¶
func (cl *TOClient) SetServerUpdateStatus(cacheHostName tc.CacheName, configApply, revalApply *time.Time) (toclientlib.ReqInf, error)
SetServerUpdateStatus sets the server's update and reval statuses in Traffic Ops.
func (*TOClient) SetServerUpdateStatusBoolCompat ¶
func (cl *TOClient) SetServerUpdateStatusBoolCompat(cacheHostName tc.CacheName, configApply *time.Time, revalApply *time.Time, configApplyBool *bool, revalApplyBool *bool) (toclientlib.ReqInf, error)
SetServerUpdateStatusBoolCompat sets the server's update and reval statuses in Traffic Ops. *** Compatability requirement until ATC (v7.0+) is deployed with the timestamp features
func (*TOClient) SetServerUpdateStatusCompat ¶
func (cl *TOClient) SetServerUpdateStatusCompat(serverName string, configApplyTime, revalApplyTime *time.Time, configApplyBool, revalApplyBool *bool, opts toclient.RequestOptions) (tc.Alerts, toclientlib.ReqInf, error)
SetServerUpdateStatusCompat is a bridge to send both styles of query parameters to the TO endpoint /servers/{hostname-or-id}/update. The current (old) is to send a bool value, however this has resulted in an accidental race condition. The attempt to fix this is to send a timestamp representing when the config or revalidation changes have been applied.
To ensure T3C is compatible with both the current releases and future releases this function will send both "styles". Once both T3C and TO have been deployed with the timestamp only V4 TO API endpoint, this function can be removed and the V4 client function `SetUpdateServerStatusTimes` may be used instead (as intended). *** Compatability requirement until ATC (v7.0+) is deployed with the timestamp features
func (*TOClient) WriteFsCookie ¶
Directories ¶
Path | Synopsis |
---|---|
Package toreqold calls the previous Traffic Ops API major version.
|
Package toreqold calls the previous Traffic Ops API major version. |
torequtil has utility functions used by toreq and toreqnew which don't require the Traffic Ops client, and thus can be shared.
|
torequtil has utility functions used by toreq and toreqnew which don't require the Traffic Ops client, and thus can be shared. |