CHANGES
=======

1.8.6
-----

* version bump
* pytype
* Stacking tests should remap hardware interfaces
* Stacking should allow port references
* Update pytype from 2018.6.18 to 2018.6.19
* Simplify packet in handler
* Update config\_parser\_util.py
* Update config\_parser\_util.py
* Re-enable FaucetUntaggedRandomVidTest test
* Update note for MultiConf test
* Revert "Retry multiconf test."
* Retry multiconf test
* update pika library to latest
* Greater order
* Re-enable FaucetTaggedScaleTest with relaxed learn count requirements
* "p"
* Need to force UTF8 locale for pytype
* Try pytype in V2.7 mode only
* Attempt pytype 2018.06.18
* Dump pytype header
* Run pytype without parallel
* Don't parallelize pytype
* Attempt pytype upgrade by skipping mininet
* Disable ScaleTest while investigating flakes.≈y
* Temporarily disable FaucetUntaggedRandomVidTest to investigate flakes
* Add rasp pi docker-compose for rabbitmq adaptor
* Add simple VLAN scale test
* Cabling counters should be counters, not gauges
* Need to run apt-get update in case base image is out of date
* Preversion 1.8.6

1.8.5
-----

* Bump version number
* Don't try to send LLDP for stack ports if LLDP is not enabled
* Don't automatically enable LLDP for stack ports
* Double check lldp\_beacon
* Log DP name as well as ID
* Cleanup used of namedtuple
* Improving diagnostic error message
* Should not edit LLDP config at run time
* Support hardware testing for stacking
* Incremental support for hardware switch testing with stacking
* Use same class to associate hardware switch (incremental support for hardware switches in stacking)
* Speed up LLDP blocked tests
* Temporarily disable stack cabling counter for FaucetSingleStackStringOfDPTaggedTest
* Re-verify cable errors for FaucetSingleStackStringOfDPTaggedTest
* Revert "Don't verify cabling counters for FaucetSingleStackStringOfDPTaggedTest."
* Don't verify cabling counters for FaucetSingleStackStringOfDPTaggedTest
* Add tagged/untagged group test
* Don't verify block rule on other tagged host/stack case
* Don't verify untagged block rule when tagged hosts in use
* Further stack connectivity testing
* Verify cabling only applies to stacks
* All stacking tests should verify there are no cabling errors
* Test LLDP probes and LLDP from hosts are not flooded
* Test that stack hosts don't see LLDP probes
* Revert "Diagnostic change to exact match LLDP."
* Diagnostic change to exact match LLDP
* Drop LLDP/group if it somehow makes it into a stacked VLAN
* Log DP name in case of mismatch
* Explicitly drop untagged traffic on stack ports
* Fix log message for stack down due to incorrect cabling
* Add debian package dependency on chewie
* 802.1x logging and ACL names
* Incremental test support for Chewie
* Add wpa\_supplicant test helper
* Incremental Chewie stub implementation
* Correct NFV interface RE
* Implment NFV test helper
* pylint
* shuffle file order for pylint/pytype
* It's been 2018 for a while, reflect this in copyright notices
* Don't multiply trigger incorrect cabling event
* Add Prometheus variable for stacking state on a port
* Stack cabling errors should be actioned immediately. Make LLDP logging less verbose
* Cleanup FAUCET LLDP parser further
* Recommend -i flag for integration testing on hardware (faster)
* Make documentation more generic
* Adding dynamic docker network option
* Attempt non -Z pytype
* Extraneous \n
* Pin pytype to 2018.5.22.1 for -Z flag
* Pin pytype, reenable parallel
* Re-enable pytype with -Z, due to excessive memory use
* Update the cisco TFM file to follow some recent changes in faucet
* pylint
* Temporarily disable pytype for python3
* Reduce job count for pytype (memory hog)
* Automatically do pytype for python2 if mininet is imported
* workaround for mininet\_test.py
* pytype workarounds
* name-error -> attribute-error
* Reduce memory usage
* Unpin pytype
* Set pytype python version
* pytype workarounds
* Install pytype via pip
* Preversion 1.8.5

