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

Teleport Connect: Accept database name when setting up proxy #12173

Merged
merged 6 commits into from
Apr 26, 2022

Conversation

ravicious
Copy link
Member

@ravicious ravicious commented Apr 22, 2022

Teleport Connect used to not ask the user for the database name. This made the whole flow awkward in situations where the user tried to run the generated CLI command, but the DB client returned an error because the user didn't have access to the db under the default name.

This change lets Teleport Connect pass the optional database name to the tsh daemon.

If you want to test this with Teleport Connect, you must build it off of the gravitational/webapps#757.

Teleport.Connect.db.name.mov

Comment on lines 38 to 40
// target_subresource_name points at a subresource of the remote resource, for example a
// database name on a database server.
string target_subresource_name = 9;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Picking the name wasn't easy. target_name is already reserved for as the name for the database server you're connecting to. On top of that, the fields in the gateway code in lib/teleterm try to not have db-specific names, so I couldn't name it just target_database_name.

I think we wanted to avoid adding db-specific stuff there in case we want to use proxies for more than databases, but we'll see how it'll actually pan out in the future.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have either a better name proposal that target_subresource_name if we want to drop the reference to db specific fields but I think that in the future where the gateway will be responsible for handling many different gateway types like proxy aws it would be more readable to aggregate those field in oneOf or create a separate message holding those fields instead of handling them by generic naming but for now I'm ok with current version.

Also can we keep proto filed number in ascending order ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

… it would be more readable to aggregate those field in oneOf or create a separate message holding those fields instead of handling them by generic naming

I was thinking of the second option too. It's almost like designing a database table, in a way.

The current implementation is a shot in the dark to be honest, it should become more clear what kind of stuff we need to share and what not once we actually get to implementing some other kinds of proxies.

Also can we keep proto filed number in ascending order ?

message Gateway already has fields 1–8 and I wanted to add 9th. Instead of putting it as the last field though, I put it next to a field that's more closely related to it. From your experience, do you generally append them to the end?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, +1 for putting this at the end and keeping the fields ordered consecutively.

Copy link
Contributor

@smallinsky smallinsky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have looked only at Go changes.

Comment on lines 38 to 40
// target_subresource_name points at a subresource of the remote resource, for example a
// database name on a database server.
string target_subresource_name = 9;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have either a better name proposal that target_subresource_name if we want to drop the reference to db specific fields but I think that in the future where the gateway will be responsible for handling many different gateway types like proxy aws it would be more readable to aggregate those field in oneOf or create a separate message holding those fields instead of handling them by generic naming but for now I'm ok with current version.

Also can we keep proto filed number in ascending order ?

lib/teleterm/clusters/cluster_databases.go Outdated Show resolved Hide resolved
lib/teleterm/clusters/cluster_databases.go Outdated Show resolved Hide resolved
@ravicious ravicious requested a review from smallinsky April 25, 2022 15:27
@ravicious ravicious enabled auto-merge (squash) April 26, 2022 09:14
@ravicious ravicious merged commit b3db804 into master Apr 26, 2022
@ravicious ravicious deleted the ravicious/db-name branch April 26, 2022 09:38
ravicious added a commit that referenced this pull request Apr 26, 2022
* Add target_subresource_name to proto files

* Pass database name when creating certs and CLI command
ravicious added a commit that referenced this pull request Apr 27, 2022
* Add target_subresource_name to proto files

* Pass database name when creating certs and CLI command
ravicious added a commit that referenced this pull request Apr 27, 2022
…#12228)

* Add target_subresource_name to proto files

* Pass database name when creating certs and CLI command
@webvictim webvictim mentioned this pull request Jun 8, 2022
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