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

Use less IDs in paths #117

Merged
merged 3 commits into from
Apr 19, 2022
Merged

Use less IDs in paths #117

merged 3 commits into from
Apr 19, 2022

Conversation

smklein
Copy link
Contributor

@smklein smklein commented Apr 19, 2022

Old Behavior

For most endpoints, we'd use the format:

http://<IP ADDRESS>/instances/<INSTANCE UUID>/<rest of the path, maybe>

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.

Comment on lines -579 to -583
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(),
));
}
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 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.

Copy link
Contributor Author

@smklein smklein Apr 19, 2022

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.

@smklein
Copy link
Contributor Author

smklein commented Apr 19, 2022

Tested in Omicron by: oxidecomputer/omicron#950

server/src/lib/server.rs Outdated Show resolved Hide resolved
@smklein smklein merged commit abd372d into master Apr 19, 2022
@smklein smklein deleted the less-ids-in-paths branch April 19, 2022 22:08
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.

3 participants