yumaworks-db-api

YumaPro Database API Sub-Agent message definitions. Copyright (c) 2014 - 2020, YumaWorks, Inc. All rights reserved. Redistribu...

  • Version: 2020-02-19

    yumaworks-db-api@2020-02-19


    
      module yumaworks-db-api {
    
        yang-version 1;
    
        namespace
          "http://yumaworks.com/ns/yumaworks-db-api";
    
        prefix ydb;
    
        import ietf-yang-types {
          prefix yang;
        }
        import ietf-yang-patch {
          prefix yp;
        }
        import yumaworks-ycontrol {
          prefix yctl;
        }
        import yuma-ncx {
          prefix ncx;
        }
        import yuma-types {
          prefix yt;
        }
    
        organization "YumaWorks, Inc.";
    
        contact
          "Support <support at yumaworks.com>";
    
        description
          "YumaPro Database API Sub-Agent message definitions.
    
         Copyright (c) 2014 - 2020, YumaWorks, Inc. All rights reserved.
    
         Redistribution and use in source and binary forms, with or
         without modification, is permitted pursuant to, and subject
         to the license terms contained in, the BSD 3-Clause License
         http://opensource.org/licenses/BSD-3-Clause";
    
        revision "2020-02-19" {
          description
            "Add subrpc-request and subrpc-response messages.";
        }
    
        revision "2019-01-27" {
          description
            "Add allowed parameter to maintenance mode.
               Add db-lock messages";
        }
    
        revision "2018-11-13" {
          description
            "Add maintenance mode and set-loglevel support";
        }
    
        revision "2018-06-13" {
          description
            "Add skip-sil parameter to edit-request message";
        }
    
        revision "2018-05-31" {
          description
            "Add parameters to getconfig message";
        }
    
        revision "2017-10-30" {
          description "Add getconfig message";
        }
    
        revision "2017-09-19" {
          description
            "Fix broken augment statement for payload";
        }
    
        revision "2016-08-29" {
          description "Update yp-ha-mode event";
        }
    
        revision "2016-07-31" {
          description
            "Add new events to support YP-HA mode changes.";
        }
    
        revision "2015-03-29" {
          description
            "Add edit-type parameter to edit-request.";
        }
    
        revision "2014-11-18" {
          description
            "Initial version for datastore access.";
        }
    
    
        grouping lock-id {
          leaf lock-id {
            type string {
              length "1 .. 64";
            }
            mandatory true;
            description
              "The lock identifier sent by the server in the
               db-lock request. Used to prevent late replies
               from being interpreted as a reply to a new reuest.";
          }
        }  // grouping lock-id
    
        augment /yctl:ycontrol/yctl:message-payload/yctl:payload/yctl:payload {
          container db-api {
            choice message-type {
              mandatory true;
              leaf register-request {
                type empty;
                description
                  "Message type: subsys-request;
                  Purpose: register the DB-API subsystem
                  Expected Response Message: ok or error";
              }
              container edit-request {
                description
                  "Message type: subsys-request;
                  Purpose: Ask the main server to accept an edit request
                  to be added to the running configuration, and saved to
                  NV-storage unless the :startup capability is supported.
    
                  Expected Response Message: ok or error";
                leaf target {
                  type string;
                  mandatory true;
                  description
                    "Identifies the target resource for the edit
                    operation.";
                }
    
                leaf edit-type {
                  type enumeration {
                    enum "user" {
                      value 0;
                      description
                        "A user edit with access control";
                    }
                    enum "system" {
                      value 1;
                      description
                        "A system edit without access control";
                    }
                  }
                  default 'user';
                  description
                    "Indicates whether this is a user edit or system edit.
                    System edits will bypass all access control enforcement,
                    including the ncx:user-write extension.";
                }
    
                leaf skip-sil {
                  type boolean;
                  default 'true';
                  description
                    "Skip the SIL and SIL-SA callbacks for this transaction.
                    This is the normal mode since the DB-API edit is
                    generated by the system, so the edits do not need
                    to be applied again by the server.";
                }
    
                uses yp:yang-patch;
              }  // container edit-request
              container yp-ha-mode {
                description
                  "Message type: subsys-request;
                  Purpose: send mode change request to the server
                  Expected Response Message: ok or error";
                choice action {
                  mandatory true;
                  leaf go-active {
                    type empty;
                    description
                      "Become the YP-HA active server.
                       All normal management operations are supported
                       in this mode.";
                  }
                  container go-standby {
                    description
                      "Become a YP-HA standby server, and try to connect
                       to the active server 'new-active'. Only the superuser
                       can use management sesssions in this mode.";
                    leaf new-active {
                      type string;
                      mandatory true;
                      description
                        "Server name of the active server to use";
                    }
                  }  // container go-standby
                  leaf go-none {
                    type empty;
                    description
                      "Leave current YP-HA role and wait new role.
                       Only the superuser can use management sesssions
                       in this mode.";
                  }
                }  // choice action
              }  // container yp-ha-mode
              container getconfig {
                description
                  "Message type: subsys-request;
                  Purpose: Ask the main server to send the running
                  configuration contents
    
                  Expected Response Message: config";
                leaf withdef {
                  type boolean;
                  default 'false';
                  description
                    "Include defaults (according to the server
                       --default-style CLI parameter) if 'true'.
                       Do not include defaults if 'false'.";
                }
    
                leaf with-state {
                  type boolean;
                  default 'false';
                  description
                    "Include operational data (like <get> operation)";
                }
    
                leaf xpath-filter {
                  type yang:xpath1.0;
                  description
                    "XPath filter to use for this retrieval operation";
                }
              }  // container getconfig
              container config {
                ncx:root;
                description
                  "Message type: server-response;
                  Purpose: Provide the contents of the running
                  configuration contents
    
                  Expected Response Message: none";
              }  // container config
              container enter-maintmode {
                description
                  "Message type: subsys-request.
                  Purpose: Enter maintenance mode.
                  Expected Response Message: server-response
                  The server will send ok or error.";
                leaf allowed {
                  type bits {
                    bit read {
                      position 0;
                      description
                        "Allow client sessions for operations that
                         read datastores or operational data.";
                    }
                    bit operation {
                      position 1;
                      description
                        "Allow client sessions for general operations
                         that do not access any datastores.";
                    }
                  }
                  default "";
                  description
                    "The client activity that is allowed during
                     maintenance mode. By default client sessions
                     are disabled during maintenance mode, and any
                     existing sessions will get 'access-denied' errors
                     for all operations started after maintenance mode
                     is started.";
                }
              }  // container enter-maintmode
              container exit-maintmode {
                description
                  "Message type: subsys-request.
                  Purpose: Exit maintenance mode.
                  Expected Response Message: server-response
                  The server will send ok or error.";
              }  // container exit-maintmode
              container set-log-level {
                description
                  "Message type: subsys-request.
                  Purpose: Set the log-level parameter.
                  Expected Response Message: server-response
                  The server will send ok or error.";
                leaf log-level {
                  type yt:NcDebugType;
                  mandatory true;
                  description
                    "The new log level to set";
                }
              }  // container set-log-level
              container db-lock-init {
                description
                  "Message type: subsys-request.
                  Purpose: Establish the subsystem as the DB-Edit-Lock
                  controller. This is done once after the db-api service
                  is registered.
                  Expected Response Message: server-response
                  The server will send ok or error.";
              }  // container db-lock-init
              container db-lock {
                description
                  "Message type: server-request.
                  Purpose: Request the system config write lock.
                  Expected Response Message: subsys-response
                  The subsystem will send db-lock-response or error.";
                uses lock-id;
              }  // container db-lock
              container db-lock-response {
                description
                  "Message type: subsys-response.
                  Purpose: Response for the system config write lock.
                  Expected Response Message: none";
                uses lock-id;
              }  // container db-lock-response
              container db-unlock {
                description
                  "Message type: server-event.
                  Purpose: Release the system config write lock.
                  Expected Response Message: none";
                uses lock-id;
              }  // container db-unlock
              container subrpc-request {
                description
                  "Message type: subsys-request;
                  Purpose: Start an RPC transaction to the main server.
    
                  This message requests that a new remote procedure
                  call be validated and invoked on the server and
                  possibly one or more SIL-SA subsystems.
    
                  If not valid or if the operation cannot be performed,
                  the server must return an error.
    
                  Expected Response Message: subrpc-response";
                leaf user-id {
                  type string;
                  description
                    "Identifies the user that should be used for
                     access control and logging purposes.
                     If not present then the system user will be used
                     and all access control will be skipped.";
                }
    
                leaf rpc-module {
                  type yt:NcxName;
                  description
                    "Identifies the module name of the RPC definition.
                     If not present then the server will use the first
                     RPC method with the same name as 'rpc-name'.";
                }
    
                leaf rpc-name {
                  type yt:NcxName;
                  mandatory true;
                  description
                    "Identifies the name of the RPC definition.";
                }
    
                anyxml rpc-method {
                  description
                    "Contains the RPC method element and all child nodes
                     representing the input parameters. This is structured
                     exactly the same as the contents of an <rpc> element
                     from RFC 6241. If not present then an empty method
                     element will be constructed using 'rpc-module' and
                     'rpc-name' values.";
                }
              }  // container subrpc-request
              container subrpc-response {
                description
                  "Message type: server-response
                  Purpose: Return <rpc-reply> message
                  Expected Response Message: none";
                leaf rpc-module {
                  type yt:NcxName;
                  mandatory true;
                  description
                    "Identifies the module name of the RPC definition.";
                }
    
                leaf rpc-name {
                  type yt:NcxName;
                  mandatory true;
                  description
                    "Identifies the name of the RPC definition.";
                }
    
                anyxml reply {
                  mandatory true;
                  description
                    "Contains the RPC reply message for the subrpc-request.";
                }
              }  // container subrpc-response
            }  // choice message-type
          }  // container db-api
        }
      }  // module yumaworks-db-api
    

© 2023 YumaWorks, Inc. All rights reserved.