rawlinp closed pull request #2975: Add TO client UpdateDeliveryServiceNullable, 
GetDeliveryServicesNullable, GetDeliveryServiceNullable
URL: https://github.com/apache/trafficcontrol/pull/2975
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/traffic_ops/client/deliveryservice.go 
b/traffic_ops/client/deliveryservice.go
index da2b71eb5..231384f1b 100644
--- a/traffic_ops/client/deliveryservice.go
+++ b/traffic_ops/client/deliveryservice.go
@@ -85,6 +85,31 @@ func (to *Session) GetDeliveryService(id string) 
(*tc.DeliveryService, ReqInf, e
        return &data.Response[0], reqInf, nil
 }
 
+func (to *Session) GetDeliveryServicesNullable() 
([]tc.DeliveryServiceNullable, ReqInf, error) {
+       data := struct {
+               Response []tc.DeliveryServiceNullable `json:"response"`
+       }{}
+       reqInf, err := get(to, deliveryServicesEp(), &data)
+       if err != nil {
+               return nil, reqInf, err
+       }
+       return data.Response, reqInf, nil
+}
+
+func (to *Session) GetDeliveryServiceNullable(id string) 
(*tc.DeliveryServiceNullable, ReqInf, error) {
+       data := struct {
+               Response []tc.DeliveryServiceNullable `json:"response"`
+       }{}
+       reqInf, err := get(to, deliveryServiceEp(id), &data)
+       if err != nil {
+               return nil, reqInf, err
+       }
+       if len(data.Response) == 0 {
+               return nil, reqInf, nil
+       }
+       return &data.Response[0], reqInf, nil
+}
+
 // CreateDeliveryService creates the DeliveryService it's passed
 func (to *Session) CreateDeliveryService(ds *tc.DeliveryService) 
(*tc.CreateDeliveryServiceResponse, error) {
        var data tc.CreateDeliveryServiceResponse
@@ -131,6 +156,20 @@ func (to *Session) UpdateDeliveryService(id string, ds 
*tc.DeliveryService) (*tc
        return &data, nil
 }
 
+func (to *Session) UpdateDeliveryServiceNullable(id string, ds 
*tc.DeliveryServiceNullable) (*tc.UpdateDeliveryServiceResponse, error) {
+       var data tc.UpdateDeliveryServiceResponse
+       jsonReq, err := json.Marshal(ds)
+       if err != nil {
+               return nil, err
+       }
+       _, err = put(to, deliveryServiceEp(id), jsonReq, &data)
+       if err != nil {
+               return nil, err
+       }
+
+       return &data, nil
+}
+
 // DeleteDeliveryService deletes the DeliveryService matching the ID it's 
passed
 func (to *Session) DeleteDeliveryService(id string) 
(*tc.DeleteDeliveryServiceResponse, error) {
        var data tc.DeleteDeliveryServiceResponse
diff --git a/traffic_ops/testing/api/v14/deliveryservices_test.go 
b/traffic_ops/testing/api/v14/deliveryservices_test.go
index fd2bf53fa..94f5ef489 100644
--- a/traffic_ops/testing/api/v14/deliveryservices_test.go
+++ b/traffic_ops/testing/api/v14/deliveryservices_test.go
@@ -35,6 +35,7 @@ func TestDeliveryServices(t *testing.T) {
        CreateTestServers(t)
        CreateTestDeliveryServices(t)
        UpdateTestDeliveryServices(t)
+       UpdateNullableTestDeliveryServices(t)
        GetTestDeliveryServices(t)
        DeleteTestDeliveryServices(t)
        DeleteTestServers(t)
@@ -182,6 +183,69 @@ func UpdateTestDeliveryServices(t *testing.T) {
        }
 }
 
+func UpdateNullableTestDeliveryServices(t *testing.T) {
+       failed := false
+       firstDS := testData.DeliveryServices[0]
+
+       dses, _, err := TOSession.GetDeliveryServicesNullable()
+       if err != nil {
+               failed = true
+               t.Fatalf("cannot GET Delivery Services: %v\n", err)
+       }
+
+       remoteDS := tc.DeliveryServiceNullable{}
+       found := false
+       for _, ds := range dses {
+               if ds.XMLID == nil || ds.ID == nil {
+                       continue
+               }
+               if *ds.XMLID == firstDS.XMLID {
+                       found = true
+                       remoteDS = ds
+                       break
+               }
+       }
+       if !found {
+               failed = true
+               t.Fatalf("GET Delivery Services missing: %v\n", firstDS.XMLID)
+       }
+
+       updatedLongDesc := "something else different"
+       updatedMaxDNSAnswers := 164599
+       remoteDS.LongDesc = &updatedLongDesc
+       remoteDS.MaxDNSAnswers = &updatedMaxDNSAnswers
+
+       if updateResp, err := 
TOSession.UpdateDeliveryServiceNullable(strconv.Itoa(*remoteDS.ID), &remoteDS); 
err != nil {
+               t.Fatalf("cannot UPDATE DeliveryService by ID: %v - %v\n", err, 
updateResp)
+       }
+
+       // Retrieve the server to check rack and interfaceName values were 
updated
+       resp, _, err := 
TOSession.GetDeliveryServiceNullable(strconv.Itoa(*remoteDS.ID))
+       if err != nil {
+               failed = true
+               t.Fatalf("cannot GET Delivery Service by ID: %v - %v\n", 
remoteDS.XMLID, err)
+       }
+       if resp == nil {
+               failed = true
+               t.Fatalf("cannot GET Delivery Service by ID: %v - nil\n", 
remoteDS.XMLID)
+       }
+
+       if resp.LongDesc == nil || resp.MaxDNSAnswers == nil {
+               failed = true
+               t.Errorf("results do not match actual: %v, expected: %s\n", 
resp.LongDesc, updatedLongDesc)
+               t.Fatalf("results do not match actual: %v, expected: %d\n", 
resp.MaxDNSAnswers, updatedMaxDNSAnswers)
+       }
+
+       if *resp.LongDesc != updatedLongDesc || *resp.MaxDNSAnswers != 
updatedMaxDNSAnswers {
+               failed = true
+               t.Errorf("results do not match actual: %s, expected: %s\n", 
*resp.LongDesc, updatedLongDesc)
+               t.Fatalf("results do not match actual: %d, expected: %d\n", 
*resp.MaxDNSAnswers, updatedMaxDNSAnswers)
+       }
+       if !failed {
+               log.Debugln("UpdateNullableTestDeliveryServices() PASSED: ")
+       }
+}
+
 func DeleteTestDeliveryServices(t *testing.T) {
        dses, _, err := TOSession.GetDeliveryServices()
        failed := false


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to