blob: 34b2c4cbc389ee6cb57ecb41f6601118127fc001 [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 "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;
}
}
}
}