From zaid at genieacs.com Fri Jul 22 13:05:03 2016 From: zaid at genieacs.com (Zaid Abdulla) Date: Fri, 22 Jul 2016 20:05:03 +0300 Subject: GenieACS v1.1-alpha now available Message-ID: <1469207103.3349.12.camel@genieacs.com> I'm happy to announce the availability of GenieACS v1.1-alpha. Contrary to what the version number suggests, this is a massive update that not only brings many new features, but also lays the foundation for the next major release. Before I go through the new features, I must warn you that this is alpha quality software and not suitable for production use just yet. A word on upgrading and API compatibility: Great care has been taken to avoid API-breaking changes. Only one rarely used API call has been removed (/devices//preset). Configuration files and database structure have remained intact for the most part, with the exception of the config files for the following features which have been removed in favor of a better implementation. - Aliases and parameter value normalization: These have been replaced with "virtual parameters". The configuration file config/parameter.json is no longer used. - Custom commands: This was used to fetch and save values to/from an external entity. It has now been replaced with "extensions". The relevant config files are no longer used. More on virtual parameters and extensions below. What's new: - Provisions: A "provision" is a script that's linked to a preset allowing pushing dynamically computed values or implementing complex device provisioning workflow. - Virtual parameters: These are user defined parameters that are backed by a custom script but otherwise behave like regular parameters. The script can read or write other parameters or execute code that communicates with an external system. This can be useful for working around device quirks or to create unified parameters that work seamlessly across different device models. - Extensions: Extensions are integration glue code between GenieACS and other systems (e.g. CRM). Unlike provisions, extension scripts have full access to the underlying OS and they are executed in their own separate process. Extensions can be called from provisions or virtual parameters to read from or write to external sources. - Data model: To improve performance and memory consumption, GenieACS will no longer fetch the entire device data model when a device connects for the first time. Instead, only the parameters needed to process presets will be fetched. This is handled intelligently?so no configuration is required. - Preset scheduling and events: It is now possible to restrict presets to certain device events (e.g. bootstrap) or use cron-like expression to schedule activation of presets. - Parameter path aliases: In scripts and presets, parameter paths may now include asterisks (*) or key:value filters in situations where the parameter path may be different from one device to another. Say you want to set the username of the one WANPPPConnection instance that is enabled, you'd use a path like the following to refer to that particular instance: "InternetGatewayDevice.WANDevice.*.WANConnectionDevice.*.WANPPPConnecti on.[ConnectionStatus:Connected].Username". This is somewhat similar to the alias-based addressing mechanism as defined in the protocol specs, but this is a server side implementation that doesn't require explicit support for it from the device. There's also the added bonus of being able to use any one (or more) of the sub parameters to define the alias. You can download the source code from Github (use master branch). Make sure you also get the latest update of genieacs-gui to go with that. I will be updating the wiki with documentation about the new features soon. Join the discussion in the Users mailing list if you face any issues upgrading or would like to provide feedback. Please expect crashes and other issues in this alpha version. -- Zaid Abdulla zaid at genieacs.com