Changelog ========= v0.21.1 ~~~~~~~ * added bool to reparse * bumped device certificate * as well as made them smaller files v0.21.0 ~~~~~~~ * fixed a bug with syncing endpoints * improved pathpoint sync logic * fixed an issue registering memory pressure handler * improved sync logic - archives will no longer read already read pathpoints v0.20.1 ~~~~~~~ * fixed a dangerous exploit * updated to work with latest cryptography v0.20 ~~~~~ * changed NGTT port to 2405 v0.19 ~~~~~ * added option to clean all synced and closed events v0.18.4 ~~~~~~~ * enabled smok-client to successfully parse 204 as response v0.18.3 ~~~~~~~ * removed unused sync logs and pathpoints from NGTT * fixed string interpolation syntax for Python 3.6 * code will behave better in HTTP 4xx situations * changed maximum logging amount behaviour v0.18.2 ~~~~~~~ * fixed a bug with logging bad exceptions * removed debug logging after syncing a pathpoint * fixed a bug with writing a sensor v0.18.1 ~~~~~~~ * fixed a bug with initializing predicates * fixed a bug with deleting predicates * removed some abstractmethods' from checkpoints * fixed a bug with opening events v0.18 ~~~~~~~ * removed unnecessary profiling with logs * restored some debug-level logs * increased communicator timeout to 60s * increased logs timeout to 40s and added exponential backoff in case of failure * log syncer will display the invalid logs if a 4xx is seen from the server * most calls related to pathpoints and sensors will be available in the no-pathpoint mode (you still have to provide a sensor and a pathpoint database for it to work). * fixed a bug with getting sensors locking up on dont_do_pathpoints=True v0.17 ~~~~~ * improved logging for NGTT * improved behaviour of the logging subsystem on low memory conditions * improved behaviour of connection resetting * fixed a bug that wouldn't allow smok to run on Python 3.5 * HTTP API will use minijson everywhere * logs won't be synced via NGTT anymore - they are dropped too often * data won't be synced via NGTT anymore - they take too long * SMOKDevice will raise RuntimeErrors on most calls if called after close * new considerations for PPDatabase and EventDatabase v0.16.2 ~~~~~~~ * fixed reconnecting * SMOKLogHandler will prune the log queue if on a low memory condition (severity condition 2) v0.16.1 ~~~~~~~ * removed redundant logging * logging is mow more bulletproof * bugfixes: * syncing data via NGTT can survive a connection reset * failing to sync data will not kill CommunicatorThread anymore v0.16 ~~~~~ * new feature: improved compression of data being sent * logs and pathpoint data will be compressed using MiniJSON * also used much shorter forms * new feature: pathpoint and log upload via NGTT * added NGTT module * Section does not need to be confirmed by the custom executor * orders now are str-able * log entries won't be logged if that would overfill the buffer * logs will wait for at least 1 second for more entries to become available to sync them v0.15.1 ~~~~~~~ * **bugfix release** added minijson to requirements * v0.15 was pulled v0.15 ~~~~~ * added support for the NGTT protocol to this package * fixed the bug with loading certificates v0.14.7 ~~~~~~~ * added alternate syntax to PathpointValue.set_new_value * bugfix for setting new values to pathpoints v0.14.6 ~~~~~~~ * API endpoint changed to https for testing v0.14.5 ~~~~~~~ * added `get_all_events` * added support for deleting BAOBs * fixed a bug wherein metadata would still sync despite allow_sync being set to False * fixed a bug with non-operational `PicklingMacroDatabase` v0.14.4 ~~~~~~~ * `SMOKDevice.open_event` will accept any dictable metadata * fixed a bug about creating new events * delayed_boot * changed default provide_unknown_pathpoint to return a Pathpoint instead of raising a KeyError by default. I simply trust the user to provide a Pathpoint DB implementation sane enough to realize his aims. * fixed a bug where `get_all_keys` returns a key that later is proven not to exist * added consistency checked for `BaseBAOBDatabase` * fixed a bug with synchronizing predicates v0.14.3 ~~~~~~~ * Predicate state will be preserved each tick if it changes * changed the API of the predicate database * added option to specify a timestamp for event close * *bugfix* fixed certificate mess when connecting to production * added the RAPID CA certificate * *bugfix* updating a BAOB could trigger notification about BAOBs being synced for the first time v0.14.2 ~~~~~~~ * fixed `SMOKDevice.reset_predicates` v0.14.1 ~~~~~~~ * hotfix for a critical bug in 0.14 v0.14 ~~~~~ API breaking change: * registering statistics overhauled Non-API breaking changes: * added `SMOKDevice.on_baob_updated` * added `SMOKDevice.allow_sync` * remove an useless `* 1.1` in `CommunicatorThread` * added `on_failed_sync` and `on_successful_sync` * certificates given with CRLF line ends will be processed successfully * fixed a bug in `DataSyncDict` * added `SMOKDevice.reset_predicates` * added predicate databasing * added name mangling to `PicklingDatabases` * fixed pickle to use highest protocol in `PicklingDatabases` * Pathpoint will try to read it's previous current value upon startup * refactored `Pathpoint.get` v0.13 ~~~~~ * `OrderExecutorThread` will now wait `startup_delay` seconds as well * added `Predicate.on_group_changed` * statistic name in `BaseStatistic` is no longer mandatory to override v0.12 ~~~~~ * changed the parameter name in `SMOKClient.execute_sysctl` to match order fields * added support for Sensor Writes * improved exception handling * added `on_verbose_name_changed` to Predicate * added an extra parameter to `register_statistic` v0.11 ~~~~~ * better exception messages for invalid certs * added support for SysctlOrders * added support for BAOB updates via sysctls * failure to send a Message will be retried up to 3 times * fixed a bug with querying for macros using a float * fixed pickling macros * fixed a bug with syncing pathpoint data * fixed a bug with PicklingMacroDatabase v0.9 ~~~~ Following **API breaking changes** were introduced: * added a termination detector to `sync_sections` Following non-breaking changes were introduced: * added caching for plain metadata * added `Sensor.write` * failing writes will be treated the same way as failing reads - they will be logged * added automatic order retry * smarter waiting (time spent executing read/write/message orders counts into that too) * added a proofing against appending a pathpoint value with lower timestamp than current * syncing invalid data (HTTP 4xx instead of 5xx) will mark it as synchronized correctly * made `Pathpoint.set_new_value`'s usage more ubiquitous * since Executor will now use it to write new Pathpoint's values * added an option to register a callable to be fired each time Pathpoint value changes * added an option to limit the frequency of Pathpoint's reads * added an option to read without spawning a Thread and a Future * added an option to retrieve SMOK's master certificate * added `NullEventDatabase` v0.8 ~~~~ * patched raising exceptions from the API on staging environment * certs will be used in conjunction with HTTPS only in production * removed debug logging before data sync * no API call will be dispatched if there's no data to sync * adjusted macro update interval * removed extra logging from `smok.threads.executor` v0.7 ~~~~ * add support for reparse pathpoints * add support for getting archive data from sensors * fixed a bug with downloading BAOBS * fixed a bug with reading sensors via on_read * fixed a bug with reporting exceptions * BAOBs will be marked as downloaded after 3 attempts were made * fixed different exception that OperationFailedError raised during a read to be logged v0.6 ~~~~ * add BAOBs * Sensor class is now eq-able and hashable * added option to disable pathpoints and predicates * added archiving data extra DB v0.5 ~~~~ * added automatic log compression * superficial print() removed * added sensor database * increased the startup delay to begin communication by 5 seconds to 10 seconds * this delay is now programmable * fixed a bug with updating metadata * removed a debug log upon syncing pathpoints v0.4 ~~~~ * fixed a bug where `LogPublisherThread` would throw during shutdown * API will return a `ResponseError` if something fails * fixed a bug where log records sent to the server were not formatted correctly * logging was adjusted * when formatting the log record fails, it's message will be appended along with it's args * fixed a critical bug with storing pathpoint values * fixed a bug with executor not recognizing the default `execute_a_section` * fixed a bug wherein timestamps were written 1000 times larger than necessary * pathpoints will be uploaded as soon as there's new data v0.3 ~~~~ * added `SMOKDevice._execute_message_order` * log publisher has now a timeout * clarified Pathpoint.get_archive * improving handling error messages from the API v0.2 ~~~~ * renamed from smok-client to smok v0.0.11 ~~~~~~~ * fixed closing `Event`s * added pickling `Event` and `Macro` * `on_read` Future can now return `None` v0.0.10 ~~~~~~~ * added `Pathpoint.get_archive` * definitively removed set metadata * added custom `SMOKDevice.execute_section` v0.0.9 ~~~~~~ * added `PicklingMetadataDatabase` * added `SMOKDevice.sync_sections` * added `SMOKDevice.open_event` and `SMOKDevice.close_event` and `SMOKDevice.get_all_open_events` v0.0.8 ~~~~~~ * added support for plain metadata v0.0.7 ~~~~~~ * added logging v0.0.6 ~~~~~~ * renamed `BaseEventDatabase.get_data_to_sync` to `BaseEventDatabase.get_events_to_sync` v0.0.5 ~~~~~~ * added an option not to start macros and archives * added __slots__ to BaseDatabases v0.0.4 ~~~~~~ * added setting and reading linkstate and instrumentation metadata for slave devices * added a true macro database v0.0.3 ~~~~~~ * added pluggable pathpoint value databases * `Section` is now a `Future` * **bugfix**: timestamp from restored data would be needlessly bumped up * added option to create `Events`