All notable changes to the topology
project will be documented in this file.
- The topology modal now uses the modal component
- UI: topology link now asks for confirmation when enabling/disabling
- Fixed liveness handler potential out of order execution issue
- Added the script
001_use_tags.py
to use TAGs that were found in an EVC path or UNI. - Added the script
002_recover_vlans.py
to make available TAGs that were not found in an EVC path or UNI.
- Combined
interruption.start
andinterruption.end
handlers to use a single eventinterruption.(start|end)
handler. The new handler is also uses thedynamic_single
pool when processing events to ensure in order processing.
- Fixed link down thread safety notification issue
- Included link changed status log info for correlation
- Update
interface_detail
document in the DB can handle multiple and fast changes.
- Added endpoint
DELETE v3/interfaces/{interface_id}
to delete an interface. - Added confirmation windown to confirm the disabling or enabling of a switch in the UI interface.
- Updated python environment installation from 3.9 to 3.11
- After
*.*.switch.interface.deleted
event, the interface, if not used, will be automatically removed from memory. - Upgraded UI framework to Vue3
- Added endpoint
POST v3/interfaces/{interface_id}/tag_ranges
to settag_ranges
to interfaces. - Added endpoint
DELETE v3/interfaces/{interface_id}/tag_ranges
to deletetag_ranges
from interfaces. - Added endpoint
GET v3/interfaces/{interface_id}/tag_ranges
to getavailable_tags
andtag_ranges
from an interface. - Added endpoint
GET v3/interfaces/tag_ranges
to getavailable_tags
andtag_ranges
from all interfaces. - Added
Tag_ranges
documentation to openapi.yml - Added API request POST and DELETE to modify
Interface.tag_ranges
- Added listener for
kytos/core.interface_tags
event to save any changes made toInterface
attributestag_ranges
andavailable_tags
- Added script
special_vlan_allocation.py
to addspecial_available_tags
andspecial_tags
fields tointerface_details
collection. - Added endpoint
POST v3/interfaces/{interface_id}/special_tags
to setspecial_tags
to interfaces. - Added endpoint
DELETE v3/links/{link_id}
to delete a disabled link. To avoid rediscovery, the link needs to be physically disconnected or both interface ends (switches) need to be disabled. - Added endpoint
DELETE /v3/switches/{dpid}
to delete a disabled switch. This endpoint is for decommissioned switches. The switch will get rediscovered if it reconnects to the controller. So, after deleting a switch ontopology
, you're expected to also remove the TCP connection configuration on the switch. - Added
Delete
button to delete switch in the switch panel UI interface. - Added
Delete
button to delete link in the link panel UI interface.
- Deleted event listener for
kytos/.*.link_available_tags
event
- An interface cannot be enabled if its switch is disabled.
- Handled deactivated interfaces when an interface gets created.
- Allowed interface speed to be null on
switches
collection
- An interface can't be enabled if its switch is disabled.
- A link can't be enabled if its interface is disabled.
- Enabling interface can't not longer enabled its link. To enable a link, the endpoint
POST v3/links/{link_id}/enable
should be used. - If a KytosEvent can't be put on
buffers.app
duringsetup()
, it'll make the NApp to fail to start
scripts/vlan_pool.py
can be used to change the collectioninterface_details
to haveavailable_tags
andtag_ranges
- Info on status and status_reason to UI for Switches and Interfaces
- Listener for service interruptions through
topology.interruption.(start|end)
- Publishes
kytos/topology.update
when changing link metadata
- Fixed interface and link activation/deactivation race condition
- Rejected unordered late preempted interface events to avoid state inconsistencies
- Stopped storing interface and link
active
field in the DB - Removed
active
from the application DB models
- Removed old maintenance listeners
kytos/maintenance.*
- Removed
kytos/topology.get
@rest
endpoints are now run bystarlette/uvicorn
instead offlask/werkzeug
.- Added
scripts/unset_active.py
to$unset
active
fromlinks
andswitches
collections that will no longer be in the database. If you are upgrading to2023.1
you should run this script, however, if you don't, it'll still work as intended since the application won't read from or update theseactive
values
- Publish event
kytos/topology.current
for topology reconciliation - Subscribed to event
kytos/topology.get
to publish the current topology - Added
notified_up_at
internal reserved metadata - Enabling/disabling a switch or an interface will send
link_up
andlink_down
notifications
- Hooked
link_status_hook_link_up_timer
to updatestatus
accordingly.
- Fixed link up to only notify when
LINK_UP_TIMER
has passed - Load interfaces as inactive
- Created interface should only be activated if it's active
- Fixed
last_status_is_active
when both interfaces go down to notify only once
- UI table on
k-info-panel/switch_info
to display switch metadata - UI functionality to add and remove metadata from a switch on
k-info-panel/switch-info
- UI table of links to
k-info-panel/switch_info
- UI
k-info-panel/link_info
to display link attributes - UI toggle button to enable and disable a switch in the
k-info-panel/switch_info
component - UI accordion to
k-info-panel/switch_info
to enable and disable LLDP on interfaces - UI toggle button to enable and disable a link in the
k-info-panel/link_info
component - UI functionality to add and remove metadata from a link on
k-info-panel/link-info
- MongoDB integration with
pymongo
- TopoController and DB models
- Retries to handle database
AutoReconnect
exception - Topology now reacts to link liveness detection events
- Refactored API and event handlers to also update MongoDB accordingly.
kytos/topology.link_up
is only published if link.status is EntityStatus.UP, which takes into account other protocol logical states.
- Storehouse file system backend
- Storehouse backend
- Send topology.switches and topology.links shallow copy on
kytos/topology.topology_loaded
andkytos/topology.updated
events - Send object metadata shallow copy on
kytos/topology.{entities}.metadata.{action}
event - Shallow copy shared iterables that are used on REST endpoints
scripts/storehouse_to_mongo.py
can be used to migrate data from storehouse to MongoDB
- Hooked
notify_topology_update
to be called at least once if an interface goes up or down - Updated rest endpoints that disable entities to notify topology update
- Updated rest endpoints that enable entities to notify topology update
- Changed status code from 409 to 404 when interfaces aren't found
handle_link_down
to publish link_downadd_links
to also notify link_uplast_status_is_active
metadata to ensure single notification
- Changed
_load_link
to try to also load interface available tags - Changed
save_status_on_storehouse
to also store interface available_tags
- Subscribed to
kytos/.*.link_available_tags
events - Added
_load_intf_available_tags
to try to load and set available_Tags - Added
_get_links_dict_with_tags
to also have interface available_tags - Hooked
_load_intf_available_tags
to be called for interface_created
- Changed
on_interface_created
to try also handle as a link up - Changed
add_links
to update the interface object reference. - Changed
handle_link_up
to first activate an interface, and used the_links_lock
- Added
_links_lock
to avoid race conditions onlinks
dict
- Fixed
handle_link_down
to also deactivate the interface
- Changed
add_links
to only notify a topology update if a link has been created. - Changed
_get_link_or_create
to also return whether or not a new link has been created.
- Added event to notify if the switch is enabled at startup.
- Added event to notify when link is enabled or disabled.
- Added new switch/link events to README.
- New input validation to metadata sent through the REST API.
- Added events to notify when a switch has been administratively enabled/disabled.
- Restore of administrative statuses is now automatic.
- Changed setup.py to alert when Travis fails.
- Fixed
Link
metadata persistence. - Fixed
Interface
metadata persistence. - Fixed integration tests.
- Added persistence for Link and LLDP administrative status.
- Added unit tests, increasing coverage to 85%.
- Added tags decorator to run tests by type and size.
- Added persistence endpoint to openapi.yml.
- [persistence] Changed storehouse key to network_status instead of 0.
- Added persistence for switches and interfaces administrative status (enabled/disabled).
- Added method to enable/disable all interfaces from a switch.
- Added support for automated tests and CI with Travis.
- Added integration tests and unit tests (from 39% to 57%).
- Added listeners for events from the Maintenance NApp.
- Avoid using flapping links: now a link is considered up only after a specific amount of time (default: 10 seconds).
- Fixed switches coordinates on the map (fix kytos#923)
- Added event to notify when a new port is created:
topology.port.created
- Fixed unit tests / coverage / linter issues
- Added method to trigger an event when a link goes up/down.
- Continuous integration enabled at scrutinizer.
- Fixed link up/down events.
- Fixed some linter issues.
- Removed interface.(up|down). Fix kytos/of_core#32
- Fixed activation/deactivation of links on interface up/down events
- Added support for automated tests and CI with Scrutinizer
- Fixed undefined interface link NameError
- Fixed linter warnings
- Added persistence support with the NApp
kytos/storehouse
. - Added KytosEvent named kytos/topology.{entities}.metadata.{action} when the metadata changes.The entities could be switches, links or interfaces and the action could be removed or added.
- Added method to send KytosEvent when a metadata changes.
- Added ui component to search switch and show switch info.
- (origin/add_action_menu) Improve search_switch switch_info.
- Fixed search switch component.
- Add 'enable' and 'disable' endpoints.
- Add methods to handle basic metadata operations.
- Add description as switch name.
- Listen to switch reconect.
- Added method to notify topology update when interface is removed.
- Added circuit example and remove $$ref.
- Added mimetype='application/json' on return of response.
- Added custom properties to dpids.
- Added 'circuit' as a property of Topology.
- Added custom property definition for circuits.
- Change endpoints to represent new topology model.
- Change how the NApp deals with events.
- Change 'links' dictionary keys.
- Change LINKS to CIRCUITS in settings.
- Change custom_properties to be a dict in openapi.
- Removed links from topology.
- Removed unnecessary code.
- Removed unavailable elements from the topology.
- Remove host from topology.
- Fixed topology event and link serialization.
- Fixed somes typo.
- Added api version.
- Added interface from openapi.yml.
- Change aliases to circuits in the output json.
- Fixed when custom_links_path does not exists.
- Remove "lists" models from openapi.yml.
- Added model for Topology classes/entities.
- Added topology events.
- Added method that listen to reachable.mac.
- Added method to getting port alias from port properties
- Added aliases to Port and Device.
- Added NApp dependencies.
- Added Rest API section.
- Added NApp dependencies.
- Added openapi.yml file to document the rest endpoint.
- Added a method to remove a port from a device.
- Added listener of new created switches.
- Added method to notify about topology updates.
- Added REST endpoints.
- Handle event to set an interface as NNI.
- Handle port deleted event.
- Handle modified port event.
- Handle new port added on a device.