diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bd8157e96..1edf256955 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). ### Fixed - [#7846](https://github.com/apache/trafficcontrol/pull/7846) *Traffic Portal* Increase State character limit +- [#7887](https://github.com/apache/trafficcontrol/pull/7887) *Traffic Ops* Limit Delivery Services returned for GET /servers/{id}/deliveryservices to ones in the same CDN ## [8.0.0] - 2023-09-20 ### Added 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 1ab7e5b840..2cae5f3018 100644 --- a/traffic_ops/testing/api/v5/servers_id_deliveryservices_test.go +++ b/traffic_ops/testing/api/v5/servers_id_deliveryservices_test.go @@ -92,9 +92,8 @@ func TestServersIDDeliveryServices(t *testing.T) { []int{ GetDeliveryServiceId(t, "ds-top")(), GetDeliveryServiceId(t, "ds-top-req-cap2")(), - GetDeliveryServiceId(t, "ds-forked-topology")(), }, - 3)), + 2)), }, "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 f9b0e7d24a..4db6fe2016 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go @@ -948,14 +948,16 @@ func (dss *TODSSDeliveryService) Read(h http.Header, useIMS bool) ([]interface{} (ds.id in ( SELECT deliveryService FROM deliveryservice_server WHERE server = :server ) OR ds.id in ( - SELECT id FROM deliveryservice - WHERE topology in ( + SELECT d.id FROM deliveryservice d + JOIN cdn c ON d.cdn_id = c.id + WHERE d.topology in ( SELECT topology FROM topology_cachegroup WHERE cachegroup = ( SELECT name FROM cachegroup WHERE id = ( SELECT cachegroup FROM server WHERE id = :server - ))))) + ))) + 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)