You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by oc...@apache.org on 2021/01/08 21:45:09 UTC
[trafficcontrol] branch master updated: Add a required capability
to CDN in a Box's demo1 Delivery Service (#5387)
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 <zr...@apache.org>
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"
+}