blob: d8f5d94b1dfef34a6d00e5631fa9c56bd8710e0f [file] [log] [blame]
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.";
}
}
}
}
}