Skip to content
This repository was archived by the owner on Nov 24, 2025. It is now read-only.

Conversation

@rawlinp
Copy link
Contributor

@rawlinp rawlinp commented Mar 25, 2020

What does this PR (Pull Request) do?

Adds a blueprint for Flexible Topologies.

  • This PR is not related to any Issue

Which Traffic Control components are affected by this PR?

  • Documentation

What is the best way to verify this PR?

Read it!

The following criteria are ALL met by this PR

  • blueprint -- no tests necessary
  • This PR includes documentation
  • blueprint -- no changelog necessary
  • This PR includes any and all required license headers
  • This PR does not include a database migration
  • This PR DOES NOT FIX A SERIOUS SECURITY VULNERABILITY (see the Apache Software Foundation's security guidelines for details)

@rawlinp rawlinp added the blueprint feature requirements / implementation details label Mar 25, 2020
Copy link
Member

@mitchell852 mitchell852 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some more comments

@mitchell852
Copy link
Member

Currently, assigning caches to a steering delivery service has no effect as the target delivery services are the delivery services that really serve the content. I think the same should apply to assigning a topology to a steering delivery service. In fact, the delivery service create/update apis should prevent any such assignment by returning a 400 Bad Request if trying to assign a topology to a steering delivery service.

@mitchell852
Copy link
Member

Currently, you can queue updates at the cdn, cache group or server (cache) level. Would it make sense to be able to queue updates for a Topology? I.e. DS A uses Topology B. You make a change to DS A that requires a queue updates. Might make sense to queue at the topology level as opposed to the cdn level.

@rawlinp
Copy link
Contributor Author

rawlinp commented Mar 31, 2020

Currently, you can queue updates at the cdn, cache group or server (cache) level. Would it make sense to be able to queue updates for a Topology? I.e. DS A uses Topology B. You make a change to DS A that requires a queue updates. Might make sense to queue at the topology level as opposed to the cdn level.

I'm hesitant to add "yet another way to queue updates on caches". Topologies are multi-CDN, so would queuing updates on a Topology queue updates on all servers in the Topology across all CDNs? IMO it seems like "queue updates on CDN" is the default operator behavior when making changes to delivery services.

@jhg03a
Copy link
Contributor

jhg03a commented Apr 2, 2020

Something else to think about, when adding more tiers to a topology that's going to increase revalidation delays (or worse, likelyhood of never completing). Currently there is a rule that parent tiers must revalidate before child tiers.

@rawlinp
Copy link
Contributor Author

rawlinp commented Apr 2, 2020

That is a good point, I can mention that in the operational impacts.

@ocket8888 ocket8888 added this to the Flexible Topologies milestone Apr 14, 2020

**API Constraints:**
- `firstHeaderRewrite`, `middleHeaderRewrite`, and `lastHeaderRewrite` can only be set if `topology` is not null
- `edgeHeaderRewrite` and `midHeaderRewrite` cannot be set if `topology` is not null
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of having parallel mutually exclusive fields serving the same purpose, couldn't we just drop the first and last fields? Seems like that creates additional tradition steps when converting to topologies. The concept of a middleHeaderRewrite doesn't currently exist, so it's fine to be topology only.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is on purpose -- we want it to be part of the process of migrating legacy DSes to Topologies. Part of that is making sure the existing header-rewrite configs are safe and make sense in the Topology you're assigning the DS to.


All relevant Delivery Service APIs will have their JSON request and response objects modified to include a new `topology` field which references the name of the topology it's assigned to:
```JSON
All relevant Delivery Service APIs will have their JSON request and response objects modified to include the following new fields:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The same treatment should be applied to rawRemap. This also lets us remove the ##OVERRIDE anymap hack I think.

@rawlinp rawlinp marked this pull request as ready for review April 28, 2020 20:02
@mitchell852 mitchell852 merged commit 7227e85 into apache:master May 11, 2020
@rawlinp rawlinp deleted the topologies-blueprint branch May 13, 2020 22:54
@zrhoffman zrhoffman removed this from the Flexible Topologies milestone Oct 16, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

blueprint feature requirements / implementation details

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants