Requirement for ModuleStatus implementation

Hi Devs

I’m searching the docs, I can only find the need for ModuleStatus to be implemented for modules in the Pending Release and Extension profiles - not needed for the initial Community profile? Is that correct? To try and keep it simple to start a community module?

Anyway, I did a quick audit of all the 2.28 modules, there are some extensions that do not have a ModuleStatus implemented (typically a org.geoserver.platform.ModuleStatusImpl bean declared in applicationContext.xml or a class extending ModuleStatusImpl). Can I take the opportunity to rectify this, and I might as well do it for all the community modules as well, as a template for future modules?

How exactly do people use this functionality?

Peter

Detailed audit — Extension modules

Module Path ModuleStatus registered? Note
app-schema src/extension/app-schema :white_check_mark: app-schema-core has ModuleStatus bean
arcgrid src/extension/arcgrid :white_check_mark: applicationContext.xml registers arcgridExtension
authkey src/extension/authkey :white_check_mark: ModuleStatus bean present
charts src/extension/charts :white_check_mark: ModuleStatus bean present
control-flow src/extension/control-flow :white_check_mark: ControlModuleStatus extends ModuleStatusImpl
css src/extension/css :cross_mark: No ModuleStatusImpl found
csw src/extension/csw :white_check_mark: ModuleStatus bean present
db2 src/extension/db2 :white_check_mark: ModuleStatus bean present
dxf src/extension/dxf :white_check_mark: ModuleStatus bean present
excel-core / excel-wfs / excel-wps src/extension/excel-* :white_check_mark: ModuleStatus beans present
feature-pregeneralized src/extension/feature-pregeneralized :white_check_mark: ModuleStatus bean present
gdal (extension) src/extension/gdal :cross_mark: No ModuleStatus found in extension area
geopkg-output src/extension/geopkg-output :white_check_mark: ModuleStatus beans in core/wms/wfs modules
grib src/extension/grib :cross_mark: No ModuleStatusImpl found
gwc-s3 src/extension/gwc-s3 :white_check_mark: ModuleStatus bean present
h2 src/extension/h2 :white_check_mark: ModuleStatus bean present
image src/extension/image :white_check_mark: ModuleStatus bean present
importer src/extension/importer :white_check_mark: Web/rest/core modules have ModuleStatus entries
inspire src/extension/inspire :white_check_mark: ModuleStatus entries present
jp2k src/extension/jp2k :white_check_mark: ModuleStatus entry present
kml src/extension/kml :white_check_mark: ModuleStatus entry present
libjpeg-turbo src/extension/libjpeg-turbo :cross_mark: No ModuleStatusImpl found
mapml src/extension/mapml :white_check_mark: ModuleStatus entries present
mbstyle src/extension/mbstyle :white_check_mark: ModuleStatus entries present
metadata src/extension/metadata :cross_mark: No ModuleStatusImpl found
mongodb src/extension/mongodb :white_check_mark: ModuleStatus entries present
monitor (core) src/extension/monitor :white_check_mark: ModuleStatus entries in core/test resources
mysql src/extension/mysql :white_check_mark: ModuleStatus entry present
netcdf src/extension/netcdf :cross_mark: No ModuleStatusImpl found
netcdf-out src/extension/netcdf-out :cross_mark: No ModuleStatusImpl found
ogcapi (extension) src/extension/ogcapi :cross_mark: No ModuleStatusImpl found
ogr src/extension/ogr :white_check_mark: OGRModuleStatus extends ModuleStatusImpl
oracle src/extension/oracle :white_check_mark: ModuleStatus bean present
params-extractor src/extension/params-extractor :white_check_mark: ModuleStatus bean present
printing src/extension/printing :white_check_mark: ModuleStatus bean present
querylayer src/extension/querylayer :white_check_mark: ModuleStatus bean present
rat src/extension/rat :cross_mark: No ModuleStatusImpl found
security (extension) src/extension/security :cross_mark: No ModuleStatusImpl found at top-level extension/security
sldService src/extension/sldService :white_check_mark: ModuleStatus entry present
sqlserver src/extension/sqlserver :white_check_mark: ModuleStatus entry present
vectortiles src/extension/vectortiles :white_check_mark: ModuleStatus entry present
wcs / wcs1_0 / wcs1_1 / wcs2_0-eo src/extension/wcs* :white_check_mark: ModuleStatus entries present
web-resource src/extension/web-resource :white_check_mark: ModuleStatus entry present
wmts-multi-dimensional src/extension/wmts-multi-dimensional :white_check_mark: ModuleStatus entry present
wps / wps-web / wps-core src/extension/wps :white_check_mark: Web/core modules have ModuleStatus entries
wps-download src/extension/wps-download :cross_mark: No ModuleStatusImpl found
wps-jdbc src/extension/wps-jdbc :cross_mark: No ModuleStatusImpl found
ysld src/extension/ysld :white_check_mark: ModuleStatus entries present

Detailed audit — Community modules

Module Path ModuleStatus registered? Note
acl src/community/acl :white_check_mark: applicationContext.xml contains ModuleStatus bean
backup-restore src/community/backup-restore :white_check_mark: web submodule declares ModuleStatus bean
cog (cog-s3, cog-core, cog-http, cog-google, cog-azure) src/community/cog/* :white_check_mark: Several submodules declare ModuleStatusImpl beans (e.g. cog-s3)
colormap src/community/colormap :cross_mark: No ModuleStatusImpl found
cov-json src/community/cov-json :cross_mark: No ModuleStatusImpl found
dds src/community/dds :cross_mark: No ModuleStatusImpl found
dyndimension src/community/dyndimension :cross_mark: No ModuleStatusImpl found
elasticsearch src/community/elasticsearch :cross_mark: No ModuleStatusImpl bean in applicationContext.xml
features-autopopulate src/community/features-autopopulate :cross_mark: No ModuleStatusImpl found
features-templating src/community/features-templating/* :cross_mark: No ModuleStatusImpl found
flatgeobuf src/community/flatgeobuf :cross_mark: No ModuleStatusImpl bean in applicationContext.xml
gdal (gdal-wps, gdal-wcs) src/community/gdal/* :white_check_mark: gdal-wps and gdal-wcs show ModuleStatus references
geoparquet src/community/geoparquet :cross_mark: No ModuleStatusImpl found
geopkg src/community/geopkg :cross_mark: No ModuleStatusImpl found
gpxppio src/community/gpxppio :cross_mark: No ModuleStatusImpl found
graticule src/community/graticule :cross_mark: No ModuleStatusImpl found
gsr src/community/gsr :cross_mark: No ModuleStatusImpl found
gwc-azure-blob src/community/gwc-azure-blob :cross_mark: No ModuleStatusImpl found
gwc-gcs-blob src/community/gwc-gcs-blob :cross_mark: No ModuleStatusImpl found
gwc-mbtiles src/community/gwc-mbtiles :cross_mark: No ModuleStatusImpl found
gwc-sqlite src/community/gwc-sqlite :cross_mark: No ModuleStatusImpl found
hello src/community/hello :cross_mark: No ModuleStatusImpl found
hello_web src/community/hello_web :cross_mark: No ModuleStatusImpl found
hz-cluster src/community/hz-cluster :cross_mark: No ModuleStatusImpl found
importer-jdbc src/community/importer-jdbc :cross_mark: No ModuleStatusImpl found
jdbcconfig src/community/jdbcconfig :cross_mark: No ModuleStatusImpl found
jdbcstore src/community/jdbcstore :cross_mark: No ModuleStatusImpl found
jms-cluster src/community/jms-cluster :cross_mark: No ModuleStatusImpl found
jwt-headers src/community/jwt-headers :white_check_mark: applicationContext.xml contains ModuleStatus bean
libdeflate src/community/libdeflate :cross_mark: No ModuleStatusImpl found
mbtiles src/community/mbtiles :cross_mark: No ModuleStatusImpl found
mbtiles-store src/community/mbtiles-store :cross_mark: No ModuleStatusImpl found
monitor-kafka src/community/monitor-kafka :white_check_mark: applicationContext.xml references ModuleStatus
monitor-micrometer src/community/monitor-micrometer :white_check_mark: applicationContext.xml references ModuleStatus
ncwms src/community/ncwms :cross_mark: No ModuleStatusImpl found
netcdf-ghrsst src/community/netcdf-ghrsst :cross_mark: No ModuleStatusImpl found
nsg-profiles src/community/nsg-profiles :cross_mark: No ModuleStatusImpl found
ogcapi (ogcapi-*) src/community/ogcapi/* :cross_mark: e.g. ogcapi-tiles missing ModuleStatus bean
oseo (oseo-core/rest/service/web) src/community/oseo/* :white_check_mark: oseo-core, oseo-rest, oseo-service, web-oseo register ModuleStatus
pmtiles-store src/community/pmtiles-store :white_check_mark: applicationContext.xml shows ModuleStatus
programming-guide src/community/programming-guide :cross_mark: No ModuleStatusImpl found
proxy-base-ext src/community/proxy-base-ext :white_check_mark: applicationContext.xml has ModuleStatus
rest-ext src/community/rest-ext :cross_mark: No ModuleStatusImpl found
rest-openapi src/community/rest-openapi :cross_mark: No ModuleStatusImpl found
rest-upload src/community/rest-upload :cross_mark: No ModuleStatusImpl found
s3-geotiff src/community/s3-geotiff :cross_mark: No ModuleStatusImpl found
schemaless-features src/community/schemaless-features/* :cross_mark: No ModuleStatusImpl found
security (web-service-auth, oidc, others) src/community/security/* :white_check_mark:/:cross_mark: web-service-auth and oidc submodules register ModuleStatus; others may not
singlestore src/community/singlestore :white_check_mark: applicationContext.xml contains ModuleStatus bean
smart-data-loader src/community/smart-data-loader :cross_mark: No ModuleStatusImpl found
solr src/community/solr :cross_mark: No ModuleStatusImpl found
spatialjson src/community/spatialjson :white_check_mark: applicationContext.xml contains ModuleStatus bean
stac-datastore src/community/stac-datastore :cross_mark: No ModuleStatusImpl found
taskmanager src/community/taskmanager :cross_mark: No ModuleStatusImpl found
vector-mosaic src/community/vector-mosaic :white_check_mark: vector-mosaic-rest registers ModuleStatus
vsi src/community/vsi :cross_mark: No ModuleStatusImpl found
web-ogr src/community/web-ogr :cross_mark: No ModuleStatusImpl found
web-service-auth src/community/web-service-auth :white_check_mark: applicationContext.xml contains ModuleStatus bean
webp src/community/webp :cross_mark: No ModuleStatusImpl found
wfs-freemarker src/community/wfs-freemarker :cross_mark: No ModuleStatusImpl found
wps-download-netcdf src/community/wps-download-netcdf :cross_mark: No ModuleStatusImpl found
wps-longitudinal-profile src/community/wps-longitudinal-profile :cross_mark: No ModuleStatusImpl found
wps-openai src/community/wps-openai :cross_mark: No ModuleStatusImpl found
wps-remote src/community/wps-remote :cross_mark: No ModuleStatusImpl found

Yes, community modules are meant to be quick to implement get out of testing.

Sure, I don’t see why not.

Server status/modules reports the list of modules available in a specific installation, e.g.:

There is a REST API to list them too. As you noted, it’s not always reliable.

Personally I find more useful to go through the output of https://…/geoserver/rest/about/manifest, it reports all jars without relying on module declaration, quick way to find if a certain jar is installed, if there are conflicting versions of a library, or if a certain jar is just missing (sometimes packaging instructions do not include all that’s necessary.

Cheers
Andrea

For those that do not just use ModuleStatus … they have an oppertunity to be dynamic and report some “status”.

As an example the gdal plugin can mark itself disabled, and provide some information (usually about not finding the library on the library path). This is available in the user interface by clicking on the module name link.

1 Like