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

User story: Uplift of RCS to geocore with CRUD interfaces #1

Open
bo-lu opened this issue Mar 20, 2023 · 2 comments
Open

User story: Uplift of RCS to geocore with CRUD interfaces #1

bo-lu opened this issue Mar 20, 2023 · 2 comments

Comments

@bo-lu
Copy link
Member

bo-lu commented Mar 20, 2023

As a user, when accessing geocore metadata I would like to also see the viewer configurations (if they exist) so maps are rendered as per the contributor's wishes. Currently, the configuration of the viewer is hosted separately from the metadata and for years, this has caused issues with synchronization and headache to manage.

Therefore, in FY23-24, we need to uplift the RCS logic to geocore with CRUD interfaces to support GeoView and OSDP. A potential configuration name is the GeoView Configuration Service (GCS).

Work:

  • RCS will be harvested from GeoNetwork when a record is published, changed or deleted using the change API. The RCS settings will be appended to the geocore geojson file.
  • A listener to the existing RCS API to check if values have been changed (e.g., comparing two hash values).
  • New CRUD APIs are need to access/modify the GCS settings manually
  • New APIs to summarize the GCS (for example, how many records are viewable on a map?)
    Link to related ticket: Spatial filter (i.e., Viewable on a Map) on GEO.ca geo.ca#98
  • New 'heartbeat' dashboard can be created to monitor the mapping services
    Link to related ticket: User story: Dashboard of live/down web mapping services  geo.ca#87
@elatsis
Copy link

elatsis commented Apr 4, 2023

Hey team! Please add your planning poker estimate with Zenhub @bo-lu @johnweng001

@bo-lu
Copy link
Member Author

bo-lu commented Apr 13, 2023

Note: it is possible to query multiple RCS entries like so (with the comma or %2C):

https://gcgeo.gc.ca/geonetwork/srv/api/0.1/v2/docs/en/574c32db-aba7-4919-9c9f-c58398754173%2Ca4b190fe-e090-4e6d-881e-b87956c07977

First, sort the uuids by date harvested in ascending order. Then append ~250 UUIDs (32-character long) to a extremely long comma-separated string in a GET request (limited by the maximum of ~8000 characters supported by a default Apache LimitRequestLine config). This will reduce the number of GET requests which is slow due to IO overhead. For example, our 7000 records divided by 250 means 28 GET requests will be issued.

Compare the result to a hash value from a previous run. If it is different, iterate through the 250 records to find the RCS entry/entries that were changed and update them in the geocore geojson file. Can do some kind of recursion here, by breaking down the work into two equal halves, but might be too much effort.

Appending to geocore is easy, we will need a flag to disable the automatic harvesting.. say for customized configurations beyond what is in the RCS..

We will also need CRUD interfaces to the GCS.

@bo-lu bo-lu transferred this issue from Canadian-Geospatial-Platform/geo.ca Nov 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants