Swagger-codegen: [Rust] Enhancements to Rust server generator

Created on 19 Oct 2017  路  15Comments  路  Source: swagger-api/swagger-codegen

Description
  • [x] rust2 is not a very informative name (renamed to rust-server via https://github.com/swagger-api/swagger-codegen/pull/6747)
  • [ ] Currently uses hyper 0.10 - work underway to upgrade to hyper 0.11 (which adds full async support)
  • [ ] Documentation on how to use the generated code in a Rust project is lacking
  • [ ] Consolidate the client generator with rust generator (rust-server generates both server and client code)
  • [ ] Add a means of testing rust-server's XML support back in (in a way that doesn't break everything else!). I believe other generators already do this, so it should not be over-hard.
  • [ ] The rust-server sample was generated from the pre-reversion petstore yaml. It should be re-generated from the current petstore yaml.
Swagger-codegen version

Latest master

Related issues/PRs

https://github.com/swagger-api/swagger-codegen/pull/6613

Suggest a fix/enhancement

If anyone wants to work on these tasks, please reply to let us know.

Rust General Rust help wanted

Most helpful comment

I have the hyper 0.11 upgrade/port pretty much working, and hope to get it out in the next week or so.

All 15 comments

cc @quodlibetor @ahmedcharles @farcaller @BenjaminGill-Metaswitch @bruceadams @jaytiar

Thanks.

Also, https://github.com/swagger-api/swagger-codegen/pull/6758 helpfully reverted changes to petstore yaml to add XML testing.

I think this yields two pieces of additional work:

  • [ ] Add a means of testing rust-server's XML support back in (in a way that doesn't break everything else!). I believe other generators already do this, so it should not be over-hard.
  • [ ] The rust-server sample was generated from the pre-reversion petstore yaml. It should be re-generated from the current petstore yaml.

(BTW: I've now deprecated my secondary GitHub login, @BenjaminGill-Metaswitch, in favour of this, the original)

I have the hyper 0.11 upgrade/port pretty much working, and hope to get it out in the next week or so.

There's another thing we probably want to sort out soon-ish:

Common, non auto-generated code lives in a dedicated crate - https://crates.io/crates/swagger. Currently, this is mastered at https://github.com/Metaswitch/swagger-rs, and @mirw and I are the owners.

I think there are two things we want to do:

  1. Move the repo to https://github.com/swagger-api/swagger-rs. This would then become the master repo for future development. Needs a member of @swagger-api to do
  2. As per http://doc.crates.io/crates-io.html#cargo-owner, I think we probably want to add @swagger-api as an owner (giving all members of the group permission to publish/yank). Additionally, we probably want to add a couple of individuals so that they also have permission to change the ownership list in future. @wing328 - any suggestions? I can sort this out once I know who to add

I have just submitted #6985 to better match rust int types to schema constraints on rust-server codegen.

I flagged the commitee members as per PR rules but I thought I should also drop a notification here. Let me know what you think.

@wing328 @bjgill I am willing to help if you prioritize between this issue and this one. It'd be great if you tell me which task has importance from your point of view.

It rather depends on which of the two generators you're interested in. This issue covers enhancements to rust-server, a generator that produces a crate containing both client and server. #6250 covers enhancements to rust, a generator that produces a crate containing only a client.

From this issue, I believe that the status of the desired enhancements are as follows:

  • Move to hyper 0.11: I believe @mirw has got this near-complete.
  • Documentation: is still lacking. If you've started using rust-server, and fancy producing a user guide, that would be very helpful.
  • Consolidate rust and rust-server: not started, but would help significantly with maintainability, covered by #7347
  • Testing XML support: not started. Should largely be a case of seeing how other generators do this and copying them.
  • Regenerating sample: done, I believe.
  • Moving swagger-rs into @swagger-api: needs a member of @swagger-api to import the repo.
  • Sort out swagger-rs crate owners: I need to add additional owners at some point

Thank you for opinions. Here are my comments:

  • Move to hyper 0.11: I believe @mirw has got this near-complete.

I've tried to find his remaining work, but unfortunately couldn't see it anywhere. I can start this from scratch or continue from where @mirw left, if he is not willing to go on and share latest status.

  • Documentation: is still lacking. If you've started using rust-server, and fancy producing a user guide, that would be very helpful.

I've started with just generating rust client. Is there an example documentation from other languages as an example for a starting point? Are we talking about this samples page or generated README file or is there any other documentation page exists?

  • Consolidate rust and rust-server: not started, but would help significantly with maintainability, covered by #7347

Please have a look my comment on related issue

I've been testing the hyper 0.11 stuff but not got it pushed publicly yet - hope to do so in the next day or two - sorry for the delay!

@aykutakin - on documentation, I'm not sure there is an equivalent in any of the other languages. What I was imagining was a quick-start guide for generating a rust/rust-server. Effectively similar to https://github.com/swagger-api/swagger-codegen#getting-started, but explicitly discussing the options that one might want to use. I'm not sure where such a guide would live, though.

@aykutakin, sorry for the delay! I've just pushed the async code to https://github.com/Metaswitch/swagger-codegen (rust branch). I'm going to raise an MR shortly, but in case you're keen to see it sooner.

Any plans to generate server stubs based on rust-web frameworks like actix-web, Rocket?

No plans myself, although it might be interesting to see it done.

As you probably know, the current implementation is built directly on hyper. Some of it (e.g. model generation) would probably be portable over to other frameworks.

What benefits are you looking for from moving to actix-web or Rocket? Is it using their middlewares, threading models, etc., integrating with other actix-web/Rocket endpoints, or something else?

@mirw I am hoping use actix-web for an upcoming project, I am interesting in using their middlewares and etc.
Anyway I will first give this generator a try.

Looking at #7600, hyper11 support was merged in #7896, so the second item should be checked off.

Was this page helpful?
0 / 5 - 0 ratings