Skip to content

NMS-10432: Leftovers and dead configuration cleanup - #8985

Closed
joseanesONMS wants to merge 15 commits into
developfrom
jira/NMS-10432-leftovers-cleanup-smoke
Closed

joseanesONMS wants to merge 15 commits into
developfrom
jira/NMS-10432-leftovers-cleanup-smoke

Conversation

@joseanesONMS

@joseanesONMS joseanesONMS commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Removes leftovers of retired features and dead configuration, led by NMS-10432; one commit per ticket or leftover, so any of them can be dropped, and nothing a running system uses changes behaviour.

Ticket What was removed or changed Proof it was unused Upgrade impact
NMS-10432 etc/examples/threshd-configuration.xml and its WillItUnmarshalIT entry No reference in assemblies, spec, debian, installer, docs or code besides that IT entry None; etc/examples is never loaded
NMS-5264 Default users.xml no longer ships <mstation>; users.xsd makes it optional and documents it as deprecated and ignored; JAXB Header no longer marks it required Only the Header getter/setter touch it; UserManager writes back the header it read Old users.xml with <mstation> still validates (checked with xmllint) and keeps its value
NMS-10535 config-tester: database-schema.xml entry, beans and test; dead snmpConfigDao bean; stale mapsadapter-configuration.xml test ignore database-schema.xml is loaded from the jar since HZN-1308; FactoryBasedSnmpConfigDao no longer exists; every other mapped file still ships None; the tester ignores files outside its map
NMS-9877 libraries.properties is written without the Properties.store() date comment, otherwise byte-identical; the stream is now closed Readers are Bootstrap, Installer and an opennms.spec grep of opennms.library.* lines install -dis no longer rewrites the file when nothing changed
NMS-13978 XmlTestNoCastor removed; its 146 subclasses extend XmlTest It overrode nothing since Castor was removed (NMS-9135) Test code only; 148 suites / 1084 tests before and after, no duplicates removed
NMS-14138 Elasticsearch Feature Matrix (incl. Situation feedback row) and Flow support pages No xref or include into them Docs only; Alarm history still ships (opennms-alarm-history-elastic), so its page moved unchanged to Alarms instead of being dropped
NMS-11731 mib2opennms / mib2events mentions removed from the MIB page Neither tool is shipped (no bin script or packaging) Docs only
NMS-14732 Docs mentions of Statsd, RANCID, JRobin as a storage choice, the remote poller and RSS feeds (one commit each) Each feature has no code left on develop Docs only; JRobin conversion docs and release notes are kept
NMS-14732 Slack and Mattermost confd templates, remote-poller-gwt.css, empty rss.jsp (one commit each) No reader of the generated properties, no reference to the stylesheet, no link to the JSP Old horizon-config.yaml keys are ignored by confd; /rss.jsp returns 404 instead of an empty page

Already resolved

  • NMS-15903: the deprecated group.id prefix, collectd.strictInterval and datachoices settings are set only by OpenNMS/helm-charts onms-core-init.sh; nothing in this repo ships them.
  • NMS-15605: NMS-15604 (71e4efd) already removed the LSB header from the shared container.init that generates the Sentinel script.
  • NMS-14732 for WMI, NSClient, XMP, OTRS, RT, XMPP, Asterisk, Provisioning Groups, Slack and Mattermost strategies: no operator-facing docs mentions remain.
  • NMS-9616 is fixed in NMS-9237: Logging noise cleanup #8983; the Reportd, Tl1d and TL1 pages are removed in NMS-11035: Documentation gaps #8984.

Not addressed

  • NMS-19035: EventdServiceManager is still a live bean (applicationContext-dao.xml) injected into Eventd, which asserts it at startup; removing it changes production Spring/OSGi wiring.
  • NMS-9784: no exact duplicates or provably dead MBeans exist; the requested JVM/Newts/OpenNMS split changes service names and resource paths, so it needs a data-migration design.
  • NMS-19752: covered by NMS-19752: Use compact wire marshalling for IPC and embedded payloads #8732.
  • NMS-14732 Capsd: the only docs mention is the live ipLastCapsdPoll filter column. AMQP waits for NMS-20427.

Candidates for follow-up tickets

  • Remove the Tl1d and Reportd daemon code and config files (unstartable since NMS-18164/NMS-18169).
  • Remove EventdServiceManager with its Eventd wiring (NMS-19035 as a functional change).
  • Fix OpenNMS uptime collection: jsr160 collects onmsUptime from OpenNMS:Name=Manager, but the MBean attribute is Uptime, so it has never been collected.
  • Remove the dead /rss.jsp* security chain, the org.opennms.web.rss classes, and the Acegi-era anonymous-dashboard procedure in dashboard.adoc.
  • Remove unreferenced GWT stylesheets (gwt-asset.css, onms-gwt-chrome.css) and mapsadapter-configuration.xml leftovers in ConfigFileConstants and opennms.spec.
  • Add the missing rrdRepository to cassandra30x.xml, cassandra30x-newts.xml and jboss.xml; filters.adoc still says database-schema.xml lives in etc.

Verification: config-model, config-tester (including ConfigTester -a over the default etc), install and web-assets build and pass; the 146 changed XML test classes ran before and after with identical results; the docs build has only the 2 develop-baseline warnings.

External References

The example only duplicated the shipped etc/threshd-configuration.xml with
long-gone services (JBoss32, JBoss4) and nothing reads it: git grep finds no
reference in assemblies, packaging (spec, debian), installer, docs or code.
The only user was the EXAMPLE entry in WillItUnmarshalIT, removed here.

The examples directory is copied as a whole, so no assembly descriptor
changes. Customer copies of the file under etc/examples are never loaded.
Nothing reads the users.xml header mstation value: git grep finds only the
JAXB getter/setter in config.users.Header, whose callers (UserManager) just
carry the header through a save unchanged, plus test fixtures.

users.xsd keeps the element as optional and documents it as deprecated, so
existing users.xml files that still contain it keep validating through
@ValidateUsing; the Java property stays for the same reason. A header
without it is marshalled without the element.
…gone

Every config file in the config-tester map still ships in etc on develop (vacuumd-configuration.xml included), except database-schema.xml, which has been loaded from the opennms-config jar since HZN-1308; its map entry, its two beans and its test go, and `config-tester database-schema.xml` now reports an unknown config name.
Two other leftovers go: the lazy, never referenced snmpConfigDao bean, whose class FactoryBasedSnmpConfigDao no longer exists, and the ConfigTesterTest ignore entry for mapsadapter-configuration.xml, which is no longer shipped (git grep finds it only in the ConfigFileConstants id table and opennms.spec filters).

The tester never looks at files outside its map, so customer etc directories that still hold these files are unaffected.
Properties.store() always writes a "#<date>" first line, so every install
run rewrote etc/libraries.properties even when the library paths were
unchanged. The installer now stores to a buffer and drops that first line,
keeping the rest byte for byte (ISO-8859-1, same escaping and order), and
closes the stream it previously leaked.

Readers only load the file as Properties (Bootstrap, Installer) or grep for
opennms.library.* lines (opennms.spec); nothing reads the comment.
XmlTestNoCastor has been an empty subclass of XmlTest since Castor was
removed in NMS-9135: it only forwarded its constructor and overrode
nothing. The 146 test classes that extended it now extend XmlTest, so
they inherit exactly the same five round-trip and schema tests.

Running the affected classes in all 29 modules before and after gives
identical surefire results: 148 suites, 1084 tests, no failures. No other
reference to XmlTestNoCastor remains in the repository.
…Elasticsearch docs

The feature matrix only restated feature names that their own pages already document; the situation feedback REST API stays documented in development/rest/situation-feedback.adoc.
The flow support page listed a stale subset of flow document fields; the Flows section is the canonical flow documentation.
The alarm history page is moved, unchanged, to deep-dive/alarms/history.adoc, which until now only included it, because the alarm history feature still ships.

