OpenAPITools / openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
21.35k stars 6.46k forks source link

[BUG] [rust-client] Unable to generate rust client for docker api #2532

Open pgrinaway opened 5 years ago

pgrinaway commented 5 years ago

Bug Report Checklist

Description

openapi-generator successfully generates an output for the Docker engine v1.39 spec, albeit with a number of warnings such as

[main] WARN  o.o.codegen.DefaultCodegen - codegenModel is null. Default to UNKNOWN_BASE_TYPE

...

[main] WARN  o.o.c.examples.ExampleGenerator - example value (array/primitive) not handled at the moment: [{ID=ktnbjxoalbkvbvedmg1urrz8h, Version={Index=11}, CreatedAt=2016-11-05T01:20:17.327670065Z, UpdatedAt=2016-11-05T01:20:17.327670065Z, Spec={Name=server.conf}}]

Full output here.

Upon attempting to compile the resulting code, there are numerous errors from the Rust compiler such as:

error[E0412]: cannot find type `Value` in this scope
  --> src/apis/container_api.rs:52:76
   |
52 |     fn container_stats(&self, id: &str, stream: bool) -> Box<Future<Item = Value, Error = Error<serde_json::Value>>>;

...

error[E0277]: the trait bound `models::File: serde::Serialize` is not satisfied
  --> src/apis/plugin_api.rs:58:14
   |
58 |             .with_body_param(body)
   |              ^^^^^^^^^^^^^^^ the trait `serde::Serialize` is not implemented for `models::File`

error: aborting due to 25 previous errors

Full compiler output here.

openapi-generator version
(base) Patricks-MBP:test1 pgrinaway$ openapi-generator version
3.3.4
OpenAPI declaration file content or url

The OpenAPI declaration can be found here

Command line used for generation

I ran:

openapi-generator generate -i https://docs.docker.com/engine/api/v1.39/swagger.yaml -g rust -o rust_client/

Using openapi-generator version 3.3.4 on Mac OS X Mojave 10.14.3. Cargo version cargo 1.32.0 (8610973aa 2019-01-02)

Steps to reproduce

Generate the rust code:

mkdir rust_docker && openapi-generator generate -i https://docs.docker.com/engine/api/v1.39/swagger.yaml -g rust -o rust_docker/

Attempt to compile:

cd rust_docker && cargo build
Related issues/PRs

I'm not sure if #2527 is related, since it is trying to also generate a client for this API. Possibly PR #2244 is related, but again I am unsure.

Suggest a fix

I am relatively new to rust, but manually inserting a use serde_json::Value; in the generated code did make the error about the Value go away. However, I'm not quite sure how to fix the other errors.

auto-labeler[bot] commented 5 years ago

👍 Thanks for opening this issue! 🏷 I have applied any labels matching special text in your issue.

The team will review the labels and make any necessary changes.

ximon18 commented 4 years ago

I'm seeing this issue with OpenAPI generator v4.3.1 and v5.0.0-SNAPSHOT. I tried with both v1.36 and v1.40 of the Docker API.