1.8.4
-----

* Bump 1.8.4
* Workaround lack of availability of typing library on python3.4

1.8.3
-----

* Test stacking where redundant links are down/root dp is unreachable, to begin with
* Few minor lint fixes, make tests acutally fail
* Randomize ACL cookies
* Randomize DP cookies
* Handle stacking port state not an int
* Clean up lldp\_handler
* Bump version for release
* pylint
* Update sphinx\_rtd\_theme from 0.3.1 to 0.4.0
* Prep methods for handling stack events
* Make pip quieter
* Correct codecov
* Run unit tests before other checks
* Unpin pylint
* Work around codecov not working under docker
* Use common pip\_deps.sh install script
* Pass CODECOV token for Travis
* Docker tests can use external cache (e.g from Travis)
* FAUCETTESTS -> FAUCET\_TESTS
* Fix delim for parallel
* Absolute paths from src\_files.sh
* Incorrect : for else clause
* Non standard use of string compare
* Revert "Retry apt-get update with install."
* wrong docker run args
* Retry apt-get update with install
* Add docs requirements, too
* Quote pip3 install
* Install test-requirements explicitly in .travis.yml
* pin pylint
* wrap pip3 install as well with retry
* Retry quote
* Wrap apt-get install with retry
* Incorrect order to preserve discovered\_up\_port\_nos
* Improve stacking logging
* Keep dynamic op status state
* Need to maintain list of up DP ports over cold/restarts
* Only reprovision known up ports on self-initiated cold start
* Only provision configured ports
* Revert "Only provision up ports."
* Simply LLDP stacking handler
* Only provision up ports
* typos
* We don't support different output port numbers with a single ACL
* Drop traffic from test host MACs
* Make my life easier by not hard coding versions
* lint check in mininet test, is redundant
* Not practical to require disabling all listening processes, but we can warn about them
* Improve test coverage
* Add check to make sure no processes using test interfaces
* Fix typo in README\_Cisco.rst
* When stack probe, should not check port.running
* Add test stack probe
* Stack port down when remote port is down
* Pre-version 1.8.3
* typos
* typos

1.8.2
-----

* Default proactive limit should be 2\*max\_hosts
* Implement periodic probing stack ports
* Add note to deconfigure Avahi
* A thread that periodically call stack probe service
* Upgrade to Ryu 4.25
* Update ryu from 4.24 to 4.25
* Update ryu from 4.24 to 4.25
* Update sphinx from 1.7.4 to 1.7.5
* Expand use of mypy in pre-commit
* pytype checking for clib
* Improve clib pytype
* Increase min lint score
* pytype/pylint
* pylint/pytype fix
* enable pytype on unit tests
* Add set\_field api to valve\_of
* pylint
* Use default priority transit goto flow
* Only learn for locally expressed VLANs, and support transit stacking (where a stacked switch might not have any locally expressed VLANs)
* Add support for the Cisco Systems Catalyst 9000 Family Switches
* Pylint cleanup
* Attempt standard install method for apt dependencies
* Remove now empty gitlab build stage
* Revert "Run apt-update."
* Run apt-update
* Making docker tests actually run
* Implement dp\_acls with test
* Initial dp\_acls field support
* Refresh encrypted travis deploy password
* Wrong usage of tempfile
* Of course, config should be updated with a write/rename, not in place
* write conf files unbuffered
* Wait longer for conf file to be written
* LLDP processing should be enabled always for stacking links, and LLDP probes on stacking links should not be ratelimited
* Add missing multiarch hook for docker CI
* Tidy up tutorials
* Preversion 1.8.2

1.8.1
-----

* Gauge package should use /var/log/faucet for logging
* Fix example configuration to remove ambiguity
* Fix line under heading
* Update VM documentation
* Switch VM build from python packages to debian packages
* Bump version
* Add config test/doc for force\_port\_vlan
* Update docker documentation
* Remove old faucet-yaml.dot
* Skip tests on armhf docker builds
* Split gNMI into it's own repo
* Remove CI Dockerfile
* Removing documentation on how to manually build faucet dockers
* Add hook for docker cloud to allow cross compiling
* Run pylint on clib as well
* Add clib path to git hook
* pylint
* pylint
* Add lint checking of test directory
* pylint
* Wrong test sense, for nonblocking test
* pylint
* test\_tcpdump\_nextline can fail becaise ping only tries twice, and might exit before the test can terminate it
* Handle invalid UTF-8 in ofdesc messages
* Add note that test interfaces should be unmanaged to avoid conflict with tests
* Add beka dependancy to debian/control
* update docs for running only a single int test
* Common tmpdir method for test results
* Should use common test result base class
* Move test results to "tests" json blob
* use stat based reload for RandVlan test
* Revert "Report test output in json format."
* Report test output in json format
* Log result of SanityTest
* Add jsonreport option to tests
* Randomized VID test
* Stricter checking of eth\_dst when receiving LLDP
* Fix BRIDGE\_GROUP\_MASK
* Use 5 byte mask for bridge addresses
* Don't flood 01:80:c2:00:00:00 to 0f addresses per 802.1D
* Drop LLDP/BDPUs in flood table, enabling bridge local traffic to be learned
* Removing gasket Dockerfiles which are not useful yet
* Revert "pylint."
* Revert "Fix match.match."
* Fix match.match
* pylint
* pylint
* Pre-version 1.8.1

1.8.0
-----

* Bump version to 1.8.0
* Fix group\_id check
* Condense GroupTable tests
* Test IPv6 VIPs are inconsistent
* Make FaucetGroupTableUntaggedIPv6RouteTest unreliable
* Missing group\_id
* tcpdump\_helper fix
* pylint
* pylint
* pylint
* pylint
* FaucetConfigStatReloadAclTest should not hup
* Simplify FaucetUntaggedHUPTest
* verify\_faucet\_func() can take list of callables
* Fix tabs\_are\_bad()
* change\_port\_config() missing arg
* reload\_conf() arg cleanup
* reload\_conf needs to pass verify arguments
* verify\_faucet\_reconf() should check warm/cold start counters
* cleanup reload\_conf()
* Revert "Use reload\_conf args consistently."
* Revert "verify\_faucet\_reconf smarter, verifies reconf type."
* verify\_faucet\_reconf smarter, verifies reconf type
* Use reload\_conf args consistently
* spacing
* Rename verify\_hup\_faucet to verify\_faucet\_reconf
* configure isn't smart enough to glob a path
* DPDK 18.02.1 has a slightly different install path and needs python-six
* More predictable tcpdump test
* Fixing flaky tcpdump behavior
* Upgrade Beka to 0.3.3
* Don't provision VIP table either, if no routing configured
* OFPTFPT\_NEXT\_TABLES is automatically generated
* Don't provision unused tables on TFM switches
* Rewrite OFPTableFeaturePropNextTables
* Don't provision unused routing tables
* Send switch\_features() handler on every cold start
* Use route manager active flag
* Revert "virtual method for \_update."
* virtual method for \_update
* Reload test can use same config
* Hide common test classes from unittest discovery. Test coverage for stack edges
* Test coverage for valves\_manager
* Minimum test coverage to 93%
* Coverage for watchers.py
* Test coverage for ValveIPv6RouteManager
* Test coverage for bad ACL match
* Remove deprecated dl\_dst output rewriting
* bgp\_route\_handler
* Test coverage for bgp\_neighbor\_addresses
* Gauge smoke test coverage
* Test coverage
* Test coverage for bgp\_neighbor\_addresses
* Simply config checker
* verify\_flooding handles stack edges
* Rename StackRoot test
* Coverage for to\_conf()
* Test invalid BGP server address
* Re-enable koe
* Add coverage for ACL multiple ports
* Test connect\_or\_disconnect\_handler
* Increase default docker startup timeout
* Test include optional doesn't exist
* Adding capabilities to tcpdump
* Ignore virtual methods
* Test reconnect method
* init arg order
* Don't use threads for testing
* Test event server loop
* Fix use of context manager
* Use context manager pattern
* Should use eventlet's Queue
* Reorder test methods for consistency
* Incremental coverage for valve\_route
* Increase minimum coverage to 92%
* Exclude virtual functions from coverage
* Test FIB route expiry
* Remove valve\_route's use of time.time()
* Test coverage for group\_table\_routing
* Revert "Test coverage for stack non-roots."
* Revert "Fix test class introspection."
* Fix test class introspection
* Test coverage for stack non-roots
* Test coverage for loop protection
* test proactive learn for IPv6
* Test coverage for host banning
* Test coverage for meters
* Upgrade to Beka 0.3.2
* Implement group unit test support. Test coverage for hairpin mode
* Simplify is\_output()
* Handle combinatorial port flood
* Add FaucetBgp speaker count tests
* Verify flooding can check hairpin
* pylint
* Simplify is\_output()
* Keep track of group entries
* FaucetConfigReloadAclTest can flake
* move tutorials to own folder
* add new tutorials to index
* merged in bairdo/faucetTutorial into local tree
* Pulled in bairdo/faucetTutorial
* cleaned up diagrams, vlans
* cleaned up diagrams, vlans
* Dual stack BGP support
* Avoid softswitching
* add in missing keywords for ping tests
* Update Beka to 0.3.1
* Revert "Revert "Swap out Ryu BGPSpeaker for Beka""
* Update Dockerfile.base-tests
* DPDK directory acquired "stable" in the name
* test should be less than minimum, not also equal
* pylint
* Handle deconfigured VLAN while BGP active
* Better pick unused vid
* Pick unused VID
* Don't use an unused port to force cold start
* Add test for \_\_dict\_\_ on port/vlan/dp
* Config test for DP
* It's better to use the generic set\_fields modifier
* Fix typo
* Grafana doesn't call this "proxy" anymore
* ACLs should be rejected when output port can't be resolved
* Add Port unit tests
* Add more VLAN unit tests
* Must resolve all ports
* Adding tcpdump\_helper unit-test
* Add Sam Russell to authors
* Fix VLAN.to\_conf() for faucet\_vips
* Fix VLAN.to\_conf() route format
* Port.to\_conf() serialises VLAN names correctly
* Make test\_gauge quiet
* Make test\_fctl.py quieter
* Work-around for docker users missing from system
* Testability update to check\_faucet\_config.py
* Upgrade grafana images to 5.1.x
* LLDP test did not handle long DPIDs
* use rst's note
* Add documentation on developing faucet with PyCharm
* added configration documentation for meters
* return value not correct
* pylint
* Use common resolve\_handler callable
* Simplify dead nexthop expiry
* Should not use max\_age for nexthop dead ness
* Reduce number of cache lookups getting list of not fresh nexthops
* Fix initial retry counter not incremented when proactively resolving
* Incremental simplification of nexthop resolution
* Simplify dead nexthop implementation
* Adding docker host capability and test
* Reduce boilerplate event scheduling code
* We have migrated from travis-ci.org to travis-ci.com
* Verify packet in counter
* Increase minimum test coverage to 90%
* Add smoke test for group support
* Add test for port override output port
* Test coverage for get\_tables()
* Remove unused method
* pylint
* Test API call for config
* Remove unused method
* Learn on stack port
* Add test coverage for stack edge learning
* Increase test coverage to 88%
* Test coverage for LACP
* Incremental coverage for LACP
* Standardize how coverage reporting is run
* Coverage reporting uses wrong directory
* Run unit tests with coverage tool to accurately include module imports
* git pre-commit hook now runs coverage tests
* pylint
* Test ofdesc handler
* Test packet in rate limit
* Add test for reconnect handler
* Test scrape http failure
* Test coverage for test\_check\_config
* logging level always set
* Test coverage for check\_faucet\_config.py
* Test no dp conf
* Increase test coverage to 85%
* Test coverage for push/pop VLAN config
* Add test coverage for ACL config
* Smoke test for idle needs correct table ID
* Increase coverage for idle algorithm (flow\_timeout())
* Increase test coverage to 84%
* Can't use parallel to run pytype due to multiple egg cache access
* Smoke test BGP route handler
* Smoke test coverage for the idle-flow based learning manager
* Preversion 1.7.7

