-
-
Notifications
You must be signed in to change notification settings - Fork 489
GeoNetwork UI and microservices codesprint October 2020
- 12th to 16th October (or a couple of days depending on your availability)
- The sprint will be remote but some of us on Tuesday/Wednesday (Olivier, Florent, Christophe, Francois) join at the farm (https://latitferme.bio/), 321, Route de la Mollière, Saint-Pierre-de-Genebroz, Chambéry, Savoie, Auvergne-Rhône-Alpes, France
- Francois - full week
- Florent - Tuesday, Wednesday
- Olivier - Tuesday, Wednesday
- Christophe - Tuesday, Wednesday
- Michel - Tuesday, Wednesday
- Jose - Tuesday, Wednesday
- ...
The overall idea:
2 topics to make progress on
The focus here is to design the organization of the infrastructure (gateway, config), make the project easy to work with (docker container?) and focus on some of the main components:
- Infrastructure components & docker - Gabriel
- Authorizing app - Christophe, Gabriel
- Searching app (Elasticsearch endpoint + OGC API Record endpoint) - Jose, Christophe, Francois, Paul
- Lower priority
- Formatting app (relates to OGC API records)
- Indexing app
The roadmap will be defined in: https://github.com/geonetwork/geonetwork-microservices/projects/1
Current objective here is to be able to embed easily GeoNetwork in third party application using WebComponents.
<script src=”gn-ui.min.js”/>
<gn-ui-records-list filter=”tag=COPERNICUS” sortBy=”changeDate” size=”10”/>
The work planned is:
- Global requirements (i18n) - Olivier, Florent
- XSRF
- CSS size
- Mockup of the following UC - Michel
- UC - Olivier, Florent
- UC 1 / Simple list of records
- UC 2 / Search box
- UC 3 / Category entry page (one facet/one icon/one number <> list of records)
Questions:
- Can webcomponent create a popup over the entire page? Yes
- How to make 2 webcomponent interacts (eg. facet list/record list)
The roadmap is defined in: https://github.com/geonetwork/geonetwork-ui/wiki/Roadmap
- https://github.com/geonetwork/geonetwork-microservices/projects/1
- https://github.com/geonetwork/geonetwork-microservices/issues/17
This sprint was the opportunity to jump in 2 new major topics for the future of GeoNetwork.
Half of the team concentrated on microservices. With the help of Gabriel Roldan who designed the GeoServer architecture based on Spring Cloud (see https://github.com/camptocamp/geoserver-microservices), Jose, Christophe and Francois managed to:
- Move the search proxy from GeoNetwork 4 to a dedicated service which does not take into account yet user privileges
- Validated the option that Spring Cloud Event bus (using RabbitMQ or Kafka) can be used to communicate between GeoNetwork4, microservices and Camel routes
- A microservice dedicated to indexing has been designed in order to focus on performances - based on events, streaming, multithread, XSLT3 and bulk operations (see https://github.com/geonetwork/geonetwork-microservices/blob/main/modules/services/indexing/README.md). The indexing chain has been setup using Apache Camel project providing metrics using micrometer library to monitor the progress of tasks. The approach sounds efficient and reliable.
- Docker images are built with maven build to make startup of GeoNetwork4, Elasticsearch and microservices easy (see https://github.com/geonetwork/geonetwork-microservices/pull/16)
- A gateway application can take care of routing incoming requests to both GeoNetwork4 and microservices. As things progress, the routes can be adapted to redirect API calls from the legacy app to the corresponding microservices.
- Authentication using Oauth and JWT was analyzed but is a challenging tasks. We have to be able to setup authentication at the gateway level, share user information across microservices using JWT and also be in capacity to authenticate in GeoNetwork4 at the same time. This topics needs more investigation.
- An OGC API Records server was generated from the OpenAPI specification provided by https://github.com/opengeospatial/ogcapi-records/. The specification is a draft and we are checking which the standardization team which documents is best to use and how to help on the standardization efforts.
A number of issues/questions have been added to the roadmap including some about templating which interacts with the GeoNetwork UI project which was the 2nd topic.
Michel, Olivier and Florent made progress on the https://github.com/geonetwork/geonetwork-ui project focusing on:
- Adding i18n support
- Publishing components using Storybook https://geonetwork.github.io/geonetwork-ui/master/storybook/
- Creating webcomponents to embed a simple list of results and simple aggregation with numbers in third party apps.
Thanks to all contributors and to EEA & Ifremer sponsoring the event.
If you have some comments, start a discussion, raise an issue or use one of our other communication channels to talk to us.