-
Notifications
You must be signed in to change notification settings - Fork 22
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
Use less IDs in paths #117
Conversation
if path_params.into_inner().instance_id != context.properties.name { | ||
return Err(HttpError::for_internal_error( | ||
"Instance name mismatch (path did not match struct)".to_string(), | ||
)); | ||
} |
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.
This use of the hostname was somewhat odd - basically, we used the client-provided hostname here, for a path which should only be accessible to the control plane.
I get why we used it - it acted as a convenient way to get the redundant UUID - but we should probably avoid referring to the instance by hostname for internal purposes, as that's could theoretically change.
Regardless, that problem no longer exists after this PR.
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.
Side-note, I was definitely confused by seeing path = ... {instance_id}
, when the variable is actually meant to be a string-based hostname.
Tested in Omicron by: oxidecomputer/omicron#950 |
Old Behavior
For most endpoints, we'd use the format:
For many endpoints, this UUID would be redundant with values stored in
properties
struct, and a somewhat silly check would validate this. This path format added little value, other than requiring clients to supply a redundant value.Why is the UUID redundant? Propolis' server only supports a single instance anyway, so the server address should be a sufficient factor for distinguishing instances.
New Behavior
Don't bother supplying the instance UUID. Simplify a lot of "name -> UUID" pathways where this is no longer necessary.