git grep finds no xref or include into the removed pages or the flow support anchor outside operation/nav.adoc, which is updated.
Neither tool ships with Horizon any more: git grep finds no bin script, assembly descriptor, RPM spec or Debian packaging entry for mib2opennms or mib2events, only historical uei.opennms.org/mib2opennms/* event UEIs and a code comment in the MIB compiler parser.
The SNMP MIB Compiler page therefore stops pointing operators at them and keeps the web UI MIB compiler as the only documented path; the example UEIs elsewhere are left alone because they are identifiers, not tool references.
The Statsd daemon was removed in NMS-20313, but the daemon dependency table still listed it as something an operator could disable.
git grep finds no Statsd entry in the shipped service-configuration.xml and no Statsd class or statsd-configuration.xml outside the core/upgrade baselines and test resources.

The automatic cleanup page keeps its Statsd mention: it explains why the still-active purgeStatisticsReports automation in vacuumd-configuration.xml exists. Release notes are left as historical records.
The RANCID provisioning adapter is gone: git grep finds no RANCID class, blueprint or feature, only the opennms-plugin-provisioning-rancid Obsoletes/Breaks entries in the RPM spec and debian/control.
The Cisco IP SLA monitor page still sent readers to RANCID for configuration backups, so it now points to the built-in Device Configuration Backup feature instead.
JRobin is no longer a storage strategy: the only RrdStrategy implementations on develop are the RRDtool JNI strategies, the TCP strategies and the queuing/multi-output/null wrappers, and rrd-configuration.properties offers only JniRrdStrategy and MultithreadedJniRrdStrategy. JRobinRrdStrategy survives only as a legacy default in core/upgrade.
The time series overview no longer lists JRobin as an installed database, and the Newts converter guide no longer calls JniRrdStrategy a JRobin strategy.

Mentions that describe JRobin as removed, the glossary entry, the JRobin-to-RRDtool converter and the Newts converter's jrobin option are kept, because the converter (NewtsConverter StorageTool.JROBIN) and bin/jrobin-inspector still read .jrb files.
The remote poller is gone: OnmsMonitoringSystem defines only the OpenNMS, Minion and Sentinel types, and git grep finds RemotePollerBackEnd only in core/upgrade migration code and its service-configuration baselines.
The Monitoring Systems REST page now lists Sentinel instead of the remote poller as an example system, and the monitor page template drops its RemotePoller deployment bullet.

The RMI page keeps its note that the opennms.poller.server property name dates from the remote poller, because it explains a property that is still read.
The RSS feeds are gone from the web UI: rss.jsp is an empty stub that holds only a license header, and nothing references the org.opennms.web.rss feed classes outside their own package.
The dashboard anonymous-access procedure no longer tells readers to anchor their filter chain entries on the /rss.jsp* entry or shows it in the sample.

The News Feed page and REST API are kept, because that feature still reads the opennms.com RSS feed.
The Slack and Mattermost notification strategies were replaced by the
Webhook strategy, and nothing reads the org.opennms.netmgt.notifd.slack.*
or .mattermost.* properties these templates generated: git grep finds them
only in the templates and the webhook migration table in the docs. No
container entrypoint, test or other confd file refers to the templates.

The matching sections of CONFD_README.md go with them. confd ignores keys
that have no template, so an existing horizon-config.yaml that still sets
opennms.notifd.slack or .mattermost keeps working.
The remote poller and its GWT UI were removed in NMS-12653. The stylesheet
was only built because webpack turns every file under assets/style into an
entry; git grep finds no reference to remote-poller-gwt in any JSP, GWT
module, webpack/package config, Java or other stylesheet.
RSS feeds were removed long ago and rss.jsp now holds only the license
header and a stray "%>", so it renders an empty page. git grep finds no
link to it from web.xml, menus, other JSPs, Java, or tests; the only
remaining mentions are the /rss.jsp* Basic-auth chain in
applicationContext-spring-security.xml and an Acegi-era example in the
Dashboard docs, both left as they are.

A request for /rss.jsp now gets a 404 instead of an empty 200.
@github-actions
github-actions Bot requested a review from indigo423 October 21, 2026 19:00
@github-actions github-actions Bot added the docs label Oct 21, 2026

@marshallmassengill marshallmassengill left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Too much for one PR. Break these up please.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we want to do this... I kind of like the flows feature ;)

@joseanesONMS joseanesONMS changed the title NMS-10432: Leftovers and dead configuration cleanup (NMS-5264, NMS-10535, NMS-9877, NMS-13978, NMS-14138, NMS-11731, NMS-14732 + 4 more) NMS-10432: Leftovers and dead configuration cleanup Oct 22, 2026
@joseanesONMS

Copy link
Copy Markdown
Contributor Author

@marshallmassengill Split as you asked, each on current develop:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants