Add initial support for provisioning and removing services, getting service data
Change-Id: Ie49206d788a202e70a8d64f083c3f85b92ced8fb
diff --git a/build/yang-files/services/bbf-l2-access-attributes.yang b/build/yang-files/services/bbf-l2-access-attributes.yang
new file mode 100644
index 0000000..85bf697
--- /dev/null
+++ b/build/yang-files/services/bbf-l2-access-attributes.yang
@@ -0,0 +1,342 @@
+module bbf-l2-access-attributes {
+ yang-version 1.1;
+ namespace "urn:bbf:yang:bbf-l2-access-attributes";
+ prefix bbf-l2access-attr;
+
+ import bbf-dot1q-types {
+ prefix bbf-dot1qt;
+ }
+ import ietf-network {
+ prefix nw;
+ }
+ import ietf-network-topology {
+ prefix nt;
+ }
+
+ 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: TBD
+
+ PS Leader: TBD
+
+ WA Director: TBD";
+ description
+ "This module contains a collection of YANG definitions for
+ simplifying the Access Device Model as exposed over NBI of BAA.
+
+ Copyright (c) 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-383a4; see
+ the TR itself for full legal notices.";
+
+ revision 2021-09-30 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8944: A YANG Data Model for Layer 2 Network Topologies";
+ }
+
+ grouping access-tag {
+ leaf tag-type {
+ type union {
+ type bbf-dot1qt:dot1q-tag-type;
+ type uint16;
+ type enumeration {
+ enum any {
+ description
+ "Matches any tag type.";
+ }
+ }
+ }
+ default "any";
+ description
+ "VLAN tag type.";
+ }
+ leaf vlan-id {
+ type union {
+ type bbf-dot1qt:vlan-id-range;
+ type enumeration {
+ enum any {
+ description
+ "Matches any VLAN-ID in the range 1 to 4094, or
+ matches priority tagged frames.";
+ }
+ enum priority-tagged {
+ description
+ "Priority-tagged frames are frames with a VLAN tag
+ present and that match VLAN-ID 0.";
+ }
+ enum vlan-id-is-a-parameter {
+ description
+ "The VLAN ID is not
+ specified inside this profile but has to be
+ specified at the place where this profile
+ is referenced.";
+ }
+ }
+ }
+ mandatory true;
+ description
+ "Allowed VLAN-IDs.";
+ }
+ leaf pbit {
+ type union {
+ type bbf-dot1qt:pbit-list;
+ type enumeration {
+ enum any {
+ description
+ "Matches any pbit value in the range of 0 to 7.";
+ }
+ }
+ }
+ description
+ "Allowed PBIT values.";
+ }
+ }
+
+ grouping access-vlan-tag-match {
+ description
+ "Flexible match on the VLAN tags of Ethernet frames.";
+ choice vlan-tag-match-type {
+ description
+ "Provides a choice of how the frames may be matched.";
+ case untagged {
+ leaf untagged {
+ type empty;
+ description
+ "Untagged match. Matches all untagged traffic.";
+ }
+ }
+ case vlan-tagged {
+ container outer-tag {
+ description
+ "Classifies traffic using the outermost VLAN tag on the
+ frame.";
+ uses access-tag;
+ }
+ container second-tag {
+ description
+ "Classifies traffic using the second outermost VLAN tag
+ on the frame.";
+ uses access-tag;
+ }
+ }
+ }
+ }
+
+ grouping access-vlan-tag-rewrite {
+ description
+ "Flexible match on the VLAN tags of Ethernet frames.";
+ leaf pop-tags {
+ type uint8 {
+ range "0..2";
+ }
+ description
+ "The number of tags to pop.";
+ }
+ container push-outer-tag {
+ description
+ "The outermost VLAN tag to push onto the frame.";
+ uses access-tag;
+ }
+ container push-second-tag {
+ description
+ "The second outermost VLAN tag to push onto the frame.";
+ uses access-tag;
+ }
+ }
+
+ grouping vlan-match-and-rewrite {
+ description
+ "Configuration of frame vlan tag processing, include frame classification and vlan tag rewrite";
+ container match-criteria {
+ description
+ "This container collects match criteria for various frame fields.";
+ uses access-vlan-tag-match;
+ }
+ container ingress-rewrite {
+ description
+ "Ingress rewrite refers to the supported tag manipulations
+ before the frame is offered to a higher layer interface or
+ to a forwarder or to a destination termination-point.";
+ uses access-vlan-tag-rewrite;
+ }
+ }
+
+ grouping l2-access-attributes {
+ description
+ "Flexible match on the VLAN tags of Ethernet frames.";
+ container vlan-translation {
+ leaf translation-profile {
+ type leafref {
+ path
+ "/bbf-l2access-attr:vlan-translation-profiles/bbf-l2access-attr:"
+ + "vlan-translation-profile/bbf-l2access-attr:name";
+ }
+ description
+ "A reference to a vlan translation profile that contains
+ frame vlan classification and vlan tag rewrite.";
+ }
+ leaf outer-vlan-id {
+ when
+ '/bbf-l2access-attr:vlan-translation-profiles/'
+ + 'bbf-l2access-attr:vlan-translation-profile[bbf-l2access-attr:'
+ + 'name = current()/../../vlan-translation-profile]/'
+ + 'match-criteria/outer-tag/vlan-id = '
+ + '"vlan-id-is-a-parameter" ' {
+ description
+ "Match criteria for the outer VLAN tag of a frame that
+ overrules the match criteria provided through the
+ referenced vlan translaton profile.";
+ }
+ type bbf-dot1qt:vlan-id;
+ }
+ leaf second-vlan-id {
+ when
+ '/bbf-l2access-attr:vlan-translation-profiles/'
+ + 'bbf-l2access-attr:vlan-translation-profile[bbf-l2access-attr:'
+ + 'name = current()/../../vlan-translation-profile]/'
+ + 'match-criteria/second-tag/vlan-id = '
+ + '"vlan-id-is-a-parameter" ' {
+ description
+ "Match criteria for the second VLAN tag of a frame that
+ overrules the match criteria provided through the
+ referenced vlan translaton profile.";
+ }
+ type bbf-dot1qt:vlan-id;
+ }
+ leaf push-outer-vlan-id {
+ when
+ '/bbf-l2access-attr:vlan-translation-profiles/'
+ + 'bbf-l2access-attr:vlan-translation-profile[bbf-l2access-attr:'
+ + 'name = current()/../../vlan-translation-profile]/'
+ + 'ingress-rewrite/push-outer-tag/vlan-id = '
+ + '"vlan-id-is-a-parameter" ' {
+ description
+ "Indicates the VLAN ID of the pushed outer VLAN tag,
+ which overwrites the outer VLAN tag rewritten
+ by the referenced VLAN translation profile.";
+ }
+ type bbf-dot1qt:vlan-id;
+ }
+ leaf push-second-vlan-id {
+ when
+ '/bbf-l2access-attr:vlan-translation-profiles/'
+ + 'bbf-l2access-attr:vlan-translation-profile[bbf-l2access-attr:'
+ + 'name = current()/../../vlan-translation-profile]/'
+ + 'ingress-rewrite/push-second-tag/vlan-id = '
+ + '"vlan-id-is-a-parameter" ' {
+ description
+ "Indicates the VLAN ID of the pushed seconed VLAN tag,
+ which overwrites the seconed VLAN tag rewritten
+ by the referenced VLAN translation profile.";
+ }
+ type bbf-dot1qt:vlan-id;
+ }
+ }
+ }
+
+ container vlan-translation-profiles {
+ description
+ "Configuration of VLAN translation profiles.";
+ list vlan-translation-profile {
+ key "name";
+ description
+ "A translation profile defines the vlan match criteria and
+ vlan tag rewrite.";
+ leaf name {
+ type string;
+ description
+ "vlan translaton profile name.";
+ }
+ uses vlan-match-and-rewrite;
+ }
+ }
+ container vlan-forwarding-profiles {
+ description
+ "Configuration of VLAN forwarding profiles.";
+ list vlan-forwarding-profile {
+ key "name";
+ description
+ "A forwarding profile defines the network-side
+ forwarding of traffic in a forwarding VLAN.";
+ leaf name {
+ type string;
+ description
+ "vlan forwrding profile name.";
+ }
+ container forwarding-ports {
+ description
+ "Network-side forwarding ports in the forwarding profile.";
+ list port {
+ key "name";
+ leaf name {
+ type string;
+ description
+ "forwarding port name.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "/nw:networks/nw:network/nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "This leaf references a network side node.";
+ }
+ leaf tp-ref {
+ type leafref {
+ path "/nw:networks/nw:network/"
+ + "nw:node/nt:termination-point/nt:tp-id";
+ require-instance false;
+ }
+ description
+ "This leaf references a network side termination point types.";
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file