module tapi-otsi {
    namespace "urn:onf:params:xml:ns:yang:tapi-otsi";
    prefix tapi-otsi;
    import tapi-common {
        prefix tapi-common;
    }
    import tapi-connectivity {
        prefix tapi-connectivity;
    }
    import tapi-topology {
        prefix tapi-topology;
    }
    organization "Open Networking Foundation (ONF) / Open Transport Working Group(OTWG) / Transport API (TAPI) Project";
    contact "
        WG Web: TAPI SDK Project <http://opensourcesdn.org/projects/project-snowmass/>
        WG List: TAPI Discussion list <mailto: transport-api@login.opennetworking.org>,
        WG Chair: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>,
        Editor: Ricard Vilalta <mailto:ricard.vilalta@cttc.es>";
    description "none";
    revision 2017-05-31 {
        description "TAPI SDK 2.0-alpha";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";
    }
    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point" {
        uses otsi-connection-end-point-spec;
        description "Augments the base LayerProtocol information in ConnectionEndPoint with OCH-specific information";
    }
    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
        uses otsi-node-edge-point-spec;
        description "Augments the base LayerProtocol information in NodeEdgePoint with OCH-specific information";
    }
    /***********************
    * package object-classes
    **********************/ 
        grouping otsi-a-client-adaptation-pac {
            description "none";
        }
        grouping otsi-connection-end-point-spec {
            container otsi-adapter {
                config false;
                uses otsi-a-client-adaptation-pac;
                description "none";
            }
            list otsi-termination {
                config false;
                uses otsi-termination-pac;
                description "none";
            }
            container otsi-ctp {
                config false;
                uses otsi-g-ctp-pac;
                description "none";
            }
            description "none";
        }
        grouping otsi-termination-pac {
            container selected-nominal-central-frequency {
                uses nominal-central-frequency-or-wavelength;
                description "This attribute indicates the nominal central frequency or wavelength of the optical channel associated with the OCh Trail Termination function. The value of this attribute is a pair {LinkType, Integer}, in which LinkType is DWDM, or CWDM, or NO_WDM. When LinkType is DWDM, the integer represents the nominal central frequency in unit of MHz. When LinkType is CWDM, the integer represents the nominal central wavelength in unit of pm (picometer). When LinkType is NO_WDM, the Integer field is null. For frequency and wavelength, the value shall be within the range of the maximum and minimum central frequencies or wavelengths specified for the corresponding application code used at the OCh Trail Termination.
                    This attribute is required for the OCh Trial Termination Point Source at the transmitter.  For the OCh Trail Termination Point Sink at the receiver, this attribute may not be needed since the receiver is required to operate at any frequency/wavelength between the maximum and minimum range for the standard application code.
                    ";
            }
            container supportable-lower-nominal-central-frequency {
                config false;
                uses nominal-central-frequency-or-wavelength;
                description "none";
            }
            container supportable-upper-nominal-central-frequency {
                config false;
                uses nominal-central-frequency-or-wavelength;
                description "none";
            }
            container selected-application-identifier {
                uses application-identifier;
                description "This attribute indicates the selected Application Identifier that is used by the OCh trail termination function. The syntax of ApplicationIdentifier is a pair {ApplicationIdentifierType, PrintableString}. The value of ApplicationIdentifierType is either STANDARD or PROPRIETARY. The value of PrintableString represents the standard application code as defined in the ITU-T Recommendations or a vendor-specific proprietary code. If the ApplicationIdentifierType is STANDARD the value of PrintableString represents a standard application code as defined in the ITU-T Recommendations. If the ApplicationIdentifierType is PROPRIETARY, the first six characters of the PrintableString must contain the Hexadecimal representation of an OUI assigned to the vendor whose implementation generated the Application Identifier; the remaining octets of the PrintableString are unspecified. The value of this attribute of an object instance has to be one of the values identified in the attribute SupportableApplicationIdentifierList of the same object instance. The values and value ranges of the optical interface parameters of a standard application code must be consistent with those values specified in the ITU-T Recommendation for that application code.";
            }
            container supportable-application-identifier {
                config false;
                uses application-identifier;
                description "none";
            }
            description "none";
        }
        grouping otsi-a-pool-pac {
            list available-frequency-slot {
                config false;
                uses frequency-slot;
                description "none";
            }
            list occupied-frequency-slot {
                config false;
                uses frequency-slot;
                description "none";
            }
            description "none";
        }
        grouping otsi-node-edge-point-spec {
            container otsi-pool {
                config false;
                uses otsi-a-pool-pac;
                description "none";
            }
            description "none";
        }
        grouping otsi-routing-spec {
            leaf optical-routing-strategy {
                type optical-routing-strategy;
                description "none";
            }
            description "none";
        }
        grouping otsi-g-ctp-pac {
            list selected-frequency-slot {
                uses frequency-slot;
                description "none";
            }
            description "none";
        }
        feature otsia {
            description "none";
        }

    /***********************
    * package type-definitions
    **********************/ 
        identity application-identifier-type {
            description "none";
        }
        identity proprietary {
            base application-identifier-type;
            description "none";
        }
        identity itut-g-959-1 {
            base application-identifier-type;
            description "none";
        }
        identity itut-g-698-1 {
            base application-identifier-type;
            description "none";
        }
        identity itut-g-698-2 {
            base application-identifier-type;
            description "none";
        }
        identity itut-g-696-1 {
            base application-identifier-type;
            description "none";
        }
        identity itut-g-695 {
            base application-identifier-type;
            description "none";
        }
        identity grid-type {
            description "none";
        }
        identity dwdm {
            base grid-type;
            description "Fixed frequency grid in C & L bands as specified in ITU-T G.694.1
                ";
        }
        identity cwdm {
            base grid-type;
            description "Fixed frequency grid as specified in ITU-T G.694.2";
        }
        identity flex {
            base grid-type;
            description "Flexible frequency grid as specified in ITU-T G.694.1. In this case,
                - the allowed frequency slots have a nominal central frequency (in THz) defined by:
                193.1 + n × 0.00625 where n is a positive or negative integer including 0 and 0.00625 is the nominal central frequency granularity in THz
                - and a slot width defined by:
                12.5 × m where m is a positive integer and 12.5 is the slot width granularity in GHz.
                Any combination of frequency slots is allowed as long as no two frequency slots overlap.";
        }
        identity unspecified {
            base grid-type;
            description "Unspecified/proprietary frequency grid";
        }
        identity adjustment-granularity {
            description "none";
        }
        identity g-100-ghz {
            base adjustment-granularity;
            description "0.1 THz";
        }
        identity g-50-ghz {
            base adjustment-granularity;
            description "0.05 THz";
        }
        identity g-25-ghz {
            base adjustment-granularity;
            description "0.025 THz";
        }
        identity g-12-5-ghz {
            base adjustment-granularity;
            description "0.0125 THz";
        }
        identity g-6-25-ghz {
            base adjustment-granularity;
            description "0.00625 THz";
        }
        grouping application-identifier {
            leaf application-identifier-type {
                type application-identifier-type;
                description "none";
            }
            leaf application-identifier-value {
                type string;
                description "none";
            }
            description "none";
        }
        grouping nominal-central-frequency-or-wavelength {
            leaf grid-type {
                type grid-type;
                description "Specifies the frequency grid standard used to determine the nominal central frequency and frequency slot width";
            }
            leaf adjustment-granularity {
                type adjustment-granularity;
                description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";
            }
            leaf channel-number {
                type uint64;
                description "As per ITU-T G.694.1, this attribute is denoted as 'n' and is used to calculate the nominal central frequency (in THz) as follows:
                    193.1 + <channelNumber> × <adjustmentGranularity> where channelNumber is a positive or negative integer including 0 and adjustment_granularity is the nominal central frequency granularity in THz";
            }
            description "This data-type holds the information to determine the nominal central frequency of a FIXED grid (DWDM or CWDM) and FLEX grid type systems.
                As per ITU-T G.694.1, the nominal central frequency (in THz) is calculated as follows:
                193.1 + <channelNumber> × <adjustmentGranularity> where channelNumber is a positive or negative integer including 0 and <adjustment_granularity> is the nominal central frequency granularity in THz
                For FIXED grid types, the adjustmentGranularity is one of (0.1/0.05/0.025/0.0125) THz corresponding to channel spacing of one of (100/50/25/12.5) GHz
                For FLEX grid type, the adjusmentGranularity is 0.00625 THz and the slot width is variable in increments of 12.5 GHz";
        }
        typedef optical-routing-strategy {
            type enumeration {
                enum optimal-osnr {
                    description "none";
                }
                enum no-relay {
                    description "none";
                }
                enum min-relay {
                    description "none";
                }
                enum preferred-no-change-wavelength-as-restore {
                    description "none";
                }
                enum preferred-no-skipping-wavelength {
                    description "none";
                }
            }
            description "none";
        }
        typedef application-identifier-type {
            type identityref {
                base application-identifier-type;
            }
            description "none";
        }
        typedef grid-type {
            type identityref {
                base grid-type;
            }
            description "The frequency grid standard that specify reference set of frequencies used to denote allowed nominal central frequencies that may be used for defining applications.";
        }
        typedef adjustment-granularity {
            type identityref {
                base adjustment-granularity;
            }
            description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";
        }
        grouping frequency-slot {
            container nominal-central-frequency {
                uses nominal-central-frequency-or-wavelength;
                description "none";
            }
            leaf slot-width-number {
                type uint64;
                description "As per ITU-T G.694.1, this attribute is denoted as 'm' and is used to calculate the slot width (in GHz) as follows:
                    12.5 × m where m is a positive integer and 12.5 is the slot width granularity in GHz.";
            }
            description "The frequency range allocated to a slot and unavailable to other slots within a flexible grid. A frequency slot is defined by its nominal central frequency. As per ITU-T G.694.1  the slot width is calculated as follows:
                12.5 × <slotWidthNumber> where slotWidthNumber is a positive integer and 12.5 is the slot width granularity in GHz";
        }

}
