| module polatis-switch { |
| namespace "http://www.polatis.com/yang/polatis-switch"; |
| prefix plts; |
| |
| import optical-switch { |
| prefix opsw; |
| } |
| |
| import ietf-yang-types { |
| prefix yang; |
| } |
| |
| import ietf-inet-types { |
| prefix inet; |
| } |
| |
| organization "Polatis Limited"; |
| contact |
| "Adam Hughes |
| |
| Polatis Limited |
| 332/2 Cambridge Science Park |
| Cambridge CB4 0WN |
| United Kingdom |
| |
| Phone: +44 (0) 1223 424200 |
| Email: yang-support@polatis.com"; |
| |
| description "This module describes features that are specific to Polatis optical switches"; |
| |
| revision "2018-01-19" { |
| description "1. Added support for session management and control. Removed the redundant leaf 'logged-in-users'. |
| 2. Removed the deprecated NOTIF_PORT from when conditions. Removed the deprecated |
| 'notif-port-status' leaf from 'notification-log'. "; |
| } |
| revision "2017-09-11" { |
| description "1. Changed 'enable-notifications' to 'mask-notification' and made all notification enabled by default. |
| 'mask-notification' can be used to disable notifications. |
| 2. Removed RPC 'get_alarm_state' and provided an equivalent operational data 'system-alarms'. |
| 3. Removed RPC 'shutter-status' and provided an equivalent operational data 'shutter-status'. "; |
| } |
| revision "2017-05-30" { |
| description "1. Added support for activity-log configuration and notifications. |
| 2. Added an RPC to get current system alarm |
| 3. Added the default value for enable-notifications. "; |
| } |
| revision "2016-04-22" { |
| description "1. Added support for the smart fibre Id identification and reporting. |
| 2. Added support for configuring and operation programmable shutters. "; |
| } |
| revision "2016-02-17" { |
| description "1. Added Polatis specific Variable Optical Attenuation (VOA) modes |
| 2. Changed the data type for power alarm hysteresis and defined the range."; |
| } |
| revision "2015-09-14" { |
| description "Initial revision."; |
| } |
| |
| augment /opsw:ports/opsw:port { |
| leaf fibre-id { |
| type string; |
| |
| config false; |
| |
| description "Id of the smart fibre that is connected to this port. Polatis switches report |
| 'NA' if smart fibre is not connected on this port. Management interface can find matching Id |
| from a different switch to establish the network topology."; |
| } |
| } |
| augment /opsw:ports/opsw:port/opsw:opm { |
| leaf offset { |
| type opsw:floatFormat2d; |
| |
| default 0; |
| |
| description "Offset for the power measurement; the value is added to power |
| monitor measurements when reporting /opsw:ports/opsw:port[]/opsw:opm/opsw:power. |
| Thus, specifying an offset can be used as a means of referencing the power |
| monitors against external meters. |
| It should be noted that the offset feature does NOT impact the behaviour |
| of the alarm or attenuation features: |
| alarm and attenuation settings always operate relative to the actual |
| power monitor readings, i.e. without any user-specified offsets. |
| Specified in dBm."; |
| } |
| leaf averaging-time-select { |
| type uint8 { |
| range "1..8"; |
| } |
| |
| default 4; |
| |
| description "Selects the averaging period; each increment |
| in this value doubles the length of the time for which the OPM power |
| readings are averaged. |
| Setting the value to 1 results in the shortest averaging period, around 10ms. |
| Setting the value to 8 results in the longest averaging period, 128 times greater."; |
| } |
| leaf power-alarm-hysteresis { |
| type decimal64 { |
| fraction-digits 2; |
| range "1..5"; |
| } |
| |
| default 1; |
| |
| description "Added to 'power-low-alarm' and subtracted from 'power-high-alarm' |
| to generate alarm clear notifications. Specified in dBm."; |
| } |
| leaf power-alarm-clear-holdoff { |
| type uint32; |
| default 10; |
| |
| description "Minimum time (in seconds) for which the optical power level needs |
| to be restored within the power alarm thresholds for the switch to generate |
| an alarm clear notification."; |
| } |
| } |
| augment /opsw:ports/opsw:port/opsw:opm/opsw:voa { |
| leaf polatis-atten-modes { |
| type enumeration { |
| enum VOA_ATTEN_MODE_CONVERGED { value 1; } |
| enum VOA_ATTEN_MODE_MAXIMUM { value 2; } |
| enum VOA_ATTEN_MODE_FIXED { value 3; } |
| } |
| description " VOA_ATTEN_MODE_CONVERGED: This is similar in behaviour to ABSOLUTE mode, but once |
| the attenuation converges to the desired level the switch freezes the VOA control loop. |
| This reduces noise caused by the control loop continually striving to improve the attenuation. |
| VOA_ATTEN_MODE_MAXIMUM: Port will achieve the maximum attenuation level. In this case configured |
| attenuation level is not used. |
| VOA_ATTEN_MODE_FIXED: Disables closed loop updating of the attenuation feature for the specified port. |
| Following issuance of this command, the port will continue to hold their current attenuation level |
| without any optical feedback. Thus, any changes in input power levels will no longer be tracked"; |
| } |
| } |
| augment "/opsw:system-config" { |
| leaf startup-mode { |
| type enumeration { |
| enum MODE_VOLATILE; |
| enum MODE_PRESERVE; |
| } |
| default MODE_PRESERVE; |
| |
| description "Specifies that the configuration needs to be stored |
| across a system-reset. When the mode is set to MODE_PRESERVE all new configurations will |
| be saved and switch will boot to last saved configuration. When the startup mode is MODE_VOLATILE |
| the switch will not retain the given configuration through system reset."; |
| } |
| } |
| augment "/opsw:system-config/opsw:user" { |
| leaf group { |
| type enumeration { |
| enum "admin"; |
| enum "user"; |
| enum "view"; |
| } |
| default "user"; |
| description "The permissions group to which user belongs. |
| Users in 'admin' group can read and write every data defined for the switch. They can |
| create, delete or edit users, change system-config data. |
| Users in 'user' group cannot change anything in the 'opsw:system-config', otherwise |
| they can change port configuration, cross-connect, only view notification log; |
| Users in 'view' group can only read data"; |
| } |
| } |
| |
| typedef polatis-switch-status { |
| type enumeration { |
| enum OPERATIONAL; |
| enum REQUEST_SERVICE; |
| } |
| |
| description "Polatis switches are designed to recover from most system errors and will report |
| OPERATIONAL after most system errors. Some system errors require service by Polatis engineers. Users are advised to |
| Contact Polatis when REQUEST_SERVICE is reported."; |
| } |
| |
| typedef notification-types { |
| type bits { |
| bit NOTIF_PORT_POWER { |
| position 0; |
| description "Issued when power readings are below |
| '/opsw:opm-alarm-config/opsw:signal-low-thresholds' and |
| '/opsw:opm-alarm-config/opsw:mode' is 'POWER_ALARM_ENABLED'."; |
| } |
| bit NOTIF_PORT_POWER_WARN { |
| position 1; |
| description "Issued when power readings are below |
| '/opsw:opm-alarm-config/opsw:signal-degrade-thresholds' and |
| '/opsw:opm-alarm-config/opsw:mode' is 'POWER_ALARM_ENABLED'."; |
| } |
| bit NOTIF_SYSTEM { |
| position 2; |
| description "Issued for system warnings and errors."; |
| } |
| bit NOTIF_APS { |
| position 3; |
| description "Issued for APS events."; |
| } |
| bit NOTIF_ACTIVITY { |
| position 4; |
| description "Issued for switch configuration changes performed |
| by users if '/opsw:system-config/opsw:activity-log/opsw:logging-enabled' |
| is true. The scope of the configuration setting reported can be |
| controlled by the '/opsw:system-config/opsw:activity-log/opsw:log-filter'."; |
| } |
| } |
| } |
| leaf mask-notification { |
| type notification-types; |
| |
| description "Polatis switch sends the notifications on the notification stream 'Polatis'. |
| The leaf can be set to mask individual notifications appearing on that stream. "; |
| } |
| |
| notification port-power-alarm { |
| description "Issued when power readings are below |
| '/opsw:opm-alarm-config/opsw:signal-low-thresholds' and |
| '/opsw:opm-alarm-config/opsw:mode' is 'POWER_ALARM_ENABLED'."; |
| |
| leaf port-id { |
| type uint32; |
| mandatory true; |
| } |
| leaf port-label { |
| type opsw:namesFormatNullable; |
| description "Label of the notification port"; |
| } |
| } |
| notification port-power-clear { |
| description "Issued when power readings are restored above |
| '/opsw:opm-alarm-config/opsw:signal-low-thresholds' and |
| '/opsw:opm-alarm-config/opsw:mode' is 'POWER_ALARM_ENABLED'."; |
| |
| leaf port-id { |
| type uint32; |
| mandatory true; |
| } |
| leaf port-label { |
| type opsw:namesFormatNullable; |
| description "Label of the notification port"; |
| } |
| } |
| notification port-power-warn-alarm { |
| description "Issued when power readings are below |
| '/opsw:opm-alarm-config/opsw:signal-degrade-thresholds' and |
| '/opsw:opm-alarm-config/opsw:mode' is 'POWER_ALARM_ENABLED'."; |
| |
| leaf port-id { |
| type uint32; |
| mandatory true; |
| description "ID for the port causing this notification."; |
| } |
| leaf port-label { |
| type opsw:namesFormatNullable; |
| description "Label of the notification port."; |
| } |
| } |
| notification port-power-warn-clear { |
| description "Sent when power reading returns within offsets to the thresholds set, |
| including hysteresis."; |
| |
| leaf port-id { |
| type uint32; |
| mandatory true; |
| description "ID for the port causing this notification."; |
| } |
| leaf port-label { |
| type opsw:namesFormatNullable; |
| description "Label of the notification port"; |
| } |
| } |
| notification system-error { |
| description "These notifications are generated under many circumstances as described by the 'error-code' and 'message'."; |
| leaf error-code { |
| type uint32; |
| mandatory true; |
| description "ID for the cause of the notification."; |
| } |
| leaf switch-status { |
| type polatis-switch-status; |
| mandatory true; |
| description "Status of the switch after this notification"; |
| } |
| leaf message { |
| type string; |
| description "Use readable description of the cause of this notification."; |
| } |
| } |
| notification activity-log-notification { |
| description "This notification reports a configuration change in the switch."; |
| |
| leaf notification-username { |
| type string; |
| description "User who has changed the configuration."; |
| } |
| leaf notification-ip-address { |
| type inet:ip-address; |
| description "IPv4 address from which the client made the configuration changes"; |
| } |
| leaf notification-protocol { |
| type string; |
| description "The protocol used to change the configuration."; |
| } |
| leaf notification-activity { |
| type string; |
| description "This message describes the configuration change that was made"; |
| } |
| } |
| |
| container notification-log { |
| config false; |
| description "The log contains all notifications ignoring the restrictions in 'mask-notification'."; |
| list log { |
| key notif-id; |
| leaf notif-id { |
| type uint32; |
| description "Unique Id for the notification."; |
| } |
| leaf notif-type { |
| type notification-types; |
| mandatory true; |
| } |
| leaf notif-count { |
| type uint32; |
| description "The number of notifications of the same 'notif-id'."; |
| } |
| leaf notif-time-first { |
| type yang:date-and-time; |
| mandatory true; |
| description "Time at which the first notification was generated"; |
| } |
| leaf notif-time-last { |
| type yang:date-and-time; |
| mandatory true; |
| description "Time at which the last notification was generated"; |
| } |
| leaf notif-message { |
| type string; |
| mandatory true; |
| description "Useful textual representation of the notification cause."; |
| } |
| leaf notif-port { |
| when "../notif-type = 'NOTIF_PORT_POWER' or " + |
| "../notif-type = 'NOTIF_PORT_POWER_WARN' "; |
| |
| type uint32; |
| description "The port that is affected by power alarm or power warning alarm."; |
| } |
| container notif-system { |
| leaf error-code { |
| type uint32; |
| } |
| leaf switch-status { |
| type polatis-switch-status; |
| } |
| when "../notif-type = 'NOTIF_SYSTEM'"; |
| } |
| } |
| } |
| rpc clear-notification-ids { |
| description "This clears named or all notifications from the log, don't provide any input, or empty list to remove all."; |
| input { |
| list notif-ids { |
| leaf notif-id { |
| type uint32; |
| description "Unique Id for the notification."; |
| } |
| } |
| } |
| } |
| container system-alarms { |
| config false; |
| description "This returns the current active system alarms."; |
| |
| list alarm { |
| key alarm-time; |
| leaf alarm-time { |
| type yang:date-and-time; |
| description "Time at which the alarm occured."; |
| } |
| leaf alarm-type { |
| type notification-types; |
| description "Type of the alarm."; |
| } |
| leaf alarm-message { |
| type string; |
| mandatory true; |
| description "Message that explains the reason for the alarm."; |
| } |
| } |
| } |
| grouping shutter { |
| description "If the shutter feature is available, a port can be |
| configured to block the signal periodically - once, a fixed number of |
| times or indefinitely."; |
| leaf signal-block-time { |
| type uint32 { |
| range "10..10000"; |
| } |
| description "Time in (ms) for which shutter will block the signal when activated."; |
| } |
| leaf signal-restore-time { |
| type uint32 { |
| range "500..30000"; |
| } |
| description "Time in (ms) for which shutter will restore the signal when activated. If this parameter is not configured, the shutter blocks once."; |
| } |
| leaf cycles { |
| type uint32; |
| description "The specific number of cycles the repeating shutter operates. |
| When the cycles is 0, the shutter is in activated state until it is |
| deactivated. This parameter may only be configured if 'signal-restore-time' is configured."; |
| } |
| } |
| rpc shutter-config { |
| description "Configures the shutter parameters for a list of ports."; |
| input { |
| list port { |
| key port-id; |
| leaf port-id { |
| type opsw:portFormat; |
| description "ID for port to configure"; |
| } |
| uses shutter { |
| refine signal-block-time { |
| mandatory true; |
| } |
| } |
| min-elements 1; |
| } |
| } |
| } |
| container shutter-status { |
| description "Reports the shutter status for all ports that can be configured."; |
| config false; |
| list port { |
| key port-id; |
| leaf port-id { |
| type opsw:portFormat; |
| description "port Id to which the configuration belongs"; |
| } |
| uses shutter; |
| leaf status { |
| type enumeration { |
| enum SHUTTER_IDLE { value 1; } |
| enum SHUTTER_SET { value 2; } |
| enum SHUTTER_ACTIVE { value 3; } |
| enum SHUTTER_PENDING { value 4; } |
| } |
| description "Current shutter status for this port"; |
| } |
| } |
| } |
| rpc shutter-operation { |
| description "Activates or deactivates the pre-configured list of ports."; |
| input { |
| leaf activate { |
| type boolean; |
| mandatory true; |
| } |
| leaf-list port { |
| type opsw:portFormat; |
| min-elements 1; |
| |
| description "List of IDs for ports to be activated or deactivated."; |
| } |
| } |
| } |
| rpc add-group-cross-connect { |
| description "Cross connects one 'group' to another 'group', if possible."; |
| input { |
| leaf group-name-from { |
| type opsw:groupNamesFormat; |
| mandatory true; |
| } |
| leaf group-name-to { |
| type opsw:groupNamesFormat; |
| mandatory true; |
| } |
| } |
| } |
| rpc delete-group-cross-connect { |
| description "Disconnects all ports of a 'group'."; |
| input { |
| leaf group-name { |
| type opsw:groupNamesFormat; |
| mandatory true; |
| } |
| } |
| } |
| container sessions { |
| description "Shows the active user sessions."; |
| list session { |
| config false; |
| key session-id; |
| leaf session-id { |
| type uint32; |
| description "ID of the session"; |
| } |
| leaf protocol-name { |
| type string; |
| description "The protocol interface used for this session."; |
| } |
| leaf protocol-port { |
| type uint32; |
| description "The port number to which the client connected; not used for RS232."; |
| } |
| leaf client-address { |
| type inet:ip-address; |
| description "IP address from which the client connected; not used for RS232."; |
| } |
| leaf user-name { |
| type opsw:userNamesFormat; |
| description "The name of the user logged in on the session."; |
| } |
| } |
| } |
| rpc disconnect-session { |
| description "Allows an admin to end a user's session."; |
| input { |
| leaf session-id { |
| type uint32; |
| mandatory true; |
| } |
| } |
| } |
| } |