Add NETCONF notification for ONU activation and Kafka client to receive events, update dependencies
Change-Id: I5f768fa8077ef7c64e00a534744ca47492344935
diff --git a/build/yang-files/notification/submodules/bbf-xpon-channel-group-body.yang b/build/yang-files/notification/submodules/bbf-xpon-channel-group-body.yang
new file mode 100644
index 0000000..2096f52
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-channel-group-body.yang
@@ -0,0 +1,468 @@
+submodule bbf-xpon-channel-group-body {
+ yang-version 1.1;
+ belongs-to bbf-xpon {
+ prefix bbf-xpon;
+ }
+
+ import bbf-xpon-types {
+ prefix bbf-xpon-types;
+ }
+ import bbf-yang-types {
+ prefix bbf-yang;
+ }
+ import ietf-interfaces {
+ prefix if;
+ }
+ import bbf-xpon-if-type {
+ prefix bbfxponift;
+ }
+
+ include bbf-xpon-base;
+ include bbf-xpon-channel-partition-body;
+
+ organization
+ "Broadband Forum <https://www.broadband-forum.org>
+ Fiber Access Networks Work Area";
+ contact
+ "Comments or questions about this Broadband Forum YANG module
+ should be directed to <mailto:help@broadband-forum.org>.
+
+ Editor: Joey Boyd, ADTRAN
+
+ Editor: Samuel Chen, Broadcom
+
+ Editor: Robert Peschi, Nokia
+
+ WA Director: Marta Seda, Calix
+
+ WA Director: Lin Wei, Huawei";
+ description
+ "This submodule contains a collection of YANG definitions for
+ managing channel groups.
+
+ Copyright (c) 2018, Broadband Forum
+
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+
+ 3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ The above license is used as a license under copyright only.
+ Please reference the Forum IPR Policy for patent licensing terms
+ <https://www.broadband-forum.org/ipr-policy>.
+
+ Any moral rights which are necessary to exercise under the above
+ license grant are also deemed granted under this license.
+
+ This version of this YANG module is part of TR-385; see
+ the TR itself for full legal notices.";
+
+ revision 2019-02-25 {
+ description
+ "Initial revision.
+ * Approval Date: 2019-02-25.
+ * Publication Date: 2019-02-25.";
+ reference
+ "TR-385: ITU-T PON YANG Modules
+ <https://www.broadband-forum.org/technical/download/
+ TR-385.pdf>";
+ }
+
+ typedef alloc-id-values {
+ type string {
+ pattern '((25[6-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-'
+ + '9][0-9]|1[0-6][0-3][0-8][0-3])([,-](25[6-9]|2[6-9]['
+ + '0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|1[0-6][0-'
+ + '3][0-8][0-3]))*)?';
+ }
+ description
+ "A list of non-overlapping Alloc-ID values in
+ ascending order, between 1024 to 16383 for G.9807.1
+ XGS-PON/G.989.3 NGPON2 compliant OLTs and
+ 256 to 4095 for G.984.3 GPON-compliant OLTs.
+
+ The format of this string can be any of the following:
+
+ single value
+ Example: '1024'
+ comma separated list of values
+ Example: '1024,1030,16000'
+ range of values
+ Example: '1024-1300'
+ comma separated list of ranges
+ Example: '1025-1300,1301-1400,1500-1600'
+ comma separated list of values and ranges
+ Example: '1024-1300,1301,1303-1310'.";
+ }
+
+ typedef gemport-values {
+ type string {
+ pattern '((25[4-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-'
+ + '9][0-9]|[1-6][0-5][0-5][0-3][0-4])([,-](25[4-9]|2[6-'
+ + '9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-6]['
+ + '0-5][0-5][0-3][0-4]))*)?';
+ }
+ description
+ "A list of non-overlapping xGEM/GEM port-ID values in
+ ascending order, between 1021 to 65534 for G.9807.1
+ XGS-PON/G.989.3 NGPON2 compliant OLTs and
+ 254 to 4095 for G.984.3 GPON-compliant OLTs.
+
+ The format of this string can be any of the following:
+
+ single value
+ Example: '1024'
+ comma separated list of values
+ Example: '1024,1030,16000'
+ range of values
+ Example: '1024-1300'
+ comma separated list of ranges
+ Example: '1025-1300,1301-1400,1500-1600'
+ comma separated list of values and ranges
+ Example: '1024-1300,1301,1303-1310'.";
+ }
+
+ typedef onu-id-values {
+ type string {
+ pattern '(([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|10[0-2]0)([,-](['
+ + '0-9]|[1-9][0-9]|[1-9][0-9][0-9]|10[0-2]0))*)?';
+ }
+ description
+ "A list of non-overlapping ONU-ID values in
+ ascending order, between 0 to 1020 for G.9807.1
+ XGS-PON/G.989.3 NGPON2 compliant OLTs and
+ 0 to 253 for G.984.3 GPON-compliant OLTs.
+
+ The format of this string can be any of the following:
+
+ single value
+ Example: '1020'
+ comma separated list of values
+ Example: '1,30,600'
+ range of values
+ Example: '30-60'
+ comma separated list of ranges
+ Example: '30-60,80-90'
+ comma separated list of values and ranges
+ Example: '1,30-60,70,90-100'.";
+ }
+
+ feature pon-pools {
+ description
+ "Assignable PON resource (Alloc-ID, xGEM port, ONU-id)
+ into PON pool feature.";
+ }
+
+ grouping channel-group-config-data {
+ description
+ "All config data for a channel group.";
+ leaf polling-period {
+ type uint32 {
+ range "1..864000";
+ }
+ units "0.1 second";
+ default "100";
+ description
+ "The period between two consecutive times the
+ autodetection procedure on each pair in the
+ group is executed.
+ Used in NG-PON2 for quiet window control.
+ Value represents tenths of seconds.
+ (e.g. 1 = 0.1 second, 864000 = 24 hours).";
+ }
+ leaf raman-mitigation {
+ type bbf-xpon-types:raman-mitigation-type;
+ default "raman-none";
+ description
+ "NG-PON2 Raman mitigation coding schemes when using RF video
+ overlay.";
+ reference
+ "ITU-T G.989.2 Appendix IX";
+ }
+ leaf system-id {
+ type string {
+ pattern '[0-9a-fA-F]{5}';
+ }
+ description
+ "A 20-bit number that identifies a specific NG-PON2 system
+ (typically a channel group) among multiple NG-PON2 systems
+ under a common administation.
+ It is defined as NGSYS ID in G.989.3 clause 6.1.5.2 and may
+ be coded to support administration such as name, geographical
+ location, servie profile (see also G.989.3 table VIII.2).";
+ reference
+ "ITU-T G.989.3 clause 6.1.5.2;
+ ITU-T G.989.3 table VIII.2";
+ }
+ container pon-pools {
+ if-feature "pon-pools";
+ description
+ "This container describes per channel termination
+ PON resources allocation. A channel termination can only
+ be a member of a single channel group. Within
+ a channel group, PON resources should not
+ overlap and only be assigned to a single
+ channel termination.";
+ list pon-pool {
+ key "name";
+ min-elements 1;
+ max-elements 8;
+ description
+ "This container describes the allocated PON pool of
+ Alloc-IDs, GEM port-IDs and ONU-IDs.";
+ leaf name {
+ type bbf-yang:string-ascii64;
+ description
+ "Name of the PON pool.";
+ }
+ leaf channel-termination-ref {
+ type if:interface-ref;
+ must "derived-from-or-self(/if:interfaces/"
+ + "if:interface[if:name = current()]/if:type,"
+ + "'bbfxponift:channel-termination')" {
+ error-message
+ "Referenced interface must be of type
+ 'channel-termination'.";
+ }
+ description
+ "Reference to a channel termination to which PON resource
+ pools will be assigned.";
+ }
+ leaf alloc-id-values {
+ type alloc-id-values;
+ description
+ "The list of assignable alloc-IDs between 1024 to
+ 16383 for G.9807.1 XGS-PON/G.989.3 NGPON2 compliant
+ OLTs and 256 to 4095 for G.984.3 GPON-compliant OLTs..
+ A single value or range of values can be specified.
+
+ The format of this string can be any of the following:
+ single value
+ Example: '1024'
+ comma separated list of values
+ Example: '1024,1030,16000'
+ range of values
+ Example: '1024-1300'
+ comma separated list of ranges
+ Example: '1025-1300,1301-1400,1500-1600'
+ comma separated list of values and ranges
+ Example: '1024-1300,1301,1303-1310'.";
+ }
+ leaf gemport-values {
+ type gemport-values;
+ description
+ "The list of assignable GEM port/xGEM port-ID between
+ 1021 to 65534 for G.9807.1 XGS-PON/G.989.3 NGPON2
+ compliant OLTs and 254 to 4095 for G.984.3
+ GPON-compliant OLTs.
+
+ A single value or range of values can be specified.
+
+ single value
+ Example: '1024'
+ comma separated list of values
+ Example: '1024,1030,16000'
+ range of values
+ Example: '1024-1300'
+ comma separated list of ranges
+ Example: '1025-1300,1301-1400,1500-1600'
+ comma separated list of values and ranges
+ Example: '1024-1300,1301,1303-1310'.";
+ }
+ leaf onu-id-values {
+ type onu-id-values;
+ description
+ "The list of assignable ONU-ID values between
+ 0 to 1020 for G.9807.1 XGS-PON/G.989.3 NGPON2
+ compliant OLTs and 0 to 253 for G.984.3
+ GPON-compliant OLTs.
+
+ The format of this string can be any of the following:
+ single value
+ Example: '1020'
+ comma separated list of values
+ Example: '1,30,600'
+ range of values
+ Example: '30-60'
+ comma separated list of ranges
+ Example: '30-60,80-90'
+ comma separated list of values and ranges
+ Example: '1,30-60,70,90-100'.";
+ }
+ }
+ }
+ }
+
+ grouping channel-group-state-data {
+ description
+ "All state data for a channel group.";
+ container allocated-upstream-channel-ids {
+ description
+ "The list maintained by the system of all the upstream
+ channel-id's which are already allocated to the
+ channel group. For NG-PON2, the applicable values are
+ in [0..7], for XGS-PON a dedicated value 'xgs' is
+ applicable rather than value '0': this is not to a
+ priori forbid in yang model the coexistence of XGS-PON
+ with NG-PON2 using channel-id=0. This list is a helper
+ to avoid upstream channel-id conflicts when allocating
+ channel pairs to a channel group.";
+ leaf-list channel-id {
+ type bbf-xpon-types:composite-channel-id-type;
+ description
+ "An upstream channel-id in use on the channel group.
+ For NG-PON2, value must be in [0..7].
+ For XGS-PON, value must be 'xgs'.";
+ }
+ }
+ container allocated-downstream-channel-ids {
+ description
+ "The list maintained by the system of all the downstream
+ channel-id's which are already allocated to the
+ channel group. For NG-PON2, the applicable values are
+ in [0..7], for XGS-PON a dedicated value 'xgs' is
+ applicable rather than value '0': this is not to a
+ priori forbid in yang model the coexistence of XGS-PON
+ with NG-PON2 using channel-id=0. This list is a helper
+ to avoid downstream channel-id conflicts when allocating
+ channel pairs to a channel group.";
+ leaf-list downstream-channel-id {
+ type bbf-xpon-types:composite-channel-id-type;
+ description
+ "A downstreamchannel-id in use on the channel group.
+ For NG-PON2, value must be in [0..7].
+ For XGS-PON, value must be 'xgs'.";
+ }
+ }
+ container allocated-downstream-wavelengths {
+ description
+ "The list maintained by the system of all the downstream
+ wavelengths already allocated to the channel group
+ including all of the NG-PON2, XGS-PON, XG-PON and G-PON
+ cases.
+ This list is a helper to avoid wavelength conflicts
+ when allocating channel pairs to a channel group.";
+ leaf-list wavelength {
+ type bbf-xpon-types:composite-downstream-wavelength-type;
+ description
+ "A downstream wavelength already allocated to the
+ channel group. For NG-PON2 it must be a value in
+ [156000..161000] expressed in hundredths of nm to fit
+ ITU-T precision requirements. For the XGS-PON, XG-PON
+ and G-PON cases, it must have resp. the value 'xgs',
+ 'xgpon' or 'gpon'.";
+ }
+ }
+ container pon-pools {
+ if-feature "pon-pools";
+ description
+ "This container describes the list of available and consumed
+ and unusable PON resources that a channel termination in a
+ channel group may have.";
+ list pon-pool {
+ key "name";
+ min-elements 1;
+ max-elements 8;
+ description
+ "This container describes the current characteristics of the
+ PON pool of Alloc-IDs, GEM port-IDs and ONU-IDs.";
+ leaf name {
+ type bbf-yang:string-ascii64;
+ description
+ "Name of the PON pool.";
+ }
+ leaf channel-termination-ref {
+ type if:interface-state-ref;
+ must "derived-from-or-self(/if:interfaces-state"
+ + "/if:interface[if:name = current()]/if:type,"
+ + "'bbfxponift:channel-termination')";
+ description
+ "Reference the configured channel termination
+ that is being reported against.";
+ }
+ container consumed-resources {
+ description
+ "The consumed PON resources.";
+ leaf alloc-id-values {
+ type alloc-id-values;
+ description
+ "The list of consumed Alloc-IDs.
+ For example: '1024-1300,1301,1303-1310'.";
+ }
+ leaf gemport-values {
+ type gemport-values;
+ description
+ "The list of consumed GEM port-IDs/xGEM port-IDs.
+ For example: '1024-1300,1301,1303-1310'.";
+ }
+ leaf onu-ids {
+ type onu-id-values;
+ description
+ "The list of consumed ONU-IDs.
+ For example: '1,30-60,70,90-100'.";
+ }
+ }
+ container available-resources {
+ description
+ "The available/unused PON resources.";
+ leaf alloc-id-values {
+ type alloc-id-values;
+ description
+ "The list of available Alloc-IDs.
+ For example: '1024-1300,1301,1303-1310'.";
+ }
+ leaf gemport-values {
+ type gemport-values;
+ description
+ "The list of available GEM port-IDs/xGEM port-IDs.
+ For example: '1024-1300,1301,1303-1310'.";
+ }
+ leaf onu-ids {
+ type onu-id-values;
+ description
+ "The list of available ONU-IDs.
+ For example: '1,30-60,70,90-100'.";
+ }
+ }
+ }
+ }
+ }
+
+ augment '/if:interfaces/if:interface/bbf-xpon:channel-group' {
+ description
+ "Configuration of an xPON channel group.";
+ uses channel-group-config-data;
+ }
+
+ augment '/if:interfaces-state/if:interface/bbf-xpon:channel-group' {
+ description
+ "State data of an xPON channel group.";
+ uses channel-group-state-data;
+ }
+}