Skip to content

Use less IDs in paths#117

Merged
smklein merged 3 commits into
masterfrom
less-ids-in-paths
Apr 19, 2022
Merged

Use less IDs in paths#117
smklein merged 3 commits into
masterfrom
less-ids-in-paths

Conversation

@smklein

@smklein smklein commented Apr 19, 2022

Copy link
Copy Markdown
Contributor

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 thread server/src/lib/server.rs
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
Copy Markdown
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.

@smklein smklein Apr 19, 2022

Copy link
Copy Markdown
Contributor Author

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

smklein commented Apr 19, 2022

Copy link
Copy Markdown
Contributor Author

Tested in Omicron by: oxidecomputer/omicron#950

Comment thread server/src/lib/server.rs Outdated
@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