1.7.6
-----

* Bump README version
* Use last\_retry\_time from cache entry
* Max proactive limit needs to be same as test
* pytype check for is None for a nexthop cache entry
* Reduce default limit on proactive ARP/ND further (more sane limit)
* last\_retry time must be last
* Simplify ICMPv6 handler
* Delete host routes that are too old, as well has that have been retried too many times
* Don't send delete flows for host routes where the host was never learned
* Update RE for expiring host route log message
* Incremental simplification of ICMPv6 handler
* Prioritize route gateways in host resolution
* refactor to route host/route ip\_gws separately
* Update sphinx\_rtd\_theme from 0.3.0 to 0.3.1
* Add error messages and remove try/catch
* Replace use of assert statements in valve\_of.py
* Replace use of assert statements in valve\_acl.py
* Replace use of assert statements in router.py
* Replace use of assert statements in vlan.py
* Replace use of assert statements in port.py
* Replace use of assert statements in acl.py
* Replace use of assert statements in dp.py
* Replace use of assert statements in conf.py & config\_parser.py
* pylint
* Increase min lint score to 9.2
* Increase min lint score to 9.1
* pylint
* pylint
* Increase test coverage to 83%
* Gauge should use ryu\_event timestamp
* More test coverage for ryu\_event handlers
* Test coverage for ryu\_event handlers
* Test coverage for faucet.py
* Add test coverage directly, for experimental API
* Increase test coverage minimum to 82%
* Test notifier check\_path()
* Move logging to gauge\_poller
* pylint
* More common RyuApp start()
* reload\_config() is in common
* Config file stating uses common functions between FAUCET and Gauge
* Revert "Protect event handlers where DP is required to be running."
* Simplify Gauge OF reply handler
* Protect event handlers where DP is required to be running
* Use common datapath config
* Common datapath connect/disconnect/reconnect handlers
* Use common \_CONTEXT
* Use common handler to manage datapath objects for both FAUCET and Gauge
* ofmsgs overridden on warm start
* ofmsgs missing reference
* Add events for config reloads
* \_get\_valve() normalizes ryu\_event contents
* Rearrange args for \_get\_valve()
* Lock onto ubuntu 16.04 to allow builds on docker cloud
* Preversion 1.7.6

1.7.5
-----

* pylint
* Exercise code path for repeat host learning
* Enable max\_hosts: 1 on a port
* Add clib unit test submodule
* Enable LLDP receiving
* Don't run any LLDP sender code if LLDP not enabled
* Don't reference LLDP chassis ID/TTL where LLDP not enabled
* Randomize ARP/ND/RA flood port order
* Interface range with single port as an int doesn't parse
* Randomize LLDP beacon port order
* Pretty print cache entries
* Add L2\_EXPIRE event
* Bump version number
* Update sphinx from 1.7.2 to 1.7.4
* valve\_flowreoder preserves original order within each partition
* Make unused flow\_timeout handler shorter
* Increase minimum test coverage to 81%
* Incremental test coverage for Prometheus flow table export
* Test valid Gauge config
* Move Gauge smoke test to test\_gauge
* Minimum test coverage is now 80%
* Smoke test config reload
* Smoke test reload config
* Test more initializers
* Use test registry
* Smoke test metrics initialization
* Gauge missing call to override registry
* Revert "Prometheus client can take a registry argument, so can be initialized in test."
* Revert "Smoke test reload\_config()."
* Revert "Restrict test registry scope."
* Restrict test registry scope
* Use REGISTRY not core.REGISTRY
* Smoke test reload\_config()
* Prometheus client can take a registry argument, so can be initialized in test
* Allow Prometheus client to take registry argument
* Test coverage for version
* Test coverage for \_\_main\_\_.py
* Run loop\_protect in unit test
* instantiate FaucetExperimentalAPI
* Implement of\_vlan\_packet\_ins
* Move more services out of \_\_init\_\_ to start()
* Revert "Revert "Avoid initializing Prometheus client in \_\_init\_\_().""
* Revert "Avoid initializing Prometheus client in \_\_init\_\_()."
* Increase minimum test coverage to 79%
* Avoid initializing Prometheus client in \_\_init\_\_()
* Smoke test for Gauge
* Smoke test Faucet class
* Start BGP in unit tests
* placate pylint
* Pre-version 1.7.5

