[VOL-4648] Add connection to sysrepo and subscribe to NETCONF 'get' requests with dummy callback
Change-Id: I9124d9b9430ee1358885bdb5c65dedfb3c5d3978
diff --git a/build/package/Dockerfile.bbf-adapter b/build/package/Dockerfile.bbf-adapter
index 0566d2e..0d8fadc 100644
--- a/build/package/Dockerfile.bbf-adapter
+++ b/build/package/Dockerfile.bbf-adapter
@@ -17,10 +17,7 @@
#-------------
# Build stage
-FROM --platform=linux/amd64 golang:1.16.3-alpine3.13 AS dev
-
-# Install required packages
-RUN apk add --no-cache build-base=0.5-r2
+FROM voltha/bbf-adapter-builder:local AS dev
# Use Standard go build directory structure
WORKDIR /go/src
@@ -28,7 +25,7 @@
ARG EXTRA_GO_BUILD_TAGS=""
-ARG CGO_PARAMETER=0
+ARG CGO_PARAMETER=1
ARG org_label_schema_version=unknown
ARG org_label_schema_vcs_url=unknown
@@ -38,7 +35,7 @@
ARG org_opencord_vcs_dirty=unknown
# Build
-SHELL ["/bin/ash", "-o", "pipefail", "-c"]
+SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN \
CGO_ENABLED=$CGO_PARAMETER go build $EXTRA_GO_BUILD_TAGS -mod=vendor -o /app/bbf-adapter \
-ldflags \
@@ -55,7 +52,41 @@
# -------------
# Image creation stage
-FROM --platform=linux/amd64 gcr.io/distroless/static:nonroot as prod
+FROM ubuntu:hirsute-20220113 AS prod
+
+SHELL ["/bin/bash", "-o", "pipefail", "-c"]
+RUN \
+ apt-get update && \
+ apt-get install -y \
+ wget=1.21-1ubuntu3 ca-certificates=20210119ubuntu0.21.04.1 \
+ libpcre2-8-0=10.36-2ubuntu5 \
+ libcrypt1=1:4.4.17-1ubuntu3 \
+ libssh-4=0.9.5-1ubuntu0.1 \
+ --no-install-recommends && \
+ rm -rf /var/lib/apt/lists/*
+
+# Download and install library packages
+RUN \
+ wget https://github.com/CESNET/libyang/releases/download/v2.0.112/libyang2_2.0.112.1-1_amd64.deb -O libyang2.deb && \
+ wget https://github.com/sysrepo/sysrepo/releases/download/v2.0.53/libsysrepo6_2.0.53.1-1_amd64.deb -O libsysrepo6.deb && \
+ wget https://github.com/sysrepo/sysrepo/releases/download/v2.0.53/sysrepo-tools_2.0.53.1-1_amd64.deb -O sysrepo-tools.deb && \
+ wget https://github.com/CESNET/libnetconf2/releases/download/v2.0.24/libnetconf2-2_2.0.24.1-1_amd64.deb -O libnetconf2-2.deb && \
+ wget https://github.com/CESNET/netopeer2/releases/download/v2.0.35/netopeer2_2.0.35.2-1_amd64.deb -O netopeer2_2.deb
+
+RUN dpkg -i libyang2.deb libsysrepo6.deb sysrepo-tools.deb libnetconf2-2.deb netopeer2_2.deb
+
+RUN rm libyang2.deb libsysrepo6.deb sysrepo-tools.deb libnetconf2-2.deb netopeer2_2.deb
+
+# Copy yang files and install them to sysrepo
+COPY ./build/yang-files /yang
+RUN sysrepoctl -a -i /yang/bbf-device-aggregation.yang -s /yang -p 664 -v3
+
+# Add user for connecting to netopeer2-server through ssh
+ARG NETCONF_USER=voltha
+ARG NETCONF_PASSWORD=onf
+
+RUN useradd -rm -g netconf -u 1001 $NETCONF_USER
+RUN echo $NETCONF_USER:$NETCONF_PASSWORD | chpasswd
# Set the working directory
WORKDIR /app
@@ -81,4 +112,5 @@
org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
org.opencord.vcs-dirty=$org_opencord_vcs_dirty
-USER nonroot:nonroot
\ No newline at end of file
+# running netopeer2-server as a standard user is not supported right now
+# https://github.com/sysrepo/sysrepo/issues/2148#issuecomment-695950173
\ No newline at end of file
diff --git a/build/tools/Dockerfile.builder b/build/tools/Dockerfile.builder
new file mode 100644
index 0000000..7e7f710
--- /dev/null
+++ b/build/tools/Dockerfile.builder
@@ -0,0 +1,57 @@
+# Copyright 2022-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Dockerfile with golang and the sysrepo dependencies for voltha-northbound-bff-adapter
+# This image is used for testing, static code analysis and building
+
+FROM --platform=linux/amd64 golang:1.16.3-buster AS dev
+
+RUN mkdir -m 777 /.cache /go/pkg
+
+#Install golangci-lint
+RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.44.2
+
+RUN \
+ apt-get update && apt-get install -y libpcre2-dev=10.32-5 --no-install-recommends && \
+ rm -rf /var/lib/apt/lists/*
+
+# Download and install library packages
+RUN \
+ wget https://github.com/CESNET/libyang/releases/download/v2.0.112/libyang2_2.0.112.1-1_amd64.deb -O libyang2.deb && \
+ wget https://github.com/CESNET/libyang/releases/download/v2.0.112/libyang2-dev_2.0.112.1-1_amd64.deb -O libyang2-dev.deb && \
+ wget https://github.com/sysrepo/sysrepo/releases/download/v2.0.53/libsysrepo6_2.0.53.1-1_amd64.deb -O libsysrepo6.deb && \
+ wget https://github.com/sysrepo/sysrepo/releases/download/v2.0.53/libsysrepo-dev_2.0.53.1-1_amd64.deb -O libsysrepo-dev.deb
+
+RUN dpkg -i libyang2.deb libyang2-dev.deb libsysrepo6.deb libsysrepo-dev.deb
+
+RUN rm libyang2.deb libyang2-dev.deb libsysrepo6.deb libsysrepo-dev.deb
+
+WORKDIR /app
+
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+ARG org_opencord_vcs_dirty=unknown
+
+LABEL \
+org.label-schema.schema-version=1.0 \
+org.label-schema.name=voltha-northbound-bbf-adapter \
+org.label-schema.version=$org_label_schema_version \
+org.label-schema.vcs-url=$org_label_schema_vcs_url \
+org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+org.label-schema.build-date=$org_label_schema_build_date \
+org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
+org.opencord.vcs-dirty=$org_opencord_vcs_dirty
\ No newline at end of file
diff --git a/build/yang-files/bbf-device-aggregation.yang b/build/yang-files/bbf-device-aggregation.yang
new file mode 100644
index 0000000..24a5141
--- /dev/null
+++ b/build/yang-files/bbf-device-aggregation.yang
@@ -0,0 +1,154 @@
+module bbf-device-aggregation {
+ yang-version 1.1;
+ namespace "urn:bbf:yang:bbf-device-aggregation";
+ prefix bbf-dev-agg;
+
+ import bbf-yang-types {
+ prefix bbf-yang;
+ }
+ import bbf-device-types {
+ prefix bbf-dvct;
+ }
+ import ietf-yang-schema-mount {
+ prefix yangmnt;
+ }
+
+ organization
+ "Broadband Forum <https://www.broadband-forum.org>
+ Common YANG Work Area";
+ contact
+ "Comments or questions about this Broadband Forum YANG module
+ should be directed to <mailto:help@broadband-forum.org>.
+
+ Editor: Nick Hancock, ADTRAN
+
+ Editor: Ludwig Pauwels, Nokia
+
+ PS Leader: Joey Boyd, ADTRAN
+
+ WA Director: Joey Boyd, ADTRAN
+
+ WA Director: Sven Ooghe, Nokia";
+ description
+ "This module contains a collection of YANG definitions for
+ supporting the Broadband Forum requirements on device
+ aggregation. As such, this module is specific to access network
+ equipment (e.g., BBF-specified Access Nodes and FTTdp DPUs).
+
+ Copyright (c) 2017-2022, 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-383a5; see
+ the TR itself for full legal notices.";
+
+ revision 2022-03-01 {
+ description
+ "Amendment 5.
+ * Approval Date: 2022-03-01.
+ * Publication Date: 2022-03-01.";
+ reference
+ "TR-383a5: Common YANG Modules
+ <https://www.broadband-forum.org/technical/download/
+ TR-383_Amendment-5.pdf>";
+ }
+
+ container devices {
+ description
+ "Aggregation and management of multiple devices.";
+ list device {
+ key "name";
+ description
+ "An aggregated device.";
+ leaf name {
+ type bbf-yang:string-ascii64;
+ description
+ "The unique name of the device.";
+ }
+ leaf type {
+ type identityref {
+ base bbf-dvct:device-type;
+ }
+ mandatory true;
+ description
+ "The type of device.";
+ }
+ container identification {
+ presence
+ "Presence of the container indicates that data nodes that
+ identify the device exist.";
+ description
+ "Data nodes identifying the device instance.";
+ choice identification {
+ mandatory true;
+ description
+ "A choice for different methods to uniquely identify a
+ device instance.";
+ case hardware-inventory-data {
+ leaf mfg-name {
+ type string;
+ description
+ "The name of the manufacturer of the device.";
+ }
+ leaf model-name {
+ type string;
+ description
+ "The vendor-specific model name associated with the
+ device.";
+ }
+ leaf serial-num {
+ type string;
+ description
+ "The vendor-specific serial number string for the
+ device.";
+ }
+ }
+ }
+ }
+ container data {
+ description
+ "The data nodes of the device's schema.";
+ yangmnt:mount-point "device-yang-library" {
+ description
+ "The YANG library associated with the device.";
+ }
+ }
+ }
+ }
+}
diff --git a/build/yang-files/bbf-device-types.yang b/build/yang-files/bbf-device-types.yang
new file mode 100644
index 0000000..8448e2f
--- /dev/null
+++ b/build/yang-files/bbf-device-types.yang
@@ -0,0 +1,185 @@
+module bbf-device-types {
+ yang-version 1.1;
+ namespace "urn:bbf:yang:bbf-device-types";
+ prefix bbf-dvct;
+
+ organization
+ "Broadband Forum <https://www.broadband-forum.org>
+ Common YANG Work Area";
+ contact
+ "Comments or questions about this Broadband Forum YANG module
+ should be directed to <mailto:help@broadband-forum.org>.
+
+ Editor: Nick Hancock, ADTRAN
+
+ Editor: Ludwig Pauwels, Nokia
+
+ PS Leader: Joey Boyd, ADTRAN
+
+ PS Leader: Sowrirajan Padmanabhan, Nokia
+
+ WA Director: Joey Boyd, ADTRAN
+
+ WA Director: Sven Ooghe, Nokia";
+ description
+ "This module contains a collection of YANG definitions for
+ supporting the Broadband Forum requirements on managing physical
+ devices.
+
+ Specifically, this module defines common types associated with
+ device management.
+
+ Copyright (c) 2017-2021, 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-383a4; see
+ the TR itself for full legal notices.";
+
+ revision 2021-06-02 {
+ description
+ "Amendment 4.
+ * Approval Date: 2021-06-02.
+ * Publication Date: 2021-06-02.";
+ reference
+ "TR-383a4: Common YANG Modules
+ <https://www.broadband-forum.org/technical/download/
+ TR-383_Amendment-4.pdf>";
+ }
+
+ // Identities
+ // Device types
+
+ identity device-type {
+ description
+ "Base identity from which specific device node types are
+ derived.";
+ }
+
+ identity access-device-type {
+ base device-type;
+ description
+ "Base identity from which specific access device node types are
+ derived.";
+ }
+
+ identity dpu {
+ base access-device-type;
+ description
+ "Distribution Point Unit (DPU).";
+ }
+
+ identity msan {
+ base access-device-type;
+ description
+ "Multiservice Access Node (MSAN).";
+ }
+
+ identity dslam {
+ base access-device-type;
+ description
+ "Digital Subscriber Line Access Multiplexer (DSLAM).";
+ }
+
+ identity olt {
+ base access-device-type;
+ description
+ "Optical Line Terminal (OLT).";
+ }
+
+ identity onu {
+ base access-device-type;
+ description
+ "Optical Network Unit (ONU).";
+ }
+
+ identity fast-cpe {
+ base access-device-type;
+ description
+ "The G.fast CPE. G.fast is a Digital Subscriber Line (DSL)
+ protocol standard.";
+ }
+
+ identity vdsl2-cpe {
+ base access-device-type;
+ description
+ "The Very High-speed Digital Subscriber Line 2 (VDSL2) CPE.";
+ }
+
+ // Device Subcategory
+
+ identity device-subcategory {
+ description
+ "Base identity from which specific subcategories of device types
+ are derived.";
+ }
+
+ identity access-device-subcategory {
+ base device-subcategory;
+ description
+ "Identity from which specific subcategories of access device
+ types are derived.";
+ }
+
+ identity multi-card {
+ base access-device-subcategory;
+ description
+ "The multi card subcategory.
+
+ An access device of this or a derived identity is a device that
+ has the capability to support multiple cards, independent of
+ the actual deployment.";
+ }
+
+ identity single-card {
+ base access-device-subcategory;
+ description
+ "The single card subcategory.
+
+ An access device of this or a derived identity is a device that
+ is a fully self-contained device that does not has the
+ capability to plug or unplug cards.";
+ }
+
+ identity pluggable-transceiver {
+ base access-device-subcategory;
+ description
+ "The pluggable transceiver subcategory.";
+ }
+}
diff --git a/build/yang-files/bbf-yang-types.yang b/build/yang-files/bbf-yang-types.yang
new file mode 100644
index 0000000..efa31d5
--- /dev/null
+++ b/build/yang-files/bbf-yang-types.yang
@@ -0,0 +1,275 @@
+module bbf-yang-types {
+ yang-version 1.1;
+ namespace "urn:bbf:yang:bbf-yang-types";
+ prefix bbf-yang;
+
+ organization
+ "Broadband Forum <https://www.broadband-forum.org>
+ Common YANG Work Area";
+ contact
+ "Comments or questions about this Broadband Forum YANG module
+ should be directed to <mailto:help@broadband-forum.org>.
+
+ Editor: Nick Hancock, ADTRAN
+
+ Editor: Ludwig Pauwels, Nokia
+
+ PS Leader: Joey Boyd, ADTRAN
+
+ WA Director: Joey Boyd, ADTRAN
+
+ WA Director: Sven Ooghe, Nokia";
+ description
+ "This module contains a collection of YANG definitions for
+ supporting the Broadband Forum requirements on reusable data
+ types as applicable to access network equipment. As such, this
+ module is specific to access network equipment (e.g.,
+ BBF-specified Access Nodes and FTTdp DPUs).
+
+ Specifically, this module defines common types used throughout
+ BBF data models.
+
+ Copyright (c) 2017-2022, 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-383a5; see
+ the TR itself for full legal notices.";
+
+ revision 2022-03-01 {
+ description
+ "Amendment 5.
+ * Approval Date: 2022-03-01.
+ * Publication Date: 2022-03-01.";
+ reference
+ "TR-383a5: Common YANG Modules
+ <https://www.broadband-forum.org/technical/download/
+ TR-383_Amendment-5.pdf>";
+ }
+ revision 2021-06-02 {
+ description
+ "Amendment 4.
+ * Approval Date: 2021-06-02.
+ * Publication Date: 2021-06-02.";
+ reference
+ "TR-383a4: Common YANG Modules
+ <https://www.broadband-forum.org/technical/download/
+ TR-383_Amendment-4.pdf>";
+ }
+ revision 2020-10-13 {
+ description
+ "Amendment 3.
+ * Approval Date: 2020-10-13.
+ * Publication Date: 2020-10-13.";
+ reference
+ "TR-383a3: Common YANG Modules
+ <https://www.broadband-forum.org/technical/download/
+ TR-383_Amendment-3.pdf>";
+ }
+ revision 2019-10-21 {
+ description
+ "Amendment 2 Corrigendum 1.
+ * Approval Date: 2019-10-21.
+ * Publication Date: 2019-10-21.";
+ reference
+ "TR-383a2c1: Common YANG Modules
+ <https://www.broadband-forum.org/technical/download/
+ TR-383_Amendment-2.pdf>";
+ }
+ revision 2018-07-13 {
+ description
+ "Amendment 1.
+ * Approval Date: 2018-06-04.
+ * Publication Date: see revision date above.";
+ reference
+ "TR-383: Common YANG Modules
+ <https://www.broadband-forum.org/technical/download/
+ TR-383_Amendment-1.pdf>";
+ }
+ revision 2017-05-08 {
+ description
+ "Initial revision.
+ * Approval Date: see revision date above.
+ * Publication Date: 2017-06-02.";
+ reference
+ "TR-383: Common YANG Modules
+ <https://www.broadband-forum.org/technical/download/
+ TR-383.pdf>";
+ }
+ revision 2016-07-18 {
+ description
+ "Initial revision.
+ * Approval Date: see revision date above.
+ * Publication Date: 2016-08-05.";
+ reference
+ "TR-355: YANG Modules for FTTdp Management
+ <https://www.broadband-forum.org/technical/download/
+ TR-355.pdf>";
+ }
+
+ typedef name-string {
+ type string {
+ length "1..64";
+ }
+ description
+ "Used where a string is needed which has a maximum length of
+ 64 characters and a minimum length of 1 character.";
+ }
+
+ typedef percent {
+ type uint8 {
+ range "0..100";
+ }
+ units "percentage";
+ description
+ "A percentage.";
+ }
+
+ typedef performance-counter32 {
+ type uint32;
+ description
+ "The 'performance-counter32' type represents a non-negative
+ integer that monotonically increases until it reaches a maximum
+ value of 2^32-1 (4294967295 decimal), but does not wrap around
+ once the maximum value is reached.";
+ }
+
+ typedef performance-counter32-or-inactive {
+ type union {
+ type uint32;
+ type enumeration {
+ enum inactive {
+ description
+ "Indicates that this counter is not active.";
+ }
+ }
+ }
+ description
+ "The 'performance-counter32-or-inactive' type represents a
+ non-negative integer that monotonically increases until it
+ reaches a maximum value of 2^32-1 (4294967295 decimal), but
+ does not wrap around once the maximum value is reached.
+
+ A special value (enum inactive) indicates that this counter
+ is not active.";
+ }
+
+ typedef performance-counter64 {
+ type uint64;
+ description
+ "The 'performance-counter64' type represents a non-negative
+ integer that monotonically increases until it reaches a maximum
+ value of 2^64-1 (18446744073709551615 decimal), but does not
+ wrap around once the maximum value is reached.";
+ }
+
+ typedef string-ascii63-or-empty {
+ type string {
+ length "0..63";
+ pattern '[ -~]*';
+ // allows the 95 printable ASCII characters
+ }
+ description
+ "Used where a string is needed which has a maximum length of
+ 63 characters and also allows for a null string (length = 0).
+
+ The character set is limited to the 95 printable ASCII
+ characters.";
+ }
+
+ typedef string-ascii64 {
+ type string {
+ length "1..64";
+ pattern '[ -~]*';
+ }
+ description
+ "Used where a string is represented using at least 1 and no more
+ than 64 ASCII characters.
+
+ The character set is limited to the 95 printable ASCII
+ characters.";
+ }
+
+ typedef string-ascii64-or-empty {
+ type string {
+ length "0..64";
+ pattern '[ -~]*';
+ }
+ description
+ "Used where a string is needed which has a maximum length of
+ 64 characters and also allows for a null string (length = 0).
+
+ The character set is limited to the 95 printable ASCII
+ characters.";
+ }
+
+ typedef undetermined {
+ type enumeration {
+ enum undetermined {
+ description
+ "Indicates the value is not determined.";
+ }
+ }
+ description
+ "A type which defines an enumeration representing when
+ the value for an object is not determined. Often, this is
+ combined with other data via a union acting as a special value
+ to indicate the undetermined state.";
+ }
+
+ typedef data-rate32 {
+ type uint32;
+ units "kbits/second";
+ description
+ "A type which represents the rate at which data is being
+ transferred.";
+ }
+
+ typedef data-rate32-or-undetermined {
+ type union {
+ type undetermined;
+ type data-rate32;
+ }
+ units "kbits/second";
+ description
+ "A type which represents the rate at which data is being
+ transferred. A special value, 'undetermined', is used to
+ indicate the data rate is undetermined.";
+ }
+}