Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve get_best_match_zone() to match by most matched components instead of by length of domain #1193

Merged
merged 9 commits into from
Nov 24, 2022

Conversation

monkut
Copy link
Collaborator

@monkut monkut commented Nov 17, 2022

Description

Current get_best_match_zone() chooses the best match by length, so the expectation will result in error where a match is a partial match.

When zones are:

  • example.com
  • beta.example.com

And some-beta.example.com is given as the domain, the expected match is example.com, but beta.example.com will match.

This PR picks the zone with the most matches instead of length

GitHub Issues

#1190

@coveralls
Copy link

coveralls commented Nov 17, 2022

Coverage Status

Coverage increased (+0.06%) to 74.472% when pulling 8058364 on feature-change/update-best-match-zone into 72c5dc3 on master.

Copy link
Collaborator

@souravjamwal77 souravjamwal77 left a comment

Choose a reason for hiding this comment

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

Looks good.

@goya813
Copy link
Collaborator

goya813 commented Nov 24, 2022

Looks good p-r!!

I wanted the following test cases.

zone = Zappa.get_best_match_zone(
    all_zones={
        "HostedZones": [
            {
                "Name": "beta.example.com.",
                "Id": "zone-incorrect",
                "Config": {"PrivateZone": False},
            },
            {
                "Name": "example.com.",
                "Id": "zone-correct",
                "Config": {"PrivateZone": False},
            }
        ]
    },
    domain="example.com",
)

🔧 fix case where exact match is ignored over longest.
…te-best-match-zone' into feature-change/update-best-match-zone
@monkut
Copy link
Collaborator Author

monkut commented Nov 24, 2022

@goya813

Thanks for the review, nice catch!

I've added a testcase, and updated the code to account for that case.

Copy link
Collaborator

@goya813 goya813 left a comment

Choose a reason for hiding this comment

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

Looks Good!

@monkut monkut merged commit 5c4de19 into master Nov 24, 2022
Ian288 pushed a commit to tackle-io/Zappa that referenced this pull request Jul 11, 2023
…nstead of by length of domain (zappa#1193)

* 🔧 improve `get_best_match_zone()` to match by most matched components instead of by length of domain.

* ♻️ refactor multiple loops into single loop
🔧 add '.' to test_domain_name_match_component testcase HostedZones zone, 'Name'.

* 🔧 variable name clarification.

* 📝 add comments for clarification

* ✅ add testcase where match is short and longer zone name comes first.
🔧 fix case where exact match is ignored over longest.

* 🔥 remove unused import
BarNehemia added a commit to Lightricks/Zappa that referenced this pull request Aug 10, 2023
…zappa-0.57.0

* commit '0b1eab14ca39c3a3bfb4e915347e07495171dcba': (27 commits)
  updating workflow actions to remove deprecation warnings (zappa#1243)
  📝 CHANGELOG.md update for 0.57.0 (zappa#1246)
  fixing compatibility with Django 4.2 (zappa#1237)
  Update Readme with patreon and donors (zappa#1234)
  adding support for Python 3.10 (zappa#1231)
  Nose to pytest (zappa#1239)
  lint: updating code style with `make black` (zappa#1238)
  Alternative way to check if running in Docker (zappa#1204)
  📝 CHANGELOG.md update for 0.56.0 release (zappa#1187)
  Improve `get_best_match_zone()` to match by most matched components instead of by length of domain (zappa#1193)
  Bypass python version runtime check when code run in docker (zappa#1180)
  Be able to pass in a batch window when using batch size (zappa#1118)
  Correction to README. (zappa#1177)
  (zappa#908) Update BINARY_SUPPORT to use Content-Encoding to identify if data is binary (zappa#1155)
  Remove special check for Django<1.7, fix for zappa#1158  (zappa#1159)
  Resolve (zappa#410) Logs are missing query strings (zappa#1165)
  Handle spaces in x-forwared-for/remove six (zappa#1127) (zappa#1163)
  add feature (zappa#704) Check if args/kwargs are JSON Serializable while running locally (zappa#1154)
  docs: Add documentation for s3 event object key_filters (zappa#1169)
  Add feature pyenv virtualenv detecting .python-version file (zappa#1153)
  ...

# Conflicts:
#	zappa/cli.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants