The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Control-CLI-AvayaData

0.01	2011-06-07
	* Initial internal posting

0.02	2011-06-16
	* Changed login() & connect() to return output of login sequence with new return_output argument
	* Errmode argument for all methods was not working
	* Updated pod with Control::CLI 1.03 new eof method

0.03	2011-06-19
	* Re-worded pod description section

0.04	2011-08-24
	* Updated matching patterns
	* Modified 0.02 changes and removed return_output argument for login() & connect()
	* Now login() & connect() will return output if an array is seeked as return argument
	* Now login() & connect() accept return_reference argument
	* Detection of generic family type now only carps if errmode is 'die' or 'croak'
	* Added read_attemps argument to login() & connect()

0.05	2011-09-02
	* Added VSP-7000 support

0.05	2011-09-07
	* Corrected warnings about uninitialized value when cmd() timed out before family_type detection 

0.06	2011-09-11
	* Added config_context method
	* Fixed some issues with prompt pattern matching
	* Modified test script

0.07	2011-10-06
	* Modified command error matching regex for ACLI PassportERS under _determineOutcome()
	* Modified InitPrompt regex strings

0.08	2011-10-07
	* Moved syntax error patterns away from _determineOutcome() into global variables

0.09	2011-11-27
	* Added new attributes: 'slots', 'ports', 'is_dual_cpu'
	* Modified test script to test above new attributes
	* Also enhanced test script to show optional attributes

0.10	2012-09-01
	* Modified error patterns for BaystackERS, PassportERS & Accelar family types
	* Method last_cmd_errmsg suppresses the bell character from error messages
	* Modified prompt and more patterns for SecureRouter
	* Optimized port attribute to use cli commands with less output on PassportERS
	* Added stp_mode, sysname, base_mac attributes
	* Changed login() to prioritize login pattern matches to avoid false prompt detections
	* Increased default login() read_attempts from 5 to 10
	* Modified login banner detection patterns
	* Bug in login(); a failed login was not detected if resuming login() from password
	* Added wake_console method and argument to connect() and login()

0.11	2014-06-01
	* login() now remembers loginstage even after failed telnet authentication
	* Modified error patterns for BaystackERS
	* Attribute stp_mode was not being set correctly on older stackables pre-dating rstp/mstp
	* Updated y/n prompt match regex to also match yes/no
	* Updated wake_console sequence as it was not working on SecureRouter
	* Updated login() to match SSH exception changes made in login() of Control::CLI v1.05
	* Fixed shorthand syntax for connect($host) which was not working
	* Shorthand connect syntax now connect($host [$port]) which will work also with IPv6 addresses
	* Updated new & connect methods for new Control:CLI v1.05 connection_timeout
	* flush_credentials method is re-defined in this class to also handle enable-password
	* Code changes to pass Perl Critic severity 4 and above violations
	* Updated exporter tags to include new Control:CLI v1.05 useIPv6 symbol
	* login() method was not always returning output on login failure
	* Modified more prompt match patterns to remove a carriage return under PassportERS family type
	* Setting debug on constructor was failing to enable debug() on parent class Control::CLI
	* cmd_prompted() now also accepts 'progress_dots' argument like cmd() does
	* last_prompt() was sometimes returning the last prompt with a carriage return pre-pended
	* Changed naming from 'Avaya Data' to 'Avaya Networking'

0.12	2014-07-26
	* Discovery of family_type can no longer be based on prompt match alone and uses extended discovery
	* Modified extended discovery which also now covers PassportERS and BaystackERS family types
	* Method login() now may set the family_type attribute even on login failure if it matches a banner pattern
	* Made login more robust when connecting via serial console; wake_console is now simply a carriage return
	* Updated error patterns
	* Added debug_file() method to send debug messages to file 

1.00    2014-07-29
        * First version to publish on CPAN

2.00	2015-03-15
	* As of this version, these methods support a non-blocking mode and have their own polling method:
	  connect(), login(), cmd(), attribute(), change_baudrate(), enable(), device_more_paging(), device_peer_cpu()
	  (requires Control::CLI version 2.01)
	* Debug messages now rely on Control::CLI debug level and use bits 4 & 8
	* Attribute port was not picking up fastEthernet ports on older ERS8300 & ERS8600 in ACLI/NNCLI mode
	* Added argument "feed_list" to cmd_prompted()
	* Method config_context now returns an empty string if the device is not in config mode
	* New attributes 'oob_ip', 'oob_virt_ip', 'oob_standby_ip', 'is_oob_connected', 'mgmt_vlan', 'mgmt_ip'
	* New attributes 'baudrate' and 'max_baud'; also change_baudrate() now makes use of them
	* change_baudrate() with baudrate set to 'max' now forgiving (returns success) if baudrate cannot be increased
	* Module now supports the same export tags for class methods as Control::CLI
	* prompt_credentials can now be set either as a code ref or as an array ref where the 1st element is a code ref
	* Added console() method to better control wake_console sequence sending
	* Made changes to 'ports' attribute to accomodate 40GbE channelized interfaces which are new in VSP VOSS 4.2

2.01	2016-02-07
	* Exteneded discovery was incorrectly setting up WLAN9100 family_type device with SecureRouter prompt patterns
	* Updated error patterns for detecting error generated on Avaya device and to use single line patterns
	* Updated login() & connect() methods to leverage new Control::CLI data_with_error() with new argument
	  (requires Control::CLI version 2.02)
	* Fixed telnet handling of WLAN9100 which generates unprintable characters in telnet output (but not with SSH)
	* Locking onto WLAN9100 prompt was not working properly if calling login() on a configuration context prompt
	* Sub-classing method syntax changed to more flexible hash style arguments (old list style format still accepted)
	* Patterns for responding to device confirmation yes/no prompts updated

2.02	2016-04-20
	* Method last_cmd_errmsg() was not returning the switch error message if this was preceded by a line with caret
	* Updated to support new Control::CLI's 'callback' argument in connect() and 'errmsg_format' in constructor
	* Updated error messages to comply with new Control::CLI error message formats
	* Updates to switch error messages

2.03	2017-06-15
	* Fixed rare case where login() could end up locking onto a fraction of the actual switch prompt
	* Family type attribute was taking time (timeout) before setting 'generic' when connecting to Juniper devices
	* Update to error message patterns
	* Was not locking on PassportERS old (non-ACLI) CLI prompt if that contained '.' characters 
	* Attributes 'model', 'oob_ip', 'is_oob_connected' now work with Avaya Private Label Switching DSG platforms
	* Added new attributes 'is_voss', 'is_apls', 'apls_box_type' and 'brand_name'
	* On BaystackERS family types, login() method now detects failed authentication if password is asked twice
	* WLAN9100 attribute "model" is now formatted correctly, like WAP-9132

2.04	2017-12-09
	* Telnet login with username/password was detecting the same password prompt twice and failing to connect
	* Attribute 'model' wan not correctly formatted for PassportERS VSP platforms; e.g. VSP-8284XSQ instead of
	  VSP-8284-XSQ
	* Updated to support new Control::CLI's 'atomic_connect' argument in connect()
	* Update to error message patterns

2.05	2018-09-02
	* Method login() was failing with SSH publickey authentication on ERS on TCP port other than 22
	* Internal method discoverDevice(), used by login(), was failing to set the default prompt on "Generic"
	  non-Avaya device types which used either '$' or '?' as last character on their prompts
	* Update to error patterns