You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by da...@apache.org on 2018/03/02 15:55:36 UTC

[incubator-trafficcontrol] 06/12: updated for TimeNoMod on the LastUpdated fields

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

dangogh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-trafficcontrol.git

commit a577ab80c31de7db736a3cc9fc9aad78c500d241
Author: Dewayne Richardson <de...@apache.org>
AuthorDate: Thu Mar 1 10:11:42 2018 -0700

    updated for TimeNoMod on the LastUpdated fields
    
    updated for TimeNoMod on the LastUpdated fields
    
    updated for TimeNoMod on the LastUpdated fields
    
    successful test to invoke the query parameter
---
 lib/go-tc/divisions.go                         |   6 +-
 lib/go-tc/parameters.go                        |   2 +-
 lib/go-tc/regions.go                           |  10 +-
 lib/go-tc/statuses.go                          |   8 +-
 traffic_ops/client/v13/parameter.go            | 133 +++++++++++++
 traffic_ops/testing/api/todb/todb.go           | 180 ++++++++---------
 traffic_ops/testing/api/v13/parameters_test.go | 111 +++++++++++
 traffic_ops/testing/api/v13/tc-fixtures.json   | 260 ++++++++++++-------------
 8 files changed, 479 insertions(+), 231 deletions(-)

diff --git a/lib/go-tc/divisions.go b/lib/go-tc/divisions.go
index ba4fe29..fd782d8 100644
--- a/lib/go-tc/divisions.go
+++ b/lib/go-tc/divisions.go
@@ -24,7 +24,7 @@ type DivisionsResponse struct {
 }
 
 type Division struct {
-	ID          int      `json:"id" db:"id"`
-	LastUpdated Time `json:"lastUpdated" db:"last_updated"`
-	Name        string   `json:"name" db:"name"`
+	ID          int       `json:"id" db:"id"`
+	LastUpdated TimeNoMod `json:"lastUpdated" db:"last_updated"`
+	Name        string    `json:"name" db:"name"`
 }
