All notable changes to the MEF_ELine NApp will be documented in this file.
set_queueaction is now set beforeoutput- Path tables now display
link_nameif available instead of ID - UI: k-toolbar primary and secondary constraints are now collapsed again
- UI: Autocomplete no longer throws an error when typing in spaces
- Fixed undeploy EVC flows procedure, now it will remove all expected flows. It was leaving UNI flows behind if the link failure affected both
current_pathandfailover_path - Consistency check setting up failover paths is now distributed across multiple threads through the event bus.
primary_pathwas not verified when only the UNIs were patched in an EVC.- Patching an EVC no longer uses VLANs if the patch failed with invalid paths.
- Patching an EVC is no longer prone to errors if said EVC was being modified in another process at the same time.
- Internal refactoring updating UI components to use
piniaandaxios - The redeploy button within the Circuit Details Menu was moved to the top of the menu for easier accessibility
- In EVCs flows where VLAN translation (numeric VLAN to untagged and different numeric VLANs) is performed, there is not longer
qinqencapsulation applied. The translation will happen in the egress switch. - UI: Table from
View Connectionshas now sticky property. This means that the title of every column will always be on sight when scrolling vertically. - UI: Table columns from
View Connectionsare resizeable now. The cursor will change when hovering over the title of the column edges. - UI: Path tables from
Circuit Detailsnow have accordion tables. At first only shows the links for each path which are collapsible to show details of the clicked link. - UI: Changed matching system in the table from
View Connections. Now every row will be displayed if it matches any filter entered specified. - UI: Added strict matching in the table from
View Connections. If a filter is checked, then only the rows that match the checked filters are going to be displayed. mef_elinenow listens tokytos/topology.interface.(enabled|up|disabled|down)events to update affected EVCs.- UI: Disabled unused inputs of UNI table.
- UI: Changed UNI table DPID row to ID.
- If a key from
EVC_DEFAULTis not allowed,mef_elinewill fail setup.
- Filters can now search for multiple values at a time by using commas or spaces. If you type
Switch1, Switch2, Switch3orSwitch1 Switch2 Switch3orSwitch1, Switch2, Switch3into the filter/search-bar, then your search will include all 3 options, Switch1, Switch2, and Switch3. - UI: integrated a dropdown to set INT proxy_port_enabled metadata option
- Added default values to EVCs from settings. They will be applied to created EVC if the key is not present in the request body. Allowed default keys are
primary_constraintsandsecondary_constraints.
- The "Back To List" button in the Circuit Details Menu will no longer delete saved EVC filters
- Added a new dropdown to choose EVC endpoints by name
- Circuit Details Menu now has a table for EVC metadata
- Try to handle uni interface up as link up for inter-EVCs
- EVCs activation now take into account UNIs statuses before trying to activate
EVC.remove_current_flows()had its parametercurrent_pathused whenevc.current_pathfails to install flows.evc.current_pathis deleted when an error with TAG type is raised.- Link up from UNI will deploy correctly an EVC when it does not have a path.
- Fixed Path
choose_vlansto be all or nothing, if a path link fails to allocate a vlan, it'll release the allocated vlans. - Validate paths from
pathfinderwith interface couples, in and out interfaces. - DB controller now retries for
ExecutionTimeoutandConnectionFailureinstead of justAutoReconnect
- Added migration script for updating the default
queue_idfromNoneto-1 - Added added paramenter support for redeployment,
PATCH v2/evc/{evc_id}/redeploy?try_avoid_same_s_vlan=true. By default it will try to avoids_vlanfromcurrent_pathlinks. - Added option to opt out from trying to avoid previous
s_vlanwhen redeploying EVCs. - Added option to analyze more paths when EVCs tries to find a valid path. This option is in a new patchable field in EVC document called
max_paths. - Added option to UI to set
max_pathswhen creating and modifying an EVC.
- UI: fixed issue where non-JSON data was being parsed as JSON data.
- UI: fixed issue were port numbers were not displaying within the Circuit Details info panel.
- Fixed inconsistencies with link down behaviour. Flows and vlan reservations should now be properly cleared on link down.
- UI: Removed the use of this.$set() since it was deprecated
- UI: changed variable name which was the reserved keyword interface to k_interface
- UI: changed the interface variable for k_interface since it was a reserved keyword
- UI: the mef_eline modal now uses the modal component
- UI: fixed premature submit when pressing Enter during autocomplete on inputs
- UI: fixed path constraints fields to be collabsed by default when creating EVC to better usability for listing EVCs
primary_path,backup_path,primary_linksandbackup_linksnow only accept endpoint IDs in the API request content.- Now when installing or deleting a path, a single request to
flow_managerwill be sent per path. - UI: Added column
Path TypestoView Connectionscomponent to indicate if the EVC has adynamic_backup_path,static_primaryorstatic_backupvalue. - When a link flap happens, now
mef_elinewill check on EVC attributes to decide whether to acquire an EVC lock. - UI: The method
onblur_dpidwas changed to a computed property. - Log now will notify if all paths for a
current_pathare invalid and suggest to increasemax_paths.
- Catching error when searching for
failover_pathat kytos start.
- Fixed extra removed flows that were being published on event
"failover_old_path" - Fixed evc.old_path clean up
- Flows sent through an event are deep copies, meaning these can be modified from a subscriber NApp without affecting other subscribers.
- Added exception handler when getting path for disjointed paths.
- Fixed flow mods when deleting
old_path
- EVC list now utilizes
localStorageto storesearch_colsand make them persistent throughout EVC list usage. - Added
kytos/mef_eline.uni_active_updatedevent - Included "id" on EVC mapped content to normalize it with the other models
- Introduced
failover_old_path,failover_deployed, andfailover_link_downevents, which will be primarily consumed bytelemetry_intNApp - UI checkbox to request that In-band Network Telemetry (INT) gets enabled
- Added
{"deployed": false}to request response for EVC creation. It indicates if the created EVC has been able to deployed. - Added
{'redeployed': false}to request response forPATCH v2/evc/{{circuit_id}}. It indicates if the modified EVC has been redeployed.
- Updated python environment installation from 3.9 to 3.11
- Optimized
Path.statusnot to depend on a HTTP request - Upgraded UI framework to Vue3
enableis not longer accepted when patching/updating an EVC, usingenabledinstead.
- Removed client side batching with
BATCH_INTERVALandBATCH_SIZE, now replaced with pacing inflow_manager
- Only redeploy when handling
kytos/topology.link_upif a dynamic EVC isn't active - Fixed possible EVCs duplication when constant delete requests are sent.
- Improved log when path was not deployed due to TAG availability. Also, in this case, the log was change to error instead of warning.
- Fixed
node_namenot showing in the EVC list and EVC details on the web interface.
- Deleted method from EVC class
deploy_to()which was outdated and not used. - Deleted unused method from Path class
get_best_path().
- Added a UI button for redeploying an EVC.
- UNI tag_type are now accepted as string.
- Event
kytos/mef_eline.evcs_loadedgets published during NApp setup - EVCs now listen to
switch.interface.(link_up|link_down|created|deleted)events for activation/deactivation - Circuits with a vlan range are supported now. The ranges follows
list[list[int]]format and both UNIs vlan should have the same ranges. - Usage of special vlans
"untagged"and"any"now send an event to each Interface. - Added
UNI_STATE_CHANGE_DELAYwhich configures the time formef_elineto wait on link state flaps and update EVCs with last updated event. - Added support for
not_ownershipto dynamic path constraints. - Added support for
not_ownershipon main UI interface.
- EVCs will try to maintain their current_path on link status changes
- UNIs now will use and free tags from
Interface.available_tags. - UNI tag_type is changed to string from 1, 2 and 3 values to
"vlan","vlan_qinq"and"mpls"respectively. - Add
set_vlanonly if UNI A vlan and UNI z vlan are different. - Updated
openapi.yml,Tagnow can acceptarrayasvalue. - Updated UI interface to support list of ranges of VLANs.
- Improved log for invalid traces by adding
From EVC(evc_id) named 'evc_name' - An inactive and enabled EVC will be redeploy if an attribute from
attributes_requiring_redeployis updated. - If a KytosEvent can't be put on
buffers.appduringsetup(), it'll make the NApp to fail to start - Disjointedness algorithm now takes into account switches, excepting the UNIs switches. Unwanted switches have the same value as the unwanted links.
- Archived EVCs are not longer kept in memory. They can only be found in the database.
- Deleted emition of
kytos/.*.link_available_tagsevent.kytos/core.interface_tagsevent through Interface takes its place.
scripts/vlan_type_string.pycan be used to update the collectionevcsby changingtag_typefrom integer to string.scripts/redeploy_evpls_same_vlans.pycan be used to redeploy symmetric (same UNI vlans) EVPLs in batch.
- required at least one circuit_id on
POST v2/evc/metadata - fixed race condition in
failover_pathwhen handling simultaneous Link Down events leading to inconsistencies on some EVC - fixed sdntrace_cp check_trace
current_pathcomparison with the expected UNI order - fixed
DynamicPathManager.get_pathsreturn value whenpathfinderreturns a request error failover_pathwill get removed if it exists during a redeploy
- Added more content keys
evc_id, name, metadata, active, enabled, uni_a, uni_zto events frommef_eline - Added
uni_aanduni_ztoattributes_requiring_redeploy - Added
metadatato EVC schema - Allow the creation of
anyanduntaggedEVC. - Added API request
POST /v2/evc/metadatato add metadata to EVCs - Added API request
DELETE /v2/evc/metadata/<key>to delete metadata from EVCs - Subscribed to new event
kytos/of_multi_table.enable_tableas well as publishingkytos/mef_eline.enable_tablerequired to set a differenttable_idto flows. - Added
settings.TABLE_GROUP_ALLOWEDset containning the allowed table groups, for now'evpl', 'epl'are supported. - Added ui support for primary and secondary constraints
- Added
QUEUE_IDtosettings.pyto be the default value for EVCs"queue_id" - Exposed default
SPF_ATTRIBUTEon settings.py, the default value is still "hop". This value will be parametrized wheneverprimary_constraints.spf_attributeorsecondary_constraints.spf_attributeisn't set
- Moved request circuit
k-buttonout of k-accordion-item since it's mandatory - The traces being check rely on
type:lastto be considered valid. dl_vlanvalue is mapped to an integer in range [1, 4095] for the/tracesrequests tosdntrace_cp- Augmented
GET /v2/evc/to accept parametersmetadata.key=item - Upgraded
openapi-coreto0.16.6from0.14.5. - Changed
openapi.ymlto be used as validation spec for request related methodsupdated(),create_schedule()andupdate_schedule(). mef_elinenow supports table group settings fromof_multi_table- Changed increasing amount of flows being sent, now it is fixed. Amount can be changed on
settings.BATCH_SIZE - Changed UI constraints default values to pass the spec validation
- Changed intra-switch EVC with a disabled switch or interface is not longer allowed to be created
- Adapted
mef_elineto ordered endpoints in a link. Endpoints for flow creation are compared with switch ids to overcome ordered endpoint. - EVCs UNI will be checked for disabled interfaces so the EVC is disabled as well.
primary_constraints.spf_attributeandsecondary_constraints.spf_attributewill only be set in the database if they've been set in the request.- Changed UI spf_attribute to allow it to be
default, meaning an unset value
./scripts/002_unset_spf_attribute.pyis a script to unset bothprimary_constraints.spf_attributeandsecondary_constraints.spf_attribute. On version 2022.3, this value was explicitly set, so you can use this script to unset this value if you want thatspf_attributefollows the defaultsettings.SPF_ATTRIBUTEvalue.@restendpoints are now run bystarlette/uvicorninstead offlask/werkzeug.- Replaced
@validatewith@validate_openapifrom kytos core
- fixed
minimum_flexible_hitsEVC attribute to be persistent - fixed attribute list for path constraints to include
reliability - fixed unnecessary redeploy of an intra-switch EVC on link up events
- fixed
check_list_tracesto work with the new version of SDN traces - fixed updating EVC to be an intra-switch with invalid switch or interface
- fixed EVC UI list to sort VLAN A and VLAN Z fields to acts as number
- fixed non-redeployment of circuit when patching with
{"queue_id":null}
- Added
uni_aanduni_ztoattributes_requiring_redeploy
- fixed
minimum_flexible_hitsEVC attribute to be persistent - fixed attribute list for path constraints to include
reliability - fixed unnecessary redeploy of an intra-switch EVC on link up events
- Added
service_levelEVC attribute to set the service network convergence level, the higher the better - EVCs with higher service level priority will be handled first during network convergence, including when running
sdntrace_cpconsistency checks. - Added support for constrained paths for primary dynamic paths and failover paths,
primary_constraintsandsecondary_constraintscan be set via API. - Added
service_levelUI component onk-toolbarand made it editable. - Added
sb_priorityUI component onk-toolbar. - Added
queue_idUI component onk-toolbar. - Documented
GET /v2/evc?archivedquery arg on openapi.yml - Added
flow_removed_atandupdated_atparameters in EVC. - Added
execution_roundsin EVC to be used by the consistency check. - Added logging message for
link_upevents.
priorityhas been renamed tosb_priority(southbound priority),./scripts/001_rename_priority.pycan be used to update EVC documents accordinglyGET /v2/evc?archived=truewill only return archived EVCs- k-toolbar UI component won't expose UNI tag type anymore, if a tag value is set, it'll assume it's tag type vlan.
- Consistency check uses the new
PUT /tracesendpoint from sdntrace_cp for bulk requests. - Changed validation of EVCs. Will no longer check for disabled components on intra-switch EVCs.
priorityis no longer supported in the API spec
- Removed the failover path after removing flows
- Removed failover flows when an EVC gets deleted
- Validated
queue_idonPOST /v2/evc - Fixed found but unloaded message log attempt for archived EVCs
- Fixed EVC validation to catch nonexistent links interfaces
- Allowed
primary_pathto be empty on update whendynamic_backup_pathis true andbackup_pathto be empty too - Fixed bug with updates to intra-switch EVCs failing into an inconsistent state due to disabled components.
- Reintroduced Q-in-Q when creating the flows for an EVC.
- Optimize list of circuits filters
- Migrated persistency from kytos/storehouse to MongoDB (integration with pymongo)
- ELineController and DB models
- Retries to handle database
AutoReconnectexception. DynamicPathManager.get_disjoint_pathsto calculates the maximum disjoint paths from a given "unwanted_path" (typically the currently in use path) using the approach described in blueprint EP029- Fully dynamic EVCs can now benefit from Failover Paths (
failover_path), which improves significantly the convergence performance when facing link down - Refactored Link Down handler to dispatch Kytos Events to handle traditional EVCs (EVCs that are not eligible for failover) more efficiently.
DynamicPathManager.get_pathsto also supportsmax_pathsparameter and then request more paths from pathfinder (default to 2, which is also the default on pathfinder)
scripts/storehouse_to_mongo.pycan be used to migrate data from storehouse to MongoDB
- Adjust default value for settings.WAIT_FOR_OLD_PATH since now it measured in execution rounds instead of seconds
- Fix UI to keep kytos panel width with default value
- Fix UI to display the scrollbar in the autocomplete results list
- Fix UI to make tag fields optional and editable
- Fix UI list button not re-rendering the content
- Added utils
notify_link_available_tags`function - Publish
kytos/mef_eline.link.available_tagsevent - Hooked
notify_link_available_tagswhen choosing or making vlans available
- Parametrized
forceoption asTruewhen removing flows for reliability
- Fixed UI to list and create EVCs
- Added locks to avoid race conditions
- Queue ID can be defined when creating an EVC.
- Method to handle flow mod errors.
- Method to check if two EVCs have a common UNI.
- 2-byte prefix in cookie field.
- Deployment of EVCs loaded on startup delayed.
- Required versions of python packages updated.
- Removed user VLAN encapsulation.
- EVC id reduced from 16 to 14 bytes.
- Thread locks when saving to the storehouse, avoiding race conditions.
- Added EVC status check when deploying using schedule.
- Serialize circuit scheduler for storehouse.
- Fix VLAN availability on interfaces after using them.
- Documentation about delete method.
- Added '.travis.yml' to enable Travis CI.
- Added tags decorator to run tests by type and size.
- Install flows when UNIs are in the same switch.
- Updated HTTP return messages and codes when an error happens.
- Accept EVCs where UNI has no tag.
- Path status now return disabled state if any of its links is disabled.
- Updated method to get the shortest path, now it returns more paths.
- Changed enable/enabled to update _enabled attribute and activate/active to update _active attribute.
- Updated OpenApi Models description and documentation.
- Do not create a job when action is not
createorremove.
- Removed dependencies.
- Fixed enable on update EVCs.
- Scrutinizer running after every push to GitHub repository.
- Linter checking all python code.
- Fixed link up/down events from kytos/topology (#99 and #100).
- Load VLANs from storehouse (#101).
- Check path status using kytos/topology (#102).
- Fixed tests to mock call to get links from kytos/topology (#118).
- Added more API documentation.
- Added EVC flow removal based on cookies.
- Added EVC deletion API method.
- Fixed circuit not being deployed.
- Fixed current_path changes not being saved on storehouse (#85).
- Fixed storehouse always creating a new box (#91).
- Fixed handling of link up/down events.
- Fixed error when creating a circuit with scheduling and without start_date
- (#79 and #80)
Added endpoint to allow update circuit informations.
Added structure to support ci integration: unittests, linter, tox and scrutinizer.
Added some tests for the class already created.
Added some LinkProtection features: - Added method to handle when links goes up or end_maintenance. - Added method to handle when links goes down or under_maintenance. - When primary_path and backup_path goes down or under_maintenance and
dynamic_backup_path is setted as True a dynamic path is choosed using the PathFinder NApp when the primary and backup path is both down or not setted.
- When the primary_path is down and backup_path exists and is UP the circuit will change from primary_path to backup_path.
- When the primary_path change from DOWN to UP the circuits will change to the primary_path.
- When the circuit is disabled the circuit will not be deployed.
- Added method to looking for links affected was created using the python set class to be more fast to find the links affected.
- Change deploy to use primary_path, backup_path or a dynamic_path.
- Improved the Schedule to use advanced python scheduler (APScheduler) library.
Thanks @ajoaoff for recommends this library. - The attribute circuit_scheduler in the EVC class should have some instances of CircuitScheduler, this instances will have the information about the scheduler informations.
- Fixed the create circuit method when sending a invalid request
- Fixed some linter warnings.
- Added EVC class to represent a circuit.
- Added Schedule class to schedule the circuit deploy.
- Added persistence with the NApp kytos/storehouse.
- Refactor main.py and models.py
- Removed duplicated key in openapi.yml
- Add Schedule class
- Add Mef-Eline component
- Update openapi.yml
- Update README.rst
- New /evc endpoint.
- Future endpoint URLs.
- EPL and EVPL support, with VLANs in both endpoints.
- Method to install flows to the switches.
- List of links now represented by Link objects.
- Old /circuit endpoints.