openconfig-system-grpc

This module adds configuration and operational state relating to gRPC services running on a network device. The GRPC_SERVICE ide...

  • Version: 2022-04-19

    openconfig-system-grpc@2022-04-19


    
      module openconfig-system-grpc {
    
        yang-version 1;
    
        namespace
          "http://openconfig.net/yang/system-grpc";
    
        prefix oc-sys-grpc;
    
        import openconfig-extensions {
          prefix oc-ext;
        }
        import openconfig-system {
          prefix oc-sys;
        }
        import openconfig-inet-types {
          prefix oc-inet;
        }
        import openconfig-network-instance {
          prefix oc-ni;
        }
    
        organization "OpenConfig working group";
    
        contact "www.openconfig.net";
    
        description
          "This module adds configuration and operational state relating to gRPC
        services running on a network device. The GRPC_SERVICE identity is used
        to create an extensible list of services that can be instantiated, with
        a base set defined in this module. New services can extend the identity
        to be included in the list.";
    
        revision "2022-04-19" {
          description
            "Description and default value updates for grpc-server
          implementation guidance.";
          reference
            "1.0.0";
    
        }
    
        revision "2021-06-16" {
          description
            "Remove trailing whitespace";
          reference
            "0.1.1";
    
        }
    
        revision "2021-03-30" {
          description "Initial revision.";
          reference
            "0.1.0";
    
        }
    
        oc-ext:openconfig-version "1.0.0";
        oc-ext:catalog-organization "openconfig";
        oc-ext:origin "openconfig";
    
        identity GRPC_SERVICE {
          description
            "Base identity for a gRPC-based service.";
        }
    
        identity GNMI {
          base GRPC_SERVICE;
          description
            "gNMI: gRPC Network Management Interface";
        }
    
        grouping grpc-service-structural {
          description
            "Structural grouping for gRPC services that can be enabled on
          the system.";
          container grpc-servers {
            description
              "List of gRPC servers that can be configured on the device.";
            list grpc-server {
              key "name";
              description
                "The list of gRPC servers that are running on the device. Each
              instance within this list corresponds to an individual gRPC listener
              that listens on a single TCP port on the specified addresses.
              Where there are multiple services that run on a single port, these
              are enabled through the service leaf-list which uses the GRPC_SERVICE
              identity to list the supported service types.";
              leaf name {
                type leafref {
                  path "../config/name";
                }
                description
                  "Reference to the name of the service that is to be enabled.";
              }
    
              container config {
                description
                  "Configuration parameters relating to the gRPC service.";
                uses grpc-server-config;
              }  // container config
    
              container state {
                config false;
                description
                  "Operational state relating to the gRPC service.";
                uses grpc-server-config;
              }  // container state
            }  // list grpc-server
          }  // container grpc-servers
        }  // grouping grpc-service-structural
    
        grouping grpc-server-config {
          description
            "Configuration parameters corresponding to an individual gRPC
          server.";
          leaf name {
            type string;
            default "DEFAULT";
            description
              "The name of the gRPC server instance that is running on
            the local system.
    
            If the operator does not designate a name for the protocol
            instance (e.g. config), the implementation should use the
            name of 'DEFAULT' (e.g. state).  In addition, for
            implementations that support a single gRPC server instance,
            the default value is recommended for consistency.";
          }
    
          leaf-list services {
            type identityref {
              base GRPC_SERVICE;
            }
            description
              "The gRPC service definitions that should be enabled for the
            specified server. A target may support only specific
            sets of services being enabled on the same server (e.g.,
            it may be possible to run gNMI and gNOI services on the same
            port, but not to run gRIBI and gNMI on the same port).
    
            The set of gRPC services that are available to be configured is
            defined through the GRPC_SERVICE identity, which can be extended
            for each protocol that is based on gRPC that is available on the
            device.";
          }
    
          leaf enable {
            type boolean;
            description
              "When set to true, the gRPC server is enabled and runs on the
            local device.";
          }
    
          leaf port {
            type oc-inet:port-number;
            description
              "TCP port on which the gRPC server should listen.";
          }
    
          leaf transport-security {
            type boolean;
            default 'true';
            description
              "Use gRPC transport security (e.g., SSL or TLS). Enabled by default.
            This leaf allows transport security to be disabled for use cases that
            are not supported, such as lab testing.";
          }
    
          leaf certificate-id {
            type string;
            description
              "Name of the certificate that is associated with the gRPC service. The
            certificate ID is provisioned through other interfaces to the device, such
            as the gNOI certificate management service.";
          }
    
          leaf metadata-authentication {
            type boolean;
            description
              "When set to true, metadata authentication is enabled for the gRPC server.
            In this mode of operation, gRPC metadata is used to carry authentication
            credentials as per the specification in
            https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-authentication.md#credentials-and-authentication.";
          }
    
          leaf-list listen-addresses {
            type union {
              type oc-inet:ip-address;
              type enumeration {
                enum "ANY" {
                  value 0;
                  description
                    "The gRPC server should listen on any address bound to an interface
                  of the system.";
                }
              }
            }
            description
              "The IP addresses that the gRPC server should listen on. This may be
            an IPv4 or an IPv6 address (or both).";
          }
    
          leaf network-instance {
            type oc-ni:network-instance-ref;
            description
              "The network instance within which the gRPC server is listening.
            When unspecified, the DEFAULT_INSTANCE should be used.";
          }
        }  // grouping grpc-server-config
    
        augment /oc-sys:system {
          description
            "Add gRPC service configuration to the openconfig-system model.";
          uses grpc-service-structural;
        }
      }  // module openconfig-system-grpc
    

© 2023 YumaWorks, Inc. All rights reserved.