diff --git a/lib/go-tc/parameters.go b/lib/go-tc/parameters.go
index 5751e87..cbf7afb 100644
--- a/lib/go-tc/parameters.go
+++ b/lib/go-tc/parameters.go
@@ -30,7 +30,7 @@ type ParametersResponse struct {
 type Parameter struct {
 	ConfigFile  string          `json:"configFile" db:"config_file"`
 	ID          int             `json:"id" db:"id"`
-	LastUpdated Time            `json:"lastUpdated" db:"last_updated"`
+	LastUpdated TimeNoMod       `json:"lastUpdated" db:"last_updated"`
 	Name        string          `json:"name" db:"name"`
 	Profiles    json.RawMessage `json:"profiles" db:"profiles"`
 	Secure      bool            `json:"secure" db:"secure"`
diff --git a/lib/go-tc/regions.go b/lib/go-tc/regions.go
index d32556c..379d56e 100644
--- a/lib/go-tc/regions.go
+++ b/lib/go-tc/regions.go
@@ -24,9 +24,9 @@ type RegionsResponse struct {
 }
 
 type Region struct {
-	DivisionName string `json:"divisionName"`
-	Division     int    `json:"division" db:"division"`
-	ID           int    `json:"id" db:"id"`
-	LastUpdated  Time   `json:"lastUpdated" db:"last_updated"`
-	Name         string `json:"name" db:"name"`
+	DivisionName string    `json:"divisionName"`
+	Division     int       `json:"division" db:"division"`
+	ID           int       `json:"id" db:"id"`
+	LastUpdated  TimeNoMod `json:"lastUpdated" db:"last_updated"`
+	Name         string    `json:"name" db:"name"`
 }
diff --git a/lib/go-tc/statuses.go b/lib/go-tc/statuses.go
index 4491f68..253b729 100644
--- a/lib/go-tc/statuses.go
+++ b/lib/go-tc/statuses.go
@@ -24,8 +24,8 @@ type StatusesResponse struct {
 }
 
 type Status struct {
-	Description string `json:"description" db:"description"`
-	ID          int    `json:"id" db:"id"`
-	LastUpdated Time   `json:"lastUpdated" db:"last_updated"`
-	Name        string `json:"name" db:"name"`
+	Description string    `json:"description" db:"description"`
+	ID          int       `json:"id" db:"id"`
+	LastUpdated TimeNoMod `json:"lastUpdated" db:"last_updated"`
+	Name        string    `json:"name" db:"name"`
 }
diff --git a/traffic_ops/client/v13/parameter.go b/traffic_ops/client/v13/parameter.go
new file mode 100644
index 0000000..0de8d0d
--- /dev/null
+++ b/traffic_ops/client/v13/parameter.go
@@ -0,0 +1,133 @@
+/*
+
+   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"
+	"fmt"
+	"net"
+	"net/http"
+
+	"github.com/apache/incubator-trafficcontrol/lib/go-tc"
+)
+
+const (
+	API_v13_Parameters = "/api/1.3/parameters"
+)
+
+// Create a Parameter
+func (to *Session) CreateParameter(pl tc.Parameter) (tc.Alerts, ReqInf, error) {
+
+	var remoteAddr net.Addr
+	reqBody, err := json.Marshal(pl)
+	reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
+	if err != nil {
+		return tc.Alerts{}, reqInf, err
+	}
+	resp, remoteAddr, err := to.request(http.MethodPost, API_v13_Parameters, reqBody)
+	if err != nil {
+		return tc.Alerts{}, reqInf, err
+	}
+	defer resp.Body.Close()
+	var alerts tc.Alerts
+	err = json.NewDecoder(resp.Body).Decode(&alerts)
+	return alerts, reqInf, nil
+}
+
+// Update a Parameter by ID
+func (to *Session) UpdateParameterByID(id int, pl tc.Parameter) (tc.Alerts, ReqInf, error) {
+
+	var remoteAddr net.Addr
+	reqBody, err := json.Marshal(pl)
+	reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
+	if err != nil {
+		return tc.Alerts{}, reqInf, err
+	}
+	route := fmt.Sprintf("%s/%d", API_v13_Parameters, id)
+	resp, remoteAddr, err := to.request(http.MethodPut, route, reqBody)
+	if err != nil {
+		return tc.Alerts{}, reqInf, err
+	}
+	defer resp.Body.Close()
+	var alerts tc.Alerts
+	err = json.NewDecoder(resp.Body).Decode(&alerts)
+	return alerts, reqInf, nil
+}
+
+// Returns a list of Parameters
+func (to *Session) GetParameters() ([]tc.Parameter, ReqInf, error) {
+	resp, remoteAddr, err := to.request(http.MethodGet, API_v13_Parameters, nil)
+	reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
+	if err != nil {
+		return nil, reqInf, err
+	}
+	defer resp.Body.Close()
+
+	var data tc.ParametersResponse
+	err = json.NewDecoder(resp.Body).Decode(&data)
+	return data.Response, reqInf, nil
+}
+
+// GET a Parameter by the Parameter ID
+func (to *Session) GetParameterByID(id int) ([]tc.Parameter, ReqInf, error) {
+	route := fmt.Sprintf("%s/%d", API_v13_Parameters, id)
+	resp, remoteAddr, err := to.request(http.MethodGet, route, nil)
+	reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
+	if err != nil {
+		return nil, reqInf, err
+	}
+	defer resp.Body.Close()
+
+	var data tc.ParametersResponse
+	if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
+		return nil, reqInf, err
+	}
+
+	return data.Response, reqInf, nil
+}
+
+// GET a Parameter by the Parameter name
+func (to *Session) GetParameterByName(name string) ([]tc.Parameter, ReqInf, error) {
+	url := API_v13_Parameters + "?name=" + name
+	fmt.Printf("url ---> %v\n", url)
+	resp, remoteAddr, err := to.request(http.MethodGet, url, nil)
+	reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
+	if err != nil {
+		return nil, reqInf, err
+	}
+	defer resp.Body.Close()
+
+	var data tc.ParametersResponse
+	if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
+		return nil, reqInf, err
+	}
+
+	return data.Response, reqInf, nil
+}
+
+// DELETE a Parameter by ID
+func (to *Session) DeleteParameterByID(id int) (tc.Alerts, ReqInf, error) {
+	route := fmt.Sprintf("%s/%d", API_v13_Parameters, id)
+	resp, remoteAddr, err := to.request(http.MethodDelete, route, nil)
+	reqInf := ReqInf{CacheHitStatus: CacheHitStatusMiss, RemoteAddr: remoteAddr}
+	if err != nil {
+		return tc.Alerts{}, reqInf, err
+	}
+	defer resp.Body.Close()
+	var alerts tc.Alerts
+	err = json.NewDecoder(resp.Body).Decode(&alerts)
+	return alerts, reqInf, nil
+}
diff --git a/traffic_ops/testing/api/todb/todb.go b/traffic_ops/testing/api/todb/todb.go
index 1623b5f..d442cd0 100644
--- a/traffic_ops/testing/api/todb/todb.go
+++ b/traffic_ops/testing/api/todb/todb.go
@@ -80,35 +80,12 @@ func SetupTestData(cfg *config.Config, db *sql.DB) error {
 		os.Exit(1)
 	}
 
-	err = SetupParameters(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up parameter %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupProfiles(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up profile %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupProfileParameters(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up parameter %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
 	err = SetupTypes(cfg, db)
 	if err != nil {
 		fmt.Printf("\nError setting up type %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
 		os.Exit(1)
 	}
 
-	err = SetupCacheGroups(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up cachegroup %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
 	err = SetupDivisions(cfg, db)
 	if err != nil {
 		fmt.Printf("\nError setting up division %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
@@ -121,71 +98,98 @@ func SetupTestData(cfg *config.Config, db *sql.DB) error {
 		os.Exit(1)
 	}
 
-	err = SetupPhysLocations(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up phys_location %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupServers(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up server %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupAsns(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up asn %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupDeliveryServices(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up deliveryservice %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupRegexes(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up regex %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupDeliveryServiceRegexes(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up deliveryservice_regex %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupDeliveryServiceTmUsers(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up deliveryservice_tmuser %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupDeliveryServiceServers(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up deliveryservice_server %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupJobStatuses(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up job_status %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupJobAgents(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up job_agent %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
-
-	err = SetupJobs(cfg, db)
-	if err != nil {
-		fmt.Printf("\nError setting up job %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
-		os.Exit(1)
-	}
+	/*
+		err = SetupParameters(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up parameter %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupProfiles(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up profile %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupProfileParameters(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up parameter %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupCacheGroups(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up cachegroup %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+
+		err = SetupPhysLocations(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up phys_location %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupServers(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up server %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupAsns(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up asn %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupDeliveryServices(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up deliveryservice %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupRegexes(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up regex %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupDeliveryServiceRegexes(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up deliveryservice_regex %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupDeliveryServiceTmUsers(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up deliveryservice_tmuser %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupDeliveryServiceServers(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up deliveryservice_server %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupJobStatuses(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up job_status %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupJobAgents(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up job_agent %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+
+		err = SetupJobs(cfg, db)
+		if err != nil {
+			fmt.Printf("\nError setting up job %s - %s, %v\n", cfg.TrafficOps.URL, cfg.TrafficOps.User, err)
+			os.Exit(1)
+		}
+	*/
 
 	return err
 }
diff --git a/traffic_ops/testing/api/v13/parameters_test.go b/traffic_ops/testing/api/v13/parameters_test.go
new file mode 100644
index 0000000..50004c2
--- /dev/null
+++ b/traffic_ops/testing/api/v13/parameters_test.go
@@ -0,0 +1,111 @@
+/*
+
+   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 (
+	"fmt"
+	"testing"
+
+	"github.com/apache/incubator-trafficcontrol/lib/go-log"
+	tc "github.com/apache/incubator-trafficcontrol/lib/go-tc"
+)
+
+func TestParameters(t *testing.T) {
+
+	CreateTestParameters(t)
+	UpdateTestParameters(t)
+	GetTestParameters(t)
+	DeleteTestParameters(t)
+
+}
+
+func CreateTestParameters(t *testing.T) {
+
+	for _, pl := range testData.Parameters {
+		resp, _, err := TOSession.CreateParameter(pl)
+		log.Debugln("Response: ", resp)
+		if err != nil {
+			t.Errorf("could not CREATE phys_locations: %v\n", err)
+		}
+	}
+
+}
+
+func UpdateTestParameters(t *testing.T) {
+
+	firstParameter := testData.Parameters[0]
+	fmt.Printf("firstParameter ---> %v\n", firstParameter)
+	// Retrieve the Parameter by name so we can get the id for the Update
+	resp, _, err := TOSession.GetParameterByName(firstParameter.Name)
+	fmt.Printf("resp ---> %v\n", resp)
+	if err != nil {
+		t.Errorf("cannot GET Parameter by name: %v - %v\n", firstParameter.Name, err)
+	}
+	remoteParameter := resp[0]
+	expectedParameterName := "UPDATED"
+	remoteParameter.Name = expectedParameterName
+	var alert tc.Alerts
+	alert, _, err = TOSession.UpdateParameterByID(remoteParameter.ID, remoteParameter)
+	if err != nil {
+		t.Errorf("cannot UPDATE Parameter by id: %v - %v\n", err, alert)
+	}
+
+	// Retrieve the Parameter to check Parameter name got updated
+	resp, _, err = TOSession.GetParameterByID(remoteParameter.ID)
+	if err != nil {
+		t.Errorf("cannot GET Parameter by name: %v - %v\n", firstParameter.Name, err)
+	}
+	respParameter := resp[0]
+	if respParameter.Name != expectedParameterName {
+		t.Errorf("results do not match actual: %s, expected: %s\n", respParameter.Name, expectedParameterName)
+	}
+
+}
+
+func GetTestParameters(t *testing.T) {
+
+	for _, pl := range testData.Parameters {
+		resp, _, err := TOSession.GetParameterByName(pl.Name)
+		if err != nil {
+			t.Errorf("cannot GET Parameter by name: %v - %v\n", err, resp)
+		}
+	}
+}
+
+func DeleteTestParameters(t *testing.T) {
+
+	pl := testData.Parameters[1]
+	// Retrieve the Parameter by name so we can get the id for the Update
+	resp, _, err := TOSession.GetParameterByName(pl.Name)
+	if err != nil {
+		t.Errorf("cannot GET Parameter by name: %v - %v\n", pl.Name, err)
+	}
+	respParameter := resp[0]
+
+	delResp, _, err := TOSession.DeleteParameterByID(respParameter.ID)
+	if err != nil {
+		t.Errorf("cannot DELETE Parameter by name: %v - %v\n", err, delResp)
+	}
+
+	// Retrieve the Parameter to see if it got deleted
+	pls, _, err := TOSession.GetParameterByName(pl.Name)
+	if err != nil {
+		t.Errorf("error deleting Parameter name: %s\n", err.Error())
+	}
+	if len(pls) > 0 {
+		t.Errorf("expected Parameter name: %s to be deleted\n", pl.Name)
+	}
+}
diff --git a/traffic_ops/testing/api/v13/tc-fixtures.json b/traffic_ops/testing/api/v13/tc-fixtures.json
index f0723a6..de02966 100644
--- a/traffic_ops/testing/api/v13/tc-fixtures.json
+++ b/traffic_ops/testing/api/v13/tc-fixtures.json
@@ -172,497 +172,497 @@
     ],
     "parameters": [
         {
-            "config_file": "rascal.properties",
+            "configFile": "rascal.properties",
             "id": 4,
-            "last_updated": "2018-01-19T19:01:21.455131+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.455131+00:00",
             "name": "health.threshold.loadavg",
             "secure": false,
             "value": "25.0"
         },
         {
-            "config_file": "rascal.properties",
+            "configFile": "rascal.properties",
             "id": 5,
-            "last_updated": "2018-01-19T19:01:21.472279+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.472279+00:00",
             "name": "health.threshold.availableBandwidthInKbps",
             "secure": false,
             "value": ">1750000"
         },
         {
-            "config_file": "rascal.properties",
+            "configFile": "rascal.properties",
             "id": 6,
-            "last_updated": "2018-01-19T19:01:21.489534+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.489534+00:00",
             "name": "history.count",
             "secure": false,
             "value": "30"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 7,
-            "last_updated": "2018-01-19T19:01:21.503311+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.503311+00:00",
             "name": "key0",
             "secure": false,
             "value": "HOOJ3Ghq1x4gChp3iQkqVTcPlOj8UCi3"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 8,
-            "last_updated": "2018-01-19T19:01:21.505157+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.505157+00:00",
             "name": "key1",
             "secure": false,
             "value": "_9LZYkRnfCS0rCBF7fTQzM9Scwlp2FhO"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 9,
-            "last_updated": "2018-01-19T19:01:21.508548+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.508548+00:00",
             "name": "key2",
             "secure": false,
             "value": "AFpkxfc4oTiyFSqtY6_ohjt3V80aAIxS"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 10,
-            "last_updated": "2018-01-19T19:01:21.401781+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.401781+00:00",
             "name": "key3",
             "secure": false,
             "value": "AL9kzs_SXaRZjPWH8G5e2m4ByTTzkzlc"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 11,
-            "last_updated": "2018-01-19T19:01:21.406601+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.406601+00:00",
             "name": "key4",
             "secure": false,
             "value": "poP3n3szbD1U4vx1xQXV65BvkVgWzfN8"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 12,
-            "last_updated": "2018-01-19T19:01:21.408784+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.408784+00:00",
             "name": "key5",
             "secure": false,
             "value": "1ir32ng4C4w137p5oq72kd2wqmIZUrya"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 13,
-            "last_updated": "2018-01-19T19:01:21.410854+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.410854+00:00",
             "name": "key6",
             "secure": false,
             "value": "B1qLptn2T1b_iXeTCWDcVuYvANtH139f"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 14,
-            "last_updated": "2018-01-19T19:01:21.412716+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.412716+00:00",
             "name": "key7",
             "secure": false,
             "value": "PiCV_5OODMzBbsNFMWsBxcQ8v1sK0TYE"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 15,
-            "last_updated": "2018-01-19T19:01:21.414638+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.414638+00:00",
             "name": "key8",
             "secure": false,
             "value": "Ggpv6DqXDvt2s1CETPBpNKwaLk4fTM9l"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 16,
-            "last_updated": "2018-01-19T19:01:21.416551+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.416551+00:00",
             "name": "key9",
             "secure": false,
             "value": "qPlVT_s6kL37aqb6hipDm4Bt55S72mI7"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 17,
-            "last_updated": "2018-01-19T19:01:21.418689+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.418689+00:00",
             "name": "key10",
             "secure": false,
             "value": "BsI5A9EmWrobIS1FeuOs1z9fm2t2WSBe"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 18,
-            "last_updated": "2018-01-19T19:01:21.420467+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.420467+00:00",
             "name": "key11",
             "secure": false,
             "value": "A54y66NCIj897GjS4yA9RrsSPtCUnQXP"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 19,
-            "last_updated": "2018-01-19T19:01:21.422414+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.422414+00:00",
             "name": "key12",
             "secure": false,
             "value": "2jZH0NDPSJttIr4c2KP510f47EKqTQAu"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 20,
-            "last_updated": "2018-01-19T19:01:21.424435+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.424435+00:00",
             "name": "key13",
             "secure": false,
             "value": "XduT2FBjBmmVID5JRB5LEf9oR5QDtBgC"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 21,
-            "last_updated": "2018-01-19T19:01:21.426125+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.426125+00:00",
             "name": "key14",
             "secure": false,
             "value": "D9nH0SvK_0kP5w8QNd1UFJ28ulFkFKPn"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 22,
-            "last_updated": "2018-01-19T19:01:21.427797+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.427797+00:00",
             "name": "key15",
             "secure": false,
             "value": "udKXWYNwbXXweaaLzaKDGl57OixnIIcm"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 23,
-            "last_updated": "2018-01-19T19:01:21.429365+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.429365+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver"
         },
         {
-            "config_file": "url_sig_cdl-c2.config",
+            "configFile": "url_sig_cdl-c2.config",
             "id": 24,
-            "last_updated": "2018-01-19T19:01:21.431062+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.431062+00:00",
             "name": "error_url",
             "secure": false,
             "value": "403"
         },
         {
-            "config_file": "records.config",
+            "configFile": "records.config",
             "id": 25,
-            "last_updated": "2018-01-19T19:01:21.432692+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.432692+00:00",
             "name": "CONFIG proxy.config.allocator.debug_filter",
             "secure": false,
             "value": "INT 0"
         },
         {
-            "config_file": "records.config",
+            "configFile": "records.config",
             "id": 26,
-            "last_updated": "2018-01-19T19:01:21.434425+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.434425+00:00",
             "name": "CONFIG proxy.config.allocator.enable_reclaim",
             "secure": false,
             "value": "INT 0"
         },
         {
-            "config_file": "records.config",
+            "configFile": "records.config",
             "id": 27,
-            "last_updated": "2018-01-19T19:01:21.435957+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.435957+00:00",
             "name": "CONFIG proxy.config.allocator.max_overage",
             "secure": false,
             "value": "INT 3"
         },
         {
-            "config_file": "records.config",
+            "configFile": "records.config",
             "id": 28,
-            "last_updated": "2018-01-19T19:01:21.437496+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.437496+00:00",
             "name": "CONFIG proxy.config.diags.show_location",
             "secure": false,
             "value": "INT 0"
         },
         {
-            "config_file": "records.config",
+            "configFile": "records.config",
             "id": 29,
-            "last_updated": "2018-01-19T19:01:21.439033+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.439033+00:00",
             "name": "CONFIG proxy.config.http.cache.allow_empty_doc",
             "secure": false,
             "value": "INT 0"
         },
         {
-            "config_file": "records.config",
+            "configFile": "records.config",
             "id": 30,
-            "last_updated": "2018-01-19T19:01:21.440502+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.440502+00:00",
             "name": "LOCAL proxy.config.cache.interim.storage",
             "secure": false,
             "value": "STRING NULL"
         },
         {
-            "config_file": "records.config",
+            "configFile": "records.config",
             "id": 31,
-            "last_updated": "2018-01-19T19:01:21.441933+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.441933+00:00",
             "name": "CONFIG proxy.config.http.parent_proxy.file",
             "secure": false,
             "value": "STRING parent.config"
         },
         {
-            "config_file": "12M_facts",
+            "configFile": "12M_facts",
             "id": 32,
-            "last_updated": "2018-01-19T19:01:21.443436+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.443436+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/ort"
         },
         {
-            "config_file": "cacheurl.config",
+            "configFile": "cacheurl.config",
             "id": 33,
-            "last_updated": "2018-01-19T19:01:21.444898+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.444898+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver/"
         },
         {
-            "config_file": "ip_allow.config",
+            "configFile": "ip_allow.config",
             "id": 34,
-            "last_updated": "2018-01-19T19:01:21.446396+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.446396+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver"
         },
         {
-            "config_file": "plugin.config",
+            "configFile": "plugin.config",
             "id": 35,
-            "last_updated": "2018-01-19T19:01:21.447837+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.447837+00:00",
             "name": "astats_over_http.so",
             "secure": false,
             "value": "_astats 33.101.99.100,172.39.19.39,172.39.19.49,172.39.19.49,172.39.29.49"
         },
         {
-            "config_file": "crontab_root",
+            "configFile": "crontab_root",
             "id": 36,
-            "last_updated": "2018-01-19T19:01:21.449259+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.449259+00:00",
             "name": "location",
             "secure": false,
             "value": "/var/spool/cron"
         },
         {
-            "config_file": "hdr_rw_cdl-c2.config",
+            "configFile": "hdr_rw_cdl-c2.config",
             "id": 37,
-            "last_updated": "2018-01-19T19:01:21.450778+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.450778+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver"
         },
         {
-            "config_file": "50-ats.rules",
+            "configFile": "50-ats.rules",
             "id": 38,
-            "last_updated": "2018-01-19T19:01:21.452196+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.452196+00:00",
             "name": "location",
             "secure": false,
             "value": "/etc/udev/rules.d/"
         },
         {
-            "config_file": "parent.config",
+            "configFile": "parent.config",
             "id": 39,
-            "last_updated": "2018-01-19T19:01:21.453716+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.453716+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver/"
         },
         {
-            "config_file": "remap.config",
+            "configFile": "remap.config",
             "id": 40,
-            "last_updated": "2018-01-19T19:01:21.456753+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.456753+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver/"
         },
         {
-            "config_file": "drop_qstring.config",
+            "configFile": "drop_qstring.config",
             "id": 41,
-            "last_updated": "2018-01-19T19:01:21.45835+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.45835+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver"
         },
         {
-            "config_file": "logs_xml.config",
+            "configFile": "logs_xml.config",
             "id": 43,
-            "last_updated": "2018-01-19T19:01:21.461206+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.461206+00:00",
             "name": "LogFormat.Name",
             "secure": false,
             "value": "custom_ats_2"
         },
         {
-            "config_file": "logs_xml.config",
+            "configFile": "logs_xml.config",
             "id": 44,
-            "last_updated": "2018-01-19T19:01:21.462772+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.462772+00:00",
             "name": "LogObject.Format",
             "secure": false,
             "value": "custom_ats_2"
         },
         {
-            "config_file": "logs_xml.config",
+            "configFile": "logs_xml.config",
             "id": 45,
-            "last_updated": "2018-01-19T19:01:21.464259+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.464259+00:00",
             "name": "LogObject.Filename",
             "secure": false,
             "value": "custom_ats_2"
         },
         {
-            "config_file": "cache.config",
+            "configFile": "cache.config",
             "id": 46,
-            "last_updated": "2018-01-19T19:01:21.465717+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.465717+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver/"
         },
         {
-            "config_file": "records.config",
+            "configFile": "records.config",
             "id": 47,
-            "last_updated": "2018-01-19T19:01:21.467349+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.467349+00:00",
             "name": "CONFIG proxy.config.cache.control.filename",
             "secure": false,
             "value": "STRING cache.config"
         },
         {
-            "config_file": "plugin.config",
+            "configFile": "plugin.config",
             "id": 48,
-            "last_updated": "2018-01-19T19:01:21.469075+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.469075+00:00",
             "name": "regex_revalidate.so",
             "secure": false,
             "value": "--config regex_revalidate.config"
         },
         {
-            "config_file": "regex_revalidate.config",
+            "configFile": "regex_revalidate.config",
             "id": 49,
-            "last_updated": "2018-01-19T19:01:21.470677+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.470677+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver"
         },
         {
-            "config_file": "hosting.config",
+            "configFile": "hosting.config",
             "id": 50,
-            "last_updated": "2018-01-19T19:01:21.474023+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.474023+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver/"
         },
         {
-            "config_file": "volume.config",
+            "configFile": "volume.config",
             "id": 51,
-            "last_updated": "2018-01-19T19:01:21.475515+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.475515+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver/"
         },
         {
-            "config_file": "astats.config",
+            "configFile": "astats.config",
             "id": 52,
-            "last_updated": "2018-01-19T19:01:21.477074+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.477074+00:00",
             "name": "allow_ip",
             "secure": false,
             "value": "127.0.0.1,172.39.0.0/16,33.101.99.0/24"
         },
         {
-            "config_file": "astats.config",
+            "configFile": "astats.config",
             "id": 53,
-            "last_updated": "2018-01-19T19:01:21.478516+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.478516+00:00",
             "name": "allow_ip6",
             "secure": false,
             "value": "::1,2033:D011:3300::336/64,2033:D011:3300::335/64,2033:D021:3300::333/64,2033:D021:3300::334/64"
         },
         {
-            "config_file": "astats.config",
+            "configFile": "astats.config",
             "id": 54,
-            "last_updated": "2018-01-19T19:01:21.480143+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.480143+00:00",
             "name": "record_types",
             "secure": false,
             "value": "144"
         },
         {
-            "config_file": "astats.config",
+            "configFile": "astats.config",
             "id": 55,
-            "last_updated": "2018-01-19T19:01:21.481582+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.481582+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver"
         },
         {
-            "config_file": "astats.config",
+            "configFile": "astats.config",
             "id": 56,
-            "last_updated": "2018-01-19T19:01:21.482959+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.482959+00:00",
             "name": "path",
             "secure": false,
             "value": "_astats"
         },
         {
-            "config_file": "storage.config",
+            "configFile": "storage.config",
             "id": 57,
-            "last_updated": "2018-01-19T19:01:21.484501+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.484501+00:00",
             "name": "location",
             "secure": false,
             "value": "/opt/trafficserver/etc/trafficserver/"
         },
         {
-            "config_file": "storage.config",
+            "configFile": "storage.config",
             "id": 58,
-            "last_updated": "2018-01-19T19:01:21.48625+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.48625+00:00",
             "name": "Drive_Prefix",
             "secure": false,
             "value": "/dev/sd"
         },
         {
-            "config_file": "storage.config",
+            "configFile": "storage.config",
             "id": 59,
-            "last_updated": "2018-01-19T19:01:21.487958+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.487958+00:00",
             "name": "Drive_Letters",
             "secure": false,
             "value": "b,c,d,e,f,g,h,i,j,k,l,m,n,o"
         },
         {
-            "config_file": "storage.config",
+            "configFile": "storage.config",
             "id": 60,
-            "last_updated": "2018-01-19T19:01:21.491181+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.491181+00:00",
             "name": "Disk_Volume",
             "secure": false,
             "value": "1"
         },
         {
-            "config_file": "records.config",
+            "configFile": "records.config",
             "id": 61,
-            "last_updated": "2018-01-19T19:01:21.49285+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.49285+00:00",
             "name": "CONFIG proxy.config.hostdb.storage_size",
             "secure": false,
             "value": "INT 33554432"
         },
         {
-            "config_file": "regex_revalidate.config",
+            "configFile": "regex_revalidate.config",
             "id": 63,
-            "last_updated": "2018-01-19T19:01:21.494468+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.494468+00:00",
             "name": "maxRevalDurationDays",
             "secure": false,
             "value": "3"
         },
         {
-            "config_file": "regex_revalidate.config",
+            "configFile": "regex_revalidate.config",
             "id": 64,
-            "last_updated": "2018-01-19T19:01:21.496195+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.496195+00:00",
             "name": "maxRevalDurationDays",
             "secure": false,
             "value": "90"
         },
         {
-            "config_file": "whaterver.config",
+            "configFile": "whaterver.config",
             "id": 65,
-            "last_updated": "2018-01-19T19:01:21.497838+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.497838+00:00",
             "name": "unassigned_parameter_1",
             "secure": false,
             "value": "852"
         },
         {
-            "config_file": "package",
+            "configFile": "package",
             "id": 66,
-            "last_updated": "2018-01-19T19:01:21.499423+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.499423+00:00",
             "name": "trafficserver",
             "secure": false,
             "value": "5.3.2-765.f4354b9.el7.centos.x86_64"
         },
         {
-            "config_file": "global",
+            "configFile": "global",
             "id": 67,
-            "last_updated": "2018-01-19T19:01:21.501151+00:00",
+            "lastUpdated": "2018-01-19T19:01:21.501151+00:00",
             "name": "use_tenancy",
             "secure": false,
             "value": "1"
@@ -674,12 +674,12 @@
             "city": "Denver",
             "comments": null,
             "email": null,
-            "last_updated": "2018-01-19T21:19:32.081465+00:00",
+            "lastUpdated": "2018-01-19T21:19:32.081465+00:00",
             "name": "Denver",
             "phone": "303-111-1111",
             "poc": null,
             "regionId": 100,
-            "short_name": "denver",
+            "shortName": "denver",
             "state": "CO",
             "zip": "80202"
         },
@@ -688,12 +688,12 @@
             "city": "Boulder",
             "comments": null,
             "email": null,
-            "last_updated": "2018-01-19T21:19:32.086195+00:00",
+            "lastUpdated": "2018-01-19T21:19:32.086195+00:00",
             "name": "Boulder",
             "phone": "303-222-2222",
             "poc": null,
             "regionId": 100,
-            "short_name": "boulder",
+            "shortName": "boulder",
             "state": "CO",
             "zip": "80301"
         },
@@ -702,12 +702,12 @@
             "city": "Atlanta",
             "comments": null,
             "email": null,
-            "last_updated": "2018-01-19T21:19:32.089538+00:00",
+            "lastUpdated": "2018-01-19T21:19:32.089538+00:00",
             "name": "HotAtlanta",
             "phone": "404-222-2222",
             "poc": null,
             "regionId": 100,
-            "short_name": "atlanta",
+            "shortName": "atlanta",
             "state": "GA",
             "zip": "30301"
         }

-- 
To stop receiving notification emails like this one, please contact
dangogh@apache.org.