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

rshah pushed a commit to branch bugfix/ds-org-servers
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git

commit 13bfe5b60772c417e36a8d1e5ab6dacfa2e633d5
Author: Chatterjee, Srijeet <srijeet_chatter...@comcast.com>
AuthorDate: Mon Feb 5 09:02:53 2024 -0700

    Fix incorrect display of delivery services for an ORG server (#107)
    add changelog
    code review
    ---------
    Co-authored-by: Srijeet Chatterjee <srijeet0...@gmail.com>
---
 .../api/v3/servers_id_deliveryservices_test.go     |  3 +--
 .../api/v4/servers_id_deliveryservices_test.go     |  3 +--
 .../api/v5/servers_id_deliveryservices_test.go     |  3 +--
 .../deliveryservice/servers/servers.go             | 24 +++++++++++++++-------
 4 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/traffic_ops/testing/api/v3/servers_id_deliveryservices_test.go 
b/traffic_ops/testing/api/v3/servers_id_deliveryservices_test.go
index 9dd2f45d03..93c5b376d5 100644
--- a/traffic_ops/testing/api/v3/servers_id_deliveryservices_test.go
+++ b/traffic_ops/testing/api/v3/servers_id_deliveryservices_test.go
@@ -90,9 +90,8 @@ func TestServersIDDeliveryServices(t *testing.T) {
                                                        GetServerID(t, 
"denver-mso-org-01")(),
                                                        []int{
                                                                
GetDeliveryServiceId(t, "ds-top")(),
-                                                               
GetDeliveryServiceId(t, "ds-top-req-cap2")(),
                                                        },
-                                                       2)),
+                                                       1)),
                                },
                                "CONFLICT when SERVER NOT IN SAME CDN as 
DELIVERY SERVICE": {
                                        EndpointID:    GetServerID(t, 
"cdn2-test-edge"),
diff --git a/traffic_ops/testing/api/v4/servers_id_deliveryservices_test.go 
b/traffic_ops/testing/api/v4/servers_id_deliveryservices_test.go
index 87b7e45060..9949eb2a31 100644
--- a/traffic_ops/testing/api/v4/servers_id_deliveryservices_test.go
+++ b/traffic_ops/testing/api/v4/servers_id_deliveryservices_test.go
@@ -92,9 +92,8 @@ func TestServersIDDeliveryServices(t *testing.T) {
                                                        totest.GetServerID(t, 
TOSession, "denver-mso-org-01")(),
                                                        []int{
                                                                
totest.GetDeliveryServiceId(t, TOSession, "ds-top")(),
-                                                               
totest.GetDeliveryServiceId(t, TOSession, "ds-top-req-cap2")(),
                                                        },
-                                                       2)),
+                                                       1)),
                                },
                                "CONFLICT when SERVER NOT IN SAME CDN as 
DELIVERY SERVICE": {
                                        EndpointID:    totest.GetServerID(t, 
TOSession, "cdn2-test-edge"),
diff --git a/traffic_ops/testing/api/v5/servers_id_deliveryservices_test.go 
b/traffic_ops/testing/api/v5/servers_id_deliveryservices_test.go
index 2cae5f3018..4b6f10e3bf 100644
--- a/traffic_ops/testing/api/v5/servers_id_deliveryservices_test.go
+++ b/traffic_ops/testing/api/v5/servers_id_deliveryservices_test.go
@@ -91,9 +91,8 @@ func TestServersIDDeliveryServices(t *testing.T) {
                                                        GetServerID(t, 
"denver-mso-org-01")(),
                                                        []int{
                                                                
GetDeliveryServiceId(t, "ds-top")(),
-                                                               
GetDeliveryServiceId(t, "ds-top-req-cap2")(),
                                                        },
-                                                       2)),
+                                                       1)),
                                },
                                "CONFLICT when SERVER NOT IN SAME CDN as 
DELIVERY SERVICE": {
                                        EndpointID:    GetServerID(t, 
"cdn2-test-edge"),
diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go 
b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
index 1b14e0a930..6eaedd3d04 100644
--- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
+++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
@@ -944,9 +944,20 @@ func (dss *TODSSDeliveryService) Read(h http.Header, 
useIMS bool) ([]interface{}
                where = "WHERE "
        }
 
-       where += `
+       serverID, _ := strconv.Atoi(params["id"])
+       serverInfo, exists, err := dbhelpers.GetServerInfo(serverID, tx)
+       if err != nil {
+               return nil, nil, err, http.StatusInternalServerError, nil
+       }
+       if !exists {
+               return nil, fmt.Errorf("server with ID %d doesn't exist", 
serverID), nil, http.StatusNotFound, nil
+       }
+       if serverInfo.Type == tc.OriginTypeName {
+               where += `ds.id in (SELECT deliveryservice FROM 
deliveryservice_server WHERE server = :server)`
+       } else {
+               where += `
 (ds.id in (
-       SELECT deliveryService FROM deliveryservice_server WHERE server = 
:server
+       SELECT deliveryservice FROM deliveryservice_server WHERE server = 
:server
 ) OR ds.id in (
        SELECT d.id FROM deliveryservice d
        JOIN cdn c ON d.cdn_id = c.id
@@ -960,16 +971,15 @@ func (dss *TODSSDeliveryService) Read(h http.Header, 
useIMS bool) ([]interface{}
        AND d.cdn_id = (SELECT cdn_id FROM server WHERE id = :server)))
 AND
 ((
-(SELECT (t.name = 'ORG') FROM type t JOIN server s ON s.type = t.id WHERE s.id 
= :server)
-OR
-(SELECT COALESCE(ARRAY_AGG(ssc.server_capability), '{}')
-FROM server_server_capability ssc
-WHERE ssc."server" = :server)
+(SELECT COALESCE(ARRAY_AGG(ssc.server_capability), '{}') 
+FROM server_server_capability ssc 
+WHERE ssc."server" = :server) 
 @>
 (
 SELECT COALESCE(ds.required_capabilities, '{}')
 )))
 `
+       }
 
        tenantIDs, err := tenant.GetUserTenantIDListTx(tx, user.TenantID)
        if err != nil {

Reply via email to