April 2018

April 30th - Genie v3.0.0

Today, we are proud to make your wish becoming true: the availability of Genie v3.0.0!

With plenty of infrastructure enhancements in the core, 200+ triggers and 280+ verifications spanning over 25 features, Genie v3.0.0 is here to make your mundane test automation exciting.

  • Simplifies the implementation of complex & comprehensive testing using Genie SDK

  • Leverage any Genie triggers & verifications in your traditional pyATS test suites

Gone are the days where you have to write script-after-script: with Genie, we are aiming to shift the focus from scripting, to YAML-based, data file driven test automation, using repeatable & re-useable, platform-agnostic test case libraries.

Release Highlights:

  • Genie Harness - support for Stimulus, Events & Activity (SEA) based testing using OS/Platform/(Cli/Yang/Xml) agnostic triggers & verifications

  • Plethora of new features, parsers, conf & ops libraries, with traffic generator support

  • Robot Framework keyword support in Genie, pyATS and Unicon

  • Introduction of Genie telemetry: a plug & play framework that monitors your testbed devices during script run for crashes, core dumps, and any related performance & stability issues/metrics through plugins

  • Various core infrastructure enhancements:

  • support for pyATS v4.1.0

  • support for Python 3.5/3.6 (32/64bit) in addition to 3.4

  • support for Mac OSX & WSL in addition to Linux

  • new examples that can be run on your own topologies or VIRL testbeds

With pyATS released through DevNet in Q2FY18, we made our first baby step towards enabling Cisco engineering teams to collaborate with end customers on transparent development of new test suites. However, we always knew that the power of any test automation infrastructure lies always with its libraries. As such -

Today, we announce the availability of Genie, and corresponding libraries, through Cisco DevNet.

What does this mean for you?

  • Use Genie libraries anywhere, anytime, for any reasons, internally and externally.

  • Share your Genie-based test suites with end-customers, leveraging all of the power of Genie, and its triggers & verifications library.

  • Invite customers to collaborate, and jointly develop [third-party] libraries and parsers

https://github.com/CiscoTestAutomation/genielibs https://github.com/CiscoTestAutomation/genieparser

New Packages Versions

Packages

Versions

Genie

3.0.0

Genie.ops

3.0.0

Genie.conf

3.0.0

Genie.harness

3.0.0

Genie.utils

3.0.0

New Libraries Versions

Libraries

Versions

Genie.libs.ops

3.0.0

Genie.libs.conf

3.0.0

Genie.libs.sdk

3.0.0

Genie.libs.robot

3.0.0

Upgrade Instruction

pip install --upgrade genie

Note

Genie comes with many new libraries/packages. The following will also be installed genie.metaparser, genie.parsergen, genie.abstract, genie.telemetry, genie.parsergen genie.predcore, genie.libs.filetransferutils

Features:

Genie

  • Genie is growing! Many packages have been added to the Genie namespace (abstract, parsergen, genietelemetry, predcore, metaparser)

    • import abstract -> from genie import abstract

    • import parsergen -> from genie import parsergen

    • import predcore -> from genie import predcore

    • import metaparser -> from genie import metaparser

    • import genie_libs -> from genie import libs

    • from genie_libs import conf -> from genie.libs import conf

    • from genie_libs import ops -> from genie.libs import ops

    • from genie_libs import sdk -> from genie.libs import sdk

  • GenieTelemetry has been released! A framework that monitors your testbed devices during script run for crashes, core dumps, and any related performance & stability issues/metrics through plugins. It is fully integrated within Genie

  • Following pyATS latest release, Genie now fully supports Python 3.4, 3.5+ and 3.6+, and can now install and run on Mac OSX platforms

  • Unicon is now the mandatory connection to use for Genie, as Csccon is reaching its end of life and support

csr1000v-1:
    type: asr1k
    os: "iosxe"
    alias: helper
    tacacs:
        login_prompt: 'login:'
        password_prompt: 'Password:'
        username: cisco
    passwords:
        tacacs: cisco
        enable: cisco
        line: cisco
    connections:
        defaults:
          class: 'unicon.Unicon'
        a:
            protocol: telnet
            ip: xxx.xx.xx.xx
            port: xxxxx
    custom:
      abstraction:
        order: [os]
  • 25 feature models to create agnostic script

Genie.Conf

  • Genie objects now inherits from the pyats objects to cover the pyats objects features along with all the Genie functionalities;

  • _pyats_<object> is now done as follow:

testbed._pyats_testbed.<variable>      -> testbed.<variable>
device._pyats_device.<variable>        -> device.<variable>
interface._pyats_interface .<variable> -> interface.<variable>
link._pyats_link.<variable>            -> link.<variable>
  • <object>_map is now done as follow:

devices_map    -> devices (now returns dict of devices)
interfaces_map -> interfaces (now returns dict of interfaces)
links_map      -> links (now returns dict of links)

Hint

If you still require a list, you can do it with .values()

  • Testbed object now returns the following:

devices         -> Now returns a dict of devices
add_link        -> Retuns None
remove_link     -> Retuns None
  • Device object changes:

interfaces   -> Now returns a dict of interfaces
device.links -> Now returns a set of links
  • No change for Interface object

  • Link object changes

interfaces -> Now returns a dict of links
  • Genie loader has been implemented to directly load the yaml file into Genie objects

  • Modification in the Testbed Converter

Genie.Ops

  • Now supports kwargs to be passed to parser

  • Bug fix for Maker

Genie.Harness

  • PTS now generates a human readable json format stored in the archive file

  • Genie.harness now supports traffic generator Harness.

  • Subsection can be added/removed dynamically with the help of subsection datafile

  • Local and Global processors can be added to Trigger, Verifications and Common_setup/Common_cleanup

  • Argument can be defined for processors within the datafiles

  • Enhance logger for genie.harness

  • Genie.harness learns the management interface, and will not pick it for executing Triggers, unless wanted

  • New error pattern for Unicon support

  • New Timeout functionality

  • Enhancement for trigger and verification datafile to support abstraction

  • Modification of Mapping interaction within Genie

  • Major rework of pyats Find api. Allows to ask and collect multiple requirements at once

  • Enhancement to Diff

  • The connect subsection can now re-use the same via for multiple context

  • Enhancement to accept easypy plugins processor (eg; Cflow Plugin)

Genie.examples

  • 9 Brand new examples demonstrating all functionalities of Genie. They can be run on your own topologies or on provided Virl device.

Genie.libs.Ops

  • New Ops object with coresponding parser

    • Vrf

    • Prefix-list

    • Igmp

    • Vlan

    • Pim

    • mld

    • ospf

    • static_route

    • routing

    • stp

    • lldp

    • acl

Genie.libs.Conf

  • New Conf object

    • Mcast

    • vrf

    • prefix-list

    • igmp

    • vlan

    • pim

    • mld

    • ospf

    • static_route

    • routing

    • stp

    • lldp

    • acl

  • New connection implementation for Ixia

Genie.libs.SDK

  • Over 200+ triggers within these categories:

    • AddRemove

    • Clear

    • DisableEnable

    • Modify

    • ProcessRestart

    • Reload device

    • Reload linecard

    • ShutNoShut

    • Switchover

    • Sleep

    • UnconfigConfig

  • Over 280+ verifications to verify the state of the topology

  • Major re-work to Mapping, Normalize and configure

  • Mapping now use Timeout functionality

  • Better error handling within Triggers

  • Improve Trigger messages and logs

  • New subsections added (Save boot variable, learn system default, initialize traffic)

  • Triggers are now skipped when prerequisites aren’t found to save execution time

Genie.libs.robot

  • A new addition to Genie. RobotFramework is a keyword-driven testframework which allows simple testscript creating. New Genie robot librarires allow to re-use any Genie Trigger, Verification, Ops and Parser to create powerful easy to read scripts.

Note

Robot keyword has also been added to pyATS and Unicon.

For more information, make sure to go through the genie documentation.