| 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 "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."; |
| } |
| list logged-in-users { |
| config false; |
| key username; |
| |
| leaf username { |
| type opsw:namesFormat; |
| } |
| |
| description "Users that are currently logged into the system."; |
| } |
| } |
| augment "/opsw:system-config/opsw:user" { |
| leaf group { |
| type enumeration { |
| enum "admin"; |
| enum "user"; |
| enum "view"; |
| } |
| 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_NONE { |
| position 0; |
| description "No notification"; |
| } |
| bit NOTIF_PORT_POWER { |
| position 1; |
| description "Issued when power readings are outside power-alarm thresholds."; |
| } |
| bit NOTIF_PORT_POWER_WARN { |
| position 2; |
| description "Issued when power readings are outside power-warning thresholds."; |
| } |
| bit NOTIF_SYSTEM { |
| position 5; |
| description "Issued for an internal error"; |
| } |
| bit NOTIF_APS { |
| position 7; |
| description "Issued for aps events."; |
| } |
| bit NOTIF_ACTIVITY { |
| position 8; |
| description "Issued for any configuration changes performed by users."; |
| } |
| } |
| } |
| |
| leaf enable-notifications { |
| type notification-types; |
| |
| default NOTIF_NONE; |
| |
| description "Decide which class of netconf notification to send. |
| All notifications are disabled by default"; |
| } |
| |
| notification port-power-alarm { |
| description "Sent when power reading moves outside the thresholds set."; |
| |
| leaf port-id { |
| type leafref { |
| path "/opsw:ports/opsw:port/opsw:port-id"; |
| } |
| mandatory true; |
| } |
| leaf port-label { |
| type leafref { |
| path "/opsw:ports/opsw:port/opsw:port-label"; |
| } |
| description "Label of the notification port"; |
| } |
| } |
| notification port-power-clear { |
| description "Sent when power reading returns within the thresholds set, including hysteresis."; |
| |
| leaf port-id { |
| type leafref { |
| path "/opsw:ports/opsw:port/opsw:port-id"; |
| } |
| mandatory true; |
| } |
| leaf port-label { |
| type leafref { |
| path "/opsw:ports/opsw:port/opsw:port-label"; |
| } |
| description "Label of the notification port"; |
| } |
| } |
| notification port-power-warn-alarm { |
| description "Sent when power reading moves outside the warning offsets to the thresholds set."; |
| |
| leaf port-id { |
| type leafref { |
| path "/opsw:ports/opsw:port/opsw:port-id"; |
| } |
| mandatory true; |
| } |
| leaf port-label { |
| type leafref { |
| path "/opsw:ports/opsw:port/opsw:port-label"; |
| } |
| 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 leafref { |
| path "/opsw:ports/opsw:port/opsw:port-id"; |
| } |
| mandatory true; |
| } |
| leaf port-label { |
| type leafref { |
| path "/opsw:ports/opsw:port/opsw:port-label"; |
| } |
| description "Label of the notification port"; |
| } |
| } |
| notification system-error { |
| description "This notification is generated when switch encounters an unexpected error."; |
| |
| leaf error-code { |
| type uint32; |
| mandatory true; |
| description "Description of the system error."; |
| } |
| leaf switch-status { |
| type polatis-switch-status; |
| mandatory true; |
| description "Status of the switch after the system error which |
| resulted in this notification"; |
| } |
| leaf message { |
| type string; |
| description "Message related to system error."; |
| } |
| } |
| notification activity-log-notification { |
| description "Sent when a new entry appears in the activity log."; |
| leaf notification-username { type string; } |
| leaf notification-ip-address { type inet:ip-address; } |
| leaf notification-protocol { type string; } |
| leaf notification-activity { type string; } |
| } |
| |
| |
| container notification-log { |
| config false; |
| |
| 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 { |
| type leafref { |
| path "/opsw:ports/opsw:port/opsw:port-id"; |
| } |
| when "../notif-type = 'NOTIF_PORT_POWER' or " + |
| "../notif-type = 'NOTIF_PORT_POWER_WARN' or " + |
| "../notif-type = 'NOTIF_PORT'"; |
| } |
| leaf notif-port-status { |
| type opsw:PortStatus; |
| when "../notif-type = 'NOTIF_PORT'"; |
| } |
| container notif-system { |
| leaf error-code { |
| type uint32; |
| } |
| leaf switch-status { |
| type polatis-switch-status; |
| } |
| when "../notif-type = 'NOTIF_SYSTEM'"; |
| } |
| description "Contains the log of all the notifications generated by the switch."; |
| } |
| } |
| |
| rpc shutter-config { |
| input { |
| leaf duration-on { |
| type uint32; |
| mandatory true; |
| |
| description "Set how long the shutter will switched on in ms"; |
| } |
| leaf duration-off { |
| type uint32; |
| mandatory true; |
| |
| description "Set how long the shutter will be switched off in ms"; |
| } |
| leaf cycles { |
| type int32; |
| |
| description "Set the specific number of cycles the repeating |
| shutter operates for"; |
| } |
| |
| list port-interval { |
| key port-id; |
| leaf port-id { type opsw:portFormat; } |
| min-elements 1; |
| } |
| } |
| } |
| |
| rpc shutter-status { |
| output { |
| list port-interval { |
| key port-id; |
| leaf port-id { type opsw:portFormat; } |
| |
| leaf duration-on { |
| type uint32; |
| mandatory true; |
| |
| description "Get how long the shutter will be switched on in ms"; |
| } |
| leaf duration-off { |
| type uint32; |
| mandatory true; |
| |
| description "Get how long the shutter will be switched off in ms"; |
| } |
| |
| leaf cycles { |
| type uint32; |
| |
| description "Get the specific number of cycles the repeating |
| shutter operates for"; |
| } |
| } |
| } |
| |
| } |
| |
| rpc shutter-operation { |
| input { |
| leaf operation-on { |
| type boolean; |
| mandatory true; |
| |
| description "The leaf starts or stops the given mode for programmable shutters. It will |
| continue until it is stopped. Double stops and double starts have no effect."; |
| } |
| } |
| } |
| |
| 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."; |
| } |
| } |
| } |
| } |
| |
| rpc get-alarm-state { |
| description "This returns the alarm states currently active."; |
| output { |
| list alarm-state { |
| key alarm-index; |
| leaf alarm-index { |
| type uint32; |
| description "This is simply a count to have a unique key in the list"; |
| } |
| |
| leaf alarm-type { |
| type notification-types; |
| mandatory true; |
| } |
| leaf alarm-time { |
| type yang:date-and-time; |
| mandatory true; |
| description "Time at which the first notification was generated."; |
| } |
| leaf alarm-message { |
| type string; |
| mandatory true; |
| description "Useful textual representation of the alarm cause."; |
| } |
| leaf port-id { |
| type uint32; |
| description "Port id parsed out the alarm message, set to 0 if not simple."; |
| } |
| } |
| } |
| } |
| |
| } |