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

rawlin 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 347c0c9  Add ability to filter DS's by the active flag (#5313)
347c0c9 is described below

commit 347c0c93b8b37d9b9cad7bc4e6400e27a92f80b2
Author: Srijeet Chatterjee <[email protected]>
AuthorDate: Tue Nov 24 15:57:18 2020 -0700

    Add ability to filter DS's by the active flag (#5313)
    
    * Add ability to filter DS's by the active flag
    
    * code review fixes
---
 CHANGELOG.md                                       |  1 +
 docs/source/api/v3/deliveryservices.rst            |  2 +
 .../testing/api/v3/deliveryservices_test.go        | 25 ++++++++
 traffic_ops/testing/api/v3/tc-fixtures.json        | 67 ++++++++++++++++++++++
 .../deliveryservice/deliveryservices.go            |  1 +
 5 files changed, 96 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 514fc97..30ccb47 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@ The format is based on [Keep a 
Changelog](http://keepachangelog.com/en/1.0.0/).
 
 ## [unreleased]
 ### Added
+- Traffic Ops: added a feature to get delivery services filtered by the 
`active` flag
 - Traffic Ops: added validation for assigning ORG servers to topology-based 
delivery services
 - Traffic Ops: added validation for topology updates and server 
updates/deletions to ensure that topologies have at least one server per 
cachegroup in each CDN of any assigned delivery services
 - Traffic Ops: added validation for delivery service updates to ensure that 
topologies have at least one server per cachegroup in each CDN of any assigned 
delivery services
diff --git a/docs/source/api/v3/deliveryservices.rst 
b/docs/source/api/v3/deliveryservices.rst
index 5e68fbd..0ae07b5 100644
--- a/docs/source/api/v3/deliveryservices.rst
+++ b/docs/source/api/v3/deliveryservices.rst
@@ -66,6 +66,8 @@ Request Structure
        | page              | no       | Return the n\ :sup:`th` page of 
results, where "n" is the value of this parameter, pages are ``limit`` long and 
the first page is 1.    |
        |                   |          | If ``offset`` was defined, this query 
parameter has no effect. ``limit`` must be defined to make use of ``page``.     
                  |
        
+-------------------+----------+-----------------------------------------------------------------------------------------------------------------------------------------+
+    | active            | no       | Show only the :term:`Delivery Services` 
that have :ref:`ds-active` set or not based on this boolean (whether or not 
they are active)    |
+       
+-------------------+----------+-----------------------------------------------------------------------------------------------------------------------------------------+
 
 Response Structure
 ------------------
diff --git a/traffic_ops/testing/api/v3/deliveryservices_test.go 
b/traffic_ops/testing/api/v3/deliveryservices_test.go
index 2b9099f..5842990 100644
--- a/traffic_ops/testing/api/v3/deliveryservices_test.go
+++ b/traffic_ops/testing/api/v3/deliveryservices_test.go
@@ -56,6 +56,7 @@ func TestDeliveryServices(t *testing.T) {
                GetTestDeliveryServicesIMSAfterChange(t, header)
                UpdateDeliveryServiceTopologyHeaderRewriteFields(t)
                GetTestDeliveryServices(t)
+               GetInactiveTestDeliveryServices(t)
                GetTestDeliveryServicesCapacity(t)
                DeliveryServiceMinorVersionsTest(t)
                DeliveryServiceTenancyTest(t)
@@ -396,6 +397,30 @@ func GetTestDeliveryServices(t *testing.T) {
        }
 }
 
+func GetInactiveTestDeliveryServices(t *testing.T) {
+       params := url.Values{}
+       params.Set("active", strconv.FormatBool(false))
+       inactiveDSes, _, err := TOSession.GetDeliveryServicesV30WithHdr(nil, 
params)
+       if err != nil {
+               t.Errorf("cannot GET DeliveryServices: %v - %v", err, 
inactiveDSes)
+       }
+       for _, ds := range inactiveDSes {
+               if *ds.Active != false {
+                       t.Errorf("expected all delivery services to be 
inactive, but got atleast one active DS")
+               }
+       }
+       params.Set("active", strconv.FormatBool(true))
+       activeDSes, _, err := TOSession.GetDeliveryServicesV30WithHdr(nil, 
params)
+       if err != nil {
+               t.Errorf("cannot GET DeliveryServices: %v - %v", err, 
activeDSes)
+       }
+       for _, ds := range activeDSes {
+               if *ds.Active != true {
+                       t.Errorf("expected all delivery services to be active, 
but got atleast one inactive DS")
+               }
+       }
+}
+
 func GetTestDeliveryServicesCapacity(t *testing.T) {
        actualDSes, _, err := TOSession.GetDeliveryServicesV30WithHdr(nil, nil)
        if err != nil {
diff --git a/traffic_ops/testing/api/v3/tc-fixtures.json 
b/traffic_ops/testing/api/v3/tc-fixtures.json
index 796c630..11bc1a7 100644
--- a/traffic_ops/testing/api/v3/tc-fixtures.json
+++ b/traffic_ops/testing/api/v3/tc-fixtures.json
@@ -1265,6 +1265,73 @@
             "type": "HTTP",
             "xmlId": "top-ds-in-cdn2",
             "anonymousBlockingEnabled": false
+        },
+        {
+            "active": false,
+            "cdnName": "cdn1",
+            "cacheurl": "cacheUrl1",
+            "ccrDnsTtl": 3600,
+            "checkPath": "",
+            "consistentHashQueryParams": [],
+            "deepCachingType": "NEVER",
+            "displayName": "inactiveDSDisplayName",
+            "dnsBypassCname": null,
+            "dnsBypassIp": "",
+            "dnsBypassIp6": "",
+            "dnsBypassTtl": 30,
+            "dscp": 40,
+            "edgeHeaderRewrite": "edgeHeader1\nedgeHeader2",
+            "exampleURLs": [
+                "http://ccr.inactiveds.example.net";,
+                "https://ccr.inactiveds.example.net";
+            ],
+            "fqPacingRate": 0,
+            "geoLimit": 0,
+            "geoLimitCountries": "",
+            "geoLimitRedirectURL": null,
+            "geoProvider": 0,
+            "globalMaxMbps": 0,
+            "globalMaxTps": 0,
+            "httpBypassFqdn": "",
+            "infoUrl": "TBD",
+            "initialDispersion": 1,
+            "ipv6RoutingEnabled": true,
+            "lastUpdated": "2018-04-06 15:48:51+00",
+            "logsEnabled": false,
+            "longDesc": "d s inactive",
+            "longDesc1": "dsinactive",
+            "longDesc2": "dsinactive",
+            "matchList": [
+                {
+                    "pattern": ".*\\.dsinactive\\..*",
+                    "setNumber": 0,
+                    "type": "HOST_REGEXP"
+                }
+            ],
+            "maxDnsAnswers": 0,
+            "midHeaderRewrite": "midHeader1\nmidHeader2",
+            "missLat": 41.881944,
+            "missLong": -87.627778,
+            "multiSiteOrigin": false,
+            "orgServerFqdn": "http://origin.example.net";,
+            "originShield": null,
+            "profileDescription": null,
+            "profileName": null,
+            "protocol": 2,
+            "qstringIgnore": 1,
+            "rangeRequestHandling": 0,
+            "regexRemap": "rr1\nrr2",
+            "regionalGeoBlocking": false,
+            "remapText": "@plugin=tslua.so 
@pparam=/opt/trafficserver/etc/trafficserver/remapPlugin1.lua",
+            "routingName": "ccr-inactiveds",
+            "signed": false,
+            "signingAlgorithm": "url_sig",
+            "sslKeyVersion": 2,
+            "tenant": "tenant1",
+            "tenantName": "tenant1",
+            "type": "HTTP",
+            "xmlId": "inactiveds",
+            "anonymousBlockingEnabled": true
         }
     ],
     "deliveryServicesRegexes": [
diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservices.go 
b/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservices.go
index d8adb48..199058a 100644
--- a/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservices.go
+++ b/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservices.go
@@ -1029,6 +1029,7 @@ func readGetDeliveryServices(h http.Header, params 
map[string]string, tx *sqlx.T
                "signingAlgorithm": {"ds.signing_algorithm", nil},
                "topology":         {"ds.topology", nil},
                "serviceCategory":  {"ds.service_category", nil},
+               "active":           {"ds.active", api.IsBool},
        }
 
        where, orderBy, pagination, queryValues, errs := 
dbhelpers.BuildWhereAndOrderByAndPagination(params, queryParamsToSQLCols)

Reply via email to