Conversation
Summary of ChangesHello @danlavu, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the SSSD test framework by introducing new network utility functions and refining existing ones. It provides a dedicated method for managing hostnames, improves the Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a new utility for managing the hostname, adds a common configuration for dynamic DNS, and adjusts the nslookup helper for easier use in test assertions. My review includes suggestions to improve the efficiency and correctness of the new hostname utility and to enhance the flexibility of the dyndns configuration helper by making its parameters configurable.
|
Writing the tests now, but they do seem to work. UPDATE: There was a problem changing the hostname during the test. The teardown did not always work leaving the domain. Updated sssd.conf to contain *_hostname. |
b5083d4 to
195bf1c
Compare
7128453 to
68b8673
Compare
spoore1
left a comment
There was a problem hiding this comment.
Just one question about the nslookup return value. Running the provided test passes currently:
PASSED tests/test_dynamic_dns.py::test_dynamic_dns__updates_forward_records (ad)
PASSED tests/test_dynamic_dns.py::test_dynamic_dns__updates_forward_records (ipa)
PASSED tests/test_dynamic_dns.py::test_dynamic_dns__updates_forward_records (samba)
8a01b91 to
37868ad
Compare
5d02429 to
9bbc0de
Compare
9bbc0de to
c7c24ff
Compare
c7c24ff to
d6f6e8b
Compare
Actually, it wasn't working correctly. things like if there were two A records but resolved to the wrong ip. Having the return code be 0, but the wrong IP is found, was just messy and complicated. |
|
This test works. |
|
|
||
|
|
||
| def ip_to_ptr(ip_address: str) -> str: | ||
| def ip_to_ptr(ip_address: str, prefixlen: int | None = None) -> str: |
There was a problem hiding this comment.
There was a problem hiding this comment.
I'm not sure, I think I wrote most of the function, then stumbled upon ipaddress module.
| [ | ||
| ("192.168.1.0", "1.168.192.in-addr.arpa."), | ||
| ("2001:db8::1", "1000000000000000000000008bd01002.ip6.arpa."), | ||
| ("192.168.1.0", "1.168.192.in-addr.arpa", None), |
There was a problem hiding this comment.
Shouldn't this be the expected value 0.1.168.192.in-addr.arpa ?
There was a problem hiding this comment.
Technically, yes, if were looking for the ptr record, but we want the zone file. Which will always omit the last octet.
| ("001:db8::", True), | ||
| ], | ||
| ) | ||
| def test_ip_is_valid(value, expected): |
There was a problem hiding this comment.
test_ip_is_valid is essentially only executing ipaddress.ip_address(ip) which is part of the ipaddress python library. Due to this, I see no value in adding sssd-test-framework tests for this test_ip_is_valid method.
There was a problem hiding this comment.
Ack, will remove it then.
| return self | ||
|
|
||
| def delete_record(self, name: str) -> None: | ||
| def delete_record(self, name: str, data: str) -> None: |
There was a problem hiding this comment.
Is data argument really needed? That seems a bit cumbersome
There was a problem hiding this comment.
It is very cumbersome.
If we wanted to delete the entire record, we couldn't remove it. IPA has sshfp records that I think we should keep? So the record data has to be specified so that record type is deleted.
There was a problem hiding this comment.
IMO it would be better to have a record type argument (as enum) which specified the DNS record type instead of requiring passing the record data
There was a problem hiding this comment.
I get it, it doesn't make sense to have this here, but it's to make it compatible with the generic provider. I'll rework the logic and make it easier.
|
|
||
| :param name: Name of the record. | ||
| :type name: str | ||
| :param data: Record data. |
There was a problem hiding this comment.
What is data? Does not look clear to me what is expected there.
There was a problem hiding this comment.
It depends on what kind of record, if it's an A record, it will be an IP, a ptr record one octet.
jakub-vavra-cz
left a comment
There was a problem hiding this comment.
I do not see what "data: str" is at first glance and the docstring does not elaborate.
Do we even need data when we want to delete some record by a name?
I think cleaner approach would be to have the dns records as objects (like users, groups, etc.) and keep the "data" needed from CRUD inside them. That way can providers implement the same approach including record removal on clenaup.
So the cleanup is working by doing a diff. That is certainly an option that will take more time to implement. The reason why data exists is just for IPA, because when the record is created, it contains SSHFP records, to remove just the A/AAAA/PTR record, it needs the corresponding data to be explicitly defined. It's cumbersome.
The choice is quick, or do it better. Let's get @justin-stephenson thoughts. |
I don't have a strong opinion either way, but "better" should always be preferred over "quicker". I would expect the creating/deleting DNS record method interface only requires 'dns zone', 'record type', and 'name' arguments (similar to |
No description provided.