Hello All,

I’ve been working on adding support for configurable per-CDN and 
per-DeliveryService routing names [1] (what are currently hardcoded/defaulted 
to ‘edge’ and ‘tr’ for DNS and HTTP Delivery Services, respectively), and I 
have a few things to propose.


  1.  Add a column to the CDN table for the DNS and HTTP routing names.



I’ve currently been working off the assumption that per-CDN routing names would 
be configurable by adding ‘http.routing.name’ and ‘dns.routing.name’ parameters 
to a profile of type TR_PROFILE using the ‘CRConfig.json’ config file. To me 
this seems like bad UX because the user has to click through multiple steps and 
fill in multiple fields in the UI just to change the CDN’s routing names. It 
also requires joining a few different tables in the DB just to find the 
parameters per-CDN. For that reason, I think it would be better if 
‘dns_routing_name’ and ‘http_routing_name’ were added as columns of the ‘cdn’ 
table, and changing them via the UI would follow the same process as choosing 
the CDN’s domain name. Because the routing names would be the CDN-wide 
defaults, the ‘Edit CDN’ window feels like the most natural place to put it.


  1.  Values for per-DeliveryService routing names could live in one of a 
couple different areas:
     *   New columns in the delivery_service table
     *   Parameters in a DS Profile

As the developer, my vote would be for Option A because it seems like it would 
lead to cleaner code in Traffic Ops because the routing names would be 
readily-available when handling a DeliveryService. You wouldn’t have to also 
fetch its profile then dig through it to find the routing names. A downside 
could be that adding columns to an already-overcrowded table isn’t ideal.

Option B is less appealing to me but might have some advantages such as keeping 
the number of columns down in the DeliveryService table. However, DS Profiles 
currently seem to be geared more towards the Multi-site Origin feature in 
generating specific ATS configuration (parent.config) and less towards a “junk 
drawer for optional config”. As the routing names would affect the entire DS 
and multiple config files, it doesn’t seem right to have it as a profile 
parameter using ‘CRConfig.json’ as the config file. I wasn’t around when DS 
Profiles were introduced, so if you are more familiar with their purpose/origin 
and think this is a good fit for them, I’d like to hear your advice.


  1.  If per-DeliveryService routing names are not set explicitly for a DS 
(i.e. the column is null), then the DS will use the per-CDN routing names as a 
default. If the per-CDN routing names are unset, they will default to the 
current values of ‘edge’ and ‘tr’. So the lookup hierarchy would be 
DS.routing_names -> CDN.routing_names -> default ‘edge/tr’.

I’d like to know what you think of these proposals, and any advice/feedback is 
welcome.

Best regards,
Rawlin

[1] https://issues.apache.org/jira/browse/TC-287

Reply via email to