bbf-kafka-agent

This module contains a collection of YANG definitions for supporting the Broadband Forum requirements on network functions as ap...

  • Version: 2023-12-15

    bbf-kafka-agent@2023-12-15


    
      module bbf-kafka-agent {
    
        yang-version 1.1;
    
        namespace "urn:bbf:yang:bbf-kafka-agent";
    
        prefix bbf-kafkaa;
    
        import bbf-yang-types {
          prefix bbf-yang;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import ietf-yang-types {
          prefix 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 network functions
         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 a set of common groupings to
         support Kafka agents that operate as Kafka clients to read,
         write, and process streams of events via Kafka brokers (servers)
         to communicate between individual network functions.
    
         Copyright (c) 2017-2023, 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-383a7; see
         the TR itself for full legal notices.";
    
        revision "2023-12-15" {
          description
            "Amendment 7.
           * Approval Date:    2023-12-15.
           * Publication Date: 2023-12-15.";
          reference
            "TR-383a7: Common YANG Modules
            	  <https://www.broadband-forum.org/technical/download/
            		   TR-383_Amendment-7.pdf>";
    
        }
    
        revision "2022-06-07" {
          description
            "Issue 1.
           * Approval Date:    2022-06-07.
           * Publication Date: 2022-06-07.";
          reference
            "TR-451: vOMCI Specification
            	<https://www.broadband-forum.org/technical/download/
            		 TR-451_Issue-1.pdf>";
    
        }
    
    
        feature message-publication {
          description
            "Indicates that the agent supports publication of messages
           (events) to the broker on specific topics.";
        }
    
        feature message-consumption {
          description
            "Indicates that the agent supports consumption of messages
           (events) from the broker on specific topics.";
        }
    
        feature kafka-agent {
          description
            "Indicates that the network function supports Kafka agent
           operating as a Kafka client.";
        }
    
        grouping kafka-topic-parameters {
          description
            "Data nodes for configuring Kafka topics.";
          leaf name {
            type string;
            mandatory true;
            description "The name of the topic.";
          }
    
          leaf purpose {
            type string;
            description
              "The purpose of the topic (e.g., VOMCI_NOTIFICATION,
             VOMCI_REQUEST, VOMCI_RESPONSE).";
          }
    
          leaf partition {
            type string;
            description
              "The partition of the topic to be used for publication and
             consumption of messages.
    
             The name of the partition is required if the Kafka topic is
             divided into several partitions, meaning that the topic is
             spread over a number of 'buckets' located on different Kafka
             brokers.";
          }
        }  // grouping kafka-topic-parameters
    
        grouping kafka-agent {
          description
            "Data nodes for configuring a Kafka agent.
    
           Note that this grouping uses fairly typical descendant node
           names such that a stack of 'uses' statements will have name
           conflicts. It is intended that the consuming data model will
           resolve the issue (e.g., by wrapping the 'uses' statement in a
           container). This model purposely does not do this itself so as
           to provide maximum flexibility to consuming models.";
          leaf client-id {
            type string;
            mandatory true;
            description
              "The identifier that the Kafka agent is to use as a Kafka
             client to identify itself as a consumer or producer of
             messages (events).";
          }
    
          container publication-parameters {
            if-feature bbf-kafkaa:message-publication;
            description
              "The Kafka agent publication properties.";
            list topic {
              key "name";
              description
                "A topic the Kafka agent is to publish.";
              uses kafka-topic-parameters;
            }  // list topic
          }  // container publication-parameters
    
          container consumption-parameters {
            if-feature bbf-kafkaa:message-consumption;
            description
              "The Kafka agent consumption properties.";
            leaf group-id {
              type string;
              mandatory true;
              description
                "The consumer Group Id that is to associate this consumer
               with a consumer group, whereby each consumer within the
               group will ideally read from one partition of the topic.";
            }
    
            list topic {
              key "name";
              description
                "A topic the Kafka agent is to consume.";
              uses kafka-topic-parameters;
            }  // list topic
          }  // container consumption-parameters
        }  // grouping kafka-agent
    
        grouping kafka-agent-transport {
          description
            "The Kafka agent specific configuration for the connection.";
          container kafka-agent {
            if-feature bbf-kafkaa:kafka-agent;
            description
              "A wrapper around the Kafka agent parameters to avoid name
             collisions.";
            uses bbf-kafkaa:kafka-agent;
    
            list access-point {
              key "name";
              min-elements 1;
              ordered-by user;
              description
                "An access point to a Kafka broker that a Kafka agent
               operating as a Kafka client may attempt to connect to in
               the order defined by the user.
    
               Defining more than one access point enables high-
               availability.";
              leaf name {
                type bbf-yang:string-ascii64;
                description
                  "An arbitrary name for the access point.";
              }
    
              container kafka-agent-transport-parameters {
                description
                  "Parameters to establish a transport layer from the Kafka
                 agent (Kafka client) to the Kafka broker.";
                choice tcp-client-options {
                  description
                    "Selects between possible TCP transport layer
                   configuration options.";
                  container remote-port {
                    description
                      "The port of the remote host over which a TCP
                       session is to be established to the Kafka broker.";
                    leaf remote-port {
                      type inet:port-number;
                      default "9092";
                      description
                        "The destination port on the remote host to which
                         the Kafka agent as Kafka client is to attempt to
                         establish a TCP session with the Kafka broker.";
                    }
                  }  // container remote-port
                }  // choice tcp-client-options
              }  // container kafka-agent-transport-parameters
    
              notification remote-endpoint-status-change {
                description
                  "A notification traceable to a client remote-endpoint
                 and access-point. This notification is sent when a
                 remote-endpoint is connected or disconnected.";
                leaf connected {
                  type boolean;
                  mandatory true;
                  description
                    "New remote-endpoint status.";
                }
    
                leaf last-changed {
                  type yang:date-and-time;
                  mandatory true;
                  description
                    "The system date and time when the
                   remote-endpoint was connected or disconnected.";
                }
              }  // notification remote-endpoint-status-change
            }  // list access-point
          }  // container kafka-agent
        }  // grouping kafka-agent-transport
      }  // module bbf-kafka-agent
    

© 2024 YumaWorks, Inc. All rights reserved.