Release Notes

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[3.2.2] - 2023-06-08

  • update RMR version to 4.9.1

[3.2.1] - 2022-12-12

  • small permission fix in python init files

[3.2.0] - 2022-06-16

  • Added REST E2 subscription support

  • rnib enhancements

  • REST service with health and config interface

[3.1.0] - 2022-03-22

  • Added the symptomdata module

[3.0.2] - 2021-12-17

  • Fix caching of error code data not happening (RIC-862)

  • Improves performance of xapp-frame-py by caching the mapping dict of error codes.

[3.0.1] - 2021-12-07

  • Take configuration and rmr unit tests back into use after fixing the tests (RIC-865)

  • Improve memory leak fix done in the version 3.0.0 to free memory also if python exception has been thrown.

[3.0.0] - 2021-12-03

  • Upgrade to RMR version 4.8.0 to fix memory leak in get_constants() function (RIC-858)

  • From xapp-frame-py version 3.0.0 onwards it is required to have RMR version 4.8.0 or newer.

[2.3.0] - 2021-09-15

[2.2.0] - 2021-06-23

[2.1.0] - 2021-06-18

[2.0.0] - 2021-06-14

  • Add Xapp registration/deregistration APIs (RIC-706)

  • Upgrade SDL 3.0.0 version, SDL scaling (RIC-699)

  • Upgrade SDL 3.0.0 version, notification fix (RIC-795)

[1.6.0] - 2020-10-23

[1.5.0] - 2020-07-10

[1.4.0] - 2020-07-06

  • Revise Alarm manager to send via RMR wormhole (RIC-529)

[1.3.0] - 2020-06-24

  • Add configuration-change API (RIC-425)

[1.2.1] - 2020-06-22

  • Revise alarm message type (RIC-514)

[1.2.0] - 2020-06-04

  • Extend RMR module to support wormhole methods

  • Add alarm API (RIC-380)

[1.1.2] - 2020-05-13

  • Extend and publish class and method documentation as user guide in RST

[1.1.1] - 2020-05-07

  • Use timeout on queue get method to avoid 100% CPU usage (RIC-354)

  • Upgrade to RMR version 4.0.5

[1.1.0] - 2020-05-06

  • Use RMR timeout on receive to avoid 100% CPU usage (RIC-354)

  • Publish message-summary dict keys as constants to avoid hardcoding strings

  • Add wrapper and test for RMR method rmr_set_vlevel(int)

[1.0.3] - 2020-04-29

  • Upgrade to RMR version 4.0.2

[1.0.2] - 2020-04-22

  • Upgrade to RMR version 3.8.0

[1.0.1] - 2020-04-10

  • Publish API documentation using Sphinx autodoc, which required changes so Sphinx can run when the RMR .so file is not available, such as during a ReadTheDocs build.

  • Create new subpackage rmr/rmrclib with the C library loaded via ctypes.

  • Extend sphinx configuration to mock the new rmrclib subpackage

  • Add method to get constants from RMR library and detect mock objects to work around a bug in Sphinx 3.0.0.

  • Split test files into test_rmr and test_rmrclib.

  • Add function to define argtype and restype values for library functions

  • Configure intersphinx link for RMR man pages at

[1.0.0] - 4/6/2020

  • Python rmr has been moved into this repo. The module name has NOT changed in order to make the transition for repos very easy. The only transition needed should be prefixing rmr with ricxappframe in import statements, and to include this rather than rmr in setup.

[0.7.0] - 4/2/2020

  • RMRXapps by default now implement the rmr healthcheck probe; users can also override it with a more complex handler if they wish

  • Fix a bug in the unit tests where a payload mismatch wouldn’t actually fail the test (would now)

[0.6.0] - 3/23/2020

  • Switch to SI95 for rmr

[0.5.0] - 3/18/2020

  • All xapps (via the base class) now have a logger attribute that can be invoked to provide mdc logging. It is a passthrough to the RIC mdc logger for python (untouched, no value in an API on top at the current time).

[0.4.1] - 3/17/2020

  • Switch tox to use py38

  • switch to latest builders

[0.4.0] - 3/13/2020

  • Minor breaking change; switches the default behavior RE threading for RMRXapps. The default is not to return execution, but the caller (in run) can choose to loop in a thread.

  • Add Dockerized examples

[0.3.0] - 3/10/2020

  • Large change to the “feel” of this framework: rather than subclass instantiation, xapps now use initialization and registration functions to register handlers

  • rmr xapps can now register handlers for specific message types (and they must prodive a default callback); if the user does this then “message to function routing” is now handled by the framework itself

  • RMRXapp now runs the polling loop in a thread, and returns execution back to the caller. The user is then free to loop, or do nothing, and call stop() when they want.

  • Raises tox coverage minimum to 70 from 50 (currently at 86)

[0.2.0] - 3/3/2020

  • now allows for RMRXapps to call code before entering the infinite loop

  • stop is now called before throwing NotImplemented in the case where the client fails to provide a must have callback; this ensures there is no dangling rmr thread

  • stop now calls rmr_close to correctly free up any port(s)

  • (breaking) renames loop to entrypoint since the function does not have to contain a loop (though it most likely does)

  • Changes wording around the two types of xapps (docs only)

  • Uses a new version of rmr python that crashes when the rmr mrc fails to init, which prevents an xapp trying to use an unusable rmr

  • more unit test code coverage

  • Adds more fields to setup like long_desc and classifiers so the pypi page looks nicer

  • Removes a bad release file (will be added back in subseq. commit)

[0.1.0] - 2/27/2020

  • Initial commit