-
Notifications
You must be signed in to change notification settings - Fork 193
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
Ignore empty or invalid IP in Endpoint Set*IP #3281
Conversation
🤖 Created branch: z_pr3281/tpantelis/handle_empty_ip |
@@ -120,6 +120,9 @@ func getIPFrom(family k8snet.IPFamily, ips []string, ipv4Fallback string) string | |||
|
|||
func setIP(ips []string, ipv4Fallback, newIP string) ([]string, string) { | |||
family := k8snet.IPFamilyOfString(newIP) | |||
if family == k8snet.IPFamilyUnknown { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wouldn’t it be better to return an error?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps for an invalid IP but then every caller has to check the error even though it's likely not possible for it to pass an invalid IP.
Handling an empty IP without failing avoids more generic client code from having to first verify non-empty. Eg
for _, family := range submSpec.GetIPFamilies() {
publicIP, resolver, err := getPublicIP(family, submSpec, k8sClient, backendConfig, airGappedDeployment)
...
endpointSpec.SetPublicIP(publicIP)
}
getPublicIP
would currently return empty for IPv6 b/c we haven't implemented it yet. If SetPublicIP
returned an error on empty, we would want to ignore it here or check if non-empty first. Either way we wouldn't care about the return error but we'd still have to handle it to avoid a linter error.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, so if this is about handling empty strings, I think it’s best to be explicit about it:
func setIP(ips []string, ipv4Fallback, newIP string) ([]string, string) {
if newIP == "" {
return ips, ipv4Fallback
}
family := k8snet.IPFamilyOfString(newIP)
…
Handling IPFamilyUnknown
suggests that it’s about handling invalid addresses, not IPs (at least, to me).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or add a comment mentioning that IPFamilyUnknown
corresponds to empty addresses 😉.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Checking IPFamilyUnknown
handles both empty and invalid as neither translates to V4 or V6. I'll add explicit check for empty so that IPFamilyUnknown
means invalid and log an error message.
Signed-off-by: Tom Pantelis <[email protected]>
a30086d
to
eb33509
Compare
🤖 Closed branches: [z_pr3281/tpantelis/handle_empty_ip] |
No description provided.