This is an automated email from the ASF dual-hosted git repository.

ocket8888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new d1b62b2eca Update Grove to use the TO API v3 client library (#6868)
d1b62b2eca is described below

commit d1b62b2ecaec0df72834abab846695e8c6e92a07
Author: Zach Hoffman <[email protected]>
AuthorDate: Wed Jun 8 12:23:09 2022 -0600

    Update Grove to use the TO API v3 client library (#6868)
---
 CHANGELOG.md                   |  1 +
 grove/grovetccfg/grovetccfg.go | 94 +++++++++++++++++++++---------------------
 2 files changed, 49 insertions(+), 46 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 18bade89c8..6251ab280e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -84,6 +84,7 @@ The format is based on [Keep a 
Changelog](http://keepachangelog.com/en/1.0.0/).
 - Traffic Monitor now defaults to 100 historical "CRConfig" Snapshots stored 
internally if not specified in configuration (previous default was 20,000)
 - `TRAFFIC_ROUTER`-type Profiles no longer need to have names that match any 
kind of pattern (e.g. `CCR_.*`)
 - [#4351](https://github.com/apache/trafficcontrol/issues/4351) Updated 
message to an informative one when deleting a delivery service.
+- Updated Grove to use the TO API v3 client library
 
 ## [6.1.0] - 2022-01-18
 ### Added
diff --git a/grove/grovetccfg/grovetccfg.go b/grove/grovetccfg/grovetccfg.go
index 0b6c50dc68..07128fbf25 100644
--- a/grove/grovetccfg/grovetccfg.go
+++ b/grove/grovetccfg/grovetccfg.go
@@ -35,7 +35,7 @@ import (
        "time"
 
        "github.com/apache/trafficcontrol/lib/go-tc"
-       to "github.com/apache/trafficcontrol/traffic_ops/v2-client"
+       to "github.com/apache/trafficcontrol/traffic_ops/v3-client"
 
        "github.com/apache/trafficcontrol/grove/config"
        "github.com/apache/trafficcontrol/grove/remap"
@@ -157,27 +157,29 @@ func WriteAndBackup(path string, backupDirectory string, 
bts []byte) error {
 
 // hasUpdatePending returns whether an update is pending, the revalPending 
status (which will be needed later in the clear update POST), and any error.
 func hasUpdatePending(toc *to.Session, hostname string) (bool, bool, error) {
-       upd, _, err := toc.GetServerByHostName(hostname)
+       response, _, err := toc.GetServersWithHdr(&url.Values{"hostName": 
{hostname}}, nil)
        if err != nil {
                return false, false, errors.New("getting update from Traffic 
Ops: " + err.Error())
-       } else if len(upd) != 1 {
-               return false, false, fmt.Errorf("Want exactly one server with 
hostname '%s', got %d", hostname, len(upd))
+       } else if len(response.Response) != 1 {
+               return false, false, fmt.Errorf("Want exactly one server with 
hostname '%s', got %d", hostname, len(response.Response))
        }
-       return upd[0].UpdPending, upd[0].RevalPending, nil
+       upd := response.Response
+       return *upd[0].UpdPending, *upd[0].RevalPending, nil
 }
 
 // clearUpdatePending clears the given host's update pending flag in Traffic 
Ops. It takes the host to clear, and the old revalPending flag to send.
 func clearUpdatePending(toc *to.Session, hostname string, revalPending bool) 
error {
-       srv, _, err := toc.GetServerByHostName(hostname)
+       response, _, err := toc.GetServersWithHdr(&url.Values{"hostName": 
{hostname}}, nil)
        if err != nil {
                return fmt.Errorf("Failed to update reval_pending: %v", err)
-       } else if len(srv) != 1 {
-               return fmt.Errorf("Want exactly one server with hostname '%s', 
got '%d'", hostname, len(srv))
+       } else if len(response.Response) != 1 {
+               return fmt.Errorf("Want exactly one server with hostname '%s', 
got '%d'", hostname, len(response.Response))
        }
 
-       srv[0].RevalPending = revalPending
-       srv[0].UpdPending = false
-       alerts, _, err := toc.UpdateServerByID(srv[0].ID, srv[0])
+       srv := response.Response
+       srv[0].RevalPending = &revalPending
+       srv[0].UpdPending = new(bool)
+       alerts, _, err := toc.UpdateServerByIDWithHdr(*srv[0].ID, srv[0], nil)
        if err != nil {
                return fmt.Errorf("setting update pending on Traffic Ops: %v 
(Alerts: %+v)", err, alerts.Alerts)
        }
@@ -229,18 +231,18 @@ func main() {
 
        // TODO remove this once converted to 1.3 API
        // using the 1.2 API
-       var hostServer tc.Server
+       var hostServer tc.ServerV30
        var hostProfile tc.Profile
        var ok bool
        var profiles map[string]tc.Profile
-       var servers map[string]tc.Server
+       var servers map[string]tc.ServerV30
 
-       serversArr, _, err := toc.GetServers()
+       serversArr, _, err := toc.GetServersWithHdr(nil, nil)
        if err != nil {
                fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops Servers: " + err.Error())
                os.Exit(ExitError)
        }
-       servers = makeServersHostnameMap(serversArr)
+       servers = makeServersHostnameMap(serversArr.Response)
 
        hostServer, ok = servers[*host]
        if !ok {
@@ -248,16 +250,16 @@ func main() {
                os.Exit(ExitError)
        }
 
-       profilesArr, _, err := toc.GetProfiles()
+       profilesArr, _, err := toc.GetProfilesWithHdr(nil)
        if err != nil {
                fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops Profiles: " + err.Error())
                os.Exit(ExitError)
        }
        profiles = makeProfileNameMap(profilesArr)
 
-       hostProfile, ok = profiles[hostServer.Profile]
+       hostProfile, ok = profiles[*hostServer.Profile]
        if !ok {
-               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error: 
profile '" + hostServer.Profile + "' not in Profiles\n")
+               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error: 
profile '" + *hostServer.Profile + "' not in Profiles\n")
                os.Exit(ExitError)
        }
        // end of API 1.2 stuff
@@ -285,7 +287,7 @@ func main() {
                        }
                }
        } else {
-               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Warning: 
the profile '" + hostServer.Profile + "' is not a '" + tc.GroveProfileType + 
"', will not build a config from it.")
+               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Warning: 
the profile '" + *hostServer.Profile + "' is not a '" + tc.GroveProfileType + 
"', will not build a config from it.")
        }
 
        rules := remap.RemapRules{}
@@ -347,7 +349,7 @@ func main() {
        os.Exit(ExitSuccess)
 }
 
-func createGroveCfg(toc *to.Session, server tc.Server) (bool, config.Config, 
error) {
+func createGroveCfg(toc *to.Session, server tc.ServerV30) (bool, 
config.Config, error) {
        var newCfg config.Config
        var currCfg config.Config
        var pluginParams = []string{}
@@ -364,9 +366,9 @@ func createGroveCfg(toc *to.Session, server tc.Server) 
(bool, config.Config, err
                }
        }
 
-       serverParameters, _, err := 
toc.GetParametersByProfileName(server.Profile)
+       serverParameters, _, err := 
toc.GetParametersByProfileNameWithHdr(*server.Profile, nil)
        if err != nil {
-               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops Parameters for host '" + server.HostName + "' profile '" + 
server.Profile + "': " + err.Error())
+               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops Parameters for host '" + *server.HostName + "' profile '" + 
*server.Profile + "': " + err.Error())
                return false, currCfg, err
        } else {
                // load config parameters from the servers profile
@@ -453,8 +455,8 @@ func setConfigParameter(cfg *config.Config, name string, 
value string) error {
        return err
 }
 
-func createRulesOldAPI(toc *to.Session, host string, certDir string, servers 
map[string]tc.Server) (remap.RemapRules, error) {
-       cachegroupsArr, _, err := toc.GetCacheGroupsNullable()
+func createRulesOldAPI(toc *to.Session, host string, certDir string, servers 
map[string]tc.ServerV30) (remap.RemapRules, error) {
+       cachegroupsArr, _, err := toc.GetCacheGroupsNullableWithHdr(nil)
        if err != nil {
                fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops Cachegroups: " + err.Error())
                os.Exit(1)
@@ -467,29 +469,29 @@ func createRulesOldAPI(toc *to.Session, host string, 
certDir string, servers map
                os.Exit(1)
        }
 
-       deliveryservices, _, err := 
toc.GetDeliveryServicesByServer(hostServer.ID)
+       deliveryservices, _, err := 
toc.GetDeliveryServicesByServerWithHdr(*hostServer.ID, nil)
        if err != nil {
                fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops Deliveryservices: " + err.Error())
                os.Exit(1)
        }
 
-       deliveryserviceRegexArr, _, err := toc.GetDeliveryServiceRegexes()
+       deliveryserviceRegexArr, _, err := 
toc.GetDeliveryServiceRegexesWithHdr(nil)
        if err != nil {
                fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops Deliveryservice Regexes: " + err.Error())
                os.Exit(1)
        }
        deliveryserviceRegexes := 
makeDeliveryserviceRegexMap(deliveryserviceRegexArr)
 
-       cdnsArr, _, err := toc.GetCDNs()
+       cdnsArr, _, err := toc.GetCDNsWithHdr(nil)
        if err != nil {
                fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops CDNs: " + err.Error())
                os.Exit(1)
        }
        cdns := makeCDNMap(cdnsArr)
 
-       serverParameters, _, err := 
toc.GetParametersByProfileName(hostServer.Profile)
+       serverParameters, _, err := 
toc.GetParametersByProfileNameWithHdr(*hostServer.Profile, nil)
        if err != nil {
-               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops Parameters for host '" + host + "' profile '" + 
hostServer.Profile + "': " + err.Error())
+               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting Traffic Ops Parameters for host '" + host + "' profile '" + 
*hostServer.Profile + "': " + err.Error())
                os.Exit(1)
        }
 
@@ -499,12 +501,12 @@ func createRulesOldAPI(toc *to.Session, host string, 
certDir string, servers map
                os.Exit(1)
        }
 
-       sameCDN := func(s tc.Server) bool {
+       sameCDN := func(s tc.ServerV30) bool {
                return s.CDNName == hostServer.CDNName
        }
 
-       serverAvailable := func(s tc.Server) bool {
-               status := strings.ToLower(s.Status)
+       serverAvailable := func(s tc.ServerV30) bool {
+               status := strings.ToLower(*s.Status)
                statuses := AvailableStatuses()
                _, ok := statuses[status]
                return ok
@@ -513,9 +515,9 @@ func createRulesOldAPI(toc *to.Session, host string, 
certDir string, servers map
        parents = filterParents(parents, sameCDN)
        parents = filterParents(parents, serverAvailable)
 
-       cdnSSLKeys, _, err := toc.GetCDNSSLKeys(hostServer.CDNName)
+       cdnSSLKeys, _, err := toc.GetCDNSSLKeysWithHdr(*hostServer.CDNName, nil)
        if err != nil {
-               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting '" + hostServer.CDNName + "' SSL keys: " + err.Error())
+               fmt.Println(time.Now().Format(time.RFC3339Nano) + " Error 
getting '" + *hostServer.CDNName + "' SSL keys: " + err.Error())
                os.Exit(1)
        }
        dsCerts := makeDSCertMap(cdnSSLKeys)
@@ -653,10 +655,10 @@ func makeProfileNameMap(profiles []tc.Profile) 
map[string]tc.Profile {
        return m
 }
 
-func makeServersHostnameMap(servers []tc.Server) map[string]tc.Server {
-       m := map[string]tc.Server{}
+func makeServersHostnameMap(servers []tc.ServerV30) map[string]tc.ServerV30 {
+       m := map[string]tc.ServerV30{}
        for _, server := range servers {
-               m[server.HostName] = server
+               m[*server.HostName] = server
        }
        return m
 }
@@ -695,28 +697,28 @@ func makeDSCertMap(sslKeys []tc.CDNSSLKeys) 
map[string]tc.CDNSSLKeys {
        return m
 }
 
-func getParents(hostname string, servers map[string]tc.Server, cachegroups 
map[string]tc.CacheGroupNullable) ([]tc.Server, error) {
+func getParents(hostname string, servers map[string]tc.ServerV30, cachegroups 
map[string]tc.CacheGroupNullable) ([]tc.ServerV30, error) {
        server, ok := servers[hostname]
        if !ok {
                return nil, fmt.Errorf("hostname not found in Servers")
        }
 
-       cachegroup, ok := cachegroups[server.Cachegroup]
+       cachegroup, ok := cachegroups[*server.Cachegroup]
        if !ok {
                return nil, fmt.Errorf("server cachegroup '%v' not found in 
Cachegroups", server.Cachegroup)
        }
 
-       parents := []tc.Server{}
+       parents := []tc.ServerV30{}
        for _, server := range servers {
-               if cachegroup.ParentName != nil && server.Cachegroup == 
*cachegroup.ParentName {
+               if cachegroup.ParentName != nil && *server.Cachegroup == 
*cachegroup.ParentName {
                        parents = append(parents, server)
                }
        }
        return parents, nil
 }
 
-func filterParents(parents []tc.Server, include func(tc.Server) bool) 
[]tc.Server {
-       newParents := []tc.Server{}
+func filterParents(parents []tc.ServerV30, include func(tc.ServerV30) bool) 
[]tc.ServerV30 {
+       newParents := []tc.ServerV30{}
        for _, parent := range parents {
                if include(parent) {
                        newParents = append(newParents, parent)
@@ -770,12 +772,12 @@ func dsTypeSkipsMid(ttype string) bool {
 }
 
 // buildTo returns the to URL, and the Proxy URL (if any)
-func buildTo(parentServer tc.Server, protocol string, originURI string, dsType 
string) (string, string) {
+func buildTo(parentServer tc.ServerV30, protocol string, originURI string, 
dsType string) (string, string) {
        // TODO add port?
        to := originURI
        proxy := ""
        if !dsTypeSkipsMid(dsType) {
-               proxy = "http://"; + parentServer.HostName + "." + 
parentServer.DomainName + ":" + strconv.Itoa(parentServer.TCPPort)
+               proxy = "http://"; + *parentServer.HostName + "." + 
*parentServer.DomainName + ":" + strconv.Itoa(*parentServer.TCPPort)
        }
        return to, proxy
 }
@@ -855,7 +857,7 @@ func makeAllowIP(ips []string) ([]*net.IPNet, error) {
 func createRulesOld(
        hostname string,
        dses []tc.DeliveryServiceNullable,
-       parents []tc.Server,
+       parents []tc.ServerV30,
        dsRegexes map[string][]tc.DeliveryServiceRegex,
        cdns map[string]tc.CDN,
        hostParams []tc.Parameter,

Reply via email to