From cea1bd7817de3f42938e8db427587167dbcaf6a1 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Thu, 11 Aug 2022 08:29:13 -0600 Subject: [PATCH] Add blueprint for a Global Configuration object --- blueprints/global.configuration.md | 613 ++++++++++++++++++ .../img/global.configuration.form.example.png | Bin 0 -> 57502 bytes 2 files changed, 613 insertions(+) create mode 100644 blueprints/global.configuration.md create mode 100644 blueprints/img/global.configuration.form.example.png diff --git a/blueprints/global.configuration.md b/blueprints/global.configuration.md new file mode 100644 index 0000000000..41ac12ba10 --- /dev/null +++ b/blueprints/global.configuration.md @@ -0,0 +1,613 @@ + +# Global Configuration + +## Problem Description +Currently, a lot of global configuration for Traffic Ops is handled by a set of +Parameters which may or may not exist at any given time, and may or may not have +a valid value for the configuration the represent, *and* may or may not have the +Config File value "global", **and** may or may not be assigned to the a Profile +named "GLOBAL". This is annoying, lacks validation, doesn't allow users to be +aware of the current/default configuration (or even which value is used as in +many cases the actual Parameter value used is undefined). + +## Proposed Change +The Global Configuration singleton object will contain information pertaining to +the configuration of the Traffic Control system as a whole - most notably it +stores Traffic Ops API access information and provides information for +geographically locating clients of Apache Traffic Control CDNs. + +## Data Model Impact + +```typescript +interface GlobalConfiguration { + /** + * The default latitude to use for CDN clients when geo-location fails, on + * the interval [-90, 90]. + */ + defaultGeoMissLatitude: number; + /** + * The default longitude to use for CDN clients when geo-location fails, on + * the interval [-180, 180]. + */ + defaultGeoMissLongitude: number; + /** + * The location of an IPv4 geolocation database (replaces + * `geolocation.polling.url` and `alt.geolocation.polling.url`). + */ + geolocationIPv4PollingURL: URL; + /** + * The location of an IPv6 geolocation database (replaces + * `geolocation6.polling.url`). If `null`, `geolocationIPv4PollingURL` is + * assumed to be the location of a database that's either capable of + * localizing both IPv4 and IPv6 addresses, or only IPv4 addresses but no + * IPv6 localization is needed/desired. + */ + geolocationIPv6PollingURL: URL | null; + /** + * A URL at which information about the ATC system may be found (replaces + * `tm.info_url`). + */ + informationURL: URL | null; + /** + * The name of the ATC instance (replaces `tm.instance_name`). + */ + instanceName: string; + /** + * The maximum duration - in days - of content invalidation jobs. `null` + * means "no limit" (replaces `maxRevalDurationDays`). + */ + maxRevalidationDays: bigint | null; // >= 0 + /** + * A URL for a reverse proxy to the Traffic Ops instance(s) (replaces + * `tm.rev_proxy.url`). + */ + reverseProxyURL: URL & {search: "", pathname: "/"} | null; + /** + * The name of the tool that serves the Traffic Ops API (replaces + * `tm.toolname`). + */ + toolName: string; + /** + * The URL of a Proxy that should be used instead of making requests + * directly to Traffic Monitors when serving Traffic Ops API endpoints that + * expose Traffic Monitor data (replaces `tm.traffic_mon_fwd_proxy`). + */ + trafficMonitorProxy: URL & {search: "", pathname: "/"} | null; + /** + * The Name of the Status of Traffic Monitor that will be used as the source + * of truth for the availability of cache servers (replaces + * `tm_query_status_override`). + * + * @default "ONLINE" + */ + trafficMonitorQueryStatus: string; + /** + * The URL of a Proxy that should be used instead of making requests + * directly to Traffic Routers when serving Traffic Ops API endpoints that + * expose Traffic Monitor data (replaces `tm.traffic_rtr_fwd_proxy`). + */ + trafficRouterProxy: URL & {search: "", pathname: "/"} | null; + /** + * The canonical URL used to make requests to the Traffic Ops API (replaces + * `tm.url`). + */ + trafficOpsURL: URL & {search: "", pathname: "/"}; +} +``` + +`tm.toolname` and `tm.info_url` don't appear to actually be used by anything. So +I'm not sure if the `toolName` and `informationURL` properties are actually +necessary; hopefully the review of this blueprint will shed some light on that. +Furthermore, it seems that `geolocation6.polling.url` may no longer be used. + +## Component Impact +This change can have potentially far-reaching effects. This will affect T3C, +Traffic Portal, and Traffic Ops, primarily, but through CDN Snapshots it'll also +indirectly affect Traffic Router and Traffic Monitor is technically unaffected +but access to Traffic Monitor through the Traffic Ops API is. + +### Traffic Portal Impact +Traffic Portal will need a new UI view for setting configuration values. This +should be very straightforward. A sample is provided below, as it would appear +in TPv2. The code is available in [Appendix A](#appendix). + +![](img/global.configuration.example.png "Mockup of proposed Global Configuration controls") + + +### Traffic Ops Impact +Traffic Ops will need to not only add a new endpoint for interacting with the +Global Configuration, but it'll also need to rework existing endpoints to use it +rather than the old Parameters - mostly that'll affect Content Invalidation Job +creation and CDN Snapshots. + +#### Database Impact +To store the new data, the following schema is suggested: + +``` + Table "public.global_configuration" + Column | Type | Collation | Nullable | Default +------------------------------+---------+-----------+----------+------------------------------------------------------------------------------ + default_geo_miss_latitude | numeric | | not null | 0.0 + default_geo_miss_longitude | numeric | | not null | 0.0 + geolocation_ipv4_polling_url | text | | not null | 'file:///opt/traffic_router/etc/traffic_router/Geo_lite2-City.mmdb.gz'::text + geolocation_ipv6_polling_url | text | | | + information_url | text | | | + instance_name | text | | not null | 'Traffic Ops'::text + max_revalidation_days | bigint | | | + reverse_proxy_url | text | | | + tool_name | text | | not null | 'Traffic Ops'::text + traffic_monitor_proxy | text | | | + traffic_monitor_query_status | text | | not null | 'ONLINE'::text + traffic_router_proxy | text | | | + traffic_ops_url | text | | not null | 'https://trafficops.infra.ciab.test/'::text +Indexes: + "global_configuration_bool_idx" UNIQUE, btree ((true)) +Check constraints: + "valid_latitude" CHECK (default_geo_miss_latitude <= 90::numeric AND default_geo_miss_latitude >= '-90'::integer::numeric) + "valid_longitude" CHECK (default_geo_miss_longitude <= 180::numeric AND default_geo_miss_longitude >= '-180'::integer::numeric) + "valid_max_revalidation_days" CHECK (max_revalidation_days >= 0) +``` + +Note the unique index on a constant expression - `true` - which prevents +inserting a second row. + +#### API Impact +The API will need a new endpoint for dealing with the Global Configuration. + +##### `/configuration` +Since the Global Configuration exists ab initio and always exists, the endpoint +need only support GET and PUT. + +###### `GET` + +Authentication Required: Yes + +Required Permissions: `CONFIGURATION:READ` + +Response Type: Object + + +Response Structure - refer to Data Model Impact. + +###### `PUT` + +Authentication Required: Yes + +Required Permissions: `CONFIGURATION:READ`, `CONFIGURATION:UPDATE` + +Response Type: Object + + +Request Structure - refer to Data Model Impact. + +Response Structure - refer to Data Model Impact. + +##### `/caches/stats` +Currently uses the "global" Parameter `tm_query_status_override` to determine +which Traffic Monitors to query for "caches stats". It will instead need to use +the `trafficMonitorQueryStatus` setting of the Global Configuration. + +Also uses the "global" Parameter `tm.traffic_mon_fwd_proxy` to make requests to +a forward proxy for Traffic Monitor services instead of actual Traffic Monitor +URLs, when configured. It will instead need to use the `trafficMonitorProxy` +Global Configuration setting. + +##### `/cdns/capacity` +Currently uses the "global" Parameter `tm_query_status_override` to determine +which Traffic Monitors to query for "cdns capacity". It will instead need to use +the `trafficMonitorQueryStatus` setting of the Global Configuration. + +Also uses the "global" Parameter `tm.traffic_mon_fwd_proxy` to make requests to +a forward proxy for Traffic Monitor services instead of actual Traffic Monitor +URLs, when configured. It will instead need to use the `trafficMonitorProxy` +Global Configuration setting. + +##### `/cdns/health` +Currently uses the "global" Parameter `tm_query_status_override` to determine +which Traffic Monitors to query for "cdns health". It will instead need to use +the `trafficMonitorQueryStatus` setting of the Global Configuration. + +Also uses the "global" Parameter `tm.traffic_mon_fwd_proxy` to make requests to +a forward proxy for Traffic Monitor services instead of actual Traffic Monitor +URLs, when configured. It will instead need to use the `trafficMonitorProxy` +Global Configuration setting. + +#### `/cdns/routing` +When choosing a Traffic Router from which to retrieve "cdns routing" +information, this endpoint will randomly choose the value of a Parameter with +the Config File "global" and the Name `tm.traffic_rtr_fwd_proxy` to use as a +proxy for requests that would normally go directly to some Traffic Router. It +must now instead used the `trafficRouterProxy` Global Configuration setting. + +##### `/cdns/{{Name}}/health` +Currently uses the "global" Parameter `tm_query_status_override` to determine +which Traffic Monitors to query for "cdn health". It will instead need to use +the `trafficMonitorQueryStatus` setting of the Global Configuration. + +Also uses the "global" Parameter `tm.traffic_mon_fwd_proxy` to make requests to +a forward proxy for Traffic Monitor services instead of actual Traffic Monitor +URLs, when configured. It will instead need to use the `trafficMonitorProxy` +Global Configuration setting. + +##### `/cdns/{{Name}}/snapshot` +Currently, this endpoint uses some randomly selected Parameter with the Config +File "CRConfig.json" to set the `edge.http.routing`, `edge.dns.routing`, +`dns.consistent.routing`, `dnssec.enabled`, `dnssec.zone.diffing.enabled`, +`dnssec.rrsig.cache.enabled`, **and** `strip.special.query.params` properties of +the Snapshot's `config` property from Parameters of the same Name. These need +not be assigned to any particular Profile, but must be assigned to some Profile +within the CDN for which the Snapshot is generated (which is to say most likely +not the "GLOBAL" Profile as that is typically in the "ALL" CDN which will break +in various undocumented scenarios if you try to actually use it as a CDN). All +of these settings ought to be set on Traffic Router Profiles (and really ought +to be first-class properties thereof so they can be properly validated and given +proper, visible default values, but that's beyond this blueprint's scope). The +recommendation this blueprint will make is that the endpoint be changed to +consider Traffic Router Profiles, and/or Traffic Routers be changed to pick up +the value from its own Profile's Parameter list instead of this quasi-global +configuration, but technically no changes are necessary to implement Global +Configuration because these are merely quasi-global Parameter settings. + +This endpoint *also* uses randomly selected values for the truly "global" +Parameters `geolocation.polling.url` and `alt.geolocation.polling.url`. The +information used to fill in the former should be sourced now from the Global +Configuration, while the latter appears to be undocumented and support for it +should just be removed entirely. + +Finally, this endpoint creates Snapshot structures by filling in the `tm_host` +property of the Snapshot's `stats` property by randomly selecting the Value of a +Parameter with the Name `tm.url`. This should instead use the `trafficOpsURL` +Global Configuration setting. + +##### `/cdns/{{Name}}/snapshot/new` +Currently, this endpoint uses some randomly selected Parameter with the Config +File "CRConfig.json" to set the `edge.http.routing`, `edge.dns.routing`, +`dns.consistent.routing`, `dnssec.enabled`, `dnssec.zone.diffing.enabled`, +`dnssec.rrsig.cache.enabled`, **and** `strip.special.query.params` properties of +the Snapshot's `config` property from Parameters of the same Name. These need +not be assigned to any particular Profile, but must be assigned to some Profile +within the CDN for which the Snapshot is generated (which is to say most likely +not the "GLOBAL" Profile as that is typically in the "ALL" CDN which will break +in various undocumented scenarios if you try to actually use it as a CDN). All +of these settings ought to be set on Traffic Router Profiles (and really ought +to be first-class properties thereof so they can be properly validated and given +proper, visible default values, but that's beyond this blueprint's scope). The +recommendation this blueprint will make is that the endpoint be changed to +consider Traffic Router Profiles, and/or Traffic Routers be changed to pick up +the value from its own Profile's Parameter list instead of this quasi-global +configuration, but technically no changes are necessary to implement Global +Configuration because these are merely quasi-global Parameter settings. + +This endpoint *also* uses randomly selected values for the truly "global" +Parameters `geolocation.polling.url` and `alt.geolocation.polling.url`. The +information used to fill in the former should be sourced now from the Global +Configuration, while the latter appears to be undocumented and support for it +should just be removed entirely. + +Finally, this endpoint creates Snapshot structures by filling in the `tm_host` +property of the Snapshot's `stats` property by randomly selecting the Value of a +Parameter with the Name `tm.url`. This should instead use the `trafficOpsURL` +Global Configuration setting. + +##### `/deliveryservices/{{ID}}/capacity` +Currently uses the "global" Parameter `tm_query_status_override` to determine +which Traffic Monitors to query for "Delivery Service capacity". It will instead +need to use the `trafficMonitorQueryStatus` setting of the Global Configuration. + +Also uses the "global" Parameter `tm.traffic_mon_fwd_proxy` to make requests to +a forward proxy for Traffic Monitor services instead of actual Traffic Monitor +URLs, when configured. It will instead need to use the `trafficMonitorProxy` +Global Configuration setting. + +##### `/deliveryservices/{{ID}}/health` +Currently uses the "global" Parameter `tm_query_status_override` to determine +which Traffic Monitors to query for "Delivery Service health". It will instead +need to use the `trafficMonitorQueryStatus` setting of the Global Configuration. + +Also uses the "global" Parameter `tm.traffic_mon_fwd_proxy` to make requests to +a forward proxy for Traffic Monitor services instead of actual Traffic Monitor +URLs, when configured. It will instead need to use the `trafficMonitorProxy` +Global Configuration setting. + +#### `/deliveryservices/{{ID}}/routing` +When choosing a Traffic Router from which to retrieve "Delivery Service routing" +information, this endpoint will randomly choose the value of a Parameter with +the Config File "global" and the Name `tm.traffic_rtr_fwd_proxy` to use as a +proxy for requests that would normally go directly to some Traffic Router. It +must now instead used the `trafficRouterProxy` Global Configuration setting. + +##### `/jobs` +Job creation (`POST` method) checks the "global" Parameter +`maxRevalDurationDays` to determine if a submitted Content Invalidation Job is +valid with respect to its duration. It will instead need to use the +`maxRevalDurationDays` Global Configuration property. + +Job creation (`POST` method) checks the "global" Parameter `use_reval_pending` +to determine how to set revalidation flags. In the case that this Parameter +exists and the randomly chosen Value is exactly `"0"`, it will cause a CDN-wide +"Queue Updates". This is probably never actually desirable. The endpoint should +instead always use "Rapid Revalidation" and simply deprecated and eventually +remove its behavior's dependence on this "global" Parameter. + +When a client attempts to create a Content Invalidation Job (i.e. makes a `POST` +request) with the "REFETCH" type, this endpoint checks for the value of a +Parameter with the name `refetch_enabled` and the Config File "global". If more +than one exists, the value used is chosen essentially at random. Currently, the +default behavior when no such Parameter exists is to act as though it were +"false". Now that the Parameter has been introduced in a major release, the +behavior should be changed to instead act as though it were "true" by default +and deprecate the use of the Parameter to disable it, as in the future REFETCH +will be guaranteed to be supported by any supported T3C version. + +##### `/servers/{{Host Name}}/update-status` +This endpoint uses a Parameter with the name `use_reval_pending` to set the +property of the same name on the array response elements it returns. This +property should be deprecated (and in fact because host names are not unique we +really ought to scrap this entire endpoint as it can't possibly work in a +well-defined way). + +##### `/snapshot` +Currently, this endpoint uses some randomly selected Parameter with the Config +File "CRConfig.json" to set the `edge.http.routing`, `edge.dns.routing`, +`dns.consistent.routing`, `dnssec.enabled`, `dnssec.zone.diffing.enabled`, +`dnssec.rrsig.cache.enabled`, **and** `strip.special.query.params` properties of +the Snapshot's `config` property from Parameters of the same Name. These need +not be assigned to any particular Profile, but must be assigned to some Profile +within the CDN for which the Snapshot is generated (which is to say most likely +not the "GLOBAL" Profile as that is typically in the "ALL" CDN which will break +in various undocumented scenarios if you try to actually use it as a CDN). All +of these settings ought to be set on Traffic Router Profiles (and really ought +to be first-class properties thereof so they can be properly validated and given +proper, visible default values, but that's beyond this blueprint's scope). The +recommendation this blueprint will make is that the endpoint be changed to +consider Traffic Router Profiles, and/or Traffic Routers be changed to pick up +the value from its own Profile's Parameter list instead of this quasi-global +configuration, but technically no changes are necessary to implement Global +Configuration because these are merely quasi-global Parameter settings. + +This endpoint *also* uses randomly selected values for the truly "global" +Parameters `geolocation.polling.url` and `alt.geolocation.polling.url`. The +information used to fill in the former should be sourced now from the Global +Configuration, while the latter appears to be undocumented and support for it +should just be removed entirely. + +Finally, this endpoint creates Snapshot structures by filling in the `tm_host` +property of the Snapshot's `stats` property by randomly selecting the Value of a +Parameter with the Name `tm.url`. This should instead use the `trafficOpsURL` +Global Configuration setting. + +##### `/system/info` +This endpoint currently does nothing more than list the Names and Values of all +Parameters with the Config File value of exactly `"global"`. These Parameters +may or may not be assigned to some Profile which may or may not have the name +"GLOBAL", and if there are multiple Parameters in that Config File with the same +Name, the Value shown by this endpoint is not defined. + +This endpoint should be deprecated and removed as soon as possible once Global +Configuration is introduced. + +##### `/user/reset_password` +This endpoint uses the Value of a randomly selected Parameter with the Name +`tm.instance_name` and the Config File `"global"` to be inserted into emails for +password resets. It must instead use the `instanceName` Global Configuration +setting. This will also alleviate the problem where users can never reset their +passwords if that Parameter doesn't exist (results in a `500 Internal Server +Error` response). + +##### `/users/register` +This endpoint uses the Value of a randomly selected Parameter with the Name +`tm.instance_name` and the Config File `"global"` to be inserted into emails for +user registration. It must instead use the `instanceName` Global Configuration +setting. This will also alleviate the problem where users can never be +registered if that Parameter doesn't exist (results in a `500 Internal Server +Error` response). + +#### Client Impact +The Go and Python clients will need methods added for interacting with the +Global Configuration. + +#### Other +##### Check Script(s) Impact +The `ToORTCheck.pl` script currently checks for a randomly chosen `tm.url` +"global" Parameter to find out what URL to use for requests. Besides the request +used to find that out, of course. Frankly I don't even know if that script still +works, but if it does and people care about it it'll need to be update to +instead use the `trafficOpsURL` Global Configuration Setting instead, and fall +back on the old Parameter way in the event that it's `null` (but that behavior +should be deprecated and removed as soon as possible). + +##### Postinstall Impact +Postinstall sets a number of "global" Parameter values, and must be changed to +instead set Global Configuration values. + +### T3C Impact +T3C currently uses a Parameter named `tm.rev_proxy.url` assigned to a Profile +named "GLOBAL" (which may or may not exist and may or may not have multiple +`tm.rev_proxy.url` Parameters assigned under arbitrary Config Files with +possibly conflicting Values) to determine if it should use a proxy for requests +to Traffic Ops. It will instead need to use the `reverseProxyURL` property of +the Global Configuration. + +It also checks a Parameter with the Name `maxRevalDurationDays` chosen at random +from any such Parameters assigned to any existing Profile with the Name "GLOBAL" +as a cap on Content Invalidation Jobs. It will instead need to check the Global +Configuration setting of the same name. + +T3C also uses a randomly selected "global" Parameter named `tm.url` to determine +the URL to use when making requests to Traffic Ops (assuming there is no reverse +proxy configured for use instead) and that will need to change to the +`trafficOpsURL` Global Configuration setting. + +If, however, the value of any property/setting is `null`, it should fall back +(for now) on the old Parameter, during a deprecation period for said Parameter. + +Lastly, T3C will randomly select from the available "global" Parameters named +`use_reval_pending` to check whether to wait for parents to apply updates before +applying updates itself. This behavior should be deprecated and eventually T3C +will only apply "Revalidations" "Rapidly". + +### Traffic Monitor Impact +Traffic Monitor itself doesn't need to care about the Global Configuration, it +is only impacted transitively by the changes to endpoints that request Traffic +Monitor data. + +### Traffic Router Impact +Traffic Router itself doesn't need to care about the Global Configuration, it +is only impacted transitively by the changes to endpoints that request Traffic +Router data. + +### Traffic Stats Impact +None. + +### Traffic Vault Impact +None. + +## Documentation Impact +Besides API documentations for new and newly deprecated routes, an overview +section should be added for Global Configuration and all of the myriad of +references to "global" Parameters should be removed/reworked into links to the +configuration's docs. + +## Testing Impact +Tests for each component will need to change to reflect their new behavior. +Mostly I expect T3C tests will need updating to account for the new setup +process required to put equivalent data into the system, and Traffic Ops tests +will likewise need to change their database mocking to reflect the new object. + +## Performance Impact +No performance impact is expected. + +## Security Impact +No security impact is expected. + +## Upgrade Impact +The database migration should set the values of the configuration settings +according to the values of the Parameters they are replacing. So on upgrade the +behavior should be unchanged by design. + +## Operations Impact +Operators will need to be aware of the new configuration options and be informed +that they should no longer use the old "global" Parameters. Ideally with the +Traffic Portal UI controls this should be a very smooth transition, putting all +such information in a single place with definite values and hints for input. + +## Developer Impact +Developers will need to know to use the Global Configuration instead of "global" +Parameters in future applications (not that I'm anticipating any in general). + +## Alternatives +One alternative would be to move these Parameters to the Profile of Traffic Ops +itself, but that has two main disadvantages: + +1. Parameter Values are unvalidated +2. What do you do when Parameter Values for multiple Traffic Ops instances +conflict? + +To say nothing of the fact that this doesn't solve the inherent randomness of +duplicate Parameters being possible. + +## Dependencies +None. + +## References +N/A + +## Appendix A - Code samples + +### Traffic Portal v2 Mock Markup +```html + + + +
+ + Default Geo Miss Latitude + + + + Default Geo Miss Longitude + + + + Geolocation IPv4Polling URL + + + + Geolocation IPv6Polling URL + + + + Information URL + + + + Instance Name + + + + Max Revalidation Days + + + + Reverse Proxy URL + + + + Tool Name + + + + Traffic Monitor Proxy + + + + Traffic Monitor Query Status + + + + Traffic Router Proxy + + + + Traffic Ops URL + + + +
+ + +
+
+
+``` diff --git a/blueprints/img/global.configuration.form.example.png b/blueprints/img/global.configuration.form.example.png new file mode 100644 index 0000000000000000000000000000000000000000..f515f346c625e8fe510838b76b8bddfe8743d029 GIT binary patch literal 57502 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 literal 0 HcmV?d00001