GenieACS v1.1-alpha now available

Zaid Abdulla zaid at genieacs.com
Fri Jul 22 13:05:03 EDT 2016


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/<device_id>/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



More information about the Announce mailing list