You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by ra...@apache.org on 2020/10/12 16:14:16 UTC
[trafficcontrol] branch 4.1.x updated: Fix 4.1 ORT not working with
3.0 TO (#5113)
This is an automated email from the ASF dual-hosted git repository.
rawlin pushed a commit to branch 4.1.x
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git
The following commit(s) were added to refs/heads/4.1.x by this push:
new 1b7fbbb Fix 4.1 ORT not working with 3.0 TO (#5113)
1b7fbbb is described below
commit 1b7fbbbabb13a195699350833e3f5a18f7a84bc7
Author: Robert O Butts <ro...@users.noreply.github.com>
AuthorDate: Mon Oct 12 10:14:02 2020 -0600
Fix 4.1 ORT not working with 3.0 TO (#5113)
Fixed ORT to vendor the right 3.0 TO client, and to fall back to it.
It had vendored some later client that was hitting 1.4, which doesn't
exist in TO 3.
---
traffic_ops/ort/atstccfg/cfgfile/cfgfile.go | 16 +-
traffic_ops/ort/atstccfg/getdata/getdata.go | 12 +-
traffic_ops/ort/atstccfg/toreq/toreq.go | 73 -------
.../github.com/apache/trafficcontrol/LICENSE | 115 ++++-------
.../github.com/apache/trafficcontrol/VERSION | 2 +-
.../github.com/apache/trafficcontrol/changeset.txt | 3 +-
.../trafficcontrol/traffic_ops/client/asn.go | 32 +++
.../trafficcontrol/traffic_ops/client/atsconfig.go | 88 --------
.../traffic_ops/client/cachegroup.go | 80 +-------
.../traffic_ops/client/cachegroup_parameters.go | 109 ----------
.../trafficcontrol/traffic_ops/client/cdn.go | 3 +-
.../trafficcontrol/traffic_ops/client/crconfig.go | 29 +--
.../traffic_ops/client/deliveryservice.go | 221 ++++++---------------
.../client/deliveryservice_endpoints.go | 2 +-
.../traffic_ops/client/deliveryservice_requests.go | 63 +-----
.../deliveryservices_required_capabilities.go | 83 --------
.../traffic_ops/client/deliveryserviceserver.go | 27 +--
.../trafficcontrol/traffic_ops/client/dsuser.go | 4 +-
.../trafficcontrol/traffic_ops/client/endpoints.go | 2 +-
.../traffic_ops/client/federation.go | 211 --------------------
.../traffic_ops/client/federation_resolver.go | 116 -----------
.../trafficcontrol/traffic_ops/client/hardware.go | 2 -
.../trafficcontrol/traffic_ops/client/iso.go | 54 -----
.../trafficcontrol/traffic_ops/client/job.go | 196 ------------------
.../trafficcontrol/traffic_ops/client/log.go | 61 ------
.../trafficcontrol/traffic_ops/client/origin.go | 78 +-------
.../trafficcontrol/traffic_ops/client/parameter.go | 16 --
.../traffic_ops/client/phys_location.go | 15 +-
.../trafficcontrol/traffic_ops/client/profile.go | 173 ++++------------
.../traffic_ops/client/profile_parameter.go | 2 +-
.../trafficcontrol/traffic_ops/client/region.go | 16 +-
.../trafficcontrol/traffic_ops/client/role.go | 43 +---
.../trafficcontrol/traffic_ops/client/server.go | 115 +----------
.../client/server_server_capabilities.go | 83 --------
.../traffic_ops/client/server_update_status.go | 81 --------
.../traffic_ops/client/servercapability.go | 104 ----------
.../traffic_ops/client/servercheck.go | 56 ------
.../traffic_ops/client/serversstatus.go | 44 ----
.../trafficcontrol/traffic_ops/client/session.go | 95 +--------
.../traffic_ops/client/staticdnsentry.go | 54 +----
.../trafficcontrol/traffic_ops/client/status.go | 18 --
.../trafficcontrol/traffic_ops/client/steering.go | 38 ----
.../traffic_ops/client/steeringtarget.go | 8 +-
.../trafficcontrol/traffic_ops/client/tenant.go | 17 +-
.../traffic_ops/client/toextension.go | 69 -------
.../traffic_ops/client/traffic_monitor.go | 1 -
.../traffic_ops/client/traffic_stats.go | 29 ---
.../trafficcontrol/traffic_ops/client/user.go | 136 +------------
.../trafficcontrol/traffic_ops/client/util.go | 15 +-
traffic_ops/ort/atstccfg/toreqnew/toreqnew.go | 172 +++++++++++++++-
50 files changed, 463 insertions(+), 2619 deletions(-)
diff --git a/traffic_ops/ort/atstccfg/cfgfile/cfgfile.go b/traffic_ops/ort/atstccfg/cfgfile/cfgfile.go
index de4813d..16c909c 100644
--- a/traffic_ops/ort/atstccfg/cfgfile/cfgfile.go
+++ b/traffic_ops/ort/atstccfg/cfgfile/cfgfile.go
@@ -79,7 +79,11 @@ func GetTOData(cfg config.TCCfg) (*config.TOData, error) {
serversF := func() error {
defer func(start time.Time) { log.Infof("serversF took %v\n", time.Since(start)) }(time.Now())
// TODO TOAPI add /servers?cdn=1 query param
- servers, err := cfg.TOClient.GetServers()
+ servers, unsupported, err := cfg.TOClientNew.GetServers()
+ if err == nil && unsupported {
+ log.Warnln("Traffic Ops newer than ORT, falling back to previous API Servers!")
+ servers, err = cfg.TOClient.GetServers()
+ }
if err != nil {
return errors.New("getting servers: " + err.Error())
}
@@ -217,7 +221,11 @@ func GetTOData(cfg config.TCCfg) (*config.TOData, error) {
cgF := func() error {
defer func(start time.Time) { log.Infof("cfF took %v\n", time.Since(start)) }(time.Now())
- cacheGroups, err := cfg.TOClient.GetCacheGroups()
+ cacheGroups, unsupported, err := cfg.TOClientNew.GetCacheGroups()
+ if err == nil && unsupported {
+ log.Warnln("Traffic Ops newer than ORT, falling back to previous API CacheGroups!")
+ cacheGroups, err = cfg.TOClient.GetCacheGroups()
+ }
if err != nil {
return errors.New("getting cachegroups: " + err.Error())
}
@@ -253,7 +261,7 @@ func GetTOData(cfg config.TCCfg) (*config.TOData, error) {
}
capsF := func() error {
defer func(start time.Time) { log.Infof("capsF took %v\n", time.Since(start)) }(time.Now())
- caps, err := cfg.TOClient.GetServerCapabilitiesByID(nil) // TODO change to not take a param; it doesn't use it to request TO anyway.
+ caps, err := cfg.TOClientNew.GetServerCapabilitiesByID(nil) // TODO change to not take a param; it doesn't use it to request TO anyway.
if err != nil {
log.Errorln("Server Capabilities error, skipping!")
// return errors.New("getting server caps from Traffic Ops: " + err.Error())
@@ -264,7 +272,7 @@ func GetTOData(cfg config.TCCfg) (*config.TOData, error) {
}
dsCapsF := func() error {
defer func(start time.Time) { log.Infof("dscapsF took %v\n", time.Since(start)) }(time.Now())
- caps, err := cfg.TOClient.GetDeliveryServiceRequiredCapabilitiesByID(nil)
+ caps, err := cfg.TOClientNew.GetDeliveryServiceRequiredCapabilitiesByID(nil)
if err != nil {
log.Errorln("DS Required Capabilities error, skipping!")
// return errors.New("getting DS required capabilities: " + err.Error())
diff --git a/traffic_ops/ort/atstccfg/getdata/getdata.go b/traffic_ops/ort/atstccfg/getdata/getdata.go
index 3923e73..242da8f 100644
--- a/traffic_ops/ort/atstccfg/getdata/getdata.go
+++ b/traffic_ops/ort/atstccfg/getdata/getdata.go
@@ -136,7 +136,11 @@ func WritePackages(cfg config.TCCfg, output io.Writer) error {
}
func GetPackages(cfg config.TCCfg) ([]atscfg.Package, error) {
- server, err := cfg.TOClient.GetServerByHostName(string(cfg.CacheHostName))
+ server, unsupported, err := cfg.TOClientNew.GetServerByHostName(string(cfg.CacheHostName))
+ if err == nil && unsupported {
+ log.Warnln("Traffic Ops newer than ORT, falling back to previous API ServerByHostName!")
+ server, err = cfg.TOClient.GetServerByHostName(string(cfg.CacheHostName))
+ }
if err != nil {
return nil, errors.New("getting server: " + err.Error())
}
@@ -168,7 +172,11 @@ func WriteChkconfig(cfg config.TCCfg, output io.Writer) error {
}
func GetChkconfig(cfg config.TCCfg) ([]atscfg.ChkConfigEntry, error) {
- server, err := cfg.TOClient.GetServerByHostName(string(cfg.CacheHostName))
+ server, unsupported, err := cfg.TOClientNew.GetServerByHostName(string(cfg.CacheHostName))
+ if err == nil && unsupported {
+ log.Warnln("Traffic Ops newer than ORT, falling back to previous API ServerByHostName!")
+ server, err = cfg.TOClient.GetServerByHostName(string(cfg.CacheHostName))
+ }
if err != nil {
return nil, errors.New("getting server: " + err.Error())
}
diff --git a/traffic_ops/ort/atstccfg/toreq/toreq.go b/traffic_ops/ort/atstccfg/toreq/toreq.go
index 69f74c4..fe59007 100644
--- a/traffic_ops/ort/atstccfg/toreq/toreq.go
+++ b/traffic_ops/ort/atstccfg/toreq/toreq.go
@@ -33,7 +33,6 @@ import (
"strconv"
"time"
- "github.com/apache/trafficcontrol/lib/go-atscfg"
"github.com/apache/trafficcontrol/lib/go-log"
"github.com/apache/trafficcontrol/lib/go-tc"
"github.com/apache/trafficcontrol/lib/go-util"
@@ -422,78 +421,6 @@ func (cl *TOClient) GetJobs() ([]tc.Job, error) {
return jobs, nil
}
-func (cl *TOClient) GetServerCapabilitiesByID(serverIDs []int) (map[int]map[atscfg.ServerCapability]struct{}, error) {
- serverIDsStr := ""
- if len(serverIDs) > 0 {
- sortIDsInHash := true
- serverIDsStr = base64.RawURLEncoding.EncodeToString((util.HashInts(serverIDs, sortIDsInHash)))
- }
-
- serverCaps := map[int]map[atscfg.ServerCapability]struct{}{}
- err := torequtil.GetRetry(cl.NumRetries, "server_capabilities_s_"+serverIDsStr, &serverCaps, func(obj interface{}) error {
- // TODO add list of IDs to API+Client
- toServerCaps, reqInf, err := cl.C.GetServerServerCapabilities(nil, nil, nil)
- if err != nil {
- return errors.New("getting server caps from Traffic Ops '" + MaybeIPStr(reqInf.RemoteAddr) + "': " + err.Error())
- }
- serverCaps := obj.(*map[int]map[atscfg.ServerCapability]struct{})
-
- for _, sc := range toServerCaps {
- if sc.ServerID == nil {
- log.Errorln("Traffic Ops returned Server Capability with nil server id! Skipping!")
- }
- if sc.ServerCapability == nil {
- log.Errorln("Traffic Ops returned Server Capability with nil capability! Skipping!")
- }
- if _, ok := (*serverCaps)[*sc.ServerID]; !ok {
- (*serverCaps)[*sc.ServerID] = map[atscfg.ServerCapability]struct{}{}
- }
- (*serverCaps)[*sc.ServerID][atscfg.ServerCapability(*sc.ServerCapability)] = struct{}{}
- }
- return nil
- })
- if err != nil {
- return nil, errors.New("getting server server capabilities: " + err.Error())
- }
- return serverCaps, nil
-}
-
-func (cl *TOClient) GetDeliveryServiceRequiredCapabilitiesByID(dsIDs []int) (map[int]map[atscfg.ServerCapability]struct{}, error) {
- dsIDsStr := ""
- if len(dsIDs) > 0 {
- sortIDsInHash := true
- dsIDsStr = base64.RawURLEncoding.EncodeToString((util.HashInts(dsIDs, sortIDsInHash)))
- }
-
- dsCaps := map[int]map[atscfg.ServerCapability]struct{}{}
- err := torequtil.GetRetry(cl.NumRetries, "ds_capabilities_d_"+dsIDsStr, &dsCaps, func(obj interface{}) error {
- // TODO add list of IDs to API+Client
- toDSCaps, reqInf, err := cl.C.GetDeliveryServicesRequiredCapabilities(nil, nil, nil)
- if err != nil {
- return errors.New("getting ds caps from Traffic Ops '" + MaybeIPStr(reqInf.RemoteAddr) + "': " + err.Error())
- }
- dsCaps := obj.(*map[int]map[atscfg.ServerCapability]struct{})
-
- for _, sc := range toDSCaps {
- if sc.DeliveryServiceID == nil {
- log.Errorln("Traffic Ops returned Delivery Service Capability with nil ds id! Skipping!")
- }
- if sc.RequiredCapability == nil {
- log.Errorln("Traffic Ops returned Delivery Service Capability with nil capability! Skipping!")
- }
- if (*dsCaps)[*sc.DeliveryServiceID] == nil {
- (*dsCaps)[*sc.DeliveryServiceID] = map[atscfg.ServerCapability]struct{}{}
- }
- (*dsCaps)[*sc.DeliveryServiceID][atscfg.ServerCapability(*sc.RequiredCapability)] = struct{}{}
- }
- return nil
- })
- if err != nil {
- return nil, errors.New("getting ds server capabilities: " + err.Error())
- }
- return dsCaps, nil
-}
-
func (cl *TOClient) GetCDNSSLKeys(cdnName tc.CDNName) ([]tc.CDNSSLKeys, error) {
keys := []tc.CDNSSLKeys{}
err := torequtil.GetRetry(cl.NumRetries, "cdn_sslkeys_"+string(cdnName), &keys, func(obj interface{}) error {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/LICENSE b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/LICENSE
index 8ab4ab4..8bdf33d 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/LICENSE
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/LICENSE
@@ -236,30 +236,22 @@ For the sorttable component:
For the jQuery component:
./licenses/MIT-jquery
-For the JSON formatter component:
-@traffic_portal/app/src/assets/css/jsonformatter.min_0.6.0.css
-@traffic_portal/app/src/assets/js/jsonformatter.min_0.6.0.js
-./licenses/AL2-jsonformatter
+For the jQuery UI component:
+@traffic_ops/app/public/css/jquery-ui.structure.css
+./licenses/MIT-jqueryui
+
+For the jMenu component:
+@traffic_ops/app/public/*/jMenu.*
+@traffic_ops/app/public/*/jmenu.*
+./licenses/MIT-jmenu
For the DataTables component:
+@traffic_ops/app/public/js/jquery.dataTables.js
@traffic_portal/app/src/assets/css/jquery.dataTables.min_1.10.9.css
-@traffic_portal/app/src/assets/js/jquery.dataTables.min_1.10.19_patched.js
+@traffic_portal/app/src/assets/js/jquery.dataTables.min_1.10.16.js
@traffic_portal/app/src/assets/images/sort_*
./licenses/MIT-datatables
-For the DataTables ColReorder component:
-@traffic_portal/app/src/assets/css/colReorder.dataTables.min_1.5.1.css
-@traffic_portal/app/src/assets/js/colReorder.dataTables.min_1.5.1.js
-./licenses/MIT-ColReorder
-
-For the DataTables Buttons component:
-@traffic_portal/app/src/assets/js/dataTables.buttons.min_1.5.6.js
-./licenses/MIT-datatables-buttons
-
-For the HTML5 Buttons component:
-@traffic_portal/app/src/assets/js/buttons.html5.min_1.5.6.js
-./licenses/MIT-buttons-html5
-
For the moment.js component:
@traffic_portal/app/src/assets/js/moment-min_2.22.1.js
./licenses/MIT-momentjs
@@ -268,22 +260,9 @@ For the jsdiff component:
@traffic_portal/app/src/assets/js/jsdiff-min_3.5.0.js
./licenses/BSD-jsdiff
-For the fast-json-patch component:
-@traffic_portal/app/src/assets/js/fast-json-patch_v2.1.0.js
-./licenses/MIT-fast-json-patch
-
-For the angular-moment-picker component:
-@traffic_portal/app/src/assets/css/angular-moment-picker_0.10.2.css
-@traffic_portal/app/src/assets/js/moment-picker/angular-moment-picker.min_0.10.2.js
-./licenses/MIT-angular_moment_picker
-
-For the Chart.js component:
-@traffic_portal/app/src/assets/js/chartjs/Chart.min_2.7.2.js
-./licenses/MIT-chartjs
-
-For the angular-chart.js component:
-@traffic_portal/app/src/assets/js/chartjs/angular-chart.min_1.1.1.js
-./licenses/BSD-angular-chartjs
+For the jquery.tree component:
+@traffic_ops/app/public/*/jquery.tree.min.*
+./licenses/MIT-jquery_tree
For the downloadjs component:
@traffic_portal/app/src/assets/js/downloadjs-min_v4.21.js
@@ -301,6 +280,10 @@ For the underscore component:
@traffic_portal/app/src/assets/js/underscore-min_1.8.3.js
./licenses/MIT-underscore
+For the selenium component:
+@infrastructure/test/ui/vendor/github.com/tebeka/selenium/*
+./infrastructure/test/ui/vendor/github.com/tebeka/selenium/LICENSE.txt
+
For the stoppableListener component:
@traffic_monitor/vendor/github.com/hydrogen18/stoppableListener/*
./traffic_monitor/vendor/github.com/hydrogen18/stoppableListener/LICENSE
@@ -309,24 +292,19 @@ For the fsnotify component:
@vendor/gopkg.in/fsnotify.v1/*
./vendor/gopkg.in/fsnotify.v1/LICENSE
-For the yaml component:
-@vendor/gopkg.in/yaml.v2/*
-./vendor/gopkg.in/yaml.v2/LICENSE
-./vendor/gopkg.in/yaml.v2/LICENSE.libyaml
-
For the jwt-go component:
-@experimental/traffic_ops_auth/vendor/github.com/dgrijalva/jwt-go/*
-./experimental/traffic_ops_auth/vendor/github.com/dgrijalva/jwt-go/LICENSE
+@traffic_ops/experimental/traffic_ops_auth/vendor/github.com/dgrijalva/jwt-go/*
+./traffic_ops/experimental/traffic_ops_auth/vendor/github.com/dgrijalva/jwt-go/LICENSE
For the pq component:
-@experimental/traffic_ops_auth/vendor/github.com/lib/pq/*
+@traffic_ops/experimental/traffic_ops_auth/vendor/github.com/lib/pq/*
@vendor/github.com/lib/pq/*
./vendor/github.com/lib/pq/LICENSE.md
For the influxdb component:
-@vendor/github.com/influxdata/influxdb/*
-./vendor/github.com/influxdata/influxdb/LICENSE
-./vendor/github.com/influxdata/influxdb/LICENSE_OF_DEPENDENCIES.md
+@traffic_stats/vendor/github.com/influxdata/influxdb/*
+./traffic_stats/vendor/github.com/influxdata/influxdb/LICENSE
+./traffic_stats/vendor/github.com/influxdata/influxdb/LICENSE_OF_DEPENDENCIES.md
For the errors component:
@traffic_stats/vendor/github.com/pkg/errors/*
@@ -340,6 +318,16 @@ For the gofmt github hook:
@misc/git/pre-commit-hooks/01-gofmt
./licenses/BSD-go
+For the Select2 component:
+@traffic_ops/app/public/*/select2*
+This dual-licensed component is herein licensed under the Apache 2.0 license.
+
+Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors
+
+For the prettyprint component:
+@traffic_ops/app/public/js/prettyprint.js
+./licenses/BSD-prettyprint
+
For the IPv6 Perl Module component:
@traffic_ops/app/bin/checks/NetPacket/IPv6.pm
./licenses/ISC-netpacket_ipv6
@@ -401,6 +389,15 @@ The ozzo-validation component is used under the MIT license:
@vendor/github.com/go-ozzo/ozzo-validation/*
./vendor/github.com/go-ozzo/ozzo-validation/LICENSE
+The spinner-small.gif is used under the WTFPL license:
+@traffic_ops/app/public/images/spinner-small.gif
+./licenses/WTFPL
+
+For the Pixabay icons:
+@traffic_ops/app/public/images/info.png
+@traffic_ops/app/public/images/graph.png
+./licenses/CC0
+
The bytefmt component is used under the Apache 2.0 license:
@grove/vendor/code.cloudfoundry.org/bytefmt/*
./grove/vendor/code.cloudfoundry.org/bytefmt/LICENSE
@@ -424,31 +421,3 @@ The asn1-ber.v1 component is used under the MIT license:
The ldap.v2 component is used under the MIT license:
@traffic_ops/vendor/gopkg.in/ldap.v2/*
./traffic_ops/vendor/gopkg.in/ldap.v2/LICENSE
-
-The json-iterator/go component is used under the MIT license:
-@vendor/github.com/json-iterator/go/*
-./vendor/github.com/json-iterator/go/LICENSE
-
-The modern-go/concurrent component is used under the Apache 2.0 license:
-@vendor/github.com/modern-go/concurrent/*
-./vendor/github.com/modern-go/concurrent/LICENSE
-
-The modern-go/reflect2 component is used under the Apache 2.0 license:
-@vendor/github.com/modern-go/reflect2/*
-./vendor/github.com/modern-go/reflect2/LICENSE
-
-For the lestrrat-go/jwx (commit e35178a) component:
-@traffic_ops/traffic_ops_golang/vendor/github.com/lestrrat-go/jwx/*
-./traffic_ops/traffic_ops_golang/vendor/github.com/lestrrat-go/jwx/LICENSE
-
-For the dgrijalva/jwt-go (commit 5e25c22) component:
-@traffic_ops/traffic_ops_golang/vendor/github.com/dgrijalva/jwt-go/*
-./traffic_ops/traffic_ops_golang/vendor/github.com/dgrijalva/jwt-go/LICENSE
-
-For the ogier/pflag (commit 45c278a) component:
-@vendor/github.com/ogier/pflag/*
-./licenses/BSD-pflag
-
-For the errors (commit 27936f6) component:
-@vendor/github.com/pkg/errors/*
-./vendor/github.com/pkg/errors/LICENSE
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/VERSION b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/VERSION
index fcdb2e1..b502146 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/VERSION
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/VERSION
@@ -1 +1 @@
-4.0.0
+3.0.2
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/changeset.txt b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/changeset.txt
index 2e13fdf..e503655 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/changeset.txt
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/changeset.txt
@@ -1,2 +1 @@
-4.0.x
-2294a43da787cc4505d892261b10563a5c218841
+c85ba9e6ab0120a69716a47005e71257a6197757
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/asn.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/asn.go
index 2a38c65..89204c7 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/asn.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/asn.go
@@ -17,9 +17,11 @@ package client
import (
"encoding/json"
+ "errors"
"fmt"
"net"
"net/http"
+ "strconv"
"github.com/apache/trafficcontrol/lib/go-tc"
)
@@ -130,3 +132,33 @@ func (to *Session) DeleteASNByASN(asn int) (tc.Alerts, ReqInf, error) {
err = json.NewDecoder(resp.Body).Decode(&alerts)
return alerts, reqInf, nil
}
+
+func (to *Session) DeleteDeliveryServiceServer(dsID int, serverID int) (tc.Alerts, ReqInf, error) {
+ route := apiBase + `/deliveryservice_server/` + strconv.Itoa(dsID) + "/" + strconv.Itoa(serverID)
+ reqResp, remoteAddr, err := to.request(http.MethodDelete, route, nil)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
+ if err != nil {
+ return tc.Alerts{}, reqInf, errors.New("requesting from Traffic Ops: " + err.Error())
+ }
+ defer reqResp.Body.Close()
+ resp := tc.Alerts{}
+ if err = json.NewDecoder(reqResp.Body).Decode(&resp); err != nil {
+ return tc.Alerts{}, reqInf, errors.New("decoding response: " + err.Error())
+ }
+ return resp, reqInf, nil
+}
+
+func (to *Session) GetDeliveryServiceServers() (tc.DeliveryServiceServerResponse, ReqInf, error) {
+ route := apiBase + `/deliveryserviceserver`
+ reqResp, remoteAddr, err := to.request(http.MethodGet, route, nil)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
+ if err != nil {
+ return tc.DeliveryServiceServerResponse{}, reqInf, errors.New("requesting from Traffic Ops: " + err.Error())
+ }
+ defer reqResp.Body.Close()
+ resp := tc.DeliveryServiceServerResponse{}
+ if err = json.NewDecoder(reqResp.Body).Decode(&resp); err != nil {
+ return tc.DeliveryServiceServerResponse{}, reqInf, errors.New("decoding response: " + err.Error())
+ }
+ return resp, reqInf, nil
+}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/atsconfig.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/atsconfig.go
deleted file mode 100644
index 6432c23..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/atsconfig.go
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "io/ioutil"
- "net/http"
- "strconv"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-func (to *Session) GetATSServerConfigList(serverID int) (tc.ATSConfigMetaData, ReqInf, error) {
- resp, remoteAddr, err := to.request(http.MethodGet, apiBase+"/servers/"+strconv.Itoa(serverID)+"/configfiles/ats", nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.ATSConfigMetaData{}, reqInf, err
- }
- defer resp.Body.Close()
-
- data := tc.ATSConfigMetaData{}
- if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
- return tc.ATSConfigMetaData{}, reqInf, err
- }
- return data, reqInf, nil
-}
-
-func (to *Session) GetATSServerConfigListByName(serverHostName string) (tc.ATSConfigMetaData, ReqInf, error) {
- resp, remoteAddr, err := to.request(http.MethodGet, apiBase+"/servers/"+serverHostName+"/configfiles/ats", nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.ATSConfigMetaData{}, reqInf, err
- }
- defer resp.Body.Close()
-
- data := tc.ATSConfigMetaData{}
- if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
- return tc.ATSConfigMetaData{}, reqInf, err
- }
- return data, reqInf, nil
-}
-
-func (to *Session) GetATSServerConfig(serverID int, fileName string) (string, ReqInf, error) {
- return to.getConfigFile(apiBase + "/servers/" + strconv.Itoa(serverID) + "/configfiles/ats/" + fileName)
-}
-
-func (to *Session) GetATSServerConfigByName(serverHostName string, fileName string) (string, ReqInf, error) {
- return to.getConfigFile(apiBase + "/servers/" + serverHostName + "/configfiles/ats/" + fileName)
-}
-
-func (to *Session) GetATSProfileConfig(profileID int, fileName string) (string, ReqInf, error) {
- return to.getConfigFile(apiBase + "/profiles/" + strconv.Itoa(profileID) + "/configfiles/ats/" + fileName)
-}
-
-func (to *Session) GetATSProfileConfigByName(profileName string, fileName string) (string, ReqInf, error) {
- return to.getConfigFile(apiBase + "/profiles/" + profileName + "/configfiles/ats/" + fileName)
-}
-
-func (to *Session) GetATSCDNConfig(cdnID int, fileName string) (string, ReqInf, error) {
- return to.getConfigFile(apiBase + "/cdns/" + strconv.Itoa(cdnID) + "/configfiles/ats/" + fileName)
-}
-
-func (to *Session) GetATSCDNConfigByName(cdnName string, fileName string) (string, ReqInf, error) {
- return to.getConfigFile(apiBase + "/cdns/" + cdnName + "/configfiles/ats/" + fileName)
-}
-
-func (to *Session) getConfigFile(uri string) (string, ReqInf, error) {
- resp, remoteAddr, err := to.request(http.MethodGet, uri, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return "", reqInf, err
- }
- defer resp.Body.Close()
-
- bts, err := ioutil.ReadAll(resp.Body)
- return string(bts), reqInf, err
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cachegroup.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cachegroup.go
index ad43ced..bc37926 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cachegroup.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cachegroup.go
@@ -17,11 +17,9 @@ package client
import (
"encoding/json"
- "errors"
"fmt"
"net"
"net/http"
- "net/url"
"github.com/apache/trafficcontrol/lib/go-tc"
)
@@ -32,45 +30,14 @@ const (
// Create a CacheGroup
func (to *Session) CreateCacheGroupNullable(cachegroup tc.CacheGroupNullable) (*tc.CacheGroupDetailResponse, ReqInf, error) {
- if cachegroup.TypeID == nil && cachegroup.Type != nil {
- ty, _, err := to.GetTypeByName(*cachegroup.Type)
- if err != nil {
- return nil, ReqInf{}, err
- }
- if len(ty) == 0 {
- return nil, ReqInf{}, errors.New("no type named " + *cachegroup.Type)
- }
- cachegroup.TypeID = &ty[0].ID
- }
-
- if cachegroup.ParentCachegroupID == nil && cachegroup.ParentName != nil {
- p, _, err := to.GetCacheGroupByName(*cachegroup.ParentName)
- if err != nil {
- return nil, ReqInf{}, err
- }
- if len(p) == 0 {
- return nil, ReqInf{}, errors.New("no cachegroup named " + *cachegroup.ParentName)
- }
- cachegroup.ParentCachegroupID = &p[0].ID
- }
-
- if cachegroup.SecondaryParentCachegroupID == nil && cachegroup.SecondaryParentName != nil {
- p, _, err := to.GetCacheGroupByName(*cachegroup.SecondaryParentName)
- if err != nil {
- return nil, ReqInf{}, err
- }
- if len(p) == 0 {
- return nil, ReqInf{}, errors.New("no cachegroup named " + *cachegroup.ParentName)
- }
- cachegroup.SecondaryParentCachegroupID = &p[0].ID
- }
+ var remoteAddr net.Addr
reqBody, err := json.Marshal(cachegroup)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
- return nil, ReqInf{}, err
+ return nil, reqInf, err
}
resp, remoteAddr, err := to.request(http.MethodPost, API_v13_CacheGroups, reqBody)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return nil, reqInf, err
}
@@ -85,45 +52,14 @@ func (to *Session) CreateCacheGroupNullable(cachegroup tc.CacheGroupNullable) (*
// Create a CacheGroup
// Deprecated: Use CreateCacheGroupNullable
func (to *Session) CreateCacheGroup(cachegroup tc.CacheGroup) (tc.Alerts, ReqInf, error) {
- if cachegroup.TypeID == 0 && cachegroup.Type != "" {
- ty, _, err := to.GetTypeByName(cachegroup.Type)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, err
- }
- if len(ty) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no type named " + cachegroup.Type)
- }
- cachegroup.TypeID = ty[0].ID
- }
-
- if cachegroup.ParentCachegroupID == 0 && cachegroup.ParentName != "" {
- p, _, err := to.GetCacheGroupByName(cachegroup.ParentName)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, err
- }
- if len(p) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no cachegroup named " + cachegroup.ParentName)
- }
- cachegroup.ParentCachegroupID = p[0].ID
- }
-
- if cachegroup.SecondaryParentCachegroupID == 0 && cachegroup.SecondaryParentName != "" {
- p, _, err := to.GetCacheGroupByName(cachegroup.SecondaryParentName)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, err
- }
- if len(p) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no cachegroup named " + cachegroup.ParentName)
- }
- cachegroup.SecondaryParentCachegroupID = p[0].ID
- }
+ var remoteAddr net.Addr
reqBody, err := json.Marshal(cachegroup)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
- return tc.Alerts{}, ReqInf{}, err
+ return tc.Alerts{}, reqInf, err
}
resp, remoteAddr, err := to.request(http.MethodPost, API_v13_CacheGroups, reqBody)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return tc.Alerts{}, reqInf, err
}
@@ -254,7 +190,7 @@ func (to *Session) GetCacheGroupByID(id int) ([]tc.CacheGroup, ReqInf, error) {
// GET a CacheGroup by the CacheGroup name
func (to *Session) GetCacheGroupNullableByName(name string) ([]tc.CacheGroupNullable, ReqInf, error) {
- url := fmt.Sprintf("%s?name=%s", API_v13_CacheGroups, url.QueryEscape(name))
+ url := fmt.Sprintf("%s?name=%s", API_v13_CacheGroups, name)
resp, remoteAddr, err := to.request(http.MethodGet, url, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
@@ -273,7 +209,7 @@ func (to *Session) GetCacheGroupNullableByName(name string) ([]tc.CacheGroupNull
// GET a CacheGroup by the CacheGroup name
// Deprecated: use GetCachegroupNullableByName
func (to *Session) GetCacheGroupByName(name string) ([]tc.CacheGroup, ReqInf, error) {
- url := fmt.Sprintf("%s?name=%s", API_v13_CacheGroups, url.QueryEscape(name))
+ url := fmt.Sprintf("%s?name=%s", API_v13_CacheGroups, name)
resp, remoteAddr, err := to.request(http.MethodGet, url, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cachegroup_parameters.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cachegroup_parameters.go
deleted file mode 100644
index c42aef3..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cachegroup_parameters.go
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "fmt"
- "net/http"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-const (
- API_v14_CacheGroupParameters = "/api/1.4/cachegroupparameters"
-)
-
-// GetCacheGroupParameters Gets a Cache Group's Parameters
-func (to *Session) GetCacheGroupParameters(cacheGroupID int) ([]tc.CacheGroupParameter, ReqInf, error) {
- route := fmt.Sprintf("%s/%d/parameters", API_v13_CacheGroups, cacheGroupID)
- return to.getCacheGroupParameters(route, "")
-}
-
-// GetCacheGroupParametersByQueryParams Gets a Cache Group's Parameters with query parameters
-func (to *Session) GetCacheGroupParametersByQueryParams(cacheGroupID int, queryParams string) ([]tc.CacheGroupParameter, ReqInf, error) {
- route := fmt.Sprintf("%s/%d/parameters", API_v13_CacheGroups, cacheGroupID)
- return to.getCacheGroupParameters(route, queryParams)
-}
-
-// GetCacheGroupUnassignedParameters Gets a Cache Group's Unassigned Parameters
-func (to *Session) GetCacheGroupUnassignedParameters(cacheGroupID int) ([]tc.CacheGroupParameter, ReqInf, error) {
- route := fmt.Sprintf("%s/%d/unassigned_parameters", API_v13_CacheGroups, cacheGroupID)
- return to.getCacheGroupParameters(route, "")
-}
-
-// GetCacheGroupParametersByQueryParams Gets a Cache Group's Unassigned Parameters with query parameters
-func (to *Session) GetCacheGroupUnassignedParametersByQueryParams(cacheGroupID int, queryParams string) ([]tc.CacheGroupParameter, ReqInf, error) {
- route := fmt.Sprintf("%s/%d/unassigned_parameters", API_v13_CacheGroups, cacheGroupID)
- return to.getCacheGroupParameters(route, queryParams)
-}
-
-func (to *Session) getCacheGroupParameters(route, queryParams string) ([]tc.CacheGroupParameter, ReqInf, error) {
- r := fmt.Sprintf("%s%s", route, queryParams)
- resp, remoteAddr, err := to.request(http.MethodGet, r, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- var data tc.CacheGroupParametersResponse
- if err = json.NewDecoder(resp.Body).Decode(&data); err != nil {
- return nil, reqInf, err
- }
- return data.Response, reqInf, nil
-}
-
-// DeleteCacheGroupParameter Deassociates a Parameter with a Cache Group
-func (to *Session) DeleteCacheGroupParameter(cacheGroupID, parameterID int) (tc.Alerts, ReqInf, error) {
- route := fmt.Sprintf("%s/%d/%d", API_v14_CacheGroupParameters, cacheGroupID, parameterID)
- resp, remoteAddr, err := to.request(http.MethodDelete, route, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
-
- var alerts tc.Alerts
- if err = json.NewDecoder(resp.Body).Decode(&alerts); err != nil {
- return tc.Alerts{}, reqInf, err
- }
- return alerts, reqInf, nil
-}
-
-// CreateCacheGroupParameter Associates a Parameter with a Cache Group
-func (to *Session) CreateCacheGroupParameter(cacheGroupID, parameterID int) (*tc.CacheGroupParametersPostResponse, ReqInf, error) {
- cacheGroupParameterReq := tc.CacheGroupParameterRequest{
- CacheGroupID: cacheGroupID,
- ParameterID: parameterID,
- }
- reqBody, err := json.Marshal(cacheGroupParameterReq)
- if err != nil {
- return nil, ReqInf{}, err
- }
- resp, remoteAddr, err := to.request(http.MethodPost, API_v14_CacheGroupParameters, reqBody)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- var data tc.CacheGroupParametersPostResponse
- if err = json.NewDecoder(resp.Body).Decode(&data); err != nil {
- return nil, reqInf, err
- }
- return &data, reqInf, nil
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cdn.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cdn.go
index 4503a78..008f384 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cdn.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/cdn.go
@@ -20,7 +20,6 @@ import (
"fmt"
"net"
"net/http"
- "net/url"
"github.com/apache/trafficcontrol/lib/go-tc"
)
@@ -102,7 +101,7 @@ func (to *Session) GetCDNByID(id int) ([]tc.CDN, ReqInf, error) {
// GET a CDN by the CDN name
func (to *Session) GetCDNByName(name string) ([]tc.CDN, ReqInf, error) {
- url := fmt.Sprintf("%s?name=%s", API_v13_CDNs, url.QueryEscape(name))
+ url := fmt.Sprintf("%s?name=%s", API_v13_CDNs, name)
resp, remoteAddr, err := to.request(http.MethodGet, url, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/crconfig.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/crconfig.go
index 2c7fb33..626ed43 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/crconfig.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/crconfig.go
@@ -15,10 +15,7 @@
package client
-import (
- "encoding/json"
- "net/http"
-)
+import "fmt"
// CRConfigRaw Deprecated: use GetCRConfig instead
func (to *Session) CRConfigRaw(cdn string) ([]byte, error) {
@@ -26,28 +23,8 @@ func (to *Session) CRConfigRaw(cdn string) ([]byte, error) {
return bytes, err
}
-type OuterResponse struct {
- Response json.RawMessage `json:"response"`
-}
-
// GetCRConfig returns the raw JSON bytes of the CRConfig from Traffic Ops, and whether the bytes were from the client's internal cache.
func (to *Session) GetCRConfig(cdn string) ([]byte, ReqInf, error) {
- uri := apiBase + `/cdns/` + cdn + `/snapshot`
- bts, reqInf, err := to.getBytesWithTTL(uri, tmPollingInterval)
- if err != nil {
- return nil, reqInf, err
- }
-
- resp := OuterResponse{}
- if err := json.Unmarshal(bts, &resp); err != nil {
- return nil, reqInf, err
- }
- return []byte(resp.Response), reqInf, nil
-}
-
-func (to *Session) SnapshotCRConfig(cdn string) (ReqInf, error) {
- uri := apiBase + `/snapshot/` + cdn
- _, remoteAddr, err := to.request(http.MethodPut, uri, nil)
- reqInf := ReqInf{RemoteAddr: remoteAddr, CacheHitStatus: CacheHitStatusMiss}
- return reqInf, err
+ url := fmt.Sprintf("/CRConfig-Snapshots/%s/CRConfig.json", cdn)
+ return to.getBytesWithTTL(url, tmPollingInterval)
}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice.go
index 76e2aea..fe76879 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice.go
@@ -17,7 +17,8 @@ package client
import (
"encoding/json"
- "errors"
+ "fmt"
+ "net/http"
"strconv"
"github.com/apache/trafficcontrol/lib/go-tc"
@@ -49,7 +50,6 @@ func (to *Session) DeliveryServicesByServer(id int) ([]tc.DeliveryService, error
func (to *Session) GetDeliveryServicesByServer(id int) ([]tc.DeliveryService, ReqInf, error) {
var data tc.DeliveryServicesResponse
-
reqInf, err := get(to, deliveryServicesByServerEp(strconv.Itoa(id)), &data)
if err != nil {
return nil, reqInf, err
@@ -87,147 +87,14 @@ func (to *Session) GetDeliveryService(id string) (*tc.DeliveryService, ReqInf, e
return &data.Response[0], reqInf, nil
}
-func (to *Session) GetDeliveryServicesNullable() ([]tc.DeliveryServiceNullable, ReqInf, error) {
- data := struct {
- Response []tc.DeliveryServiceNullable `json:"response"`
- }{}
- reqInf, err := get(to, deliveryServicesEp(), &data)
- if err != nil {
- return nil, reqInf, err
- }
- return data.Response, reqInf, nil
-}
-
-func (to *Session) GetDeliveryServicesByCDNID(cdnID int) ([]tc.DeliveryServiceNullable, ReqInf, error) {
- data := struct {
- Response []tc.DeliveryServiceNullable `json:"response"`
- }{}
- reqInf, err := get(to, apiBase+dsPath+"?cdn="+strconv.Itoa(cdnID), &data)
- if err != nil {
- return nil, reqInf, err
- }
- return data.Response, reqInf, nil
-}
-
-func (to *Session) GetDeliveryServiceNullable(id string) (*tc.DeliveryServiceNullable, ReqInf, error) {
- data := struct {
- Response []tc.DeliveryServiceNullable `json:"response"`
- }{}
- reqInf, err := get(to, deliveryServiceEp(id), &data)
- if err != nil {
- return nil, reqInf, err
- }
- if len(data.Response) == 0 {
- return nil, reqInf, nil
- }
- return &data.Response[0], reqInf, nil
-}
-
// CreateDeliveryService creates the DeliveryService it's passed
func (to *Session) CreateDeliveryService(ds *tc.DeliveryService) (*tc.CreateDeliveryServiceResponse, error) {
- if ds.TypeID == 0 && ds.Type.String() != "" {
- ty, _, err := to.GetTypeByName(ds.Type.String())
- if err != nil {
- return nil, err
- }
- if len(ty) == 0 {
- return nil, errors.New("no type named " + ds.Type.String())
- }
- ds.TypeID = ty[0].ID
- }
-
- if ds.CDNID == 0 && ds.CDNName != "" {
- cdns, _, err := to.GetCDNByName(ds.CDNName)
- if err != nil {
- return nil, err
- }
- if len(cdns) == 0 {
- return nil, errors.New("no CDN named " + ds.CDNName)
- }
- ds.CDNID = cdns[0].ID
- }
-
- if ds.ProfileID == 0 && ds.ProfileName != "" {
- profiles, _, err := to.GetProfileByName(ds.ProfileName)
- if err != nil {
- return nil, err
- }
- if len(profiles) == 0 {
- return nil, errors.New("no Profile named " + ds.ProfileName)
- }
- ds.ProfileID = profiles[0].ID
- }
-
- if ds.TenantID == 0 && ds.Tenant != "" {
- ten, _, err := to.TenantByName(ds.Tenant)
- if err != nil {
- return nil, err
- }
- ds.TenantID = ten.ID
- }
-
var data tc.CreateDeliveryServiceResponse
jsonReq, err := json.Marshal(ds)
if err != nil {
return nil, err
}
- _, err = post(to, deliveryServicesEp(), jsonReq, &data)
- if err != nil {
- return nil, err
- }
-
- return &data, nil
-}
-
-// CreateDeliveryServiceNullable creates the DeliveryService it's passed
-func (to *Session) CreateDeliveryServiceNullable(ds *tc.DeliveryServiceNullable) (*tc.CreateDeliveryServiceNullableResponse, error) {
- if ds.TypeID == nil && ds.Type != nil {
- ty, _, err := to.GetTypeByName(ds.Type.String())
- if err != nil {
- return nil, err
- }
- if len(ty) == 0 {
- return nil, errors.New("no type named " + ds.Type.String())
- }
- ds.TypeID = &ty[0].ID
- }
-
- if ds.CDNID == nil && ds.CDNName != nil {
- cdns, _, err := to.GetCDNByName(*ds.CDNName)
- if err != nil {
- return nil, err
- }
- if len(cdns) == 0 {
- return nil, errors.New("no CDN named " + *ds.CDNName)
- }
- ds.CDNID = &cdns[0].ID
- }
-
- if ds.ProfileID == nil && ds.ProfileName != nil {
- profiles, _, err := to.GetProfileByName(*ds.ProfileName)
- if err != nil {
- return nil, err
- }
- if len(profiles) == 0 {
- return nil, errors.New("no Profile named " + *ds.ProfileName)
- }
- ds.ProfileID = &profiles[0].ID
- }
-
- if ds.TenantID == nil && ds.Tenant != nil {
- ten, _, err := to.TenantByName(*ds.Tenant)
- if err != nil {
- return nil, err
- }
- ds.TenantID = &ten.ID
- }
-
- var data tc.CreateDeliveryServiceNullableResponse
- jsonReq, err := json.Marshal(ds)
- if err != nil {
- return nil, err
- }
- _, err = post(to, deliveryServicesEp(), jsonReq, &data)
+ err = post(to, deliveryServicesEp(), jsonReq, &data)
if err != nil {
return nil, err
}
@@ -243,21 +110,7 @@ func (to *Session) UpdateDeliveryService(id string, ds *tc.DeliveryService) (*tc
if err != nil {
return nil, err
}
- _, err = put(to, deliveryServiceEp(id), jsonReq, &data)
- if err != nil {
- return nil, err
- }
-
- return &data, nil
-}
-
-func (to *Session) UpdateDeliveryServiceNullable(id string, ds *tc.DeliveryServiceNullable) (*tc.UpdateDeliveryServiceResponse, error) {
- var data tc.UpdateDeliveryServiceResponse
- jsonReq, err := json.Marshal(ds)
- if err != nil {
- return nil, err
- }
- _, err = put(to, deliveryServiceEp(id), jsonReq, &data)
+ err = put(to, deliveryServiceEp(id), jsonReq, &data)
if err != nil {
return nil, err
}
@@ -268,7 +121,7 @@ func (to *Session) UpdateDeliveryServiceNullable(id string, ds *tc.DeliveryServi
// DeleteDeliveryService deletes the DeliveryService matching the ID it's passed
func (to *Session) DeleteDeliveryService(id string) (*tc.DeleteDeliveryServiceResponse, error) {
var data tc.DeleteDeliveryServiceResponse
- _, err := del(to, deliveryServiceEp(id), &data)
+ err := del(to, deliveryServiceEp(id), &data)
if err != nil {
return nil, err
}
@@ -433,24 +286,80 @@ func (to *Session) GetDeliveryServicesEligible(dsID int) ([]tc.DSServer, ReqInf,
return resp.Response, reqInf, nil
}
+const (
+ API_DELIVERY_SERVICES = apiBase + "/deliveryservices"
+ API_DELIVERY_SERVICES_URL_SIGNING_KEYS = API_DELIVERY_SERVICES + "/xmlId/%s/urlkeys"
+ API_DELIVERY_SERVICES_URI_SIGNING_KEYS = API_DELIVERY_SERVICES + "/%s/urisignkeys"
+)
+
+// GetDeliveryServicesByCDNID returns the (tenant-visible) Delivery Services within the CDN identified
+// by the integral, unique identifier 'cdnID'.
+func (to *Session) GetDeliveryServicesByCDNID(cdnID int) ([]tc.DeliveryServiceNullable, ReqInf, error) {
+ data := struct {
+ Response []tc.DeliveryServiceNullable `json:"response"`
+ }{}
+ reqInf, err := get(to, API_DELIVERY_SERVICES+"?cdn="+strconv.Itoa(cdnID), &data)
+ if err != nil {
+ return nil, reqInf, err
+ }
+ return data.Response, reqInf, nil
+}
+
+// GetDeliveryServiceURLSigKeys returns the URL-signing keys used by the Delivery Service
+// identified by the XMLID 'dsName'.
func (to *Session) GetDeliveryServiceURLSigKeys(dsName string) (tc.URLSigKeys, ReqInf, error) {
data := struct {
Response tc.URLSigKeys `json:"response"`
}{}
- path := apiBase + `/deliveryservices/xmlId/` + dsName + `/urlkeys.json`
- reqInf, err := get(to, path, &data)
+
+ reqInf, err := get(to, fmt.Sprintf(API_DELIVERY_SERVICES_URL_SIGNING_KEYS, dsName), &data)
if err != nil {
return tc.URLSigKeys{}, reqInf, err
}
return data.Response, reqInf, nil
}
+// GetDeliveryServiceURISigningKeys returns the URI-signing keys used by the Delivery Service
+// identified by the XMLID 'dsName'. The result is not parsed.
func (to *Session) GetDeliveryServiceURISigningKeys(dsName string) ([]byte, ReqInf, error) {
- path := apiBase + `/deliveryservices/` + dsName + `/urisignkeys`
data := json.RawMessage{}
- reqInf, err := get(to, path, &data)
+ reqInf, err := get(to, fmt.Sprintf(API_DELIVERY_SERVICES_URI_SIGNING_KEYS, dsName), &data)
if err != nil {
return []byte{}, reqInf, err
}
return []byte(data), reqInf, nil
}
+
+// GetJobs returns a list of Jobs.
+// If deliveryServiceID or userID are not nil, only jobs for that delivery service or belonging to
+// that user are returned. Both deliveryServiceID and userID may be nil.
+//
+// Deprecated, use GetInvalidationJobs instead
+func (to *Session) GetJobs(deliveryServiceID *int, userID *int) ([]tc.Job, ReqInf, error) {
+ path := apiBase + "/jobs"
+ if deliveryServiceID != nil || userID != nil {
+ path += "?"
+ if deliveryServiceID != nil {
+ path += "dsId=" + strconv.Itoa(*deliveryServiceID)
+ if userID != nil {
+ path += "&"
+ }
+ }
+ if userID != nil {
+ path += "userId=" + strconv.Itoa(*userID)
+ }
+ }
+
+ resp, remoteAddr, err := to.request(http.MethodGet, path, nil)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
+ if err != nil {
+ return nil, reqInf, err
+ }
+ defer resp.Body.Close()
+
+ data := struct {
+ Response []tc.Job `json:"response"`
+ }{}
+ err = json.NewDecoder(resp.Body).Decode(&data)
+ return data.Response, reqInf, err
+}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice_endpoints.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice_endpoints.go
index a9313f4..32eb1d7 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice_endpoints.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice_endpoints.go
@@ -22,7 +22,7 @@ func deliveryServicesEp() string {
}
func deliveryServicesByServerEp(id string) string {
- return apiBase + "/servers/" + id + dsPath
+ return apiBase + "/servers/" + id + dsPath + ".json"
}
func deliveryServiceBaseEp(id string) string {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice_requests.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice_requests.go
index 341b2c2..e8d543b 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice_requests.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservice_requests.go
@@ -17,12 +17,10 @@ package client
import (
"encoding/json"
- "errors"
"fmt"
"io/ioutil"
"net"
"net/http"
- "net/url"
"github.com/apache/trafficcontrol/lib/go-tc"
)
@@ -33,68 +31,15 @@ const (
// Create a Delivery Service Request
func (to *Session) CreateDeliveryServiceRequest(dsr tc.DeliveryServiceRequest) (tc.Alerts, ReqInf, error) {
+
var alerts tc.Alerts
var remoteAddr net.Addr
- if dsr.AssigneeID == 0 && dsr.Assignee != "" {
- res, reqInf, err := to.GetUserByUsername(dsr.Assignee)
- if err != nil {
- return alerts, reqInf, err
- }
- if len(res) == 0 {
- return alerts, reqInf, errors.New("no user with name " + dsr.Assignee)
- }
- dsr.AssigneeID = *res[0].ID
- }
-
- if dsr.AuthorID == 0 && dsr.Author != "" {
- res, reqInf, err := to.GetUserByUsername(dsr.Author)
- if err != nil {
- return alerts, reqInf, err
- }
- if len(res) == 0 {
- return alerts, reqInf, errors.New("no user with name " + dsr.Author)
- }
- dsr.AuthorID = tc.IDNoMod(*res[0].ID)
- }
-
- if dsr.DeliveryService.TypeID == 0 && dsr.DeliveryService.Type.String() != "" {
- ty, reqInf, err := to.GetTypeByName(dsr.DeliveryService.Type.String())
- if err != nil || len(ty) == 0 {
- return alerts, reqInf, errors.New("no type named " + dsr.DeliveryService.Type.String())
- }
- dsr.DeliveryService.TypeID = ty[0].ID
- }
-
- if dsr.DeliveryService.CDNID == 0 && dsr.DeliveryService.CDNName != "" {
- cdns, reqInf, err := to.GetCDNByName(dsr.DeliveryService.CDNName)
- if err != nil || len(cdns) == 0 {
- return alerts, reqInf, errors.New("no CDN named " + dsr.DeliveryService.CDNName)
- }
- dsr.DeliveryService.CDNID = cdns[0].ID
- }
-
- if dsr.DeliveryService.ProfileID == 0 && dsr.DeliveryService.ProfileName != "" {
- profiles, reqInf, err := to.GetProfileByName(dsr.DeliveryService.ProfileName)
- if err != nil || len(profiles) == 0 {
- return alerts, reqInf, errors.New("no Profile named " + dsr.DeliveryService.ProfileName)
- }
- dsr.DeliveryService.ProfileID = profiles[0].ID
- }
-
- if dsr.DeliveryService.TenantID == 0 && dsr.DeliveryService.Tenant != "" {
- ten, reqInf, err := to.TenantByName(dsr.DeliveryService.Tenant)
- if err != nil || ten == nil {
- return alerts, reqInf, errors.New("no Tenant named " + dsr.DeliveryService.Tenant)
- }
- dsr.DeliveryService.TenantID = ten.ID
- }
-
reqBody, err := json.Marshal(dsr)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return alerts, reqInf, err
}
- resp, remoteAddr, err := to.RawRequest(http.MethodPost, API_DS_REQUESTS, reqBody)
+ resp, remoteAddr, err := to.rawRequest(http.MethodPost, API_DS_REQUESTS, reqBody)
defer resp.Body.Close()
if err == nil {
@@ -132,7 +77,7 @@ func (to *Session) GetDeliveryServiceRequests() ([]tc.DeliveryServiceRequest, Re
// GET a DeliveryServiceRequest by the DeliveryServiceRequest XMLID
func (to *Session) GetDeliveryServiceRequestByXMLID(XMLID string) ([]tc.DeliveryServiceRequest, ReqInf, error) {
- route := fmt.Sprintf("%s?xmlId=%s", API_DS_REQUESTS, url.QueryEscape(XMLID))
+ route := fmt.Sprintf("%s?xmlId=%s", API_DS_REQUESTS, XMLID)
resp, remoteAddr, err := to.request(http.MethodGet, route, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
@@ -195,7 +140,7 @@ func (to *Session) UpdateDeliveryServiceRequestByID(id int, dsr tc.DeliveryServi
// DELETE a DeliveryServiceRequest by DeliveryServiceRequest assignee
func (to *Session) DeleteDeliveryServiceRequestByID(id int) (tc.Alerts, ReqInf, error) {
route := fmt.Sprintf("%s?id=%d", API_DS_REQUESTS, id)
- resp, remoteAddr, err := to.RawRequest(http.MethodDelete, route, nil)
+ resp, remoteAddr, err := to.rawRequest(http.MethodDelete, route, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return tc.Alerts{}, reqInf, err
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservices_required_capabilities.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservices_required_capabilities.go
deleted file mode 100644
index 36e964e..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryservices_required_capabilities.go
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "fmt"
- "net"
- "net/url"
- "strconv"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-const (
- v14DeliveryServicesRequiredCapabilities = apiBase + "/deliveryservices_required_capabilities"
-)
-
-// CreateDeliveryServicesRequiredCapability assigns a Required Capability to a Delivery Service
-func (to *Session) CreateDeliveryServicesRequiredCapability(capability tc.DeliveryServicesRequiredCapability) (tc.Alerts, ReqInf, error) {
- var alerts tc.Alerts
- var remoteAddr net.Addr
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- reqBody, err := json.Marshal(capability)
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- reqInf, err = post(to, v14DeliveryServicesRequiredCapabilities, reqBody, &alerts)
- return alerts, reqInf, err
-}
-
-// DeleteDeliveryServicesRequiredCapability unassigns a Required Capability from a Delivery Service
-func (to *Session) DeleteDeliveryServicesRequiredCapability(deliveryserviceID int, capability string) (tc.Alerts, ReqInf, error) {
- var alerts tc.Alerts
- param := url.Values{}
- param.Add("deliveryServiceID", strconv.Itoa(deliveryserviceID))
- param.Add("requiredCapability", capability)
- url := fmt.Sprintf("%s?%s", v14DeliveryServicesRequiredCapabilities, param.Encode())
- reqInf, err := del(to, url, &alerts)
- return alerts, reqInf, err
-}
-
-// GetDeliveryServicesRequiredCapabilities retrieves a list of Required Capabilities that are assigned to a Delivery Service
-// Callers can filter the results by delivery service id, xml id and/or required capability via the optional parameters
-func (to *Session) GetDeliveryServicesRequiredCapabilities(deliveryServiceID *int, xmlID, capability *string) ([]tc.DeliveryServicesRequiredCapability, ReqInf, error) {
- param := url.Values{}
- if deliveryServiceID != nil {
- param.Add("deliveryServiceID", strconv.Itoa(*deliveryServiceID))
- }
- if xmlID != nil {
- param.Add("xmlID", *xmlID)
- }
- if capability != nil {
- param.Add("requiredCapability", *capability)
- }
-
- url := v14DeliveryServicesRequiredCapabilities
- if len(param) > 0 {
- url = fmt.Sprintf("%s?%s", url, param.Encode())
- }
-
- resp := struct {
- Response []tc.DeliveryServicesRequiredCapability `json:"response"`
- }{}
- reqInf, err := get(to, url, &resp)
- if err != nil {
- return nil, reqInf, err
- }
- return resp.Response, reqInf, nil
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryserviceserver.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryserviceserver.go
index d446fb3..4ffb7ed 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryserviceserver.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/deliveryserviceserver.go
@@ -42,37 +42,12 @@ func (to *Session) CreateDeliveryServiceServers(dsID int, serverIDs []int, repla
resp := struct {
Response tc.DSServerIDs `json:"response"`
}{}
- if _, err := post(to, path, jsonReq, &resp); err != nil {
+ if err := post(to, path, jsonReq, &resp); err != nil {
return nil, err
}
return &resp.Response, nil
}
-func (to *Session) DeleteDeliveryServiceServer(dsID int, serverID int) (tc.Alerts, ReqInf, error) {
- route := apiBase + `/deliveryservice_server/` + strconv.Itoa(dsID) + "/" + strconv.Itoa(serverID)
- reqResp, remoteAddr, err := to.request(http.MethodDelete, route, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, errors.New("requesting from Traffic Ops: " + err.Error())
- }
- defer reqResp.Body.Close()
- resp := tc.Alerts{}
- if err = json.NewDecoder(reqResp.Body).Decode(&resp); err != nil {
- return tc.Alerts{}, reqInf, errors.New("decoding response: " + err.Error())
- }
- return resp, reqInf, nil
-}
-
-// GetDeliveryServiceServers gets all delivery service servers, with the default API limit.
-func (to *Session) GetDeliveryServiceServers() (tc.DeliveryServiceServerResponse, ReqInf, error) {
- return to.getDeliveryServiceServers(url.Values{})
-}
-
-// GetDeliveryServiceServersN gets all delivery service servers, with a limit of n.
-func (to *Session) GetDeliveryServiceServersN(n int) (tc.DeliveryServiceServerResponse, ReqInf, error) {
- return to.getDeliveryServiceServers(url.Values{"limit": []string{strconv.Itoa(n)}})
-}
-
// GetDeliveryServiceServersWithLimits gets all delivery service servers, allowing specifying the limit of mappings to return, the delivery services to return, and the servers to return.
// The limit may be 0, in which case the default limit will be applied. The deliveryServiceIDs and serverIDs may be nil or empty, in which case all delivery services and/or servers will be returned.
func (to *Session) GetDeliveryServiceServersWithLimits(limit int, deliveryServiceIDs []int, serverIDs []int) (tc.DeliveryServiceServerResponse, ReqInf, error) {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/dsuser.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/dsuser.go
index f6f7b67..f39137b 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/dsuser.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/dsuser.go
@@ -42,7 +42,7 @@ func (to *Session) SetDeliveryServiceUser(userID int, dses []int, replace bool)
return nil, err
}
resp := tc.UserDeliveryServicePostResponse{}
- _, err = post(to, uri, jsonReq, &resp)
+ err = post(to, uri, jsonReq, &resp)
if err != nil {
return nil, err
}
@@ -53,7 +53,7 @@ func (to *Session) SetDeliveryServiceUser(userID int, dses []int, replace bool)
func (to *Session) DeleteDeliveryServiceUser(userID int, dsID int) (*tc.UserDeliveryServiceDeleteResponse, error) {
uri := apiBase + `/deliveryservice_user/` + strconv.Itoa(dsID) + `/` + strconv.Itoa(userID)
resp := tc.UserDeliveryServiceDeleteResponse{}
- if _, err := del(to, uri, &resp); err != nil {
+ if err := del(to, uri, &resp); err != nil {
return nil, err
}
return &resp, nil
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/endpoints.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/endpoints.go
index bd71a01..2891c32 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/endpoints.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/endpoints.go
@@ -15,4 +15,4 @@
package client
-const apiBase = "/api/1.4"
+const apiBase = "/api/1.3"
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/federation.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/federation.go
deleted file mode 100644
index 9b509ca..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/federation.go
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "errors"
- "fmt"
- "net/http"
- "strconv"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-func (to *Session) Federations() ([]tc.AllDeliveryServiceFederationsMapping, ReqInf, error) {
- type FederationResponse struct {
- Response []tc.AllDeliveryServiceFederationsMapping `json:"response"`
- }
- data := FederationResponse{}
- inf, err := get(to, apiBase+"/federations", &data)
- return data.Response, inf, err
-}
-
-func (to *Session) AllFederations() ([]tc.AllDeliveryServiceFederationsMapping, ReqInf, error) {
- type FederationResponse struct {
- Response []tc.AllDeliveryServiceFederationsMapping `json:"response"`
- }
- data := FederationResponse{}
- inf, err := get(to, apiBase+"/federations/all", &data)
- return data.Response, inf, err
-}
-
-func (to *Session) AllFederationsForCDN(cdnName string) ([]tc.AllDeliveryServiceFederationsMapping, ReqInf, error) {
- // because the Federations JSON array is heterogeneous (array members may be a AllFederation or AllFederationCDN), we have to try decoding each separately.
- type FederationResponse struct {
- Response []json.RawMessage `json:"response"`
- }
- data := FederationResponse{}
- inf, err := get(to, apiBase+"/federations/all?cdnName="+cdnName, &data)
- if err != nil {
- return nil, inf, err
- }
-
- feds := []tc.AllDeliveryServiceFederationsMapping{}
- for _, raw := range data.Response {
- fed := tc.AllDeliveryServiceFederationsMapping{}
- if err := json.Unmarshal([]byte(raw), &fed); err != nil {
- // we don't actually need the CDN, but we want to return an error if we got something unexpected
- cdnFed := tc.AllFederationCDN{}
- if err := json.Unmarshal([]byte(raw), &cdnFed); err != nil {
- return nil, inf, errors.New("Traffic Ops returned an unexpected object: '" + string(raw) + "'")
- }
- }
- feds = append(feds, fed)
- }
- return feds, inf, nil
-}
-
-func (to *Session) CreateFederationDeliveryServices(federationID int, deliveryServiceIDs []int, replace bool) (ReqInf, error) {
- req := tc.FederationDSPost{DSIDs: deliveryServiceIDs, Replace: &replace}
- jsonReq, err := json.Marshal(req)
- if err != nil {
- return ReqInf{CacheHitStatus: CacheHitStatusMiss}, err
- }
- resp := map[string]interface{}{}
- inf, err := makeReq(to, http.MethodPost, apiBase+`/federations/`+strconv.Itoa(federationID)+`/deliveryservices`, jsonReq, &resp)
- return inf, err
-}
-
-// GetFederationDeliveryServices Returns a given Federation's Delivery Services
-func (to *Session) GetFederationDeliveryServices(federationID int) ([]tc.FederationDeliveryServiceNullable, ReqInf, error) {
- type FederationDSesResponse struct {
- Response []tc.FederationDeliveryServiceNullable `json:"response"`
- }
- data := FederationDSesResponse{}
- inf, err := get(to, fmt.Sprintf("%s/federations/%v/deliveryservices", apiBase, federationID), &data)
- return data.Response, inf, err
-}
-
-// DeleteFederationDeliveryService Deletes a given Delivery Service from a Federation
-func (to *Session) DeleteFederationDeliveryService(federationID, deliveryServiceID int) (tc.Alerts, ReqInf, error) {
- route := fmt.Sprintf("%s/federations/%v/deliveryservices/%v", apiBase, federationID, deliveryServiceID)
- resp, remoteAddr, err := to.request(http.MethodDelete, route, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- var alerts tc.Alerts
- if err = json.NewDecoder(resp.Body).Decode(&alerts); err != nil {
- return tc.Alerts{}, reqInf, err
- }
- return alerts, reqInf, nil
-}
-
-// GetFederationUsers Associates the given Users' IDs to a Federation
-func (to *Session) CreateFederationUsers(federationID int, userIDs []int, replace bool) (tc.Alerts, ReqInf, error) {
- req := tc.FederationUserPost{IDs: userIDs, Replace: &replace}
- jsonReq, err := json.Marshal(req)
- if err != nil {
- return tc.Alerts{}, ReqInf{CacheHitStatus: CacheHitStatusMiss}, err
- }
- var alerts tc.Alerts
- inf, err := makeReq(to, http.MethodPost, fmt.Sprintf("%s/federations/%v/users", apiBase, federationID), jsonReq, &alerts)
- return alerts, inf, err
-}
-
-// GetFederationUsers Returns a given Federation's Users
-func (to *Session) GetFederationUsers(federationID int) ([]tc.FederationUser, ReqInf, error) {
- type FederationUsersResponse struct {
- Response []tc.FederationUser `json:"response"`
- }
- data := FederationUsersResponse{}
- inf, err := get(to, fmt.Sprintf("%s/federations/%v/users", apiBase, federationID), &data)
- return data.Response, inf, err
-}
-
-// DeleteFederationUser Deletes a given User from a Federation
-func (to *Session) DeleteFederationUser(federationID, userID int) (tc.Alerts, ReqInf, error) {
- route := fmt.Sprintf("%s/federations/%v/users/%v", apiBase, federationID, userID)
- resp, remoteAddr, err := to.request(http.MethodDelete, route, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- var alerts tc.Alerts
- if err = json.NewDecoder(resp.Body).Decode(&alerts); err != nil {
- return tc.Alerts{}, reqInf, err
- }
- return alerts, reqInf, nil
-}
-
-// AddFederationResolverMappingsForCurrentUser adds Federation Resolver mappings to one or more
-// Delivery Services for the current user.
-func (to *Session) AddFederationResolverMappingsForCurrentUser(mappings tc.DeliveryServiceFederationResolverMappingRequest) (tc.Alerts, ReqInf, error) {
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss}
- var alerts tc.Alerts
-
- bts, err := json.Marshal(mappings)
- if err != nil {
- return alerts, reqInf, err
- }
-
- resp, remoteAddr, err := to.request(http.MethodPost, apiBase+"/federations", bts)
- reqInf.RemoteAddr = remoteAddr
- if err != nil {
- return alerts, reqInf, err
- }
- defer resp.Body.Close()
-
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
-
-// DeleteFederationResolverMappingsForCurrentUser removes ALL Federation Resolver mappings for ALL
-// Federations assigned to the currently authenticated user, as well as deleting ALL of the
-// Federation Resolvers themselves.
-func (to *Session) DeleteFederationResolverMappingsForCurrentUser() (tc.Alerts, ReqInf, error) {
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss}
- var alerts tc.Alerts
-
- resp, remoteAddr, err := to.request(http.MethodDelete, apiBase+"/federations", nil)
- reqInf.RemoteAddr = remoteAddr
- if err != nil {
- return alerts, reqInf, err
- }
- defer resp.Body.Close()
-
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
-
-// ReplaceFederationResolverMappingsForCurrentUser replaces any and all Federation Resolver mappings
-// on all Federations assigned to the currently authenticated user. This will first remove ALL
-// Federation Resolver mappings for ALL Federations assigned to the currently authenticated user, as
-// well as deleting ALL of the Federation Resolvers themselves. In other words, calling this is
-// equivalent to a call to DeleteFederationResolverMappingsForCurrentUser followed by a call to
-// AddFederationResolverMappingsForCurrentUser .
-func (to *Session) ReplaceFederationResolverMappingsForCurrentUser(mappings tc.DeliveryServiceFederationResolverMappingRequest) (tc.Alerts, ReqInf, error) {
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss}
- var alerts tc.Alerts
-
- bts, err := json.Marshal(mappings)
- if err != nil {
- return alerts, reqInf, err
- }
-
- resp, remoteAddr, err := to.request(http.MethodPut, apiBase+"/federations", bts)
- reqInf.RemoteAddr = remoteAddr
- if err != nil {
- return alerts, reqInf, err
- }
- defer resp.Body.Close()
-
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/federation_resolver.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/federation_resolver.go
deleted file mode 100644
index 3b87f9d..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/federation_resolver.go
+++ /dev/null
@@ -1,116 +0,0 @@
-package client
-
-/*
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-import "encoding/json"
-import "fmt"
-import "net/http"
-import "net/url"
-import "strconv"
-
-import "github.com/apache/trafficcontrol/lib/go-tc"
-
-func (to *Session) getFederationResolvers(id *uint, ip *string, t *string) ([]tc.FederationResolver, ReqInf, error) {
- var vals = url.Values{}
- if id != nil {
- vals.Set("id", strconv.FormatUint(uint64(*id), 10))
- }
- if ip != nil {
- vals.Set("ipAddress", *ip)
- }
- if t != nil {
- vals.Set("type", *t)
- }
-
- var path = apiBase + "/federation_resolvers"
- if len(vals) > 0 {
- path = fmt.Sprintf("%s?%s", path, vals.Encode())
- }
-
- var data struct {
- Response []tc.FederationResolver `json:"response"`
- }
- inf, err := get(to, path, &data)
- return data.Response, inf, err
-}
-
-// GetFederationResolvers retrieves all Federation Resolvers from Traffic Ops
-func (to *Session) GetFederationResolvers() ([]tc.FederationResolver, ReqInf, error) {
- return to.getFederationResolvers(nil, nil, nil)
-}
-
-// GetFederationResolverByID retrieves a single Federation Resolver identified by ID.
-func (to *Session) GetFederationResolverByID(ID uint) (tc.FederationResolver, ReqInf, error) {
- var fr tc.FederationResolver
- frs, inf, err := to.getFederationResolvers(&ID, nil, nil)
- if len(frs) > 0 {
- fr = frs[0]
- }
- return fr, inf, err
-}
-
-// GetFederationResolverByIPAddress retrieves the Federation Resolver that uses the IP address or
-// CIDR-notation subnet 'ip'.
-func (to *Session) GetFederationResolverByIPAddress(ip string) (tc.FederationResolver, ReqInf, error) {
- var fr tc.FederationResolver
- frs, inf, err := to.getFederationResolvers(nil, &ip, nil)
- if len(frs) > 0 {
- fr = frs[0]
- }
- return fr, inf, err
-}
-
-// GetFederationResolversByType gets all Federation Resolvers that are of the Type named 't'.
-func (to *Session) GetFederationResolversByType(t string) ([]tc.FederationResolver, ReqInf, error) {
- return to.getFederationResolvers(nil, nil, &t)
-}
-
-// CreateFederationResolver creates the Federation Resolver 'fr'.
-func (to *Session) CreateFederationResolver(fr tc.FederationResolver) (tc.Alerts, ReqInf, error) {
- var reqInf = ReqInf{CacheHitStatus: CacheHitStatusMiss}
- var alerts tc.Alerts
-
- req, err := json.Marshal(fr)
- if err != nil {
- return alerts, reqInf, err
- }
-
- var resp *http.Response
- resp, reqInf.RemoteAddr, err = to.request(http.MethodPost, apiBase+"/federation_resolvers", req)
- if err != nil {
- return alerts, reqInf, err
- }
- defer resp.Body.Close()
-
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
-
-// DeleteFederationResolver deletes the Federation Resolver identified by 'id'.
-func (to *Session) DeleteFederationResolver(id uint) (tc.Alerts, ReqInf, error) {
- var reqInf = ReqInf{CacheHitStatus: CacheHitStatusMiss}
- var alerts tc.Alerts
-
- var path = fmt.Sprintf("%s/federation_resolvers/%d", apiBase, id)
- var resp *http.Response
- var err error
- resp, reqInf.RemoteAddr, err = to.request(http.MethodDelete, path, nil)
- if err != nil {
- return alerts, reqInf, err
- }
- defer resp.Body.Close()
-
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/hardware.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/hardware.go
index 659c002..a353326 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/hardware.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/hardware.go
@@ -29,8 +29,6 @@ func (to *Session) Hardware(limit int) ([]tc.Hardware, error) {
return h, err
}
-// GetHardware fetches an array of Hardware up to as many as 'limit' specifies.
-// Deprecated: Hardware is deprecated and will not be exposed through the API in the future.
func (to *Session) GetHardware(limit int) ([]tc.Hardware, ReqInf, error) {
url := "/api/1.2/hwinfo.json"
if limit > 0 {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/iso.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/iso.go
deleted file mode 100644
index 52498c0..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/iso.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package client
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import (
- "encoding/json"
- "net/http"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-const (
- API_v11_OSVERSIONS = "/api/1.1/osversions"
-)
-
-// GetOSVersions GET all available Operating System (OS) versions for ISO generation,
-// as well as the name of the directory where the "kickstarter" files are found.
-// Structure of returned map:
-// key: Name of OS
-// value: Directory where the ISO source can be found
-func (to *Session) GetOSVersions() (map[string]string, ReqInf, error) {
- resp, remoteAddr, err := to.request(http.MethodGet, API_v11_OSVERSIONS, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- var data struct {
- Versions tc.OSVersionsResponse `json:"response"`
- }
- if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
- return nil, reqInf, err
- }
-
- return data.Versions, reqInf, nil
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/job.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/job.go
deleted file mode 100644
index 19b83e4..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/job.go
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "errors"
- "fmt"
- "net"
- "net/http"
- "strconv"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-// CreateJob creates a Job.
-//
-// Deprecated: Use CreateInvalidationJob instead
-func (to *Session) CreateJob(job tc.JobRequest) (tc.Alerts, ReqInf, error) {
- remoteAddr := (net.Addr)(nil)
- reqBody, err := json.Marshal(job)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- resp, remoteAddr, err := to.request(http.MethodPost, apiBase+`/user/current/jobs`, reqBody)
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- alerts := tc.Alerts{}
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
-
-// Creates a new Content Invalidation Job
-func (to *Session) CreateInvalidationJob(job tc.InvalidationJobInput) (tc.Alerts, ReqInf, error) {
- remoteAddr := (net.Addr)(nil)
- reqBody, err := json.Marshal(job)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- resp, remoteAddr, err := to.request(http.MethodPost, apiBase+`/jobs`, reqBody)
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- var alerts tc.Alerts
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
-
-// GetJobs returns a list of Jobs.
-// If deliveryServiceID or userID are not nil, only jobs for that delivery service or belonging to
-// that user are returned. Both deliveryServiceID and userID may be nil.
-//
-// Deprecated, use GetInvalidationJobs instead
-func (to *Session) GetJobs(deliveryServiceID *int, userID *int) ([]tc.Job, ReqInf, error) {
- path := apiBase + "/jobs"
- if deliveryServiceID != nil || userID != nil {
- path += "?"
- if deliveryServiceID != nil {
- path += "dsId=" + strconv.Itoa(*deliveryServiceID)
- if userID != nil {
- path += "&"
- }
- }
- if userID != nil {
- path += "userId=" + strconv.Itoa(*userID)
- }
- }
-
- resp, remoteAddr, err := to.request(http.MethodGet, path, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- data := struct {
- Response []tc.Job `json:"response"`
- }{}
- err = json.NewDecoder(resp.Body).Decode(&data)
- return data.Response, reqInf, err
-}
-
-// Returns a list of Content Invalidation Jobs visible to your Tenant, filtered according to
-// ds and user
-//
-// Either or both of ds and user may be nil, but when they are not they cause filtering of the
-// returned jobs by Delivery Service and Traffic Ops user, respectively.
-//
-// ds may be a uint, int, or float64 indicating the integral, unique identifier of the desired
-// Delivery Service (in the case of a float64 the fractional part is dropped, e.g. 3.45 -> 3), or
-// it may be a string, in which case it should be the xml_id of the desired Delivery Service, or it
-// may be an actual tc.DeliveryService or tc.DeliveryServiceNullable structure.
-//
-// Likewise, user may be a uint, int or float64 indicating the integral, unique identifier of the
-// desired user (in the case of a float64 the fractional part is dropped, e.g. 3.45 -> 3), or it may
-// be a string, in which case it should be the username of the desired user, or it may be an actual
-// tc.User or tc.UserCurrent structure.
-func (to *Session) GetInvalidationJobs(ds *interface{}, user *interface{}) ([]tc.InvalidationJob, ReqInf, error) {
- path := apiBase + "/jobs"
- if ds != nil || user != nil {
- path += "?"
-
- if ds != nil {
- d := *ds
- switch t := d.(type) {
- case uint:
- path += "dsId=" + strconv.FormatUint(uint64(d.(uint)), 10)
- case float64:
- path += "dsId=" + strconv.FormatInt(int64(d.(float64)), 10)
- case int:
- path += "dsId=" + strconv.FormatInt(int64(d.(int)), 10)
- case string:
- path += "deliveryService=" + d.(string)
- case tc.DeliveryService:
- path += "deliveryService=" + d.(tc.DeliveryService).XMLID
- case tc.DeliveryServiceNullable:
- if d.(tc.DeliveryServiceNullable).XMLID != nil {
- path += "deliveryService=" + *d.(tc.DeliveryServiceNullable).XMLID
- } else if d.(tc.DeliveryServiceNullable).ID != nil {
- path += "dsId=" + strconv.FormatInt(int64(*d.(tc.DeliveryServiceNullable).ID), 10)
- } else {
- return nil, ReqInf{}, errors.New("No non-nil identifier on passed Delivery Service!")
- }
- default:
- return nil, ReqInf{}, fmt.Errorf("Invalid type for argument 'ds': %T*", t)
- }
-
- if user != nil {
- path += "&"
- }
- }
-
- if user != nil {
- u := *user
- switch t := u.(type) {
- case uint:
- path += "userId=" + strconv.FormatUint(uint64(u.(uint)), 10)
- case float64:
- path += "userId=" + strconv.FormatInt(int64(u.(float64)), 10)
- case int:
- path += "userId=" + strconv.FormatInt(int64(u.(int64)), 10)
- case string:
- path += "createdBy=" + u.(string)
- case tc.User:
- if u.(tc.User).Username != nil {
- path += "createdBy=" + *u.(tc.User).Username
- } else if u.(tc.User).ID != nil {
- path += "userId=" + strconv.FormatInt(int64(*u.(tc.User).ID), 10)
- } else {
- return nil, ReqInf{}, errors.New("No non-nil identifier on passed User!")
- }
- case tc.UserCurrent:
- if u.(tc.UserCurrent).UserName != nil {
- path += "createdBy=" + *u.(tc.UserCurrent).UserName
- } else if u.(tc.UserCurrent).ID != nil {
- path += "userId=" + strconv.FormatInt(int64(*u.(tc.UserCurrent).ID), 10)
- } else {
- return nil, ReqInf{}, errors.New("No non-nil identifier on passed UserCurrent!")
- }
- default:
- return nil, ReqInf{}, fmt.Errorf("Invalid type for argument 'user': %T*", t)
- }
- }
- }
-
- resp, remoteAddr, err := to.request(http.MethodGet, path, nil)
- reqInf := ReqInf{CacheHitStatusMiss, remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- data := struct {
- Response []tc.InvalidationJob `json:"response"`
- }{}
- err = json.NewDecoder(resp.Body).Decode(&data)
- return data.Response, reqInf, err
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/log.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/log.go
deleted file mode 100644
index f895510..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/log.go
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "fmt"
- "net/http"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-const (
- API_v14_Logs = "/api/1.4/logs"
-)
-
-// GetLogsByQueryParams gets a list of logs filtered by query params.
-func (to *Session) GetLogsByQueryParams(queryParams string) ([]tc.Log, ReqInf, error) {
- URI := API_v14_Logs + queryParams
- resp, remoteAddr, err := to.request(http.MethodGet, URI, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- var data tc.LogsResponse
- if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
- return nil, reqInf, err
- }
-
- return data.Response, reqInf, nil
-}
-
-// GetLogs gets a list of logs.
-func (to *Session) GetLogs() ([]tc.Log, ReqInf, error) {
- return to.GetLogsByQueryParams("")
-}
-
-// GetLogsByLimit gets a list of logs limited to a certain number of logs.
-func (to *Session) GetLogsByLimit(limit int) ([]tc.Log, ReqInf, error) {
- return to.GetLogsByQueryParams(fmt.Sprintf("?limit=%d", limit))
-}
-
-// GetLogsByDays gets a list of logs limited to a certain number of days.
-func (to *Session) GetLogsByDays(days int) ([]tc.Log, ReqInf, error) {
- return to.GetLogsByQueryParams(fmt.Sprintf("?days=%d", days))
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/origin.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/origin.go
index 222b249..d76ab5c 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/origin.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/origin.go
@@ -17,11 +17,9 @@ package client
import (
"encoding/json"
- "errors"
"fmt"
"net"
"net/http"
- "net/url"
"github.com/apache/trafficcontrol/lib/go-tc"
)
@@ -30,73 +28,12 @@ const (
API_v13_Origins = "/api/1.3/origins"
)
-func originIDs(to *Session, origin *tc.Origin) error {
- if origin.CachegroupID == nil && origin.Cachegroup != nil {
- p, _, err := to.GetCacheGroupByName(*origin.Cachegroup)
- if err != nil {
- return err
- }
- if len(p) == 0 {
- return errors.New("no cachegroup named " + *origin.Cachegroup)
- }
- origin.CachegroupID = &p[0].ID
- }
-
- if origin.DeliveryServiceID == nil && origin.DeliveryService != nil {
- dses, _, err := to.GetDeliveryServiceByXMLID(*origin.DeliveryService)
- if err != nil {
- return err
- }
- if len(dses) == 0 {
- return errors.New("no deliveryservice with name " + *origin.DeliveryService)
- }
- origin.DeliveryServiceID = &dses[0].ID
- }
-
- if origin.ProfileID == nil && origin.Profile != nil {
- profiles, _, err := to.GetProfileByName(*origin.Profile)
- if err != nil {
- return err
- }
- if len(profiles) == 0 {
- return errors.New("no profile with name " + *origin.Profile)
- }
- origin.ProfileID = &profiles[0].ID
- }
-
- if origin.CoordinateID == nil && origin.Coordinate != nil {
- coordinates, _, err := to.GetCoordinateByName(*origin.Coordinate)
- if err != nil {
- return err
- }
- if len(coordinates) == 0 {
- return errors.New("no coordinate with name " + *origin.Coordinate)
- }
- origin.CoordinateID = &coordinates[0].ID
- }
-
- if origin.TenantID == nil && origin.Tenant != nil {
- tenant, _, err := to.TenantByName(*origin.Tenant)
- if err != nil {
- return err
- }
- origin.TenantID = &tenant.ID
- }
-
- return nil
-}
-
// Create an Origin
func (to *Session) CreateOrigin(origin tc.Origin) (*tc.OriginDetailResponse, ReqInf, error) {
- var remoteAddr net.Addr
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
-
- err := originIDs(to, &origin)
- if err != nil {
- return nil, reqInf, err
- }
+ var remoteAddr net.Addr
reqBody, err := json.Marshal(origin)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return nil, reqInf, err
}
@@ -114,15 +51,10 @@ func (to *Session) CreateOrigin(origin tc.Origin) (*tc.OriginDetailResponse, Req
// Update an Origin by ID
func (to *Session) UpdateOriginByID(id int, origin tc.Origin) (*tc.OriginDetailResponse, ReqInf, error) {
- var remoteAddr net.Addr
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
-
- err := originIDs(to, &origin)
- if err != nil {
- return nil, reqInf, err
- }
+ var remoteAddr net.Addr
reqBody, err := json.Marshal(origin)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return nil, reqInf, err
}
@@ -169,7 +101,7 @@ func (to *Session) GetOriginByID(id int) ([]tc.Origin, ReqInf, error) {
// GET an Origin by the Origin name
func (to *Session) GetOriginByName(name string) ([]tc.Origin, ReqInf, error) {
- return to.GetOriginsByQueryParams(fmt.Sprintf("?name=%s", url.QueryEscape(name)))
+ return to.GetOriginsByQueryParams(fmt.Sprintf("?name=%s", name))
}
// GET a list of Origins by Delivery Service ID
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/parameter.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/parameter.go
index e8a5eca..f5706cd 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/parameter.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/parameter.go
@@ -178,22 +178,6 @@ func (to *Session) GetParameterByNameAndConfigFile(name string, configFile strin
return data.Response, reqInf, nil
}
-// GET a Parameter by the Parameter Name and ConfigFile and Value
-// TODO: API should support all 3, but does not support filter by value
-// currently. Until then, loop thru hits until you find one with that value
-func (to *Session) GetParameterByNameAndConfigFileAndValue(name, configFile, value string) ([]tc.Parameter, ReqInf, error) {
- params, reqInf, err := to.GetParameterByNameAndConfigFile(name, configFile)
- if err != nil {
- return params, reqInf, err
- }
- for _, p := range params {
- if p.Value == value {
- return []tc.Parameter{p}, reqInf, err
- }
- }
- return nil, reqInf, err
-}
-
// DELETE a Parameter by ID
func (to *Session) DeleteParameterByID(id int) (tc.Alerts, ReqInf, error) {
URI := fmt.Sprintf("%s/%d", API_v13_Parameters, id)
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/phys_location.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/phys_location.go
index 3ce2261..b1f3f11 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/phys_location.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/phys_location.go
@@ -17,11 +17,9 @@ package client
import (
"encoding/json"
- "errors"
"fmt"
"net"
"net/http"
- "net/url"
"github.com/apache/trafficcontrol/lib/go-tc"
)
@@ -32,16 +30,7 @@ const (
// Create a PhysLocation
func (to *Session) CreatePhysLocation(pl tc.PhysLocation) (tc.Alerts, ReqInf, error) {
- if pl.RegionID == 0 && pl.RegionName != "" {
- regions, _, err := to.GetRegionByName(pl.RegionName)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, err
- }
- if len(regions) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no region with name " + pl.RegionName)
- }
- pl.RegionID = regions[0].ID
- }
+
var remoteAddr net.Addr
reqBody, err := json.Marshal(pl)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
@@ -112,7 +101,7 @@ func (to *Session) GetPhysLocationByID(id int) ([]tc.PhysLocation, ReqInf, error
// GET a PhysLocation by the PhysLocation name
func (to *Session) GetPhysLocationByName(name string) ([]tc.PhysLocation, ReqInf, error) {
- url := fmt.Sprintf("%s?name=%s", API_v13_PhysLocations, url.QueryEscape(name))
+ url := fmt.Sprintf("%s?name=%s", API_v13_PhysLocations, name)
resp, remoteAddr, err := to.request(http.MethodGet, url, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/profile.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/profile.go
index b2bfd1d..5d83798 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/profile.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/profile.go
@@ -18,6 +18,7 @@ package client
import (
"encoding/json"
"fmt"
+ "net"
"net/http"
"net/url"
"strconv"
@@ -26,73 +27,46 @@ import (
)
const (
- v13Profiles = "/api/1.3/profiles"
- v14Profiles = "/api/1.4/profiles"
+ API_v13_Profiles = "/api/1.3/profiles"
)
-// CreateProfile creates a Profile
+// Create a Profile
func (to *Session) CreateProfile(pl tc.Profile) (tc.Alerts, ReqInf, error) {
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss}
-
- if pl.CDNID == 0 && pl.CDNName != "" {
- cdns, _, err := to.GetCDNByName(pl.CDNName)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, err
- }
- if len(cdns) == 0 {
- return tc.Alerts{
- Alerts: []tc.Alert{
- tc.Alert{
- Text: fmt.Sprintf("no CDN with name %s", pl.CDNName),
- Level: "error",
- },
- },
- },
- ReqInf{},
- fmt.Errorf("no CDN with name %s", pl.CDNName)
- }
- pl.CDNID = cdns[0].ID
- }
+ var remoteAddr net.Addr
reqBody, err := json.Marshal(pl)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return tc.Alerts{}, reqInf, err
}
-
- resp, remoteAddr, err := to.request(http.MethodPost, v13Profiles, reqBody)
- reqInf.RemoteAddr = remoteAddr
+ resp, remoteAddr, err := to.request(http.MethodPost, API_v13_Profiles, reqBody)
if err != nil {
return tc.Alerts{}, reqInf, err
}
defer resp.Body.Close()
-
var alerts tc.Alerts
err = json.NewDecoder(resp.Body).Decode(&alerts)
-
- return alerts, reqInf, err
+ return alerts, reqInf, nil
}
-// UpdateProfileByID updates a Profile by ID
+// Update a Profile by ID
func (to *Session) UpdateProfileByID(id int, pl tc.Profile) (tc.Alerts, ReqInf, error) {
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss}
+ var remoteAddr net.Addr
reqBody, err := json.Marshal(pl)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return tc.Alerts{}, reqInf, err
}
-
- route := fmt.Sprintf("%s/%d", v13Profiles, id)
+ route := fmt.Sprintf("%s/%d", API_v13_Profiles, id)
resp, remoteAddr, err := to.request(http.MethodPut, route, reqBody)
- reqInf.RemoteAddr = remoteAddr
if err != nil {
return tc.Alerts{}, reqInf, err
}
defer resp.Body.Close()
-
var alerts tc.Alerts
err = json.NewDecoder(resp.Body).Decode(&alerts)
-
- return alerts, reqInf, err
+ return alerts, reqInf, nil
}
// Profiles gets an array of Profiles
@@ -102,12 +76,10 @@ func (to *Session) Profiles() ([]tc.Profile, error) {
return ps, err
}
-// GetProfiles returns a list of Profiles
+// Returns a list of Profiles
func (to *Session) GetProfiles() ([]tc.Profile, ReqInf, error) {
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss}
-
- resp, remoteAddr, err := to.request(http.MethodGet, v13Profiles, nil)
- reqInf.RemoteAddr = remoteAddr
+ resp, remoteAddr, err := to.request(http.MethodGet, API_v13_Profiles, nil)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return nil, reqInf, err
}
@@ -115,13 +87,12 @@ func (to *Session) GetProfiles() ([]tc.Profile, ReqInf, error) {
var data tc.ProfilesResponse
err = json.NewDecoder(resp.Body).Decode(&data)
-
- return data.Response, reqInf, err
+ return data.Response, reqInf, nil
}
-// GetProfileByID GET a Profile by the Profile ID
+// GET a Profile by the Profile ID
func (to *Session) GetProfileByID(id int) ([]tc.Profile, ReqInf, error) {
- route := fmt.Sprintf("%s/%d", v13Profiles, id)
+ route := fmt.Sprintf("%s/%d", API_v13_Profiles, id)
resp, remoteAddr, err := to.request(http.MethodGet, route, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
@@ -130,14 +101,16 @@ func (to *Session) GetProfileByID(id int) ([]tc.Profile, ReqInf, error) {
defer resp.Body.Close()
var data tc.ProfilesResponse
- err = json.NewDecoder(resp.Body).Decode(&data)
+ if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
+ return nil, reqInf, err
+ }
- return data.Response, reqInf, err
+ return data.Response, reqInf, nil
}
-// GetProfileByName GET a Profile by the Profile name
+// GET a Profile by the Profile name
func (to *Session) GetProfileByName(name string) ([]tc.Profile, ReqInf, error) {
- URI := fmt.Sprintf("%s?name=%s", v13Profiles, url.QueryEscape(name))
+ URI := API_v13_Profiles + "?name=" + url.QueryEscape(name)
resp, remoteAddr, err := to.request(http.MethodGet, URI, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
@@ -146,14 +119,16 @@ func (to *Session) GetProfileByName(name string) ([]tc.Profile, ReqInf, error) {
defer resp.Body.Close()
var data tc.ProfilesResponse
- err = json.NewDecoder(resp.Body).Decode(&data)
+ if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
+ return nil, reqInf, err
+ }
- return data.Response, reqInf, err
+ return data.Response, reqInf, nil
}
-// GetProfileByParameter GETs a Profile by the Profile "param"
+// GET a Profile by the Profile "param"
func (to *Session) GetProfileByParameter(param string) ([]tc.Profile, ReqInf, error) {
- URI := fmt.Sprintf("%s?param=%s", v13Profiles, url.QueryEscape(param))
+ URI := API_v13_Profiles + "?param=" + url.QueryEscape(param)
resp, remoteAddr, err := to.request(http.MethodGet, URI, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
@@ -162,14 +137,16 @@ func (to *Session) GetProfileByParameter(param string) ([]tc.Profile, ReqInf, er
defer resp.Body.Close()
var data tc.ProfilesResponse
- err = json.NewDecoder(resp.Body).Decode(&data)
+ if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
+ return nil, reqInf, err
+ }
- return data.Response, reqInf, err
+ return data.Response, reqInf, nil
}
-// GetProfileByCDNID GETs a Profile by the Profile cdn id
+// GET a Profile by the Profile cdn id
func (to *Session) GetProfileByCDNID(cdnID int) ([]tc.Profile, ReqInf, error) {
- URI := fmt.Sprintf("%s?cdn=%s", v13Profiles, strconv.Itoa(cdnID))
+ URI := API_v13_Profiles + "?cdn=" + strconv.Itoa(cdnID)
resp, remoteAddr, err := to.request(http.MethodGet, URI, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
@@ -178,87 +155,23 @@ func (to *Session) GetProfileByCDNID(cdnID int) ([]tc.Profile, ReqInf, error) {
defer resp.Body.Close()
var data tc.ProfilesResponse
- err = json.NewDecoder(resp.Body).Decode(&data)
+ if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
+ return nil, reqInf, err
+ }
- return data.Response, reqInf, err
+ return data.Response, reqInf, nil
}
-// DeleteProfileByID DELETEs a Profile by ID
+// DELETE a Profile by ID
func (to *Session) DeleteProfileByID(id int) (tc.Alerts, ReqInf, error) {
- URI := fmt.Sprintf("%s/%d", v13Profiles, id)
+ URI := fmt.Sprintf("%s/%d", API_v13_Profiles, id)
resp, remoteAddr, err := to.request(http.MethodDelete, URI, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return tc.Alerts{}, reqInf, err
}
defer resp.Body.Close()
-
var alerts tc.Alerts
err = json.NewDecoder(resp.Body).Decode(&alerts)
-
- return alerts, reqInf, err
-}
-
-// ExportProfile Returns an exported Profile
-func (to *Session) ExportProfile(id int) (*tc.ProfileExportResponse, ReqInf, error) {
- route := fmt.Sprintf("%s/%d/export", v13Profiles, id)
- resp, remoteAddr, err := to.request(http.MethodGet, route, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- var data tc.ProfileExportResponse
- err = json.NewDecoder(resp.Body).Decode(&data)
-
- return &data, reqInf, err
-}
-
-// ImportProfile imports an exported Profile
-func (to *Session) ImportProfile(importRequest *tc.ProfileImportRequest) (*tc.ProfileImportResponse, ReqInf, error) {
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss}
-
- route := fmt.Sprintf("%s/import", v13Profiles)
- reqBody, err := json.Marshal(importRequest)
- if err != nil {
- return nil, reqInf, err
- }
-
- resp, remoteAddr, err := to.request(http.MethodPost, route, reqBody)
- reqInf.RemoteAddr = remoteAddr
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- var data tc.ProfileImportResponse
- err = json.NewDecoder(resp.Body).Decode(&data)
-
- return &data, reqInf, err
-}
-
-// CopyProfile creates a new profile from an existing profile.
-func (to *Session) CopyProfile(p tc.ProfileCopy) (tc.ProfileCopyResponse, ReqInf, error) {
- var (
- path = fmt.Sprintf("%s/name/%s/copy/%s", v14Profiles, p.Name, p.ExistingName)
- reqInf = ReqInf{CacheHitStatus: CacheHitStatusMiss}
- resp tc.ProfileCopyResponse
- )
-
- reqBody, err := json.Marshal(p)
- if err != nil {
- return tc.ProfileCopyResponse{}, ReqInf{}, err
- }
-
- httpResp, remoteAddr, err := to.request(http.MethodPost, path, reqBody)
- reqInf.RemoteAddr = remoteAddr
- if err != nil {
- return tc.ProfileCopyResponse{}, reqInf, err
- }
- defer httpResp.Body.Close()
-
- err = json.NewDecoder(httpResp.Body).Decode(&resp)
-
- return resp, reqInf, err
+ return alerts, reqInf, nil
}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/profile_parameter.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/profile_parameter.go
index 667cfd3..69cda78 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/profile_parameter.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/profile_parameter.go
@@ -83,7 +83,7 @@ func (to *Session) GetProfileParameterByQueryParams(queryParams string) ([]tc.Pr
// DELETE a Parameter by Parameter
func (to *Session) DeleteParameterByProfileParameter(profile int, parameter int) (tc.Alerts, ReqInf, error) {
- URI := fmt.Sprintf("%s/%d/%d", API_v13_Profile_Parameters, profile, parameter)
+ URI := fmt.Sprintf("%s/profile/%d/parameter/%d", API_v13_Profile_Parameters, profile, parameter)
resp, remoteAddr, err := to.request(http.MethodDelete, URI, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/region.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/region.go
index 5d9146e..74d04a3 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/region.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/region.go
@@ -17,11 +17,9 @@ package client
import (
"encoding/json"
- "errors"
"fmt"
"net"
"net/http"
- "net/url"
"github.com/apache/trafficcontrol/lib/go-tc"
)
@@ -32,16 +30,6 @@ const (
// Create a Region
func (to *Session) CreateRegion(region tc.Region) (tc.Alerts, ReqInf, error) {
- if region.Division == 0 && region.DivisionName != "" {
- divisions, _, err := to.GetDivisionByName(region.DivisionName)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, err
- }
- if len(divisions) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no division with name " + region.DivisionName)
- }
- region.Division = divisions[0].ID
- }
var remoteAddr net.Addr
reqBody, err := json.Marshal(region)
@@ -113,7 +101,7 @@ func (to *Session) GetRegionByID(id int) ([]tc.Region, ReqInf, error) {
// GET a Region by the Region name
func (to *Session) GetRegionByName(name string) ([]tc.Region, ReqInf, error) {
- url := fmt.Sprintf("%s?name=%s", API_v13_REGIONS, url.QueryEscape(name))
+ url := fmt.Sprintf("%s?name=%s", API_v13_REGIONS, name)
resp, remoteAddr, err := to.request(http.MethodGet, url, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
@@ -145,7 +133,7 @@ func (to *Session) DeleteRegionByID(id int) (tc.Alerts, ReqInf, error) {
// GetRegionByNamePath gets a region by name, using the /api/version/region/name path. This gets the same data as GetRegionByName, but uses a different API path to get the same data, and returns a slightly different format.
func (to *Session) GetRegionByNamePath(name string) ([]tc.RegionName, ReqInf, error) {
- url := apiBase + `/regions/name/` + url.QueryEscape(name)
+ url := apiBase + `/regions/name/` + name
reqResp, remoteAddr, err := to.request(http.MethodGet, url, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/role.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/role.go
index 714add5..d403cfc 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/role.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/role.go
@@ -20,13 +20,12 @@ import (
"fmt"
"net"
"net/http"
- "net/url"
"github.com/apache/trafficcontrol/lib/go-tc"
)
const (
- API_v14_ROLES = "/api/1.4/roles"
+ API_v13_ROLES = "/api/1.3/roles"
)
// Create a Role
@@ -38,7 +37,7 @@ func (to *Session) CreateRole(region tc.Role) (tc.Alerts, ReqInf, int, error) {
if err != nil {
return tc.Alerts{}, reqInf, 0, err
}
- resp, remoteAddr, errClient := to.RawRequest(http.MethodPost, API_v14_ROLES, reqBody)
+ resp, remoteAddr, errClient := to.rawRequest(http.MethodPost, API_v13_ROLES, reqBody)
if resp != nil {
defer resp.Body.Close()
var alerts tc.Alerts
@@ -59,8 +58,8 @@ func (to *Session) UpdateRoleByID(id int, region tc.Role) (tc.Alerts, ReqInf, in
if err != nil {
return tc.Alerts{}, reqInf, 0, err
}
- route := fmt.Sprintf("%s/?id=%d", API_v14_ROLES, id)
- resp, remoteAddr, errClient := to.RawRequest(http.MethodPut, route, reqBody)
+ route := fmt.Sprintf("%s/?id=%d", API_v13_ROLES, id)
+ resp, remoteAddr, errClient := to.rawRequest(http.MethodPut, route, reqBody)
if resp != nil {
defer resp.Body.Close()
var alerts tc.Alerts
@@ -74,7 +73,7 @@ func (to *Session) UpdateRoleByID(id int, region tc.Role) (tc.Alerts, ReqInf, in
// Returns a list of roles
func (to *Session) GetRoles() ([]tc.Role, ReqInf, int, error) {
- resp, remoteAddr, errClient := to.RawRequest(http.MethodGet, API_v14_ROLES, nil)
+ resp, remoteAddr, errClient := to.rawRequest(http.MethodGet, API_v13_ROLES, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if resp != nil {
defer resp.Body.Close()
@@ -90,8 +89,8 @@ func (to *Session) GetRoles() ([]tc.Role, ReqInf, int, error) {
// GET a Role by the Role id
func (to *Session) GetRoleByID(id int) ([]tc.Role, ReqInf, int, error) {
- route := fmt.Sprintf("%s/?id=%d", API_v14_ROLES, id)
- resp, remoteAddr, errClient := to.RawRequest(http.MethodGet, route, nil)
+ route := fmt.Sprintf("%s/?id=%d", API_v13_ROLES, id)
+ resp, remoteAddr, errClient := to.rawRequest(http.MethodGet, route, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if resp != nil {
defer resp.Body.Close()
@@ -107,28 +106,8 @@ func (to *Session) GetRoleByID(id int) ([]tc.Role, ReqInf, int, error) {
// GET a Role by the Role name
func (to *Session) GetRoleByName(name string) ([]tc.Role, ReqInf, int, error) {
- route := fmt.Sprintf("%s?name=%s", API_v14_ROLES, url.QueryEscape(name))
- resp, remoteAddr, errClient := to.RawRequest(http.MethodGet, route, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if resp != nil {
- defer resp.Body.Close()
-
- var data tc.RolesResponse
- if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
- return data.Response, reqInf, resp.StatusCode, err
- }
- return data.Response, reqInf, resp.StatusCode, errClient
- }
- return []tc.Role{}, reqInf, 0, errClient
-}
-
-// GetRoleByQueryParams gets a Role by the Role query parameters
-func (to *Session) GetRoleByQueryParams(queryParams map[string]string) ([]tc.Role, ReqInf, int, error) {
- route := fmt.Sprintf("%s?", API_v14_ROLES)
- for param, val := range queryParams {
- route += fmt.Sprintf("%s=%s&", url.QueryEscape(param), url.QueryEscape(val))
- }
- resp, remoteAddr, errClient := to.RawRequest(http.MethodGet, route, nil)
+ url := fmt.Sprintf("%s?name=%s", API_v13_ROLES, name)
+ resp, remoteAddr, errClient := to.rawRequest(http.MethodGet, url, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if resp != nil {
defer resp.Body.Close()
@@ -144,8 +123,8 @@ func (to *Session) GetRoleByQueryParams(queryParams map[string]string) ([]tc.Rol
// DELETE a Role by ID
func (to *Session) DeleteRoleByID(id int) (tc.Alerts, ReqInf, int, error) {
- route := fmt.Sprintf("%s/?id=%d", API_v14_ROLES, id)
- resp, remoteAddr, errClient := to.RawRequest(http.MethodDelete, route, nil)
+ route := fmt.Sprintf("%s/?id=%d", API_v13_ROLES, id)
+ resp, remoteAddr, errClient := to.rawRequest(http.MethodDelete, route, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if resp != nil {
defer resp.Body.Close()
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server.go
index 8242de4..2e0b3ac 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server.go
@@ -28,82 +28,18 @@ import (
)
const (
- API_v13_Servers = "/api/1.3/servers"
- API_v14_Server_Assign_DeliveryServices = "/api/1.4/servers/%d/deliveryservices?replace=%t"
- API_v14_Server_DeliveryServices = "/api/1.4/servers/%d/deliveryservices"
+ API_v13_Servers = "/api/1.3/servers"
)
// Create a Server
func (to *Session) CreateServer(server tc.Server) (tc.Alerts, ReqInf, error) {
var remoteAddr net.Addr
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
-
- if server.CachegroupID == 0 && server.Cachegroup != "" {
- cg, _, err := to.GetCacheGroupByName(server.Cachegroup)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, errors.New("no cachegroup named " + server.Cachegroup + ":" + err.Error())
- }
- if len(cg) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no cachegroup named " + server.Cachegroup)
- }
- server.CachegroupID = cg[0].ID
- }
- if server.CDNID == 0 && server.CDNName != "" {
- c, _, err := to.GetCDNByName(server.CDNName)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, errors.New("no CDN named " + server.CDNName + ":" + err.Error())
- }
- if len(c) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no CDN named " + server.CDNName)
- }
- server.CDNID = c[0].ID
- }
- if server.PhysLocationID == 0 && server.PhysLocation != "" {
- ph, _, err := to.GetPhysLocationByName(server.PhysLocation)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, errors.New("no physlocation named " + server.PhysLocation + ":" + err.Error())
- }
- if len(ph) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no physlocation named " + server.PhysLocation)
- }
- server.PhysLocationID = ph[0].ID
- }
- if server.ProfileID == 0 && server.Profile != "" {
- pr, _, err := to.GetProfileByName(server.Profile)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, errors.New("no profile named " + server.Profile + ":" + err.Error())
- }
- if len(pr) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no profile named " + server.Profile)
- }
- server.ProfileID = pr[0].ID
- }
- if server.StatusID == 0 && server.Status != "" {
- st, _, err := to.GetStatusByName(server.Status)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, errors.New("no status named " + server.Status + ":" + err.Error())
- }
- if len(st) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no status named " + server.Status)
- }
- server.StatusID = st[0].ID
- }
- if server.TypeID == 0 && server.Type != "" {
- ty, _, err := to.GetTypeByName(server.Type)
- if err != nil {
- return tc.Alerts{}, ReqInf{}, errors.New("no type named " + server.Type + ":" + err.Error())
- }
- if len(ty) == 0 {
- return tc.Alerts{}, ReqInf{}, errors.New("no type named " + server.Type)
- }
- server.TypeID = ty[0].ID
- }
reqBody, err := json.Marshal(server)
+ reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return tc.Alerts{}, reqInf, err
}
-
resp, remoteAddr, err := to.request(http.MethodPost, API_v13_Servers, reqBody)
if err != nil {
return tc.Alerts{}, reqInf, err
@@ -291,52 +227,13 @@ func (to *Session) GetServersShortNameSearch(shortname string) ([]string, ReqInf
return serverlst, reqInf, nil
}
-// AssignDeliveryServiceIDsToServerID assigns a set of Delivery Services to a single server, optionally
-// replacing any and all existing assignments. 'server' should be the requested server's ID, 'dsIDs'
-// should be a slice of the requested Delivery Services' IDs. If 'replace' is 'true', existing
-// assignments to the server will be replaced.
-func (to *Session) AssignDeliveryServiceIDsToServerID(server int, dsIDs []int, replace bool) (tc.Alerts, ReqInf, error) {
- // datatypes here match the library tc.Server's and tc.DeliveryService's ID fields
-
- var remoteAddr net.Addr
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
-
- endpoint := fmt.Sprintf(API_v14_Server_Assign_DeliveryServices, server, replace)
-
- reqBody, err := json.Marshal(dsIDs)
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
-
- resp, remoteAddr, err := to.request(http.MethodPost, endpoint, reqBody)
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- reqInf.RemoteAddr = remoteAddr
- var alerts tc.Alerts
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
-
-func (to *Session) GetServerIDDeliveryServices(server int) ([]tc.DeliveryServiceNullable, ReqInf, error) {
- endpoint := fmt.Sprintf(API_v14_Server_DeliveryServices, server)
-
- resp, remoteAddr, err := to.request(http.MethodGet, endpoint, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- var data tc.DeliveryServicesNullableResponse
- err = json.NewDecoder(resp.Body).Decode(&data)
- return data.Response, reqInf, err
-}
+const (
+ API_SERVERS = apiBase + "/servers"
+)
// GetServerUpdateStatus GETs the Server Update Status by the Server hostname.
func (to *Session) GetServerUpdateStatus(hostName string) (tc.ServerUpdateStatus, ReqInf, error) {
- path := apiBase + "/servers" + `/` + hostName + `/update_status`
+ path := API_SERVERS + `/` + hostName + `/update_status`
resp, remoteAddr, err := to.request(http.MethodGet, path, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server_server_capabilities.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server_server_capabilities.go
deleted file mode 100644
index 474bc5f..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server_server_capabilities.go
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "fmt"
- "net"
- "net/url"
- "strconv"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-const (
- API_v14_Server_Server_Capabilities = apiBase + "/server_server_capabilities"
-)
-
-// CreateServerServerCapability assigns a Server Capability to a Server
-func (to *Session) CreateServerServerCapability(ssc tc.ServerServerCapability) (tc.Alerts, ReqInf, error) {
- var alerts tc.Alerts
- var remoteAddr net.Addr
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- reqBody, err := json.Marshal(ssc)
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- reqInf, err = post(to, API_v14_Server_Server_Capabilities, reqBody, &alerts)
- return alerts, reqInf, err
-}
-
-// DeleteServerServerCapability unassigns a Server Capability from a Server
-func (to *Session) DeleteServerServerCapability(serverID int, serverCapability string) (tc.Alerts, ReqInf, error) {
- var alerts tc.Alerts
- v := url.Values{}
- v.Add("serverId", strconv.Itoa(serverID))
- v.Add("serverCapability", serverCapability)
- qStr := v.Encode()
- queryURL := fmt.Sprintf("%s?%s", API_v14_Server_Server_Capabilities, qStr)
- reqInf, err := del(to, queryURL, &alerts)
- return alerts, reqInf, err
-}
-
-// GetServerServerCapabilities retrieves a list of Server Capabilities that are assigned to a Server
-// Callers can filter the results by server id, server host name and/or server capability via the optional parameters
-func (to *Session) GetServerServerCapabilities(serverID *int, serverHostName, serverCapability *string) ([]tc.ServerServerCapability, ReqInf, error) {
- v := url.Values{}
- if serverID != nil {
- v.Add("serverId", strconv.Itoa(*serverID))
- }
- if serverHostName != nil {
- v.Add("serverHostName", *serverHostName)
- }
- if serverCapability != nil {
- v.Add("serverCapability", *serverCapability)
- }
- queryURL := API_v14_Server_Server_Capabilities
- if qStr := v.Encode(); len(qStr) > 0 {
- queryURL = fmt.Sprintf("%s?%s", queryURL, qStr)
- }
-
- resp := struct {
- Response []tc.ServerServerCapability `json:"response"`
- }{}
- reqInf, err := get(to, queryURL, &resp)
- if err != nil {
- return nil, reqInf, err
- }
- return resp.Response, reqInf, nil
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server_update_status.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server_update_status.go
deleted file mode 100644
index 7e07f04..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/server_update_status.go
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "fmt"
- "net"
- "net/http"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-const (
- APIUpdateServerStatus = apiBase + "/servers/%d/status"
-)
-
-// UpdateServerStatus updates a server's status and returns the response.
-func (to *Session) UpdateServerStatus(serverID int, req tc.ServerPutStatus) (*tc.Alerts, ReqInf, error) {
- var remoteAddr net.Addr
- reqBody, err := json.Marshal(req)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- path := fmt.Sprintf(APIUpdateServerStatus, serverID)
- resp, remoteAddr, err := to.request(http.MethodPut, path, reqBody)
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
- alerts := tc.Alerts{}
- if err = json.NewDecoder(resp.Body).Decode(&alerts); err != nil {
- return nil, reqInf, err
- }
- return &alerts, reqInf, nil
-}
-
-var queueUpdateActions = map[bool]string{
- false: "dequeue",
- true: "queue",
-}
-
-// SetServerQueueUpdate updates a server's status and returns the response.
-func (to *Session) SetServerQueueUpdate(serverID int, queueUpdate bool) (tc.ServerQueueUpdateResponse, ReqInf, error) {
- var (
- req = tc.ServerQueueUpdateRequest{Action: queueUpdateActions[queueUpdate]}
- reqInf = ReqInf{CacheHitStatus: CacheHitStatusMiss}
- resp tc.ServerQueueUpdateResponse
- )
-
- reqBody, err := json.Marshal(req)
- if err != nil {
- return resp, reqInf, err
- }
-
- path := fmt.Sprintf("%s/servers/%d/queue_update", apiBase, serverID)
- httpResp, remoteAddr, err := to.request(http.MethodPost, path, reqBody)
- reqInf.RemoteAddr = remoteAddr
- if err != nil {
- return resp, reqInf, err
- }
- defer httpResp.Body.Close()
-
- err = json.NewDecoder(httpResp.Body).Decode(&resp)
-
- return resp, reqInf, err
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/servercapability.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/servercapability.go
deleted file mode 100644
index 8b40c50..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/servercapability.go
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "fmt"
- "net"
- "net/http"
- "net/url"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-const (
- APIServerCapabilities = apiBase + "/server_capabilities"
-)
-
-// CreateServerCapability creates a server capability and returns the response.
-func (to *Session) CreateServerCapability(sc tc.ServerCapability) (*tc.ServerCapabilityDetailResponse, ReqInf, error) {
- var remoteAddr net.Addr
- reqBody, err := json.Marshal(sc)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- resp, remoteAddr, err := to.request(http.MethodPost, APIServerCapabilities, reqBody)
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
- var scResp tc.ServerCapabilityDetailResponse
- if err = json.NewDecoder(resp.Body).Decode(&scResp); err != nil {
- return nil, reqInf, err
- }
- return &scResp, reqInf, nil
-}
-
-// GetServerCapabilities returns all the server capabilities.
-func (to *Session) GetServerCapabilities() ([]tc.ServerCapability, ReqInf, error) {
- resp, remoteAddr, err := to.request(http.MethodGet, APIServerCapabilities, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- var data tc.ServerCapabilitiesResponse
- if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
- return nil, reqInf, err
- }
-
- return data.Response, reqInf, nil
-}
-
-// GetServerCapability returns the given server capability by name.
-func (to *Session) GetServerCapability(name string) (*tc.ServerCapability, ReqInf, error) {
- reqUrl := fmt.Sprintf("%s?name=%s", APIServerCapabilities, url.QueryEscape(name))
- resp, remoteAddr, err := to.request(http.MethodGet, reqUrl, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- var data tc.ServerCapabilitiesResponse
- if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
- return nil, reqInf, err
- }
-
- if len(data.Response) == 1 {
- return &data.Response[0], reqInf, nil
- }
- return nil, reqInf, fmt.Errorf("expected one server capability in response, instead got: %+v", data.Response)
-}
-
-// DeleteServerCapability deletes the given server capability by name.
-func (to *Session) DeleteServerCapability(name string) (tc.Alerts, ReqInf, error) {
- reqUrl := fmt.Sprintf("%s?name=%s", APIServerCapabilities, url.QueryEscape(name))
- resp, remoteAddr, err := to.request(http.MethodDelete, reqUrl, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- var alerts tc.Alerts
- if err = json.NewDecoder(resp.Body).Decode(&alerts); err != nil {
- return tc.Alerts{}, reqInf, err
- }
- return alerts, reqInf, nil
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/servercheck.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/servercheck.go
deleted file mode 100644
index 327ccbe..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/servercheck.go
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "net"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-const API_V13_SERVERCHECK = "/api/1.3/servercheck"
-const API_V13_SERVERCHECK_GET = "/api/1.3/servers/checks"
-
-// InsertServerCheckStatus Will insert/update the servercheck value based on if it already exists or not
-func (to *Session) InsertServerCheckStatus(status tc.ServercheckRequestNullable) (*tc.ServercheckPostResponse, ReqInf, error) {
- uri := API_V13_SERVERCHECK
- var remoteAddr net.Addr
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- jsonReq, err := json.Marshal(status)
- if err != nil {
- return nil, reqInf, err
- }
- resp := tc.ServercheckPostResponse{}
- reqInf, err = post(to, uri, jsonReq, &resp)
- if err != nil {
- return nil, reqInf, err
- }
- return &resp, reqInf, nil
-}
-
-// GetServerChecks Gets ServerChecks Data
-func (to *Session) GetServerChecks() (*tc.ServerchecksResponse, ReqInf, error) {
- uri := API_V13_SERVERCHECK_GET
- var remoteAddr net.Addr
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- resp := tc.ServerchecksResponse{}
- reqInf, err := get(to, uri, &resp)
- if err != nil {
- return nil, reqInf, err
- }
- return &resp, reqInf, nil
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/serversstatus.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/serversstatus.go
deleted file mode 100644
index 65750b7..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/serversstatus.go
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "fmt"
- "net"
- "net/url"
-)
-
-const APIServersStatus = apiBase + "/servers/status"
-
-// GetServerStatusCounts gets the counts of each server status in Traffic Ops.
-// If typeName is non-nil, only statuses of the given server type name will be counted.
-func (to *Session) GetServerStatusCounts(typeName *string) (map[string]int, ReqInf, error) {
- var remoteAddr net.Addr
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- reqUrl := APIServersStatus
- if typeName != nil {
- reqUrl += fmt.Sprintf("?type=%s", url.QueryEscape(*typeName))
- }
- resp := struct {
- Response map[string]int `json:"response"`
- }{make(map[string]int)}
-
- reqInf, err := get(to, reqUrl, &resp)
- if err != nil {
- return nil, reqInf, err
- }
- return resp.Response, reqInf, nil
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/session.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/session.go
index ac23961..0b5dc03 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/session.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/session.go
@@ -101,20 +101,6 @@ func loginCreds(toUser string, toPasswd string) ([]byte, error) {
return js, nil
}
-// loginToken gathers token login credentials for Traffic Ops.
-func loginToken(token string) ([]byte, error) {
- form := tc.UserToken{
- Token: token,
- }
-
- j, e := json.Marshal(form)
- if e != nil {
- e := fmt.Errorf("Error creating token login json: %v", e)
- return nil, e
- }
- return j, nil
-}
-
// Deprecated: Login is deprecated, use LoginWithAgent instead. The `Login` function with its present signature will be removed in the next version and replaced with `Login(toURL string, toUser string, toPasswd string, insecure bool, userAgent string)`. The `LoginWithAgent` function will be removed the version after that.
func Login(toURL string, toUser string, toPasswd string, insecure bool) (*Session, error) {
s, _, err := LoginWithAgent(toURL, toUser, toPasswd, insecure, "traffic-ops-client", false, DefaultTimeout)
@@ -129,7 +115,7 @@ func (to *Session) login() (net.Addr, error) {
}
path := apiBase + "/user/login"
- resp, remoteAddr, err := to.RawRequest("POST", path, credentials)
+ resp, remoteAddr, err := to.rawRequest("POST", path, credentials)
resp, remoteAddr, err = to.ErrUnlessOK(resp, remoteAddr, err, path)
if err != nil {
return remoteAddr, errors.New("requesting: " + err.Error())
@@ -156,29 +142,6 @@ func (to *Session) login() (net.Addr, error) {
return remoteAddr, nil
}
-func (to *Session) loginWithToken(token []byte) (net.Addr, error) {
- path := apiBase + "/user/login/token"
- resp, remoteAddr, err := to.RawRequest(http.MethodPost, path, token)
- resp, remoteAddr, err = to.ErrUnlessOK(resp, remoteAddr, err, path)
- if err != nil {
- return remoteAddr, fmt.Errorf("requesting: %v", err)
- }
- defer resp.Body.Close()
-
- var alerts tc.Alerts
- if err := json.NewDecoder(resp.Body).Decode(&alerts); err != nil {
- return remoteAddr, fmt.Errorf("decoding response JSON: %v", err)
- }
-
- for _, alert := range alerts.Alerts {
- if alert.Level == tc.SuccessLevel.String() && alert.Text == "Successfully logged in." {
- return remoteAddr, nil
- }
- }
-
- return remoteAddr, fmt.Errorf("Login failed, alerts string: %+v", alerts)
-}
-
// logout of Traffic Ops
func (to *Session) logout() (net.Addr, error) {
credentials, err := loginCreds(to.UserName, to.Password)
@@ -187,7 +150,7 @@ func (to *Session) logout() (net.Addr, error) {
}
path := apiBase + "/user/logout"
- resp, remoteAddr, err := to.RawRequest("POST", path, credentials)
+ resp, remoteAddr, err := to.rawRequest("POST", path, credentials)
resp, remoteAddr, err = to.ErrUnlessOK(resp, remoteAddr, err, path)
if err != nil {
return remoteAddr, errors.New("requesting: " + err.Error())
@@ -244,37 +207,6 @@ func LoginWithAgent(toURL string, toUser string, toPasswd string, insecure bool,
return to, remoteAddr, nil
}
-func LoginWithToken(toURL string, token string, insecure bool, userAgent string, useCache bool, requestTimeout time.Duration) (*Session, net.Addr, error) {
- options := cookiejar.Options{
- PublicSuffixList: publicsuffix.List,
- }
-
- jar, err := cookiejar.New(&options)
- if err != nil {
- return nil, nil, err
- }
-
- client := http.Client{
- Timeout: requestTimeout,
- Transport: &http.Transport{
- TLSClientConfig: &tls.Config{InsecureSkipVerify: insecure},
- },
- Jar: jar,
- }
-
- to := NewSession("", "", toURL, userAgent, &client, useCache)
- tBts, err := loginToken(token)
- if err != nil {
- return nil, nil, fmt.Errorf("logging in: %v", err)
- }
-
- remoteAddr, err := to.loginWithToken(tBts)
- if err != nil {
- return nil, remoteAddr, fmt.Errorf("logging in: %v", err)
- }
- return to, remoteAddr, nil
-}
-
// Logout of traffic_ops
func LogoutWithAgent(toURL string, toUser string, toPasswd string, insecure bool, userAgent string, useCache bool, requestTimeout time.Duration) (*Session, net.Addr, error) {
options := cookiejar.Options{
@@ -317,16 +249,11 @@ func (to *Session) ErrUnlessOK(resp *http.Response, remoteAddr net.Addr, err err
if err != nil {
return resp, remoteAddr, err
}
- if resp.StatusCode < 300 {
+ if resp.StatusCode == http.StatusOK {
return resp, remoteAddr, err
}
defer resp.Body.Close()
-
- if resp.StatusCode == http.StatusNotImplemented {
- return nil, remoteAddr, errors.New("Traffic Ops Server returned 'Not Implemented', this client is probably newer than Traffic Ops, and you probably need to either upgrade Traffic Ops, or use a client whose version matches your Traffic Ops version.")
- }
-
body, readErr := ioutil.ReadAll(resp.Body)
if readErr != nil {
return nil, remoteAddr, readErr
@@ -337,10 +264,8 @@ func (to *Session) ErrUnlessOK(resp *http.Response, remoteAddr net.Addr, err err
func (to *Session) getURL(path string) string { return to.URL + path }
// request performs the HTTP request to Traffic Ops, trying to refresh the cookie if an Unauthorized or Forbidden code is received. It only tries once. If the login fails, the original Unauthorized/Forbidden response is returned. If the login succeeds and the subsequent re-request fails, the re-request's response is returned even if it's another Unauthorized/Forbidden.
-// Returns the response, the remote address of the Traffic Ops instance used, and any error.
-// The returned net.Addr is guaranteed to be either nil or valid, even if the returned error is not nil. Callers are encouraged to check and use the net.Addr if an error is returned, and use the remote address in their own error messages. This violates the Go idiom that a non-nil error implies all other values are undefined, but it's more straightforward than alternatives like typecasting.
func (to *Session) request(method, path string, body []byte) (*http.Response, net.Addr, error) {
- r, remoteAddr, err := to.RawRequest(method, path, body)
+ r, remoteAddr, err := to.rawRequest(method, path, body)
if err != nil {
return r, remoteAddr, err
}
@@ -352,14 +277,12 @@ func (to *Session) request(method, path string, body []byte) (*http.Response, ne
}
// return second request, even if it's another Unauthorized or Forbidden.
- r, remoteAddr, err = to.RawRequest(method, path, body)
+ r, remoteAddr, err = to.rawRequest(method, path, body)
return to.ErrUnlessOK(r, remoteAddr, err, path)
}
-// RawRequest performs the actual HTTP request to Traffic Ops, simply, without trying to refresh the cookie if an Unauthorized code is returned.
-// Returns the response, the remote address of the Traffic Ops instance used, and any error.
-// The returned net.Addr is guaranteed to be either nil or valid, even if the returned error is not nil. Callers are encouraged to check and use the net.Addr if an error is returned, and use the remote address in their own error messages. This violates the Go idiom that a non-nil error implies all other values are undefined, but it's more straightforward than alternatives like typecasting.
-func (to *Session) RawRequest(method, path string, body []byte) (*http.Response, net.Addr, error) {
+// rawRequest performs the actual HTTP request to Traffic Ops, simply, without trying to refresh the cookie if an Unauthorized code is returned.
+func (to *Session) rawRequest(method, path string, body []byte) (*http.Response, net.Addr, error) {
url := to.getURL(path)
var req *http.Request
@@ -396,6 +319,10 @@ func (to *Session) RawRequest(method, path string, body []byte) (*http.Response,
return resp, remoteAddr, nil
}
+func (to *Session) RawRequest(method, path string, body []byte) (*http.Response, net.Addr, error) {
+ return to.rawRequest(method, path, body)
+}
+
type ReqInf struct {
CacheHitStatus CacheHitStatus
RemoteAddr net.Addr
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/staticdnsentry.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/staticdnsentry.go
index cf83838..0479160 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/staticdnsentry.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/staticdnsentry.go
@@ -17,7 +17,6 @@ package client
import (
"encoding/json"
- "errors"
"fmt"
"net"
"net/http"
@@ -29,49 +28,11 @@ const (
API_v13_StaticDNSEntries = "/api/1.3/staticdnsentries"
)
-func staticDNSEntryIDs(to *Session, sdns *tc.StaticDNSEntry) error {
- if sdns.CacheGroupID == 0 && sdns.CacheGroupName != "" {
- p, _, err := to.GetCacheGroupByName(sdns.CacheGroupName)
- if err != nil {
- return err
- }
- if len(p) == 0 {
- return errors.New("no CacheGroup named " + sdns.CacheGroupName)
- }
- sdns.CacheGroupID = p[0].ID
- }
-
- if sdns.DeliveryServiceID == 0 && sdns.DeliveryService != "" {
- dses, _, err := to.GetDeliveryServiceByXMLID(sdns.DeliveryService)
- if err != nil {
- return err
- }
- if len(dses) == 0 {
- return errors.New("no deliveryservice with name " + sdns.DeliveryService)
- }
- sdns.DeliveryServiceID = dses[0].ID
- }
-
- if sdns.TypeID == 0 && sdns.Type != "" {
- types, _, err := to.GetTypeByName(sdns.Type)
- if err != nil {
- return err
- }
- if len(types) == 0 {
- return errors.New("no type with name " + sdns.Type)
- }
- sdns.TypeID = types[0].ID
- }
-
- return nil
-}
-
// Create a StaticDNSEntry
-func (to *Session) CreateStaticDNSEntry(sdns tc.StaticDNSEntry) (tc.Alerts, ReqInf, error) {
- // fill in missing IDs from names
- staticDNSEntryIDs(to, &sdns)
+func (to *Session) CreateStaticDNSEntry(cdn tc.StaticDNSEntry) (tc.Alerts, ReqInf, error) {
+
var remoteAddr net.Addr
- reqBody, err := json.Marshal(sdns)
+ reqBody, err := json.Marshal(cdn)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return tc.Alerts{}, reqInf, err
@@ -87,17 +48,16 @@ func (to *Session) CreateStaticDNSEntry(sdns tc.StaticDNSEntry) (tc.Alerts, ReqI
}
// Update a StaticDNSEntry by ID
-func (to *Session) UpdateStaticDNSEntryByID(id int, sdns tc.StaticDNSEntry) (tc.Alerts, ReqInf, int, error) {
- // fill in missing IDs from names
- staticDNSEntryIDs(to, &sdns)
+func (to *Session) UpdateStaticDNSEntryByID(id int, cdn tc.StaticDNSEntry) (tc.Alerts, ReqInf, int, error) {
+
var remoteAddr net.Addr
- reqBody, err := json.Marshal(sdns)
+ reqBody, err := json.Marshal(cdn)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return tc.Alerts{}, reqInf, 0, err
}
route := fmt.Sprintf("%s?id=%d", API_v13_StaticDNSEntries, id)
- resp, remoteAddr, errClient := to.RawRequest(http.MethodPut, route, reqBody)
+ resp, remoteAddr, errClient := to.rawRequest(http.MethodPut, route, reqBody)
if resp != nil {
defer resp.Body.Close()
var alerts tc.Alerts
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/status.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/status.go
index 521a836..0c9b15b 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/status.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/status.go
@@ -47,24 +47,6 @@ func (to *Session) CreateStatus(status tc.Status) (tc.Alerts, ReqInf, error) {
return alerts, reqInf, nil
}
-func (to *Session) CreateStatusNullable(status tc.StatusNullable) (tc.Alerts, ReqInf, error) {
-
- var remoteAddr net.Addr
- reqBody, err := json.Marshal(status)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- resp, remoteAddr, err := to.request(http.MethodPost, API_v13_STATUSES, reqBody)
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- var alerts tc.Alerts
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, nil
-}
-
// Update a Status by ID
func (to *Session) UpdateStatusByID(id int, status tc.Status) (tc.Alerts, ReqInf, error) {
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/steering.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/steering.go
deleted file mode 100644
index 1d1b232..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/steering.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "net/http"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-func (to *Session) Steering() ([]tc.Steering, ReqInf, error) {
- resp, remoteAddr, err := to.request(http.MethodGet, apiBase+`/steering`, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
-
- data := struct {
- Response []tc.Steering `json:"response"`
- }{}
- err = json.NewDecoder(resp.Body).Decode(&data)
- return data.Response, reqInf, err
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/steeringtarget.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/steeringtarget.go
index a855cec..bb5c7d5 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/steeringtarget.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/steeringtarget.go
@@ -41,7 +41,7 @@ func (to *Session) CreateSteeringTarget(st tc.SteeringTargetNullable) (tc.Alerts
defer resp.Body.Close()
alerts := tc.Alerts{}
err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
+ return alerts, reqInf, nil
}
func (to *Session) UpdateSteeringTarget(st tc.SteeringTargetNullable) (tc.Alerts, ReqInf, error) {
@@ -65,7 +65,7 @@ func (to *Session) UpdateSteeringTarget(st tc.SteeringTargetNullable) (tc.Alerts
defer resp.Body.Close()
alerts := tc.Alerts{}
err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
+ return alerts, reqInf, nil
}
func (to *Session) GetSteeringTargets(dsID int) ([]tc.SteeringTargetNullable, ReqInf, error) {
@@ -80,7 +80,7 @@ func (to *Session) GetSteeringTargets(dsID int) ([]tc.SteeringTargetNullable, Re
Response []tc.SteeringTargetNullable `json:"response"`
}{}
err = json.NewDecoder(resp.Body).Decode(&data)
- return data.Response, reqInf, err
+ return data.Response, reqInf, nil
}
func (to *Session) DeleteSteeringTarget(dsID int, targetID int) (tc.Alerts, ReqInf, error) {
@@ -92,5 +92,5 @@ func (to *Session) DeleteSteeringTarget(dsID int, targetID int) (tc.Alerts, ReqI
defer resp.Body.Close()
alerts := tc.Alerts{}
err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
+ return alerts, reqInf, nil
}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/tenant.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/tenant.go
index 29230b6..6955b72 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/tenant.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/tenant.go
@@ -65,23 +65,12 @@ func (to *Session) TenantByName(name string) (*tc.Tenant, ReqInf, error) {
// CreateTenant creates the Tenant it's passed
func (to *Session) CreateTenant(t *tc.Tenant) (*tc.TenantResponse, error) {
- if t.ParentID == 0 && t.ParentName != "" {
- tenant, _, err := to.TenantByName(t.ParentName)
- if err != nil {
- return nil, err
- }
- if tenant == nil {
- return nil, errors.New("no tenant with name " + t.ParentName)
- }
- t.ParentID = tenant.ID
- }
-
var data tc.TenantResponse
jsonReq, err := json.Marshal(t)
if err != nil {
return nil, err
}
- _, err = post(to, tenantsEp(), jsonReq, &data)
+ err = post(to, tenantsEp(), jsonReq, &data)
if err != nil {
return nil, err
}
@@ -97,7 +86,7 @@ func (to *Session) UpdateTenant(id string, t *tc.Tenant) (*tc.TenantResponse, er
if err != nil {
return nil, err
}
- _, err = put(to, tenantEp(id), jsonReq, &data)
+ err = put(to, tenantEp(id), jsonReq, &data)
if err != nil {
return nil, err
}
@@ -108,7 +97,7 @@ func (to *Session) UpdateTenant(id string, t *tc.Tenant) (*tc.TenantResponse, er
// DeleteTenant deletes the Tenant matching the ID it's passed
func (to *Session) DeleteTenant(id string) (*tc.DeleteTenantResponse, error) {
var data tc.DeleteTenantResponse
- _, err := del(to, tenantEp(id), &data)
+ err := del(to, tenantEp(id), &data)
if err != nil {
return nil, err
}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/toextension.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/toextension.go
deleted file mode 100644
index c064f04..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/toextension.go
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-package client
-
-import (
- "encoding/json"
- "fmt"
- "net"
- "net/http"
-
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-const API_V14_TO_EXTENSION = "/api/1.4/to_extensions"
-
-// CreateTOExtension creates a to_extension
-func (to *Session) CreateTOExtension(toExtension tc.TOExtensionNullable) (tc.Alerts, ReqInf, error) {
- var remoteAddr net.Addr
- reqBody, err := json.Marshal(toExtension)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- resp, remoteAddr, err := to.request(http.MethodPost, API_V14_TO_EXTENSION, reqBody)
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- var alerts tc.Alerts
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
-
-// DeleteToExtension deletes a to_extension
-func (to *Session) DeleteTOExtension(id int) (tc.Alerts, ReqInf, error) {
- URI := fmt.Sprintf("%s/%d/delete", API_V14_TO_EXTENSION, id)
- resp, remoteAddr, err := to.request(http.MethodPost, URI, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- var alerts tc.Alerts
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
-
-// GetTOExtensions gets all to_extensions
-func (to *Session) GetTOExtensions() (tc.TOExtensionResponse, ReqInf, error) {
- resp, remoteAddr, err := to.request(http.MethodGet, API_V14_TO_EXTENSION, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.TOExtensionResponse{}, reqInf, err
- }
- defer resp.Body.Close()
- var toExtResp tc.TOExtensionResponse
- err = json.NewDecoder(resp.Body).Decode(&toExtResp)
- return toExtResp, reqInf, err
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/traffic_monitor.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/traffic_monitor.go
index bd8528a..73905a6 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/traffic_monitor.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/traffic_monitor.go
@@ -3,7 +3,6 @@ package client
import (
"encoding/json"
"fmt"
-
"github.com/apache/trafficcontrol/lib/go-tc"
)
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/traffic_stats.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/traffic_stats.go
deleted file mode 100644
index 8f163d9..0000000
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/traffic_stats.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package client
-
-/*
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-import (
- "github.com/apache/trafficcontrol/lib/go-tc"
-)
-
-// GetCurrentStats gets current stats for each CDNs and a total across them
-func (to *Session) GetCurrentStats() (tc.TrafficStatsCDNStatsResponse, ReqInf, error) {
- resp := tc.TrafficStatsCDNStatsResponse{}
- reqInf, err := get(to, apiBase+"/current_stats", &resp)
- if err != nil {
- return resp, reqInf, err
- }
- return resp, reqInf, nil
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/user.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/user.go
index e166b0d..b7ca1b1 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/user.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/user.go
@@ -17,13 +17,7 @@ package client
import (
"encoding/json"
- "errors"
- "fmt"
- "net"
- "net/http"
- "strconv"
- "github.com/apache/trafficcontrol/lib/go-rfc"
"github.com/apache/trafficcontrol/lib/go-tc"
)
@@ -34,10 +28,9 @@ func (to *Session) Users() ([]tc.User, error) {
return us, err
}
-// GetUsers returns all users accessible from current user
func (to *Session) GetUsers() ([]tc.User, ReqInf, error) {
- route := apiBase + "/users.json"
- resp, remoteAddr, err := to.request("GET", route, nil)
+ url := apiBase + "/users.json"
+ resp, remoteAddr, err := to.request("GET", url, nil)
reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
if err != nil {
return nil, reqInf, err
@@ -52,134 +45,13 @@ func (to *Session) GetUsers() ([]tc.User, ReqInf, error) {
return data.Response, reqInf, nil
}
-func (to *Session) GetUserByID(id int) ([]tc.User, ReqInf, error) {
- data := tc.UsersResponse{}
- route := fmt.Sprintf("%s/users/%d", apiBase, id)
- inf, err := get(to, route, &data)
- return data.Response, inf, err
-}
-
-func (to *Session) GetUserByUsername(username string) ([]tc.User, ReqInf, error) {
- data := tc.UsersResponse{}
- route := fmt.Sprintf("%s/users?username=%s", apiBase, username)
- inf, err := get(to, route, &data)
- return data.Response, inf, err
-}
-
// GetUserCurrent gets information about the current user
func (to *Session) GetUserCurrent() (*tc.UserCurrent, ReqInf, error) {
- route := apiBase + `/user/current`
+ url := apiBase + `/user/current`
resp := tc.UserCurrentResponse{}
- reqInf, err := get(to, route, &resp)
+ reqInf, err := get(to, url, &resp)
if err != nil {
return nil, reqInf, err
}
return &resp.Response, reqInf, nil
}
-
-// CreateUser creates a user
-func (to *Session) CreateUser(user *tc.User) (*tc.CreateUserResponse, ReqInf, error) {
- if user.TenantID == nil && user.Tenant != nil {
- tenant, _, err := to.TenantByName(*user.Tenant)
- if err != nil {
- return nil, ReqInf{}, err
- }
- if tenant == nil {
- return nil, ReqInf{}, errors.New("no tenant with name " + *user.Tenant)
- }
- if err != nil {
- return nil, ReqInf{}, err
- }
- user.TenantID = &tenant.ID
- }
-
- if user.RoleName != nil && *user.RoleName != "" {
- roles, _, _, err := to.GetRoleByName(*user.RoleName)
- if err != nil {
- return nil, ReqInf{}, err
- }
- if len(roles) == 0 || roles[0].ID == nil {
- return nil, ReqInf{}, errors.New("no role with name " + *user.RoleName)
- }
- if err != nil {
- return nil, ReqInf{}, err
- }
- user.Role = roles[0].ID
- }
-
- var remoteAddr net.Addr
- reqBody, err := json.Marshal(user)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- route := apiBase + "/users.json"
- resp, remoteAddr, err := to.request(http.MethodPost, route, reqBody)
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
- var clientResp tc.CreateUserResponse
- err = json.NewDecoder(resp.Body).Decode(&clientResp)
- return &clientResp, reqInf, nil
-}
-
-// UpdateUserByID updates user with the given id
-func (to *Session) UpdateUserByID(id int, u *tc.User) (*tc.UpdateUserResponse, ReqInf, error) {
-
- var remoteAddr net.Addr
- reqBody, err := json.Marshal(u)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return nil, reqInf, err
- }
- route := apiBase + "/users/" + strconv.Itoa(id)
- resp, remoteAddr, err := to.request(http.MethodPut, route, reqBody)
- if err != nil {
- return nil, reqInf, err
- }
- defer resp.Body.Close()
- var clientResp tc.UpdateUserResponse
- err = json.NewDecoder(resp.Body).Decode(&clientResp)
- return &clientResp, reqInf, nil
-}
-
-// DeleteUserByID updates user with the given id
-func (to *Session) DeleteUserByID(id int) (tc.Alerts, ReqInf, error) {
- route := apiBase + "/users/" + strconv.Itoa(id)
- resp, remoteAddr, err := to.request(http.MethodDelete, route, nil)
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
- if err != nil {
- return tc.Alerts{}, reqInf, err
- }
- defer resp.Body.Close()
- var alerts tc.Alerts
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, nil
-}
-
-// RegisterNewUser requests the registration of a new user with the given tenant ID and role ID,
-// through their email.
-func (to *Session) RegisterNewUser(tenantID uint, roleID uint, email rfc.EmailAddress) (tc.Alerts, ReqInf, error) {
- reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss}
- var alerts tc.Alerts
-
- reqBody, err := json.Marshal(tc.UserRegistrationRequest{
- Email: email,
- TenantID: tenantID,
- Role: roleID,
- })
- if err != nil {
- return alerts, reqInf, err
- }
-
- resp, remoteAddr, err := to.request(http.MethodPost, apiBase+"/users/register", reqBody)
- reqInf.RemoteAddr = remoteAddr
- if err != nil {
- return alerts, reqInf, err
- }
- defer resp.Body.Close()
-
- err = json.NewDecoder(resp.Body).Decode(&alerts)
- return alerts, reqInf, err
-}
diff --git a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/util.go b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/util.go
index ed4443a..af95be6 100644
--- a/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/util.go
+++ b/traffic_ops/ort/atstccfg/toreq/vendor/github.com/apache/trafficcontrol/traffic_ops/client/util.go
@@ -25,16 +25,19 @@ func get(to *Session, endpoint string, respStruct interface{}) (ReqInf, error) {
return makeReq(to, "GET", endpoint, nil, respStruct)
}
-func post(to *Session, endpoint string, body []byte, respStruct interface{}) (ReqInf, error) {
- return makeReq(to, "POST", endpoint, body, respStruct)
+func post(to *Session, endpoint string, body []byte, respStruct interface{}) error {
+ _, err := makeReq(to, "POST", endpoint, body, respStruct)
+ return err
}
-func put(to *Session, endpoint string, body []byte, respStruct interface{}) (ReqInf, error) {
- return makeReq(to, "PUT", endpoint, body, respStruct)
+func put(to *Session, endpoint string, body []byte, respStruct interface{}) error {
+ _, err := makeReq(to, "PUT", endpoint, body, respStruct)
+ return err
}
-func del(to *Session, endpoint string, respStruct interface{}) (ReqInf, error) {
- return makeReq(to, "DELETE", endpoint, nil, respStruct)
+func del(to *Session, endpoint string, respStruct interface{}) error {
+ _, err := makeReq(to, "DELETE", endpoint, nil, respStruct)
+ return err
}
func makeReq(to *Session, method, endpoint string, body []byte, respStruct interface{}) (ReqInf, error) {
diff --git a/traffic_ops/ort/atstccfg/toreqnew/toreqnew.go b/traffic_ops/ort/atstccfg/toreqnew/toreqnew.go
index e7141f3..6f80a24 100644
--- a/traffic_ops/ort/atstccfg/toreqnew/toreqnew.go
+++ b/traffic_ops/ort/atstccfg/toreqnew/toreqnew.go
@@ -28,7 +28,9 @@ package toreqnew
*/
import (
+ "encoding/base64"
"errors"
+ "net"
"net/http/cookiejar"
"net/url"
"strconv"
@@ -37,8 +39,10 @@ import (
"golang.org/x/net/publicsuffix"
+ "github.com/apache/trafficcontrol/lib/go-atscfg"
"github.com/apache/trafficcontrol/lib/go-log"
"github.com/apache/trafficcontrol/lib/go-tc"
+ "github.com/apache/trafficcontrol/lib/go-util"
toclient "github.com/apache/trafficcontrol/traffic_ops/client"
"github.com/apache/trafficcontrol/traffic_ops/ort/atstccfg/torequtil"
)
@@ -77,7 +81,7 @@ func (cl *TOClient) GetCDNDeliveryServices(cdnID int) ([]tc.DeliveryServiceNulla
err := torequtil.GetRetry(cl.NumRetries, "cdn_"+strconv.Itoa(cdnID)+"_deliveryservices", &deliveryServices, func(obj interface{}) error {
toDSes, reqInf, err := cl.C.GetDeliveryServicesByCDNID(cdnID)
if err != nil {
- if errStr := strings.ToLower(err.Error()); strings.Contains(errStr, "not found") || strings.Contains(errStr, "not impl") {
+ if errIsUnsupported(err) {
unsupported = true
return nil
}
@@ -95,3 +99,169 @@ func (cl *TOClient) GetCDNDeliveryServices(cdnID int) ([]tc.DeliveryServiceNulla
}
return deliveryServices, false, nil
}
+
+func (cl *TOClient) GetServers() ([]tc.Server, bool, error) {
+ servers := []tc.Server{}
+ unsupported := false
+ err := torequtil.GetRetry(cl.NumRetries, "servers", &servers, func(obj interface{}) error {
+ toServers, reqInf, err := cl.C.GetServers()
+ if err != nil {
+ if errIsUnsupported(err) {
+ unsupported = true
+ return nil
+ }
+ return errors.New("getting servers from Traffic Ops '" + MaybeIPStr(reqInf.RemoteAddr) + "': " + err.Error())
+ }
+ servers := obj.(*[]tc.Server)
+ *servers = toServers
+ return nil
+ })
+ if unsupported {
+ return nil, true, nil
+ }
+ if err != nil {
+ return nil, false, errors.New("getting servers: " + err.Error())
+ }
+ return servers, false, nil
+}
+
+func (cl *TOClient) GetServerByHostName(serverHostName string) (tc.Server, bool, error) {
+ server := tc.Server{}
+ unsupported := false
+ err := torequtil.GetRetry(cl.NumRetries, "server-name-"+serverHostName, &server, func(obj interface{}) error {
+ toServers, reqInf, err := cl.C.GetServerByHostName(serverHostName)
+ if err != nil {
+ if errIsUnsupported(err) {
+ unsupported = true
+ return nil
+ }
+ return errors.New("getting server name '" + serverHostName + "' from Traffic Ops '" + MaybeIPStr(reqInf.RemoteAddr) + "': " + err.Error())
+ } else if len(toServers) < 1 {
+ return errors.New("getting server name '" + serverHostName + "' from Traffic Ops '" + MaybeIPStr(reqInf.RemoteAddr) + "': no servers returned")
+ }
+ server := obj.(*tc.Server)
+ *server = toServers[0]
+ return nil
+ })
+ if unsupported {
+ return tc.Server{}, true, nil
+ }
+ if err != nil {
+ return tc.Server{}, false, errors.New("getting server name '" + serverHostName + "': " + err.Error())
+ }
+ return server, false, nil
+}
+
+func (cl *TOClient) GetCacheGroups() ([]tc.CacheGroupNullable, bool, error) {
+ cacheGroups := []tc.CacheGroupNullable{}
+ unsupported := false
+ err := torequtil.GetRetry(cl.NumRetries, "cachegroups", &cacheGroups, func(obj interface{}) error {
+ toCacheGroups, reqInf, err := cl.C.GetCacheGroupsNullable()
+ if err != nil {
+ if errIsUnsupported(err) {
+ unsupported = true
+ return nil
+ }
+ return errors.New("getting cachegroups from Traffic Ops '" + MaybeIPStr(reqInf.RemoteAddr) + "': " + err.Error())
+ }
+ cacheGroups := obj.(*[]tc.CacheGroupNullable)
+ *cacheGroups = toCacheGroups
+ return nil
+ })
+ if unsupported {
+ return nil, true, nil
+ }
+ if err != nil {
+ return nil, false, errors.New("getting cachegroups: " + err.Error())
+ }
+ return cacheGroups, false, nil
+}
+
+func (cl *TOClient) GetServerCapabilitiesByID(serverIDs []int) (map[int]map[atscfg.ServerCapability]struct{}, error) {
+ serverIDsStr := ""
+ if len(serverIDs) > 0 {
+ sortIDsInHash := true
+ serverIDsStr = base64.RawURLEncoding.EncodeToString((util.HashInts(serverIDs, sortIDsInHash)))
+ }
+
+ serverCaps := map[int]map[atscfg.ServerCapability]struct{}{}
+ err := torequtil.GetRetry(cl.NumRetries, "server_capabilities_s_"+serverIDsStr, &serverCaps, func(obj interface{}) error {
+ // TODO add list of IDs to API+Client
+ toServerCaps, reqInf, err := cl.C.GetServerServerCapabilities(nil, nil, nil)
+ if err != nil {
+ return errors.New("getting server caps from Traffic Ops '" + MaybeIPStr(reqInf.RemoteAddr) + "': " + err.Error())
+ }
+ serverCaps := obj.(*map[int]map[atscfg.ServerCapability]struct{})
+
+ for _, sc := range toServerCaps {
+ if sc.ServerID == nil {
+ log.Errorln("Traffic Ops returned Server Capability with nil server id! Skipping!")
+ }
+ if sc.ServerCapability == nil {
+ log.Errorln("Traffic Ops returned Server Capability with nil capability! Skipping!")
+ }
+ if _, ok := (*serverCaps)[*sc.ServerID]; !ok {
+ (*serverCaps)[*sc.ServerID] = map[atscfg.ServerCapability]struct{}{}
+ }
+ (*serverCaps)[*sc.ServerID][atscfg.ServerCapability(*sc.ServerCapability)] = struct{}{}
+ }
+ return nil
+ })
+ if err != nil {
+ return nil, errors.New("getting server server capabilities: " + err.Error())
+ }
+ return serverCaps, nil
+}
+
+func (cl *TOClient) GetDeliveryServiceRequiredCapabilitiesByID(dsIDs []int) (map[int]map[atscfg.ServerCapability]struct{}, error) {
+ dsIDsStr := ""
+ if len(dsIDs) > 0 {
+ sortIDsInHash := true
+ dsIDsStr = base64.RawURLEncoding.EncodeToString((util.HashInts(dsIDs, sortIDsInHash)))
+ }
+
+ dsCaps := map[int]map[atscfg.ServerCapability]struct{}{}
+ err := torequtil.GetRetry(cl.NumRetries, "ds_capabilities_d_"+dsIDsStr, &dsCaps, func(obj interface{}) error {
+ // TODO add list of IDs to API+Client
+ toDSCaps, reqInf, err := cl.C.GetDeliveryServicesRequiredCapabilities(nil, nil, nil)
+ if err != nil {
+ return errors.New("getting ds caps from Traffic Ops '" + MaybeIPStr(reqInf.RemoteAddr) + "': " + err.Error())
+ }
+ dsCaps := obj.(*map[int]map[atscfg.ServerCapability]struct{})
+
+ for _, sc := range toDSCaps {
+ if sc.DeliveryServiceID == nil {
+ log.Errorln("Traffic Ops returned Delivery Service Capability with nil ds id! Skipping!")
+ }
+ if sc.RequiredCapability == nil {
+ log.Errorln("Traffic Ops returned Delivery Service Capability with nil capability! Skipping!")
+ }
+ if (*dsCaps)[*sc.DeliveryServiceID] == nil {
+ (*dsCaps)[*sc.DeliveryServiceID] = map[atscfg.ServerCapability]struct{}{}
+ }
+ (*dsCaps)[*sc.DeliveryServiceID][atscfg.ServerCapability(*sc.RequiredCapability)] = struct{}{}
+ }
+ return nil
+ })
+ if err != nil {
+ return nil, errors.New("getting ds server capabilities: " + err.Error())
+ }
+ return dsCaps, nil
+}
+
+func errIsUnsupported(err error) bool {
+ if err == nil {
+ return false
+ }
+ errStr := strings.ToLower(err.Error())
+ return strings.Contains(errStr, "not found") || strings.Contains(errStr, "not impl")
+}
+
+// MaybeIPStr returns the addr string if it isn't nil, or the empty string if it is.
+// This is intended for logging, to allow logging with one line, whether addr is nil or not.
+func MaybeIPStr(addr net.Addr) string {
+ if addr != nil {
+ return addr.String()
+ }
+ return ""
+}