bbf-kafka-agent

This module contains a collection of YANG definitions for supporting the Broadband Forum requirements for Kafka agent functional...

  • Version: 2022-06-07

    bbf-kafka-agent@2022-06-07


    
      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>
         SDN/NFV Work Area";
    
        contact
          "Comments or questions about this Broadband Forum YANG module
         should be directed to <mailto:help@broadband-forum.org>.
    
         Editor:      Tim Carey, Nokia
    
         Editor:      Jeff Hartley, Commscope
    
         WA Director: Mengmeng Li, China Mobile
    
         WA Director: Bruno Cornaglia, Vodafone";
    
        description
          "This module contains a collection of YANG definitions for
         supporting the Broadband Forum requirements for Kafka agent
         functionality as described in TR-451.
    
         Copyright (c) 2019-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-451; see
         the TR itself for full legal notices.";
    
        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 to
           the broker on specific topics.";
        }
    
        feature message-consumption {
          description
            "Indicates that the agent supports consumption of message from
           the broker on specific topics.";
        }
    
        feature kafka-agent {
          description
            "Indicates that the network function client supports
           Kafka as a message transport protocol.";
        }
    
        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
              "For topics that are partitioned, the partition used for
             production and consumption.";
          }
        }  // 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 client/consumer (agent) uses
             to identify the source of a message.";
          }
    
          container publication-parameters {
            if-feature bbf-kafkaa:message-publication;
            description
              "The Kafka agent publication properties.";
            list topic {
              key "name";
              description
                "The topics the agent will 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 identifier of the group that the consumer can
               participate in.";
            }
    
            list topic {
              key "name";
              description
                "The topics the agent will 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
                "A user-ordered list of access points that the client will
               attempt to connect to in the specified sequence. Defining
               more than one enables high-availability.";
              leaf name {
                type bbf-yang:string-ascii64;
                description
                  "An arbitrary name for the access point.";
              }
    
              container kafka-agent-transport-parameters {
                description
                  "Kafka agent transport parameters.";
                choice tcp-client-options {
                  description
                    "Replicate some pre-standard IETF client/server
                   options in-file, and provide a place to add IETF
                   client/server stack options post-standard in the
                   future.";
                  container remote-port {
                    description
                      "The remote port identified by a client.";
                    leaf remote-port {
                      type inet:port-number;
                      default "9092";
                      description
                        "The client will attempt to connect to the
                         common port value for 'kafka' (9092) if no
                         value is specified.";
                    }
                  }  // 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
    

© 2023 YumaWorks, Inc. All rights reserved.