This module contains a collection of YANG definitions for supporting the Broadband Forum requirements on network functions as ap...
Version: 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.