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 != "" {