Oh, Ok. Sorry my english isn't so good and I hadn't understood all.
An OpenAPI 3 version of geoserver REST contracts already exist and is
debugged ?
It's a very good news for me and there's absolutely no need to continue
using Swagger V2 yaml, then : you're right.
But where are these OAS 3 files ? I'd better use them immediately.

Regards,

Marc.

Le mer. 10 févr. 2021 à 15:30, Gabriel Roldan <gabriel.rol...@gmail.com> a
écrit :

>
>
> On Wed, 10 Feb 2021 at 07:57, Marc LE BIHAN <mlebiha...@gmail.com> wrote:
>
>> Hello,
>>
>> Your tool shows the need to have a way to automate installation(s) of
>> Geoserver sometimes. And I have it too.
>> curl statements aren't enough for this task, and OpenAPI is a convenient
>> way to drive its installation. Using a client API to override it like you
>> do and offer additional help is useful (I have to create internally mine
>> too !). But the beginning is that OpenAPI calls have to work, and there's
>> some corrections to do in yaml files provided, for that.
>>
>> Currently, in [GEOS-9886] issue (that I've renamed to focus only on
>> workspaces.yaml content), I've addressed three flaws :
>> - One in the input content sent to postWorkspaces, that doesn't send the
>> JSON the server expects.
>> - Another in the output of geoserver/rest/workspaces (= list all the
>> workspaces) that should expect an array incoming in return of a call,
>> instead of an object.
>> - Another in the output of geoserver/rest/workspaces/{workspaceName} (= a
>> single workspace) that should expect a "workspace:" incoming instead of an
>> anonymous object.
>>
>>
> If you want to fix the swagger 2 files go for it. I was just pointing out
> there're those OAS3 ones with the errors you mention already fixed if you
> want to use them instead (i.e. given swagger 2 is superseded by OAS3).
>
>
>> I still have to test deleteWorkspace method, and then the workspaces.yaml
>> file will be corrected.
>>
>> I came too far with my idea of a V2 rest yaml files describing the
>> Geoserver REST services, using annotations on server classes to generate
>> these yaml files and ensure their accuracy,
>> but the problem is established : if on that first workspaces.yaml file
>> I've found three bugs, the other might have the same amount and, one by
>> one, depending on my needs, I will have to check and correct them.
>>
>> Regards,
>>
>> Marc.
>>
>> Le mer. 10 févr. 2021 à 01:58, Gabriel Roldan <gabriel.rol...@gmail.com>
>> a écrit :
>>
>>> Hey, I just saw this, sorry for being late to the party
>>>
>>> There's a lot going on in this discussion, so I'll try to be succinct.
>>>
>>> First and foremost, I am generating a Java client from the OpenAPI
>>> documents. Not the swagger 2 ones provided as documentation, but OAS3 ones
>>> created using those as reference.
>>>
>>> Here's a project I just made public a couple of days ago:
>>> https://github.com/camptocamp/geoserver-rest-openapi
>>>
>>> At camptocamp we're using it in production for over a year in an
>>> internal project, but now I moved it as a standalone project to be used by
>>> the OSS project geOrchestra.
>>>
>>> It only implements the minimum I needed for that internal project so
>>> far. That is, working with workspaces, datastores, feature types, layers,
>>> and styles. And probably not even all of it.
>>>
>>> Also, it focuses on JSON representation only.
>>>
>>> On the bright side, it's a standalone library, uses the OpenAPI maven
>>> code generator, and runs integration tests against a GeoServer docker
>>> container managed by the maven life cycle.
>>>
>>> CI builds are set up using github workflows:
>>> https://github.com/camptocamp/geoserver-rest-openapi/actions
>>>
>>> ---
>>> <rant>
>>> That said, writing the OAS3 files and the generated client wrapper code
>>> is hard, often having to debug GeoServer itself to figure out what's going
>>> on in the server to be able of mimicking it on the api definition. There
>>> are several inconsistencies, not only in the outdated/incomplete swagger2
>>> files, but in the server itself, most of which I think are due to using
>>> XStream to generate the JSON representations, like a single object instead
>>> of an array when an array is expected but the result contains a single
>>> element, excessive wrapping of objects, and several other annoyances I
>>> didn't care to document properly at the time, but believe me, I thought
>>> having a working set of OAS3 specs would be a nice first step towards
>>> defining a v2 api with clearly defined api contracts and code-generated
>>> server stubs. Achieving that would of course require significant resources
>>> so it most probably will die in the wish-list.
>>>
>>> But by all means, feel free to check whether that project is of use to
>>> you and to contribute to it. Given enough community interest, we could even
>>> manage to land it as part of geoserver's codebase.
>>>
>>> This Andrea's comment is of most interest and I think I know how to
>>> address it
>>>
>>> > Third, if you want to have reliable yamls that you can generate
>>> clients for, make a plan for it, write a GSIP
>>> <https://docs.geoserver.org/stable/en/developer/policies/gsip.html>,
>>> > resource it fully, and then implement it. Do it in a way that the
>>> system is self sustaining (*every deviation *
>>> *> gets a test failure*) and you might not need to be involved long
>>> term all that much (but plan for some).
>>>
>>> Since the OAS3 api object model (catalog info objects, etc) mirrors
>>> GeoServer Catalog object model, I've experience using mapstruct to create
>>> code-generated object model mappers, and to make the code generation fail
>>> if something changes, which is a good way to ensure both stay in sync.
>>> That'd be of special interest in case a v2 api would be defined, but I had
>>> the intention of creating those mappers nonetheless at least for the sake
>>> of keeping the models in sync.
>>>
>>> As a final note, if I had the resources, I'd very much would like to
>>> implement such new api version, but would definitely do so as a
>>> microservice in the context of this project
>>> https://github.com/camptocamp/geoserver-microservices
>>> </rant>
>>>
>>> Hope that helps,
>>>
>>> Gabriel
>>>
>>> On Mon, 8 Feb 2021 at 04:49, Andrea Aime <andrea.a...@geo-solutions.it>
>>> wrote:
>>>
>>>> On Sun, Feb 7, 2021 at 10:00 PM Marc Le Bihan <mlebiha...@gmail.com>
>>>> wrote:
>>>>
>>>>> For that, I think the best thing to do would be to annotate server
>>>>> classes and object to allow Swagger/Open Api to produce their exact
>>>>> declarations of services in a new yaml file.
>>>>> But this new yaml file and Swagger-UI documentation should be in
>>>>> another URL, let say /geoserver/rest/v2/... to ensure that existing code
>>>>> that rely on version 1 of the API can continue to use /geoserver/rest/...
>>>>> without trouble .
>>>>> (but this is only the beginning of a solution...)
>>>>>
>>>>
>>>> I don't see the need of a v2, you're not changing the existing REST API
>>>> implementation and the resource representations no? Just its description.
>>>> Nobody is using the yamls to generate clients right now, anyways.
>>>>
>>>> Also, in general, versioning will likely not work, the API changes
>>>> little by little as new needs pop up, we'd be at "v200" (exaggerating of
>>>> course) if we considered every
>>>> model change happened so far, and every new resource addition or new
>>>> request parameter.
>>>>
>>>> What we typically try to do, is to preserve backwards compatibility,
>>>> that is, a client written for a previous release should keep on working
>>>> with the
>>>> new one (new fields are optional), new parameters in resource requests
>>>> are optional.
>>>>
>>>> As said in my previous mail, the yamls are just documentation at the
>>>> moment: I don't know why you explain that a client can be generated
>>>> from YAML files if they are correctly set up (we know that very well),
>>>> as I told you already, right now it's not a goal, due to the limited
>>>> staffing of the project.
>>>> The yaml files have been hand written once, and then mostly left there
>>>> to rot.
>>>>
>>>> If you want to join in the effort to make the yaml files maintainable,
>>>> and provide resources for both its initial setup and long term maintenance,
>>>> then we can make
>>>> "yaml as code generation support" a project goal too. Otherwise there
>>>> is nothing to discuss, it's not a matter of "right or wrong",
>>>> it's a matter of having the man hours to do an initial version of it,
>>>> and then look after it in the long term.
>>>> Existing developers are busy up to their eyeballs and more, there is no
>>>> amount of reasoning that will change that.
>>>>
>>>>
>>>>
>>>>> My question is :
>>>>> Do you want this file to be integrated in the restconfig project with
>>>>> a test if I can create one that is convincing,
>>>>> or do you think it's too much, too early, and I better keep these
>>>>> corrected file for myself, for my own use only ?
>>>>>
>>>>
>>>> First step, treat it as documentation and simply issue a fix for the
>>>> yaml.
>>>>
>>>> Second step, if you can write a test that generates a client, and can
>>>> use it in an interaction with a GeoServer,
>>>> in a fully automated way, that is also welcomed (you might need to
>>>> setup a GitHub action build too, if the
>>>> test needs a live GeoServer to work against, otherwise no one will run
>>>> those tests).
>>>>
>>>> Third, if you want to have reliable yamls that you can generate clients
>>>> for, make a plan for it, write a GSIP
>>>> <https://docs.geoserver.org/stable/en/developer/policies/gsip.html>,
>>>> resource it fully, and then implement it. Do it in a way that the
>>>> system is self sustaining (every deviation
>>>> gets a test failure) and you might not need to be involved long term
>>>> all that much (but plan for some).
>>>>
>>>>
>>>> Regards, Andrea Aime
>>>>
>>>> == GeoServer Professional Services from the experts! Visit
>>>> http://goo.gl/it488V for more information. == Ing. Andrea Aime
>>>> @geowolf Technical Lead GeoSolutions S.A.S. Via di Montramito 3/A 55054
>>>> Massarosa (LU) phone: +39 0584 962313 fax: +39 0584 1660272 mob: +39 339
>>>> 8844549 http://www.geo-solutions.it http://twitter.com/geosolutions_it
>>>> ------------------------------------------------------- *Con
>>>> riferimento alla normativa sul trattamento dei dati personali (Reg. UE
>>>> 2016/679 - Regolamento generale sulla protezione dei dati “GDPR”), si
>>>> precisa che ogni circostanza inerente alla presente email (il suo
>>>> contenuto, gli eventuali allegati, etc.) è un dato la cui conoscenza è
>>>> riservata al/i solo/i destinatario/i indicati dallo scrivente. Se il
>>>> messaggio Le è giunto per errore, è tenuta/o a cancellarlo, ogni altra
>>>> operazione è illecita. Le sarei comunque grato se potesse darmene notizia.
>>>> This email is intended only for the person or entity to which it is
>>>> addressed and may contain information that is privileged, confidential or
>>>> otherwise protected from disclosure. We remind that - as provided by
>>>> European Regulation 2016/679 “GDPR” - copying, dissemination or use of this
>>>> e-mail or the information herein by anyone other than the intended
>>>> recipient is prohibited. If you have received this email by mistake, please
>>>> notify us immediately by telephone or e-mail.*
>>>> _______________________________________________
>>>> Geoserver-devel mailing list
>>>> Geoserver-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
>>>>
>>>
>>>
>>> --
>>> Gabriel Roldán
>>>
>>
>
> --
> Gabriel Roldán
>
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to