You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by de...@apache.org on 2018/07/02 20:31:41 UTC
[trafficcontrol] 02/02: Add TO Go delete ds_servers client funcs,
tests
This is an automated email from the ASF dual-hosted git repository.
dewrich pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git
commit 3fdd215b77824799316b938944366e6a2864fa24
Author: Robert Butts <ro...@apache.org>
AuthorDate: Mon Jul 2 10:43:31 2018 -0600
Add TO Go delete ds_servers client funcs, tests
---
lib/go-tc/deliveryservices.go | 6 ++
traffic_ops/client/v13/deliveryserviceserver.go | 67 +++++++++++++
.../testing/api/v13/deliveryserviceservers_test.go | 111 +++++++++++++++++++++
.../deliveryservice/servers/servers.go | 4 +-
4 files changed, 186 insertions(+), 2 deletions(-)
diff --git a/lib/go-tc/deliveryservices.go b/lib/go-tc/deliveryservices.go
index 9f8f56e..6f6093f 100644
--- a/lib/go-tc/deliveryservices.go
+++ b/lib/go-tc/deliveryservices.go
@@ -543,3 +543,9 @@ type DeliveryServiceRouting struct {
RegionalAlternate int `json:"regionalAlternate"`
RegionalDenied int `json:"regionalDenied"`
}
+
+type DSServerIDs struct {
+ DeliveryServiceID *int `json:"dsId", db:"deliveryservice"`
+ ServerIDs []int `json:"servers"`
+ Replace *bool `json:"replace"`
+}
diff --git a/traffic_ops/client/v13/deliveryserviceserver.go b/traffic_ops/client/v13/deliveryserviceserver.go
new file mode 100644
index 0000000..75ef912
--- /dev/null
+++ b/traffic_ops/client/v13/deliveryserviceserver.go
@@ -0,0 +1,67 @@
+/*
+
+ 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 v13
+
+import (
+ "encoding/json"
+ "strconv"
+
+ "github.com/apache/trafficcontrol/lib/go-tc"
+ "github.com/apache/trafficcontrol/lib/go-util"
+)
+
+func (to *Session) GetDeliveryServiceServers() ([]tc.DeliveryServiceServer, ReqInf, error) {
+ path := apiBase + `/deliveryserviceserver`
+ // deliveryService
+ resp := tc.DeliveryServiceServerResponse{}
+ reqInf, err := get(to, path, &resp)
+ if err != nil {
+ return nil, reqInf, err
+ }
+ return resp.Response, reqInf, nil
+}
+
+// CreateDeliveryServiceServers associates the given servers with the given delivery services. If replace is true, it deletes any existing associations for the given delivery service.
+func (to *Session) CreateDeliveryServiceServers(dsID int, serverIDs []int, replace bool) (*tc.DSServerIDs, error) {
+ path := apiBase + `/deliveryserviceserver`
+ req := tc.DSServerIDs{
+ DeliveryServiceID: util.IntPtr(dsID),
+ ServerIDs: serverIDs,
+ Replace: util.BoolPtr(replace),
+ }
+ jsonReq, err := json.Marshal(&req)
+ if err != nil {
+ return nil, err
+ }
+ resp := struct {
+ Response tc.DSServerIDs `json:"response"`
+ }{}
+ if err := post(to, path, jsonReq, &resp); err != nil {
+ return nil, err
+ }
+ return &resp.Response, nil
+}
+
+// DeleteDeliveryService deletes the given delivery service server association.
+func (to *Session) DeleteDeliveryServiceServer(dsID int, serverID int) error {
+ path := apiBase + `/deliveryservice_server/` + strconv.Itoa(dsID) + `/` + strconv.Itoa(serverID)
+ resp := struct{ tc.Alerts }{}
+ err := del(to, path, &resp)
+ if err != nil {
+ return err
+ }
+ return nil
+}
diff --git a/traffic_ops/testing/api/v13/deliveryserviceservers_test.go b/traffic_ops/testing/api/v13/deliveryserviceservers_test.go
new file mode 100644
index 0000000..2c60ae1
--- /dev/null
+++ b/traffic_ops/testing/api/v13/deliveryserviceservers_test.go
@@ -0,0 +1,111 @@
+package v13
+
+/*
+
+ 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 (
+ "testing"
+
+ "github.com/apache/trafficcontrol/lib/go-log"
+)
+
+func TestDeliveryServiceServers(t *testing.T) {
+ CreateTestCDNs(t)
+ CreateTestTypes(t)
+ CreateTestProfiles(t)
+ CreateTestStatuses(t)
+ CreateTestDivisions(t)
+ CreateTestRegions(t)
+ CreateTestPhysLocations(t)
+ CreateTestCacheGroups(t)
+ CreateTestServers(t)
+ CreateTestDeliveryServices(t)
+
+ DeleteTestDeliveryServiceServers(t)
+
+ DeleteTestDeliveryServices(t)
+ DeleteTestServers(t)
+ DeleteTestCacheGroups(t)
+ DeleteTestPhysLocations(t)
+ DeleteTestRegions(t)
+ DeleteTestDivisions(t)
+ DeleteTestStatuses(t)
+ DeleteTestProfiles(t)
+ DeleteTestTypes(t)
+ DeleteTestCDNs(t)
+}
+
+func DeleteTestDeliveryServiceServers(t *testing.T) {
+ log.Debugln("DeleteTestDeliveryServiceServers")
+
+ dses, _, err := TOSession.GetDeliveryServices()
+ if err != nil {
+ t.Fatalf("cannot GET DeliveryServices: %v\n", err)
+ }
+ if len(dses) < 1 {
+ t.Fatalf("GET DeliveryServices returned no dses, must have at least 1 to test ds-servers")
+ }
+ ds := dses[0]
+
+ servers, _, err := TOSession.GetServers()
+ if err != nil {
+ t.Fatalf("cannot GET Servers: %v\n", err)
+ }
+ if len(servers) < 1 {
+ t.Fatalf("GET Servers returned no dses, must have at least 1 to test ds-servers")
+ }
+ server := servers[0]
+
+ _, err = TOSession.CreateDeliveryServiceServers(ds.ID, []int{server.ID}, true)
+ if err != nil {
+ t.Fatalf("POST delivery service servers: %v\n", err)
+ }
+
+ dsServers, _, err := TOSession.GetDeliveryServiceServers()
+ if err != nil {
+ t.Fatalf("GET delivery service servers: %v\n", err)
+ }
+
+ found := false
+ for _, dss := range dsServers {
+ if *dss.DeliveryService == ds.ID && *dss.Server == server.ID {
+ found = true
+ break
+ }
+ }
+ if !found {
+ t.Fatalf("POST delivery service servers returned success, but ds-server not in GET")
+ }
+
+ if err := TOSession.DeleteDeliveryServiceServer(ds.ID, server.ID); err != nil {
+ t.Fatalf("DELETE delivery service server: %v\n", err)
+ }
+
+ dsServers, _, err = TOSession.GetDeliveryServiceServers()
+ if err != nil {
+ t.Fatalf("GET delivery service servers: %v\n", err)
+ }
+
+ found = false
+ for _, dss := range dsServers {
+ if *dss.DeliveryService == ds.ID && *dss.Server == server.ID {
+ found = true
+ break
+ }
+ }
+ if found {
+ t.Fatalf("DELETE delivery service servers returned success, but still in GET")
+ }
+}
diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
index a65fd3f..a497946 100644
--- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
+++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
@@ -143,8 +143,8 @@ func (dss *TODeliveryServiceServer) readDSS(db *sqlx.DB, params map[string]strin
pagestr := params["page"]
orderby := params["orderby"]
limit := 20
- offset := 1
- page := 1
+ offset := 0
+ page := 0
var err error = nil
if limitstr != "" {