Network Reliability Engineering Community

Upcoming breaking change to lesson definitions

While NRE Labs isn’t near 1.0 yet, and as a result, no one should expect anything to be super stable right now, I feel it’s worth sending a heads up on something that will require a big change to lesson definitions.

It’s becoming clear that we need to redo the way that lesson definitions specify a) the way endpoints are configured and b) the way they’re presented to the front-end. Right now the two are done in a fairly unclean way, and it’s going to require a drastic change.

The details are contained in this issue: https://github.com/nre-learning/syringe/issues/112
Please use that issue for all technical discussions or questions.

Now, while this will change the layout of a lesson definition in a fairly drastic way, I’ll take care of retroactively converting existing lesson definitions to fit this model - the main purpose of this notice is to let folks know in case they are currently building lesson content. Once this functionality is merged, the Syringe image in use within selfmedicate will be updated accordingly, and will fail to run lessons in the old format.

Please stay tuned to the aforementioned issue - all updates on this will be posted there from now on. In terms of timeline, I expect this to take place in the next few weeks. It will likely take place in stages - i.e. we’ll likely tackle the configuration portion first, then the presentation, or vice versa. The point is, subscribe to notices on that issue if you want the latest.

UPDATE: This feature is going to be merged this week. This means that if you’re working on any lessons, and your selfmedicate environment pulls a new version of the syringe container, your existing lesson definition will fail to load until you convert them to the new format.

Please read the revised endpoint documentation for instructions on how to revise your endpoint definitions to the new format. You should only need to update the lesson definition file (lesson.meta.yaml) and that’s it. Everything else should be backwards-compatible.

If you’re currently using network devices, you’ll likely want to use configurationType: napalm-junos since you’re probably using the vqfx at this point. You will almost certainly want to use some kind of presentation for CLI access. Please look at the existing lessons that I converted last week for examples, you’ll likely want to do something similar.

If you have any additional questions, post to this site or open a Github Issue if you encounter bugs/problems not mentioned in the documentation.