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

ocket8888 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 7bdbca9  Add a required capability to CDN in a Box's demo1 Delivery 
Service (#5387)
7bdbca9 is described below

commit 7bdbca9d4247e78ac6564508473e6ccca9294ff4
Author: Zach Hoffman <[email protected]>
AuthorDate: Fri Jan 8 14:44:59 2021 -0700

    Add a required capability to CDN in a Box's demo1 Delivery Service (#5387)
    
    * Add the HDD Server Capability
    
    * Assign the HDD Server Capability to edge, mid-01, and mid-02
    
    * Require the HDD Server Capability on the demo1 Delivery Service
    
    * go fmt
---
 infrastructure/cdn-in-a-box/enroller/enroller.go   | 135 ++++++++++++++++++---
 .../cdn-in-a-box/traffic_ops/trafficops-init.sh    |   2 +-
 .../010-HDD-demo1.json                             |   4 +
 .../server_capabilities/010-HDD.json               |   3 +
 .../server_server_capabilities/010-HDD-edge.json   |   4 +
 .../server_server_capabilities/010-HDD-mid-01.json |   4 +
 .../server_server_capabilities/010-HDD-mid-02.json |   4 +
 7 files changed, 138 insertions(+), 18 deletions(-)

diff --git a/infrastructure/cdn-in-a-box/enroller/enroller.go 
b/infrastructure/cdn-in-a-box/enroller/enroller.go
index 3d95973..c8761ac 100644
--- a/infrastructure/cdn-in-a-box/enroller/enroller.go
+++ b/infrastructure/cdn-in-a-box/enroller/enroller.go
@@ -223,6 +223,41 @@ func enrollDeliveryService(toSession *session, r 
io.Reader) error {
        return err
 }
 
+// enrollDeliveryServicesRequiredCapability takes a json file and creates a 
DeliveryServicesRequiredCapability object using the TO API
+func enrollDeliveryServicesRequiredCapability(toSession *session, r io.Reader) 
error {
+       dec := json.NewDecoder(r)
+       var dsrc tc.DeliveryServicesRequiredCapability
+       err := dec.Decode(&dsrc)
+       if err != nil {
+               log.Infof("error decoding Delivery Services Required 
Capability: %s\n", err)
+               return err
+       }
+
+       dses, _, err := 
toSession.GetDeliveryServiceByXMLIDNullableWithHdr(*dsrc.XMLID, nil)
+       if err != nil {
+               log.Infof("getting Delivery Service by XMLID %s: %s", 
*dsrc.XMLID, err.Error())
+               return err
+       }
+       if len(dses) < 1 {
+               err = errors.New("could not find a Delivey Service with XMLID 
%s")
+               log.Infoln(err)
+               return err
+       }
+       dsrc.DeliveryServiceID = dses[0].ID
+
+       alerts, _, err := 
toSession.CreateDeliveryServicesRequiredCapability(dsrc)
+       if err != nil {
+               log.Infof("error creating Delivery Services Required 
Capability: %s\n", err)
+               return err
+       }
+
+       enc := json.NewEncoder(os.Stdout)
+       enc.SetIndent("", "  ")
+       err = enc.Encode(&alerts)
+
+       return err
+}
+
 func enrollDeliveryServiceServer(toSession *session, r io.Reader) error {
        dec := json.NewDecoder(r)
 
@@ -655,6 +690,69 @@ func enrollServer(toSession *session, r io.Reader) error {
        return err
 }
 
+// enrollServerCapability takes a json file and creates a ServerCapability 
object using the TO API
+func enrollServerCapability(toSession *session, r io.Reader) error {
+       dec := json.NewDecoder(r)
+       var s tc.ServerCapability
+       err := dec.Decode(&s)
+       if err != nil {
+               log.Infof("error decoding Server Capability: %s\n", err)
+               return err
+       }
+
+       alerts, _, err := toSession.CreateServerCapability(s)
+       if err != nil {
+               log.Infof("error creating Server Capability: %s\n", err)
+               return err
+       }
+
+       enc := json.NewEncoder(os.Stdout)
+       enc.SetIndent("", "  ")
+       err = enc.Encode(&alerts)
+
+       return err
+}
+
+// enrollServerServerCapability takes a json file and creates a 
ServerServerCapability object using the TO API
+func enrollServerServerCapability(toSession *session, r io.Reader) error {
+       dec := json.NewDecoder(r)
+       var s tc.ServerServerCapability
+       err := dec.Decode(&s)
+       if err != nil {
+               log.Infof("error decoding Server: %s\n", err)
+               return err
+       }
+
+       resp, _, err := toSession.GetServersWithHdr(&url.Values{"hostName": 
[]string{*s.Server}}, nil)
+       if err != nil {
+               log.Infof("getting server %s: %s\n", *s.Server, err.Error())
+               return err
+       }
+       if len(resp.Response) < 1 {
+               err = fmt.Errorf("could not find Server %s", *s.Server)
+               log.Infoln(err.Error())
+               return err
+       }
+       if len(resp.Response) > 1 {
+               err = fmt.Errorf("found more than 1 Server with hostname %s", 
*s.Server)
+               log.Infoln(err.Error())
+               return err
+       }
+       s.ServerID = resp.Response[0].ID
+
+       alerts, _, err := toSession.CreateServerServerCapability(s)
+       if err != nil {
+               log.Infof("error creating Server Server Capability: %s\n", err)
+               return err
+       }
+
+       enc := json.NewEncoder(os.Stdout)
+       enc.SetIndent("", "  ")
+       err = enc.Encode(&alerts)
+
+       return err
+}
+
 type dirWatcher struct {
        *fsnotify.Watcher
        TOSession *session
@@ -869,23 +967,26 @@ func main() {
 
        // dispatcher maps an API endpoint name to a function to act on the 
JSON input Reader
        dispatcher := map[string]func(*session, io.Reader) error{
-               "types":                   enrollType,
-               "cdns":                    enrollCDN,
-               "cachegroups":             enrollCachegroup,
-               "topologies":              enrollTopology,
-               "profiles":                enrollProfile,
-               "parameters":              enrollParameter,
-               "servers":                 enrollServer,
-               "asns":                    enrollASN,
-               "deliveryservices":        enrollDeliveryService,
-               "deliveryservice_servers": enrollDeliveryServiceServer,
-               "divisions":               enrollDivision,
-               "origins":                 enrollOrigin,
-               "phys_locations":          enrollPhysLocation,
-               "regions":                 enrollRegion,
-               "statuses":                enrollStatus,
-               "tenants":                 enrollTenant,
-               "users":                   enrollUser,
+               "types":                                  enrollType,
+               "cdns":                                   enrollCDN,
+               "cachegroups":                            enrollCachegroup,
+               "topologies":                             enrollTopology,
+               "profiles":                               enrollProfile,
+               "parameters":                             enrollParameter,
+               "servers":                                enrollServer,
+               "server_capabilities":                    
enrollServerCapability,
+               "server_server_capabilities":             
enrollServerServerCapability,
+               "asns":                                   enrollASN,
+               "deliveryservices":                       enrollDeliveryService,
+               "deliveryservices_required_capabilities": 
enrollDeliveryServicesRequiredCapability,
+               "deliveryservice_servers":                
enrollDeliveryServiceServer,
+               "divisions":                              enrollDivision,
+               "origins":                                enrollOrigin,
+               "phys_locations":                         enrollPhysLocation,
+               "regions":                                enrollRegion,
+               "statuses":                               enrollStatus,
+               "tenants":                                enrollTenant,
+               "users":                                  enrollUser,
        }
 
        if len(httpPort) != 0 {
diff --git a/infrastructure/cdn-in-a-box/traffic_ops/trafficops-init.sh 
b/infrastructure/cdn-in-a-box/traffic_ops/trafficops-init.sh
index 11deb9b..404a3cc 100755
--- a/infrastructure/cdn-in-a-box/traffic_ops/trafficops-init.sh
+++ b/infrastructure/cdn-in-a-box/traffic_ops/trafficops-init.sh
@@ -36,7 +36,7 @@ while ! to-ping 2>/dev/null; do
 done
 
 # NOTE: order dependent on foreign key references, e.g. profiles must be 
loaded before parameters
-endpoints="cdns types divisions regions phys_locations tenants users 
cachegroups profiles parameters servers topologies deliveryservices 
deliveryservice_servers"
+endpoints="cdns types divisions regions phys_locations tenants users 
cachegroups profiles parameters server_capabilities servers topologies 
deliveryservices server_server_capabilities deliveryservice_servers 
deliveryservices_required_capabilities"
 vars=$(awk -F = '/^\w/ {printf "$%s ",$1}' /variables.env)
 
 waitfor() {
diff --git 
a/infrastructure/cdn-in-a-box/traffic_ops_data/deliveryservices_required_capabilities/010-HDD-demo1.json
 
b/infrastructure/cdn-in-a-box/traffic_ops_data/deliveryservices_required_capabilities/010-HDD-demo1.json
new file mode 100644
index 0000000..3dce6f6
--- /dev/null
+++ 
b/infrastructure/cdn-in-a-box/traffic_ops_data/deliveryservices_required_capabilities/010-HDD-demo1.json
@@ -0,0 +1,4 @@
+{
+  "requiredCapability": "HDD",
+  "xmlID": "demo1"
+}
diff --git 
a/infrastructure/cdn-in-a-box/traffic_ops_data/server_capabilities/010-HDD.json 
b/infrastructure/cdn-in-a-box/traffic_ops_data/server_capabilities/010-HDD.json
new file mode 100644
index 0000000..15acb47
--- /dev/null
+++ 
b/infrastructure/cdn-in-a-box/traffic_ops_data/server_capabilities/010-HDD.json
@@ -0,0 +1,3 @@
+{
+  "name": "HDD"
+}
diff --git 
a/infrastructure/cdn-in-a-box/traffic_ops_data/server_server_capabilities/010-HDD-edge.json
 
b/infrastructure/cdn-in-a-box/traffic_ops_data/server_server_capabilities/010-HDD-edge.json
new file mode 100644
index 0000000..681d233
--- /dev/null
+++ 
b/infrastructure/cdn-in-a-box/traffic_ops_data/server_server_capabilities/010-HDD-edge.json
@@ -0,0 +1,4 @@
+{
+  "serverHostName": "edge",
+  "serverCapability": "HDD"
+}
diff --git 
a/infrastructure/cdn-in-a-box/traffic_ops_data/server_server_capabilities/010-HDD-mid-01.json
 
b/infrastructure/cdn-in-a-box/traffic_ops_data/server_server_capabilities/010-HDD-mid-01.json
new file mode 100644
index 0000000..af09962
--- /dev/null
+++ 
b/infrastructure/cdn-in-a-box/traffic_ops_data/server_server_capabilities/010-HDD-mid-01.json
@@ -0,0 +1,4 @@
+{
+  "serverHostName": "mid-01",
+  "serverCapability": "HDD"
+}
diff --git 
a/infrastructure/cdn-in-a-box/traffic_ops_data/server_server_capabilities/010-HDD-mid-02.json
 
b/infrastructure/cdn-in-a-box/traffic_ops_data/server_server_capabilities/010-HDD-mid-02.json
new file mode 100644
index 0000000..b8ee426
--- /dev/null
+++ 
b/infrastructure/cdn-in-a-box/traffic_ops_data/server_server_capabilities/010-HDD-mid-02.json
@@ -0,0 +1,4 @@
+{
+  "serverHostName": "mid-02",
+  "serverCapability": "HDD"
+}

Reply via email to