You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by ma...@apache.org on 2022/05/02 16:52:57 UTC

[trafficcontrol] branch master updated: Update TR to use TO API v3.1 by default (#6778)

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

mattjackson 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 5de5ff844d Update TR to use TO API v3.1 by default (#6778)
5de5ff844d is described below

commit 5de5ff844dabffa9be1ec0319e2c39481e9dab3c
Author: Rawlin Peters <ra...@apache.org>
AuthorDate: Mon May 2 10:52:50 2022 -0600

    Update TR to use TO API v3.1 by default (#6778)
    
    * Update TR to use TO API v3.1 by default
    
    Closes: #6653
    
    * Please weasel
    
    * Make weasel check non-TO-API-specific
---
 .dependency_license                                          |  6 +++---
 CHANGELOG.md                                                 |  1 +
 .../traffic_router/core/dns/SignatureManager.java            |  2 +-
 .../core/ds/LetsEncryptDnsChallengeWatcher.java              |  3 ++-
 .../traffic_router/core/ds/SteeringWatcher.java              |  3 ++-
 .../traffic_router/core/loc/FederationsWatcher.java          |  3 ++-
 .../traffic_router/core/secure/CertificatesClient.java       |  2 +-
 .../traffic_router/core/util/TrafficOpsUtils.java            |  4 +++-
 .../traffic_router/core/external/ConsistentHashTest.java     |  3 ++-
 .../traffic_router/core/external/HttpDataServer.java         | 10 +++++-----
 .../traffic_router/core/external/RouterTest.java             |  3 ++-
 .../traffic_router/core/external/SteeringTest.java           |  5 +++--
 .../test/resources/api/{2.0 => 3.1}/cdns/name/thecdn/sslkeys |  0
 .../api/{2.0 => 3.1}/cdns/name/thecdn/sslkeys-missing-1      |  0
 .../core/src/test/resources/api/{2.0 => 3.1}/federations/all |  0
 .../core/src/test/resources/api/{2.0 => 3.1}/steering        |  0
 .../core/src/test/resources/api/{2.0 => 3.1}/steering2       |  0
 traffic_router/core/src/test/resources/publish/CrConfig.json | 12 ++++++------
 .../core/src/test/resources/publish/CrConfig2.json           | 12 ++++++------
 .../core/src/test/resources/publish/CrConfig3.json           | 12 ++++++------
 .../core/src/test/resources/publish/CrConfig4.json           | 12 ++++++------
 21 files changed, 51 insertions(+), 42 deletions(-)

diff --git a/.dependency_license b/.dependency_license
index 1657efd119..f39518e10a 100644
--- a/.dependency_license
+++ b/.dependency_license
@@ -50,9 +50,9 @@ traffic_ops/app/db/trafficvault/test/.*\.key$, Apache-2.0 # test AES key files
 traffic_ops/app/db/trafficvault/test/data/.*\.dat$, Apache-2.0 # test data files
 ^traffic_ops/experimental/goto/testFiles/, Apache-2.0
 \.pem$, Apache-2.0 # Single certificate file.
-traffic_router/core/src/test/resources/api/2.0/cdns/name/thecdn/sslkeys(-missing-1)?, Apache-2.0 #JSON files with no extension
-traffic_router/core/src/test/resources/api/2.0/steering*, Apache-2.0
-traffic_router/core/src/test/resources/api/2.0/federations/all, Apache-2.0
+traffic_router/core/src/test/resources/api/.*/cdns/name/thecdn/sslkeys(-missing-1)?, Apache-2.0 #JSON files with no extension
+traffic_router/core/src/test/resources/api/.*/steering*, Apache-2.0
+traffic_router/core/src/test/resources/api/.*/federations/all, Apache-2.0
 BUILD_NUMBER$, Apache-2.0
 \.jks, Apache-2.0 # Java Key Store
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6d250c358f..701fdd04ec 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -58,6 +58,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
 - Traffic Monitors now peer with other Traffic Monitors of the same status (e.g. ONLINE with ONLINE, OFFLINE with OFFLINE), instead of all peering with ONLINE.
 - Changed the Traffic Ops user last_authenticated update query to only update once per minute to avoid row-locking when the same user logs in frequently.
 - Added new fields to the monitoring.json snapshot and made Traffic Monitor prefer data in monitoring.json to the CRConfig snapshot
+- Changed the default Traffic Ops API version requsted by Traffic Router from 2.0 to 3.1
 - Added permissions to the role form in traffic portal
 - Updated the Cache Stats Traffic Portal page to use a more performant AG-Grid-based table.
 - Updated the CDNs Traffic Portal page to use a more performant AG-Grid-based table.
diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/SignatureManager.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/SignatureManager.java
index 99e92daa72..803f38226b 100644
--- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/SignatureManager.java
+++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/dns/SignatureManager.java
@@ -272,7 +272,7 @@ public final class SignatureManager {
 		final ObjectMapper mapper = new ObjectMapper();
 
 		try {
-			final String keyUrl = trafficOpsUtils.getUrl("keystore.api.url", "https://${toHostname}/api/2.0/cdns/name/${cdnName}/dnsseckeys");
+			final String keyUrl = trafficOpsUtils.getUrl("keystore.api.url", "https://${toHostname}/api/"+TrafficOpsUtils.TO_API_VERSION+"/cdns/name/${cdnName}/dnsseckeys");
 			final JsonNode config = cacheRegister.getConfig();
 			final int timeout = JsonUtils.optInt(config, "keystore.fetch.timeout", 30000); // socket timeouts are in ms
 			final int retries = JsonUtils.optInt(config, "keystore.fetch.retries", 5);
diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java
index 5a048fd3a7..8cd4600f12 100644
--- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java
+++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/LetsEncryptDnsChallengeWatcher.java
@@ -19,6 +19,7 @@ import org.apache.traffic_control.traffic_router.core.config.ConfigHandler;
 import org.apache.traffic_control.traffic_router.core.util.AbstractResourceWatcher;
 import org.apache.traffic_control.traffic_router.core.util.JsonUtils;
 import org.apache.traffic_control.traffic_router.core.util.JsonUtilsException;
+import org.apache.traffic_control.traffic_router.core.util.TrafficOpsUtils;
 import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -37,7 +38,7 @@ import java.util.List;
 
 public class LetsEncryptDnsChallengeWatcher extends AbstractResourceWatcher {
     private static final Logger LOGGER = LogManager.getLogger(LetsEncryptDnsChallengeWatcher.class);
-    public static final String DEFAULT_LE_DNS_CHALLENGE_URL = "https://${toHostname}/api/2.0/letsencrypt/dnsrecords/";
+    public static final String DEFAULT_LE_DNS_CHALLENGE_URL = "https://${toHostname}/api/"+TrafficOpsUtils.TO_API_VERSION+"/letsencrypt/dnsrecords/";
 
     private String configFile;
     private ConfigHandler configHandler;
diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringWatcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringWatcher.java
index 713eb2d8d5..d57c21f614 100644
--- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringWatcher.java
+++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/ds/SteeringWatcher.java
@@ -16,6 +16,7 @@
 package org.apache.traffic_control.traffic_router.core.ds;
 
 import org.apache.traffic_control.traffic_router.core.util.AbstractResourceWatcher;
+import org.apache.traffic_control.traffic_router.core.util.TrafficOpsUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -23,7 +24,7 @@ public class SteeringWatcher extends AbstractResourceWatcher {
 	private static final Logger LOGGER = LogManager.getLogger(SteeringWatcher.class);
 	private SteeringRegistry steeringRegistry;
 
-	public static final String DEFAULT_STEERING_DATA_URL = "https://${toHostname}/api/2.0/steering";
+	public static final String DEFAULT_STEERING_DATA_URL = "https://${toHostname}/api/"+TrafficOpsUtils.TO_API_VERSION+"/steering";
 
 	public SteeringWatcher() {
 		setDatabaseUrl(DEFAULT_STEERING_DATA_URL);
diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/FederationsWatcher.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/FederationsWatcher.java
index 5fdb1d282c..13434dd766 100644
--- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/FederationsWatcher.java
+++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/loc/FederationsWatcher.java
@@ -18,12 +18,13 @@ package org.apache.traffic_control.traffic_router.core.loc;
 import org.apache.traffic_control.traffic_router.core.util.AbstractResourceWatcher;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.apache.traffic_control.traffic_router.core.util.TrafficOpsUtils;
 
 public class FederationsWatcher extends AbstractResourceWatcher {
     private static final Logger LOGGER = LogManager.getLogger(FederationsWatcher.class);
     private FederationRegistry federationRegistry;
 
-    public static final String DEFAULT_FEDERATION_DATA_URL = "https://${toHostname}/api/2.0/federations/all";
+    public static final String DEFAULT_FEDERATION_DATA_URL = "https://${toHostname}/api/"+TrafficOpsUtils.TO_API_VERSION+"/federations/all";
     public FederationsWatcher() {
         setDatabaseUrl(DEFAULT_FEDERATION_DATA_URL);
         setDefaultDatabaseUrl(DEFAULT_FEDERATION_DATA_URL);
diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesClient.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesClient.java
index a12fd01238..3006516877 100644
--- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesClient.java
+++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/secure/CertificatesClient.java
@@ -77,7 +77,7 @@ public class CertificatesClient {
 			}
 		}
 
-		final String certificatesUrl = trafficOpsUtils.getUrl("certificate.api.url", "https://${toHostname}/api/2.0/cdns/name/${cdnName}/sslkeys");
+		final String certificatesUrl = trafficOpsUtils.getUrl("certificate.api.url", "https://${toHostname}/api/"+TrafficOpsUtils.TO_API_VERSION+"/cdns/name/${cdnName}/sslkeys");
 
 		try {
 			final ProtectedFetcher fetcher = new ProtectedFetcher(trafficOpsUtils.getAuthUrl(), trafficOpsUtils.getAuthJSON().toString(), 15000);
diff --git a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/TrafficOpsUtils.java b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/TrafficOpsUtils.java
index 94a2241033..766d57c431 100644
--- a/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/TrafficOpsUtils.java
+++ b/traffic_router/core/src/main/java/org/apache/traffic_control/traffic_router/core/util/TrafficOpsUtils.java
@@ -23,6 +23,8 @@ import java.util.HashMap;
 import java.util.Map;
 
 public class TrafficOpsUtils {
+	public static final String TO_API_VERSION = "3.1";
+
 	private String username;
 	private String password;
 	private String hostname;
@@ -53,7 +55,7 @@ public class TrafficOpsUtils {
 	}
 
 	public String getAuthUrl() {
-		return getUrl("api.auth.url", "https://${toHostname}/api/2.0/user/login");
+		return getUrl("api.auth.url", "https://${toHostname}/api/"+TO_API_VERSION+"/user/login");
 	}
 
 	public String getUsername() {
diff --git a/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/ConsistentHashTest.java b/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/ConsistentHashTest.java
index 0b277c7533..3757bda213 100644
--- a/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/ConsistentHashTest.java
+++ b/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/ConsistentHashTest.java
@@ -18,6 +18,7 @@ package org.apache.traffic_control.traffic_router.core.external;
 import org.apache.traffic_control.traffic_router.core.util.CidrAddress;
 import org.apache.traffic_control.traffic_router.core.util.ExternalTest;
 import org.apache.traffic_control.traffic_router.core.util.JsonUtils;
+import org.apache.traffic_control.traffic_router.core.util.TrafficOpsUtils;
 import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -58,7 +59,7 @@ public class ConsistentHashTest {
 	public void before() throws Exception {
 		closeableHttpClient = HttpClientBuilder.create().build();
 
-		String resourcePath = "api/2.0/steering";
+		String resourcePath = "api/"+TrafficOpsUtils.TO_API_VERSION+"/steering";
 		InputStream inputStream = getClass().getClassLoader().getResourceAsStream(resourcePath);
 
 		if (inputStream == null) {
diff --git a/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/HttpDataServer.java b/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/HttpDataServer.java
index 3dcd6b4dcd..73830f6e45 100644
--- a/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/HttpDataServer.java
+++ b/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/HttpDataServer.java
@@ -19,6 +19,7 @@ import com.sun.net.httpserver.Headers;
 import com.sun.net.httpserver.HttpExchange;
 import com.sun.net.httpserver.HttpHandler;
 import com.sun.net.httpserver.HttpServer;
+import org.apache.traffic_control.traffic_router.core.util.TrafficOpsUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -32,7 +33,6 @@ import java.net.URI;
 public class HttpDataServer implements HttpHandler {
 	private HttpServer httpServer;
 	private int testHttpServerPort;
-	private static String apiVersion = "2.0";
 
 	public HttpDataServer(int testHttpServerPort) {
 		this.testHttpServerPort = testHttpServerPort;
@@ -120,7 +120,7 @@ public class HttpDataServer implements HttpHandler {
 					path += ".json";
 				}
 
-				if (("api/" + apiVersion + "/user/login").equals(path)) {
+				if (("api/" + TrafficOpsUtils.TO_API_VERSION + "/user/login").equals(path)) {
 					try {
 						Headers headers = httpExchange.getResponseHeaders();
 						headers.add("Content-length", Integer.toString(0));
@@ -133,12 +133,12 @@ public class HttpDataServer implements HttpHandler {
 				}
 
 				// Pretend that someone externally changed steering.json data
-				if (receivedSteeringPost && ("api/" + apiVersion + "/steering").equals(path)) {
-					path = "api/" + apiVersion + "/steering2";
+				if (receivedSteeringPost && ("api/" + TrafficOpsUtils.TO_API_VERSION + "/steering").equals(path)) {
+					path = "api/" + TrafficOpsUtils.TO_API_VERSION + "/steering2";
 				}
 
 				// pretend certificates have not been updated
-				if (!receivedCertificatesPost && ("api/" + apiVersion + "/cdns/name/thecdn/sslkeys").equals(path)) {
+				if (!receivedCertificatesPost && ("api/" + TrafficOpsUtils.TO_API_VERSION + "/cdns/name/thecdn/sslkeys").equals(path)) {
 					path = path.replace("/sslkeys", "/sslkeys-missing-1");
 				}
 
diff --git a/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/RouterTest.java b/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/RouterTest.java
index 232c4c7f32..fd7f5e93fc 100644
--- a/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/RouterTest.java
+++ b/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/RouterTest.java
@@ -17,6 +17,7 @@ package org.apache.traffic_control.traffic_router.core.external;
 
 import org.apache.traffic_control.traffic_router.core.util.ExternalTest;
 import org.apache.traffic_control.traffic_router.core.util.JsonUtils;
+import org.apache.traffic_control.traffic_router.core.util.TrafficOpsUtils;
 import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -106,7 +107,7 @@ public class RouterTest {
 	public void before() throws Exception {
 		ObjectMapper objectMapper = new ObjectMapper(new JsonFactory());
 
-		String resourcePath = "api/2.0/steering";
+		String resourcePath = "api/"+TrafficOpsUtils.TO_API_VERSION+"/steering";
 		InputStream inputStream = getClass().getClassLoader().getResourceAsStream(resourcePath);
 
 		if (inputStream == null) {
diff --git a/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/SteeringTest.java b/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/SteeringTest.java
index 791d7fd3be..f1e0687c2f 100644
--- a/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/SteeringTest.java
+++ b/traffic_router/core/src/test/java/org/apache/traffic_control/traffic_router/core/external/SteeringTest.java
@@ -17,6 +17,7 @@ package org.apache.traffic_control.traffic_router.core.external;
 
 import org.apache.traffic_control.traffic_router.core.http.RouterFilter;
 import org.apache.traffic_control.traffic_router.core.util.ExternalTest;
+import org.apache.traffic_control.traffic_router.core.util.TrafficOpsUtils;
 import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -140,7 +141,7 @@ public class SteeringTest {
 
 	@Before
 	public void before() throws Exception {
-		steeringDeliveryServiceId = setupSteering(targetDomains, targetWeights, "api/2.0/steering");
+		steeringDeliveryServiceId = setupSteering(targetDomains, targetWeights, "api/"+TrafficOpsUtils.TO_API_VERSION+"/steering");
 		setupCrConfig();
 
 		httpClient = HttpClientBuilder.create().disableRedirectHandling().build();
@@ -272,7 +273,7 @@ public class SteeringTest {
 		Map<String, String> domains = new HashMap<>();
 		Map<String, Integer> weights = new HashMap<>();
 
-		setupSteering(domains, weights, "api/2.0/steering2");
+		setupSteering(domains, weights, "api/"+TrafficOpsUtils.TO_API_VERSION+"/steering2");
 
 		List<String> randomPaths = new ArrayList<>();
 
diff --git a/traffic_router/core/src/test/resources/api/2.0/cdns/name/thecdn/sslkeys b/traffic_router/core/src/test/resources/api/3.1/cdns/name/thecdn/sslkeys
similarity index 100%
rename from traffic_router/core/src/test/resources/api/2.0/cdns/name/thecdn/sslkeys
rename to traffic_router/core/src/test/resources/api/3.1/cdns/name/thecdn/sslkeys
diff --git a/traffic_router/core/src/test/resources/api/2.0/cdns/name/thecdn/sslkeys-missing-1 b/traffic_router/core/src/test/resources/api/3.1/cdns/name/thecdn/sslkeys-missing-1
similarity index 100%
rename from traffic_router/core/src/test/resources/api/2.0/cdns/name/thecdn/sslkeys-missing-1
rename to traffic_router/core/src/test/resources/api/3.1/cdns/name/thecdn/sslkeys-missing-1
diff --git a/traffic_router/core/src/test/resources/api/2.0/federations/all b/traffic_router/core/src/test/resources/api/3.1/federations/all
similarity index 100%
rename from traffic_router/core/src/test/resources/api/2.0/federations/all
rename to traffic_router/core/src/test/resources/api/3.1/federations/all
diff --git a/traffic_router/core/src/test/resources/api/2.0/steering b/traffic_router/core/src/test/resources/api/3.1/steering
similarity index 100%
rename from traffic_router/core/src/test/resources/api/2.0/steering
rename to traffic_router/core/src/test/resources/api/3.1/steering
diff --git a/traffic_router/core/src/test/resources/api/2.0/steering2 b/traffic_router/core/src/test/resources/api/3.1/steering2
similarity index 100%
rename from traffic_router/core/src/test/resources/api/2.0/steering2
rename to traffic_router/core/src/test/resources/api/3.1/steering2
diff --git a/traffic_router/core/src/test/resources/publish/CrConfig.json b/traffic_router/core/src/test/resources/publish/CrConfig.json
index 36731a2be6..430799a4df 100644
--- a/traffic_router/core/src/test/resources/publish/CrConfig.json
+++ b/traffic_router/core/src/test/resources/publish/CrConfig.json
@@ -1916,13 +1916,13 @@
     }
   },
   "config": {
-    "certificate.api.url": "http://${toHostname}/api/2.0/cdns/name/${cdnName}/sslkeys",
+    "certificate.api.url": "http://${toHostname}/api/3.1/cdns/name/${cdnName}/sslkeys",
     "client.steering.forced.diversity": "true",
-    "dnschallengemapping.polling.url": "http://${toHostname}/api/2.0/dnsrecords/",
+    "dnschallengemapping.polling.url": "http://${toHostname}/api/3.1/dnsrecords/",
     "dnschallengemapping.polling.interval": "600000",
-    "federationmapping.polling.url": "http://${toHostname}/api/2.0/federations/all",
+    "federationmapping.polling.url": "http://${toHostname}/api/3.1/federations/all",
     "federationmapping.polling.interval": "600000",
-    "steeringmapping.polling.url": "http://${toHostname}/api/2.0/steering",
+    "steeringmapping.polling.url": "http://${toHostname}/api/3.1/steering",
     "steeringmapping.polling.interval": "15000",
     "weight": "1.0",
     "requestHeaders": [
@@ -1941,7 +1941,7 @@
     },
     "coveragezone.polling.interval": "86400000",
     "regional_geoblock.polling.url.renamed": "http://testing-tm-01.cdn.example.com/some/path",
-    "keystore.auth.url": "http://localhost:3000/api/2.0/user/login",
+    "keystore.auth.url": "http://localhost:3000/api/3.1/user/login",
     "neustar.polling.interval": "12800000",
     "geolocation6.polling.interval": "86400000",
     "domain_name": "thecdn.example.com",
@@ -1955,7 +1955,7 @@
     },
     "coveragezone.polling.url": "http://localhost:8889/czf.json",
     "deepcoveragezone.polling.url": "http://localhost:8889/dczmap.json",
-    "api.auth.url": "http://${toHostname}/api/2.0/user/login",
+    "api.auth.url": "http://${toHostname}/api/3.1/user/login",
     "certificates.polling.interval": "10000",
     "dnssec.enabled": "false",
     "edge.dns.routing": "true",
diff --git a/traffic_router/core/src/test/resources/publish/CrConfig2.json b/traffic_router/core/src/test/resources/publish/CrConfig2.json
index 4e6ed55f69..bab383a77f 100644
--- a/traffic_router/core/src/test/resources/publish/CrConfig2.json
+++ b/traffic_router/core/src/test/resources/publish/CrConfig2.json
@@ -1210,12 +1210,12 @@
     }
   },
   "config": {
-    "certificate.api.url": "http://${toHostname}/api/2.0/cdns/name/${cdnName}/sslkeys",
-    "dnschallengemapping.polling.url": "http://${toHostname}/api/2.0/dnsrecords/",
+    "certificate.api.url": "http://${toHostname}/api/3.1/cdns/name/${cdnName}/sslkeys",
+    "dnschallengemapping.polling.url": "http://${toHostname}/api/3.1/dnsrecords/",
     "dnschallengemapping.polling.interval": "600000",
-    "federationmapping.polling.url": "http://${toHostname}/api/2.0/federations/all",
+    "federationmapping.polling.url": "http://${toHostname}/api/3.1/federations/all",
     "federationmapping.polling.interval": "600000",
-    "steeringmapping.polling.url": "http://${toHostname}/api/2.0/steering",
+    "steeringmapping.polling.url": "http://${toHostname}/api/3.1/steering",
     "steeringmapping.polling.interval": "15000",
     "weight": "1.0",
     "requestHeaders": [
@@ -1234,7 +1234,7 @@
     },
     "coveragezone.polling.interval": "86400000",
     "regional_geoblock.polling.url.renamed": "http://testing-tm-01.cdn.example.com/some/path",
-    "keystore.auth.url": "http://localhost:3000/api/2.0/user/login",
+    "keystore.auth.url": "http://localhost:3000/api/3.1/user/login",
     "neustar.polling.interval": "12800000",
     "geolocation6.polling.interval": "86400000",
     "domain_name": "thecdn.example.com",
@@ -1247,7 +1247,7 @@
       "refresh": "28800"
     },
     "coveragezone.polling.url": "http://localhost:8889/czf.json",
-    "api.auth.url": "http://${toHostname}/api/2.0/user/login",
+    "api.auth.url": "http://${toHostname}/api/3.1/user/login",
     "certificates.polling.interval": "10000",
     "dnssec.enabled": "false"
   }
diff --git a/traffic_router/core/src/test/resources/publish/CrConfig3.json b/traffic_router/core/src/test/resources/publish/CrConfig3.json
index 3558077e26..0bf475d12b 100644
--- a/traffic_router/core/src/test/resources/publish/CrConfig3.json
+++ b/traffic_router/core/src/test/resources/publish/CrConfig3.json
@@ -1210,12 +1210,12 @@
     }
   },
   "config": {
-    "certificate.api.url": "http://${toHostname}/api/2.0/cdns/name/${cdnName}/sslkeys",
-    "dnschallengemapping.polling.url": "http://${toHostname}/api/2.0/dnsrecords/",
+    "certificate.api.url": "http://${toHostname}/api/3.1/cdns/name/${cdnName}/sslkeys",
+    "dnschallengemapping.polling.url": "http://${toHostname}/api/3.1/dnsrecords/",
     "dnschallengemapping.polling.interval": "600000",
-    "federationmapping.polling.url": "http://${toHostname}/api/2.0/federations/all",
+    "federationmapping.polling.url": "http://${toHostname}/api/3.1/federations/all",
     "federationmapping.polling.interval": "600000",
-    "steeringmapping.polling.url": "http://${toHostname}/api/2.0/steering",
+    "steeringmapping.polling.url": "http://${toHostname}/api/3.1/steering",
     "steeringmapping.polling.interval": "15000",
     "weight": "1.0",
     "requestHeaders": [
@@ -1234,7 +1234,7 @@
     },
     "coveragezone.polling.interval": "86400000",
     "regional_geoblock.polling.url.renamed": "http://testing-tm-01.cdn.example.com/some/path",
-    "keystore.auth.url": "http://localhost:3000/api/2.0/user/login",
+    "keystore.auth.url": "http://localhost:3000/api/3.1/user/login",
     "neustar.polling.interval": "12800000",
     "geolocation6.polling.interval": "86400000",
     "domain_name": "thecdn.example.com",
@@ -1247,7 +1247,7 @@
       "refresh": "28800"
     },
     "coveragezone.polling.url": "http://localhost:8889/czf.json",
-    "api.auth.url": "http://${toHostname}/api/2.0/user/login",
+    "api.auth.url": "http://${toHostname}/api/3.1/user/login",
     "certificates.polling.interval": "10000",
     "dnssec.enabled": "false"
   }
diff --git a/traffic_router/core/src/test/resources/publish/CrConfig4.json b/traffic_router/core/src/test/resources/publish/CrConfig4.json
index 26f25efe19..b4991d36e4 100644
--- a/traffic_router/core/src/test/resources/publish/CrConfig4.json
+++ b/traffic_router/core/src/test/resources/publish/CrConfig4.json
@@ -1255,12 +1255,12 @@
     }
   },
   "config": {
-    "certificate.api.url": "http://${toHostname}/api/2.0/cdns/name/${cdnName}/sslkeys",
-    "dnschallengemapping.polling.url": "http://${toHostname}/api/2.0/dnsrecords/",
+    "certificate.api.url": "http://${toHostname}/api/3.1/cdns/name/${cdnName}/sslkeys",
+    "dnschallengemapping.polling.url": "http://${toHostname}/api/3.1/dnsrecords/",
     "dnschallengemapping.polling.interval": "600000",
-    "federationmapping.polling.url": "http://${toHostname}/api/2.0/federations/all",
+    "federationmapping.polling.url": "http://${toHostname}/api/3.1/federations/all",
     "federationmapping.polling.interval": "600000",
-    "steeringmapping.polling.url": "http://${toHostname}/api/2.0/steering",
+    "steeringmapping.polling.url": "http://${toHostname}/api/3.1/steering",
     "steeringmapping.polling.interval": "15000",
     "weight": "1.0",
     "requestHeaders": [
@@ -1279,7 +1279,7 @@
     },
     "coveragezone.polling.interval": "86400000",
     "regional_geoblock.polling.url.renamed": "http://testing-tm-01.cdn.example.com/some/path",
-    "keystore.auth.url": "http://localhost:3000/api/2.0/user/login",
+    "keystore.auth.url": "http://localhost:3000/api/3.1/user/login",
     "neustar.polling.interval": "12800000",
     "geolocation6.polling.interval": "86400000",
     "domain_name": "thecdn.example.com",
@@ -1292,7 +1292,7 @@
       "refresh": "28800"
     },
     "coveragezone.polling.url": "http://localhost:8889/czf.json",
-    "api.auth.url": "http://${toHostname}/api/2.0/user/login",
+    "api.auth.url": "http://${toHostname}/api/3.1/user/login",
     "certificates.polling.interval": "10000",
     "dnssec.enabled": "false"
   }