1.7.4
-----

* Bump version to 1.7.4
* Don't upgrade pip (best practice as of pip 10)
* Preversion 1.7.4

1.7.3
-----

* Bump README version
* with freeradius3 tls-sockets cannot be used when in 'single server' mode. otherwise this is the same as '-X'
* Refactor tcpdump\_helper into separate class
* mv hw\_switch\_config.yaml to higher level to make it available to multiple test modules
* Adding -i test flag for integration tests only
* Add utility script for local testing
* freeradius 3.0 for gasket
* Use test WSGI server
* eventlet monkey\_patch needs to come first
* BGP speaker apparently needs eventlet monkey patch
* Missed another call to send\_flows() in BGP
* pylint
* Missed warm start reload call
* Increase minimum test coverage
* Remove redundant calls to \_get\_valve()
* Configure controller meter in unit tests
* Fix logger leak in test case, increase test coverage for flow reordering
* hostapd now uses alpine
* sorintg out dockerfile.hostapd first
* Update sphinx\_rtd\_theme from 0.2.4 to 0.3.0
* add myself to authors; alphabetize
* Bump readme version
* removed unneed packages
* copied hostapd files from gasket repo
* install library needed for pyyaml cloader
* Use a yaml based syntax for describing config tree tables
* Add documentation for LLDP configuration
* Add test for configuring lldp with interface\_ranges
* LLDP org\_tlv fields can be bytearray or int
* Bad prometheus\_addr default
* Clarify stacking flooding comments
* Add sane proactive learning limit (4096, rather than unlimited)
* Adding test-base dependeny for doing docker-in-docker hosts
* update versions of prometheus and grafana
* Update ryu from 4.23 to 4.24
* Update ryu from 4.23 to 4.24
* Restore faucet\_mininet\_test.py wrapper
* Refactor tests module to make reusable test library component
* Update gNMI target config
* Avoid errors in  gNMI cert generation
* Preversion 1.7.3
* larger tables required for FaucetSingleL2LearnMACsOnPortTest

1.7.2
-----

* Move sample grafana dashboards to avoid symlink
* pip trips up on symlinks, delete docs earlier to avoid
* preversion 1.7.2

1.7.1
-----

* Bump readme version
* move config/async to switch\_features()
* Order TFM messages after deletes with a barrier
* for TFM switches, delete all flows before sending TFM

1.7.0
-----

* Bump to 1.7.0
* Add release notes for 1.7.0
* Apply correct docker image to deploy-package job
* FaucetUntaggedMultiConfVlansOutputTest still doesn't pass under Travis (base OVS too old?)
* Enable OVS multiple tags and tests
* Revert "Enable FaucetUntaggedMultiConfVlansOutputTest."
* Enable FaucetUntaggedMultiConfVlansOutputTest
* Update log and config directories in documentation
* Update paths used by VM builder
* Log which configuration file we used on startup
* By default load our ryu.conf on faucet start if it exists
* Document environment variable usage
* Complete FaucetUntaggedOutputOverrideTest
* couple minor changes:
* LACP intercept length should be longer
* push up base and python3 images for docker-compose
