Skip to content
This repository was archived by the owner on Nov 24, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
- Added Rocky Linux 8 support
- 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
- 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.
Expand Down
53 changes: 42 additions & 11 deletions docs/source/api/v2/cdns_name_configs_monitoring.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,12 @@ Response Structure

:deliveryServices: An array of objects representing each :term:`Delivery Service` provided by this CDN

:hostRegexes: An array of strings which are the Delivery Service's HOST_REGEXP-type regexes
:status: The :term:`Delivery Service`'s status
:topology: A string that is the name of the Delivery Service's :term:`Topology` (if assigned one)
:totalKbpsThreshold: A threshold rate of data transfer this :term:`Delivery Service` is configured to handle, in Kilobits per second
:totalTpsThreshold: A threshold amount of transactions per second that this :term:`Delivery Service` is configured to handle
:type: A string that is the Delivery Service's type category (``"HTTP"`` or ``"DNS"``)
:xmlId: A string that is the :ref:`Delivery Service's XMLID <ds-xmlid>`

:profiles: An array of the :term:`Profiles` in use by the :term:`cache servers` and :term:`Delivery Services` belonging to this CDN
Expand All @@ -80,19 +83,28 @@ Response Structure

:type: A string that names the :ref:`Profile's Type <profile-type>`

:topologies: A map of :term:`Topology` names to objects

:nodes: An array of strings which are the names of the EDGE_LOC-type cache groups in the topology

:trafficMonitors: An array of objects representing each Traffic Monitor that monitors this CDN (this is used by Traffic Monitor's "peer polling" function)

:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the IPv4 (and/or IPv6) address of the server running this Traffic Monitor instance
:hostname: The hostname of the server running this Traffic Monitor instance
:ip6: The IPv6 address of this Traffic Monitor - when applicable
:ip: The IPv4 address of this Traffic Monitor
:port: The port on which this Traffic Monitor listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this Traffic Monitor
:status: The status of the server running this Traffic Monitor instance
:cachegroup: The name of the :term:`Cache Group` to which this Traffic Monitor belongs
:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the IPv4 (and/or IPv6) address of the server running this Traffic Monitor instance
:hostname: The hostname of the server running this Traffic Monitor instance
:ip6: The IPv6 address of this Traffic Monitor - when applicable
:ip: The IPv4 address of this Traffic Monitor
:port: The port on which this Traffic Monitor listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this Traffic Monitor
:status: The status of the server running this Traffic Monitor instance

:trafficServers: An array of objects that represent the :term:`cache servers` being monitored within this CDN

:cacheGroup: The :term:`Cache Group` to which this :term:`cache server` belongs
:cacheGroup: The :term:`Cache Group` to which this :term:`cache server` belongs
Comment thread
rawlinp marked this conversation as resolved.
Outdated
:deliveryServices: An array of objects which contain the XML IDs of the delivery services to which this cache server is assigned (this field is omitted entirely if no delivery services are assigned to this cache server)

:xmlId: A string which is the XML ID of the delivery service

:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the :term:`cache server`'s IPv4 (or IPv6) address
:hashId: The (short) hostname for the :term:`cache server` - named "hashId" for legacy reasons
:hostName: The (short) hostname of the :term:`cache server`
Expand Down Expand Up @@ -120,14 +132,21 @@ Response Structure
Transfer-Encoding: chunked

{ "response": {
"topologies": {
"example-topology": {
"nodes": [
"CDN_in_a_Box_Edge"
]
}
},
"trafficServers": [
{
"profile": "ATS_EDGE_TIER_CACHE",
"status": "REPORTED",
"ip": "172.16.239.100",
"ip6": "fc01:9400:1000:8::100",
"port": 80,
"cachegroup": "CDN_in_a_Box_Edge",
"cacheGroup": "CDN_in_a_Box_Edge",
"hostname": "edge",
"fqdn": "edge.infra.ciab.test",
"interfacename": "eth0",
Expand All @@ -140,7 +159,7 @@ Response Structure
"ip": "172.16.239.120",
"ip6": "fc01:9400:1000:8::120",
"port": 80,
"cachegroup": "CDN_in_a_Box_Mid",
"cacheGroup": "CDN_in_a_Box_Mid",
"hostname": "mid",
"fqdn": "mid.infra.ciab.test",
"interfacename": "eth0",
Expand Down Expand Up @@ -207,7 +226,19 @@ Response Structure
}
}
],
"deliveryServices": [],
"deliveryServices": [
{
"xmlId": "example-ds",
"totalTpsThreshold": 0,
"status": "REPORTED",
"totalKbpsThreshold": 0,
"type": "DNS",
"topology": "example-topology",
"hostRegexes": [
".*\\.example-ds\\..*"
]
}
],
"config": {
"health.polling.interval": 6000,
"heartbeat.polling.interval": 3000,
Expand Down
69 changes: 50 additions & 19 deletions docs/source/api/v3/cdns_name_configs_monitoring.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,12 @@ Response Structure

:deliveryServices: An array of objects representing each :term:`Delivery Service` provided by this CDN

:hostRegexes: An array of strings which are the Delivery Service's HOST_REGEXP-type regexes
:status: The :term:`Delivery Service`'s status
:topology: A string that is the name of the Delivery Service's :term:`Topology` (if assigned one)
:totalKbpsThreshold: A threshold rate of data transfer this :term:`Delivery Service` is configured to handle, in Kilobits per second
:totalTpsThreshold: A threshold amount of transactions per second that this :term:`Delivery Service` is configured to handle
:type: A string that is the Delivery Service's type category (``"HTTP"`` or ``"DNS"``)
:xmlId: A string that is the :ref:`Delivery Service's XMLID <ds-xmlid>`

:profiles: An array of the :term:`Profiles` in use by the :term:`cache servers` and :term:`Delivery Services` belonging to this CDN
Expand All @@ -80,27 +83,36 @@ Response Structure

:type: A string that names the :ref:`Profile's Type <profile-type>`

:topologies: A map of :term:`Topology` names to objects

:nodes: An array of strings which are the names of the EDGE_LOC-type cache groups in the topology

:trafficMonitors: An array of objects representing each Traffic Monitor that monitors this CDN (this is used by Traffic Monitor's "peer polling" function)

:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the IPv4 (and/or IPv6) address of the server running this Traffic Monitor instance
:hostname: The hostname of the server running this Traffic Monitor instance
:ip6: The IPv6 address of this Traffic Monitor - when applicable
:ip: The IPv4 address of this Traffic Monitor
:port: The port on which this Traffic Monitor listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this Traffic Monitor
:status: The status of the server running this Traffic Monitor instance
:cachegroup: The name of the :term:`Cache Group` to which this Traffic Monitor belongs
:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the IPv4 (and/or IPv6) address of the server running this Traffic Monitor instance
:hostname: The hostname of the server running this Traffic Monitor instance
:ip6: The IPv6 address of this Traffic Monitor - when applicable
:ip: The IPv4 address of this Traffic Monitor
:port: The port on which this Traffic Monitor listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this Traffic Monitor
:status: The status of the server running this Traffic Monitor instance

:trafficServers: An array of objects that represent the :term:`cache servers` being monitored within this CDN

:cacheGroup: The :term:`Cache Group` to which this :term:`cache server` belongs
:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the :term:`cache server`'s IPv4 (or IPv6) address
:hashId: The (short) hostname for the :term:`cache server` - named "hashId" for legacy reasons
:hostName: The (short) hostname of the :term:`cache server`
:port: The port on which the :term:`cache server` listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this :term:`cache server`
:status: The status of the :term:`cache server`
:type: A string that names the :term:`Type` of the :term:`cache server` - should (ideally) be either ``EDGE`` or ``MID``
:interfaces: A set of the network interfaces in use by the server. In most scenarios, only one will be present, but it is illegal for this set to be an empty collection.
:cachegroup: The :term:`Cache Group` to which this :term:`cache server` belongs
:deliveryServices: An array of objects which contain the XML IDs of the delivery services to which this cache server is assigned (this field is omitted entirely if no delivery services are assigned to this cache server)

:xmlId: A string which is the XML ID of the delivery service

:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the :term:`cache server`'s IPv4 (or IPv6) address
:hashId: The (short) hostname for the :term:`cache server` - named "hashId" for legacy reasons
:hostName: The (short) hostname of the :term:`cache server`
:port: The port on which the :term:`cache server` listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this :term:`cache server`
:status: The status of the :term:`cache server`
:type: A string that names the :term:`Type` of the :term:`cache server` - should (ideally) be either ``EDGE`` or ``MID``
:interfaces: A set of the network interfaces in use by the server. In most scenarios, only one will be present, but it is illegal for this set to be an empty collection.

:ipAddresses: A set of objects representing IP Addresses assigned to this network interface. In most scenarios, only one or two (usually one IPv4 address and one IPv6 address) will be present, but it is illegal for this set to be an empty collection.

Expand Down Expand Up @@ -132,12 +144,19 @@ Response Structure
Transfer-Encoding: chunked

{ "response": {
"topologies": {
"example-topology": {
"nodes": [
"CDN_in_a_Box_Edge"
]
}
},
"trafficServers": [
{
"profile": "ATS_EDGE_TIER_CACHE",
"status": "REPORTED",
"port": 80,
"intefaces": [
"interfaces": [
{
"ipAddresses": [
{
Expand Down Expand Up @@ -167,7 +186,7 @@ Response Structure
"profile": "ATS_MID_TIER_CACHE",
"status": "REPORTED",
"port": 80,
"intefaces": [
"interfaces": [
{
"ipAddresses": [
{
Expand Down Expand Up @@ -253,7 +272,19 @@ Response Structure
}
}
],
"deliveryServices": [],
"deliveryServices": [
{
"xmlId": "example-ds",
"totalTpsThreshold": 0,
"status": "REPORTED",
"totalKbpsThreshold": 0,
"type": "DNS",
"topology": "example-topology",
"hostRegexes": [
".*\\.example-ds\\..*"
]
}
],
"config": {
"health.polling.interval": 6000,
"heartbeat.polling.interval": 3000,
Expand Down
69 changes: 50 additions & 19 deletions docs/source/api/v4/cdns_name_configs_monitoring.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,12 @@ Response Structure

:deliveryServices: An array of objects representing each :term:`Delivery Service` provided by this CDN

:hostRegexes: An array of strings which are the Delivery Service's HOST_REGEXP-type regexes
:status: The :term:`Delivery Service`'s status
:topology: A string that is the name of the Delivery Service's :term:`Topology` (if assigned one)
:totalKbpsThreshold: A threshold rate of data transfer this :term:`Delivery Service` is configured to handle, in Kilobits per second
:totalTpsThreshold: A threshold amount of transactions per second that this :term:`Delivery Service` is configured to handle
:type: A string that is the Delivery Service's type category (``"HTTP"`` or ``"DNS"``)
:xmlId: A string that is the :ref:`Delivery Service's XMLID <ds-xmlid>`

:profiles: An array of the :term:`Profiles` in use by the :term:`cache servers` and :term:`Delivery Services` belonging to this CDN
Expand All @@ -81,27 +84,36 @@ Response Structure

:type: A string that names the :ref:`Profile's Type <profile-type>`

:topologies: A map of :term:`Topology` names to objects

:nodes: An array of strings which are the names of the EDGE_LOC-type cache groups in the topology

:trafficMonitors: An array of objects representing each Traffic Monitor that monitors this CDN (this is used by Traffic Monitor's "peer polling" function)

:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the IPv4 (and/or IPv6) address of the server running this Traffic Monitor instance
:hostname: The hostname of the server running this Traffic Monitor instance
:ip6: The IPv6 address of this Traffic Monitor - when applicable
:ip: The IPv4 address of this Traffic Monitor
:port: The port on which this Traffic Monitor listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this Traffic Monitor
:status: The status of the server running this Traffic Monitor instance
:cachegroup: The name of the :term:`Cache Group` to which this Traffic Monitor belongs
:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the IPv4 (and/or IPv6) address of the server running this Traffic Monitor instance
:hostname: The hostname of the server running this Traffic Monitor instance
:ip6: The IPv6 address of this Traffic Monitor - when applicable
:ip: The IPv4 address of this Traffic Monitor
:port: The port on which this Traffic Monitor listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this Traffic Monitor
:status: The status of the server running this Traffic Monitor instance

:trafficServers: An array of objects that represent the :term:`cache servers` being monitored within this CDN

:cacheGroup: The :term:`Cache Group` to which this :term:`cache server` belongs
:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the :term:`cache server`'s IPv4 (or IPv6) address
:hashId: The (short) hostname for the :term:`cache server` - named "hashId" for legacy reasons
:hostName: The (short) hostname of the :term:`cache server`
:port: The port on which the :term:`cache server` listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this :term:`cache server`
:status: The status of the :term:`cache server`
:type: A string that names the :term:`Type` of the :term:`cache server` - should (ideally) be either ``EDGE`` or ``MID``
:interfaces: A set of the network interfaces in use by the server. In most scenarios, only one will be present, but it is illegal for this set to be an empty collection.
:cachegroup: The :term:`Cache Group` to which this :term:`cache server` belongs
:deliveryServices: An array of objects which contain the XML IDs of the delivery services to which this cache server is assigned (this field is omitted entirely if no delivery services are assigned to this cache server)

:xmlId: A string which is the XML ID of the delivery service

:fqdn: An :abbr:`FQDN (Fully Qualified Domain Name)` that resolves to the :term:`cache server`'s IPv4 (or IPv6) address
:hashId: The (short) hostname for the :term:`cache server` - named "hashId" for legacy reasons
:hostName: The (short) hostname of the :term:`cache server`
:port: The port on which the :term:`cache server` listens for incoming connections
:profile: A string that is the :ref:`profile-name` of the :term:`Profile` assigned to this :term:`cache server`
:status: The status of the :term:`cache server`
:type: A string that names the :term:`Type` of the :term:`cache server` - should (ideally) be either ``EDGE`` or ``MID``
:interfaces: A set of the network interfaces in use by the server. In most scenarios, only one will be present, but it is illegal for this set to be an empty collection.

:ipAddresses: A set of objects representing IP Addresses assigned to this network interface. In most scenarios, only one or two (usually one IPv4 address and one IPv6 address) will be present, but it is illegal for this set to be an empty collection.

Expand Down Expand Up @@ -133,12 +145,19 @@ Response Structure
Transfer-Encoding: chunked

{ "response": {
"topologies": {
"example-topology": {
"nodes": [
"CDN_in_a_Box_Edge"
]
}
},
"trafficServers": [
{
"profile": "ATS_EDGE_TIER_CACHE",
"status": "REPORTED",
"port": 80,
"intefaces": [
"interfaces": [
{
"ipAddresses": [
{
Expand Down Expand Up @@ -168,7 +187,7 @@ Response Structure
"profile": "ATS_MID_TIER_CACHE",
"status": "REPORTED",
"port": 80,
"intefaces": [
"interfaces": [
{
"ipAddresses": [
{
Expand Down Expand Up @@ -254,7 +273,19 @@ Response Structure
}
}
],
"deliveryServices": [],
"deliveryServices": [
{
"xmlId": "example-ds",
"totalTpsThreshold": 0,
"status": "REPORTED",
"totalKbpsThreshold": 0,
"type": "DNS",
"topology": "example-topology",
"hostRegexes": [
".*\\.example-ds\\..*"
]
}
],
"config": {
"health.polling.interval": 6000,
"heartbeat.polling.interval": 3000,
Expand Down
8 changes: 8 additions & 0 deletions lib/go-tc/enum.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,14 @@ func DSTypeCategoryFromString(s string) DSTypeCategory {
}
}

// GetDSTypeCategory returns the delivery service type category (either HTTP or DNS) of the given delivery service type.
func GetDSTypeCategory(dsType string) string {
if strings.HasPrefix(dsType, "DNS") {
return "DNS"
}
return "HTTP"
}

// These are the allowable values for the Signing Algorithm property of a
// Delivery Service.
const (
Expand Down
Loading