Remove trailing whitespace in all files 82/85782/1
authorThanh Ha <zxiiro@gmail.com>
Fri, 15 Nov 2019 18:22:08 +0000 (13:22 -0500)
committerThanh Ha <zxiiro@gmail.com>
Fri, 15 Nov 2019 18:23:07 +0000 (13:23 -0500)
Trailing whitespace is a waste of space and does not have any
visual impact. This patch adds a hook that will automatically
remove trailing whitespace in all files.

Change-Id: I6bb749defae313ebd1b8b75ece54d35669fd8546
Signed-off-by: Thanh Ha <zxiiro@gmail.com>
40 files changed:
.pre-commit-config.yaml
csit/suites/sfc/Full_Deploy/setup-docker-image.sh
csit/testplans/persistence-basic.txt
csit/variables/bier/bier_node_configuration/query_link/post_data.json
csit/variables/gbp/6node/demo-asymmetric-chain/master/tenants.json
csit/variables/gbp/ios-xe-schemas/ietf-inet-types@2013-07-15.yang
csit/variables/gbp/ios-xe-schemas/ietf-netconf@2011-06-01.yang
csit/variables/gbp/ios-xe-schemas/ietf-yang-types@2013-07-15.yang
csit/variables/gbp/ios-xe-schemas/ned@2016-03-08.yang
csit/variables/gbp/ios-xe-schemas/tailf-cli-extensions@2015-03-19.yang
csit/variables/gbp/ios-xe-schemas/tailf-common@2015-05-22.yang
csit/variables/gbp/ios-xe-schemas/tailf-meta-extensions@2013-11-07.yang
csit/variables/netvirt/monitor_interval/data.json
csit/variables/ovsdb/create_ext_subnet.json
csit/variables/xmls/f158.xml
csit/variables/xmls/f159.xml
csit/variables/xmls/f160.xml
csit/variables/xmls/f212.xml
csit/variables/xmls/f213.xml
csit/variables/xmls/f214.xml
csit/variables/xmls/f215.xml
csit/variables/xmls/f216.xml
csit/variables/xmls/f217.xml
csit/variables/xmls/f49.xml
csit/variables/xmls/g1.xml
csit/variables/xmls/g2.xml
tools/clustering/cluster-debugging/transaction-tracking/extract.sh
tools/clustering/cluster-deployer/templates/dsbenchmark/module-shards.conf.template
tools/clustering/cluster-deployer/templates/dsbenchmark/modules.conf.template
tools/clustering/cluster-deployer/templates/dsbenchmark/org.opendaylight.controller.cluster.datastore.cfg.template
tools/clustering/cluster-deployer/templates/multi-node-test/akka.conf.template
tools/clustering/cluster-deployer/templates/multi-node-test/module-shards.conf.template
tools/clustering/cluster-deployer/templates/multi-node-test/modules.conf.template
tools/clustering/cluster-deployer/templates/openflow/module-shards.conf.template
tools/deployment/openstack_ha/deploy/README.md
tools/odl-mdsal-clustering-tests/clustering-performance-test/README
tools/odl-mdsal-clustering-tests/config/modules.conf
tools/tools_vm/scripts/start_mininet_of10.sh
tools/wcbench/README.md
tools/wcbench/wcbench.sh

index 2598d437f625971b97e5ebd4c1871b1d314de196..6514c9e44d090b78d9aa752b97468831db4b1b1e 100644 (file)
@@ -5,6 +5,7 @@
     - id: flake8
       language_version: python2
       additional_dependencies: ['flake8~=3.5.0']
+    - id: trailing-whitespace
 
 - repo: https://github.com/pre-commit/mirrors-autopep8
   rev: v1.4.4
index 58ab38b2230353cc9030f01b547760f3fe85ebe1..62c1ca6b8353fda160a2904d03f0f9bb0994fb58 100755 (executable)
@@ -73,7 +73,7 @@ chmod a+x configure-ovs.sh
 wget https://raw.githubusercontent.com/socketplane/docker-ovs/master/supervisord.conf
 wget https://pypi.python.org/packages/source/s/supervisor-stdout/supervisor-stdout-0.1.1.tar.gz --no-check-certificate
 
-# busybox image is missing some libs, take them from the host 
+# busybox image is missing some libs, take them from the host
 cp /usr/lib64/libcrypto.so.10 .
 cp /usr/lib64/libssl.so.10 .
 cp /usr/lib64/libgssapi_krb5.so.2 .
index 083ca94d83d7bc0d277ae1330fd59b10cc653b8c..d9040495980409d78210e9a317ca127b9baba495 100644 (file)
@@ -1,2 +1,2 @@
 # Place the suites in run order:
-integration/test/csit/suites/persistence/basic 
+integration/test/csit/suites/persistence/basic
index 5c4c7d794d4d0ee301294a63035e2cebcf440c4a..7cb89f847f756446ab451e2e1341b7b8b79a0a9c 100644 (file)
@@ -1,6 +1,6 @@
 {
        input:{
                topology-id:$TOPOLOGYID,
-               link:["1111.1111.1111,192.168.51.1-1111.1111.1122,192.168.51.2","1111.1111.1122,192.168.56.12-1111.1111.1144,192.168.56.14","1111.1111.1133,192.168.54.13-1111.1111.1111,192.168.54.11","1111.1111.1111,192.168.57.11-1111.1111.1155,192.168.57.15","1111.1111.1133,192.168.55.13-1111.1111.1144,192.168.55.14"]                        
+               link:["1111.1111.1111,192.168.51.1-1111.1111.1122,192.168.51.2","1111.1111.1122,192.168.56.12-1111.1111.1144,192.168.56.14","1111.1111.1133,192.168.54.13-1111.1111.1111,192.168.54.11","1111.1111.1111,192.168.57.11-1111.1111.1155,192.168.57.15","1111.1111.1133,192.168.55.13-1111.1111.1144,192.168.55.14"]
        }
 }
\ No newline at end of file
index 3450997d6062cbf4f261644ae7c2be2c3bfc1660..bd0f6417a470ddb9836b42389017a10b5f256bec 100644 (file)
@@ -1,38 +1,38 @@
-{  
-   "tenant":[  
-      {  
+{
+   "tenant":[
+      {
          "id":"tenant-red",
          "name":"DockerTenant",
-         "forwarding-context":{  
-            "l2-flood-domain":[  
-               {  
+         "forwarding-context":{
+            "l2-flood-domain":[
+               {
                   "id":"flood-domain-1",
                   "parent":"bridge-domain1"
                },
-               {  
+               {
                   "id":"flood-domain-2",
                   "parent":"bridge-domain1"
                }
             ],
-            "l3-context":[  
-               {  
+            "l3-context":[
+               {
                   "id":"l3-context-vrf-red"
                }
             ],
-            "l2-bridge-domain":[  
-               {  
+            "l2-bridge-domain":[
+               {
                   "id":"bridge-domain1",
                   "parent":"l3-context-vrf-red"
                }
             ],
-            "subnet":[  
-               {  
+            "subnet":[
+               {
                   "id":"subnet-10.0.36.0/24",
                   "virtual-router-ip":"10.0.36.1",
                   "parent":"flood-domain-2",
                   "ip-prefix":"10.0.36.1/24"
                },
-               {  
+               {
                   "id":"subnet-10.0.35.0/24",
                   "virtual-router-ip":"10.0.35.1",
                   "parent":"flood-domain-1",
                }
             ]
          },
-         "policy":{  
-            "endpoint-group":[  
-               {  
+         "policy":{
+            "endpoint-group":[
+               {
                   "id":"webservers",
                   "name":"webservers",
-                  "provider-named-selector":[  
-                     {  
+                  "provider-named-selector":[
+                     {
                         "name":"webservers-clients-icmp-http-contract",
-                        "contract":[  
+                        "contract":[
                            "icmp-http-contract"
                         ]
                      }
                   ]
                },
-               {  
+               {
                   "id":"clients",
                   "name":"clients",
-                  "consumer-named-selector":[  
-                     {  
+                  "consumer-named-selector":[
+                     {
                         "name":"webservers-clients-icmp-http-contract",
-                        "contract":[  
+                        "contract":[
                            "icmp-http-contract"
                         ]
                      }
                   ]
                }
             ],
-            "subject-feature-instances":{  
-               "classifier-instance":[  
-                  {  
+            "subject-feature-instances":{
+               "classifier-instance":[
+                  {
                      "name":"icmp",
                      "classifier-definition-id":"Classifier-IP-Protocol",
-                     "parameter-value":[  
-                        {  
+                     "parameter-value":[
+                        {
                            "name":"proto",
                            "int-value":1
                         }
                      ]
                   },
-                  {  
+                  {
                      "name":"http-dest",
                      "classifier-definition-id":"Classifier-L4",
-                     "parameter-value":[  
-                        {  
+                     "parameter-value":[
+                        {
                            "int-value":"6",
                            "name":"proto"
                         },
-                        {  
+                        {
                            "int-value":"80",
                            "name":"destport"
                         }
                      ]
                   },
-                  {  
+                  {
                      "name":"http-src",
                      "classifier-definition-id":"Classifier-L4",
-                     "parameter-value":[  
-                        {  
+                     "parameter-value":[
+                        {
                            "int-value":"6",
                            "name":"proto"
                         },
-                        {  
+                        {
                            "int-value":"80",
                            "name":"sourceport"
                         }
                      ]
                   }
                ],
-               "action-instance":[  
-                  {  
+               "action-instance":[
+                  {
                      "name":"chain1",
                      "action-definition-id":"Action-Chain",
-                     "parameter-value":[  
-                        {  
+                     "parameter-value":[
+                        {
                            "name":"sfc-chain-name",
                            "string-value":"SFCGBP"
                         }
                      ]
                   },
-                  {  
+                  {
                      "name":"allow1",
                      "action-definition-id":"Action-Allow"
                   }
                ]
             },
-            "contract":[  
-               {  
+            "contract":[
+               {
                   "id":"icmp-http-contract",
-                  "subject":[  
-                     {  
+                  "subject":[
+                     {
                         "name":"icmp-subject",
-                        "rule":[  
-                           {  
+                        "rule":[
+                           {
                               "name":"allow-icmp-rule",
                               "order":0,
-                              "classifier-ref":[  
-                                 {  
+                              "classifier-ref":[
+                                 {
                                     "name":"icmp",
                                     "instance-name":"icmp"
                                  }
                               ],
-                              "action-ref":[  
-                                 {  
+                              "action-ref":[
+                                 {
                                     "name":"allow1",
                                     "order":0
                                  }
                            }
                         ]
                      },
-                     {  
+                     {
                         "name":"http-subject",
-                        "rule":[  
-                           {  
+                        "rule":[
+                           {
                               "name":"http-chain-rule",
-                              "classifier-ref":[  
-                                 {  
+                              "classifier-ref":[
+                                 {
                                     "name":"http-dest",
                                     "instance-name":"http-dest",
                                     "direction":"in"
                                  }
                               ],
-                              "action-ref":[  
-                                 {  
+                              "action-ref":[
+                                 {
                                     "name":"chain1",
                                     "order":0
                                  }
                               ]
                            },
-                           {  
+                           {
                               "name":"http-out-rule",
-                              "classifier-ref":[  
-                                 {  
+                              "classifier-ref":[
+                                 {
                                     "name":"http-src",
                                     "instance-name":"http-src",
                                     "direction":"out"
                                  }
                               ],
-                              "action-ref":[  
-                                 {  
+                              "action-ref":[
+                                 {
                                     "name":"allow1",
                                     "order":0
                                  }
                         ]
                      }
                   ],
-                  "clause":[  
-                     {  
+                  "clause":[
+                     {
                         "name":"icmp-http-clause",
-                        "subject-refs":[  
+                        "subject-refs":[
                            "icmp-subject",
                            "http-subject"
                         ]
index 7a7b40b9e681c4219c3236608b2a8fb764e8ddda..735e4d303935c5616287d6310a52bab6890ad516 100644 (file)
@@ -7,29 +7,29 @@ module ietf-inet-types {
   contact
     "WG Web:   <http://tools.ietf.org/wg/netmod/>
      WG List:  <mailto:netmod@ietf.org>
-     
+
      WG Chair: David Kessens
                <mailto:david.kessens@nsn.com>
-     
+
      WG Chair: Juergen Schoenwaelder
                <mailto:j.schoenwaelder@jacobs-university.de>
-     
+
      Editor:   Juergen Schoenwaelder
                <mailto:j.schoenwaelder@jacobs-university.de>";
   description
     "This module contains a collection of generally useful derived
      YANG data types for Internet addresses and related things.
-     
+
      Copyright (c) 2013 IETF Trust and the persons identified as
      authors of the code.  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 Simplified BSD License
      set forth in Section 4.c of the IETF Trust's Legal Provisions
      Relating to IETF Documents
      (http://trustee.ietf.org/license-info).
-     
+
      This version of this YANG module is part of RFC 6991; see
      the RFC itself for full legal notices.";
 
@@ -68,7 +68,7 @@ module ietf-inet-types {
     }
     description
       "This value represents the version of the IP protocol.
-       
+
        In the value set and its semantics, this type is equivalent
        to the InetVersion textual convention of the SMIv2.";
     reference
@@ -103,7 +103,7 @@ module ietf-inet-types {
       "The ipv6-flow-label type represents the flow identifier or Flow
        Label in an IPv6 packet header that may be used to
        discriminate traffic flows.
-       
+
        In the value set and its semantics, this type is equivalent
        to the IPv6FlowLabel textual convention of the SMIv2.";
     reference
@@ -120,7 +120,7 @@ module ietf-inet-types {
        Internet transport-layer protocol such as UDP, TCP, DCCP, or
        SCTP.  Port numbers are assigned by IANA.  A current list of
        all assignments is available from <http://www.iana.org/>.
-       
+
        Note that the port number value zero is reserved by IANA.  In
        situations where the value zero does not make sense, it can
        be excluded by subtyping the port-number type.
@@ -145,13 +145,13 @@ module ietf-inet-types {
        protocol to route packets to other ASes.  IANA maintains
        the AS number space and has delegated large parts to the
        regional registries.
-       
+
        Autonomous system numbers were originally limited to 16
        bits.  BGP extensions have enlarged the autonomous system
        number space to 32 bits.  This type therefore uses an uint32
        base type without a range restriction in order to support
        a larger autonomous system number space.
-       
+
        In the value set and its semantics, this type is equivalent
        to the InetAutonomousSystemNumber textual convention of
        the SMIv2.";
@@ -185,13 +185,13 @@ module ietf-inet-types {
       "The ipv4-address type represents an IPv4 address in
        dotted-quad notation.  The IPv4 address may include a zone
        index, separated by a % sign.
-       
+
        The zone index is used to disambiguate identical address
        values.  For link-local addresses, the zone index will
        typically be the interface index number or the name of an
        interface.  If the zone index is not present, the default
        zone of the device will be used.
-       
+
        The canonical format for the zone index is the numerical
        format";
   }
@@ -205,15 +205,15 @@ module ietf-inet-types {
       "The ipv6-address type represents an IPv6 address in full,
        mixed, shortened, and shortened-mixed notation.  The IPv6
        address may include a zone index, separated by a % sign.
-       
+
        The zone index is used to disambiguate identical address
        values.  For link-local addresses, the zone index will
        typically be the interface index number or the name of an
        interface.  If the zone index is not present, the default
        zone of the device will be used.
-       
-       
-       
+
+
+
        The canonical format of IPv6 addresses uses the textual
        representation defined in Section 4 of RFC 5952.  The
        canonical format for the zone index is the numerical
@@ -283,11 +283,11 @@ module ietf-inet-types {
       "The ipv4-prefix type represents an IPv4 address prefix.
        The prefix length is given by the number following the
        slash character and must be less than or equal to 32.
-       
+
        A prefix length value of n corresponds to an IP address
        mask that has n contiguous 1-bits from the most
        significant bit (MSB) and all other bits set to 0.
-       
+
        The canonical format of an IPv4 prefix has all bits of
        the IPv4 address set to zero that are not part of the
        IPv4 prefix.";
@@ -302,14 +302,14 @@ module ietf-inet-types {
       "The ipv6-prefix type represents an IPv6 address prefix.
        The prefix length is given by the number following the
        slash character and must be less than or equal to 128.
-       
+
        A prefix length value of n corresponds to an IP address
        mask that has n contiguous 1-bits from the most
        significant bit (MSB) and all other bits set to 0.
-       
+
        The IPv6 address should have all bits that do not belong
        to the prefix set to zero.
-       
+
        The canonical format of an IPv6 prefix has all bits of
        the IPv6 address set to zero that are not part of the
        IPv6 prefix.  Furthermore, the IPv6 address is represented
@@ -327,7 +327,7 @@ module ietf-inet-types {
     description
       "The domain-name type represents a DNS domain name.  The
        name SHOULD be fully qualified whenever possible.
-       
+
        Internet domain names are only loosely specified.  Section
        3.5 of RFC 1034 recommends a syntax (modified in Section
        2.1 of RFC 1123).  The pattern above is intended to allow
@@ -340,13 +340,13 @@ module ietf-inet-types {
        1123, and that systems that want to store host names in
        schema nodes using the domain-name type are recommended to
        adhere to this stricter standard to ensure interoperability.
-       
+
        The encoding of DNS names in the DNS protocol is limited
        to 255 characters.  Since the encoding consists of labels
        prefixed by a length bytes and there is a trailing NULL
        byte, only 253 characters can appear in the textual dotted
        notation.
-       
+
        The description clause of schema nodes using the domain-name
        type MUST describe when and how these names are resolved to
        IP addresses.  Note that the resolution of a domain-name value
@@ -355,7 +355,7 @@ module ietf-inet-types {
        which DNS record takes precedence can either be defined
        explicitly or may depend on the configuration of the
        resolver.
-       
+
        Domain-name values use the US-ASCII encoding.  Their canonical
        format uses lowercase US-ASCII characters.  Internationalized
        domain names MUST be A-labels as per RFC 5890.";
@@ -385,7 +385,7 @@ module ietf-inet-types {
     description
       "The uri type represents a Uniform Resource Identifier
        (URI) as defined by STD 66.
-       
+
        Objects using the uri type MUST be in US-ASCII encoding,
        and MUST be normalized as described by RFC 3986 Sections
        6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
@@ -393,20 +393,20 @@ module ietf-inet-types {
        characters are set to lowercase except for hexadecimal
        digits, which are normalized to uppercase as described in
        Section 6.2.2.1.
-       
+
        The purpose of this normalization is to help provide
        unique URIs.  Note that this normalization is not
        sufficient to provide uniqueness.  Two URIs that are
        textually distinct after this normalization may still be
        equivalent.
-       
+
        Objects using the uri type may restrict the schemes that
        they permit.  For example, 'data:' and 'urn:' schemes
        might not be appropriate.
-       
+
        A zero-length URI is not a valid URI.  This can be used to
        express 'URI absent' where required.
-       
+
        In the value set and its semantics, this type is equivalent
        to the Uri SMIv2 textual convention defined in RFC 5017.";
     reference
index 6318026fe94a41129e2961ff54814897b8f2c5f5..79d7a2bafc824ef2eb0a4c12c414507c33723563 100644 (file)
@@ -11,34 +11,34 @@ module ietf-netconf {
   contact
     "WG Web:   <http://tools.ietf.org/wg/netconf/>
      WG List:  <netconf@ietf.org>
-     
+
      WG Chair: Bert Wijnen
                <bertietf@bwijnen.net>
-     
+
      WG Chair: Mehmet Ersue
                <mehmet.ersue@nsn.com>
-     
+
      Editor:   Martin Bjorklund
                <mbj@tail-f.com>
-     
+
      Editor:   Juergen Schoenwaelder
                <j.schoenwaelder@jacobs-university.de>
-     
+
      Editor:   Andy Bierman
                <andy.bierman@brocade.com>";
   description
     "NETCONF Protocol Data Types and Protocol Operations.
-     
+
      Copyright (c) 2011 IETF Trust and the persons identified as
      the document authors.  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 Simplified BSD License
      set forth in Section 4.c of the IETF Trust's Legal Provisions
      Relating to IETF Documents
      (http://trustee.ietf.org/license-info).
-     
+
      This version of this YANG module is part of RFC 6241; see
      the RFC itself for full legal notices.";
 
@@ -57,15 +57,15 @@ module ietf-netconf {
        following unqualified XML attribute is supported
        within the <filter> element, within a <get> or
        <get-config> protocol operation:
-       
+
          type : optional attribute with allowed
                 value strings 'subtree' and 'xpath'.
                 If missing, the default value is 'subtree'.
-       
+
        If the 'xpath' feature is supported, then the
        following unqualified XML attribute is
        also supported:
-       
+
          select: optional attribute containing a
                  string representing an XPath expression.
                  The 'type' attribute must be equal to 'xpath'
@@ -756,12 +756,12 @@ module ietf-netconf {
            if the NETCONF session terminates.  The only way to abort
            a persistent confirmed commit is to let the timer expire,
            or to use the <cancel-commit> operation.
-           
+
            The value of this parameter is a token that must be given
            in the 'persist-id' parameter of <commit> or
            <cancel-commit> operations in order to confirm or cancel
            the persistent confirmed commit.
-           
+
            The token should be a random string.";
         reference "RFC 6241, Section 8.3.4.1";
       }
index 7125ce0299e99be4e0929ff6168480e31051df28..609b918da4d571e41d6df5ab215334f2e3f05b20 100644 (file)
@@ -7,29 +7,29 @@ module ietf-yang-types {
   contact
     "WG Web:   <http://tools.ietf.org/wg/netmod/>
      WG List:  <mailto:netmod@ietf.org>
-     
+
      WG Chair: David Kessens
                <mailto:david.kessens@nsn.com>
-     
+
      WG Chair: Juergen Schoenwaelder
                <mailto:j.schoenwaelder@jacobs-university.de>
-     
+
      Editor:   Juergen Schoenwaelder
                <mailto:j.schoenwaelder@jacobs-university.de>";
   description
     "This module contains a collection of generally useful derived
      YANG data types.
-     
+
      Copyright (c) 2013 IETF Trust and the persons identified as
      authors of the code.  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 Simplified BSD License
      set forth in Section 4.c of the IETF Trust's Legal Provisions
      Relating to IETF Documents
      (http://trustee.ietf.org/license-info).
-     
+
      This version of this YANG module is part of RFC 6991; see
      the RFC itself for full legal notices.";
 
@@ -55,7 +55,7 @@ module ietf-yang-types {
        that monotonically increases until it reaches a
        maximum value of 2^32-1 (4294967295 decimal), when it
        wraps around and starts increasing again from zero.
-       
+
        Counters have no defined 'initial' value, and thus, a
        single value of a counter has (in general) no information
        content.  Discontinuities in the monotonically increasing
@@ -67,11 +67,11 @@ module ietf-yang-types {
        re-initialization, then a corresponding schema node
        should be defined, with an appropriate type, to indicate
        the last discontinuity.
-       
+
        The counter32 type should not be used for configuration
        schema nodes.  A default statement SHOULD NOT be used in
        combination with the type counter32.
-       
+
        In the value set and its semantics, this type is equivalent
        to the Counter32 type of the SMIv2.";
     reference
@@ -85,19 +85,19 @@ module ietf-yang-types {
     description
       "The zero-based-counter32 type represents a counter32
        that has the defined 'initial' value zero.
-       
+
        A schema node of this type will be set to zero (0) on creation
        and will thereafter increase monotonically until it reaches
        a maximum value of 2^32-1 (4294967295 decimal), when it
        wraps around and starts increasing again from zero.
-       
+
        Provided that an application discovers a new schema node
        of this type within the minimum time to wrap, it can use the
        'initial' value as a delta.  It is important for a management
        station to be aware of this minimum time and the actual time
        between polls, and to discard data if the actual time is too
        long or there is no defined minimum time.
-       
+
        In the value set and its semantics, this type is equivalent
        to the ZeroBasedCounter32 textual convention of the SMIv2.";
     reference
@@ -112,7 +112,7 @@ module ietf-yang-types {
        that monotonically increases until it reaches a
        maximum value of 2^64-1 (18446744073709551615 decimal),
        when it wraps around and starts increasing again from zero.
-       
+
        Counters have no defined 'initial' value, and thus, a
        single value of a counter has (in general) no information
        content.  Discontinuities in the monotonically increasing
@@ -124,11 +124,11 @@ module ietf-yang-types {
        re-initialization, then a corresponding schema node
        should be defined, with an appropriate type, to indicate
        the last discontinuity.
-       
+
        The counter64 type should not be used for configuration
        schema nodes.  A default statement SHOULD NOT be used in
        combination with the type counter64.
-       
+
        In the value set and its semantics, this type is equivalent
        to the Counter64 type of the SMIv2.";
     reference
@@ -142,22 +142,22 @@ module ietf-yang-types {
     description
       "The zero-based-counter64 type represents a counter64 that
        has the defined 'initial' value zero.
-       
-       
-       
-       
+
+
+
+
        A schema node of this type will be set to zero (0) on creation
        and will thereafter increase monotonically until it reaches
        a maximum value of 2^64-1 (18446744073709551615 decimal),
        when it wraps around and starts increasing again from zero.
-       
+
        Provided that an application discovers a new schema node
        of this type within the minimum time to wrap, it can use the
        'initial' value as a delta.  It is important for a management
        station to be aware of this minimum time and the actual time
        between polls, and to discard data if the actual time is too
        long or there is no defined minimum time.
-       
+
        In the value set and its semantics, this type is equivalent
        to the ZeroBasedCounter64 textual convention of the SMIv2.";
     reference
@@ -180,7 +180,7 @@ module ietf-yang-types {
        If the information being modeled subsequently decreases
        below (increases above) the maximum (minimum) value, the
        gauge32 also decreases (increases).
-       
+
        In the value set and its semantics, this type is equivalent
        to the Gauge32 type of the SMIv2.";
     reference
@@ -203,7 +203,7 @@ module ietf-yang-types {
        If the information being modeled subsequently decreases
        below (increases above) the maximum (minimum) value, the
        gauge64 also decreases (increases).
-       
+
        In the value set and its semantics, this type is equivalent
        to the CounterBasedGauge64 SMIv2 textual convention defined
        in RFC 2856";
@@ -219,13 +219,13 @@ module ietf-yang-types {
     description
       "The object-identifier type represents administratively
        assigned names in a registration-hierarchical-name tree.
-       
+
        Values of this type are denoted as a sequence of numerical
        non-negative sub-identifier values.  Each sub-identifier
        value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
        are separated by single dots and without any intermediate
        whitespace.
-       
+
        The ASN.1 standard restricts the value space of the first
        sub-identifier to 0, 1, or 2.  Furthermore, the value space
        of the second sub-identifier is restricted to the range
@@ -233,12 +233,12 @@ module ietf-yang-types {
        the ASN.1 standard requires that an object identifier
        has always at least two sub-identifiers.  The pattern
        captures these restrictions.
-       
+
        Although the number of sub-identifiers is not limited,
        module designers should realize that there may be
        implementations that stick with the SMIv2 limit of 128
        sub-identifiers.
-       
+
        This type is a superset of the SMIv2 OBJECT IDENTIFIER type
        since it is not restricted to 128 sub-identifiers.  Hence,
        this type SHOULD NOT be used to represent the SMIv2 OBJECT
@@ -258,7 +258,7 @@ module ietf-yang-types {
     description
       "This type represents object-identifiers restricted to 128
        sub-identifiers.
-       
+
        In the value set and its semantics, this type is equivalent
        to the OBJECT IDENTIFIER type of the SMIv2.";
     reference
@@ -278,7 +278,7 @@ module ietf-yang-types {
        start with an alphabetic character or an underscore
        followed by an arbitrary sequence of alphabetic or
        numeric characters, underscores, hyphens, or dots.
-       
+
        A YANG identifier MUST NOT start with any possible
        combination of the lowercase or uppercase character
        sequence 'xml'.";
@@ -296,26 +296,26 @@ module ietf-yang-types {
        standard for representation of dates and times using the
        Gregorian calendar.  The profile is defined by the
        date-time production in Section 5.6 of RFC 3339.
-       
+
        The date-and-time type is compatible with the dateTime XML
        schema type with the following notable exceptions:
-       
+
        (a) The date-and-time type does not allow negative years.
-       
+
        (b) The date-and-time time-offset -00:00 indicates an unknown
            time zone (see RFC 3339) while -00:00 and +00:00 and Z
            all represent the same time zone in dateTime.
-       
+
        (c) The canonical format (see below) of data-and-time values
            differs from the canonical format used by the dateTime XML
            schema type, which requires all times to be in UTC using
            the time-offset 'Z'.
-       
+
        This type is not equivalent to the DateAndTime textual
        convention of the SMIv2 since RFC 3339 uses a different
        separator between full-date and full-time and provides
        higher resolution of time-secfrac.
-       
+
        The canonical format for date-and-time values with a known time
        zone uses a numeric time zone offset that is calculated using
        the device's configured known offset to UTC time.  A change of
@@ -340,7 +340,7 @@ module ietf-yang-types {
        hundredths of a second between two epochs.  When a schema
        node is defined that uses this type, the description of
        the schema node identifies both of the reference epochs.
-       
+
        In the value set and its semantics, this type is equivalent
        to the TimeTicks type of the SMIv2.";
     reference
@@ -360,10 +360,10 @@ module ietf-yang-types {
        value is zero.  Note that this requires all timestamp values
        to be reset to zero when the value of the associated timeticks
        attribute reaches 497+ days and wraps around to zero.
-       
+
        The associated timeticks schema node must be specified
        in the description of any schema node using this type.
-       
+
        In the value set and its semantics, this type is equivalent
        to the TimeStamp textual convention of the SMIv2.";
     reference "RFC 2579: Textual Conventions for SMIv2";
@@ -378,7 +378,7 @@ module ietf-yang-types {
        as a sequence octets, each octet represented by two hexadecimal
        numbers.  Octets are separated by colons.  The canonical
        representation uses lowercase characters.
-       
+
        In the value set and its semantics, this type is equivalent
        to the PhysAddress textual convention of the SMIv2.";
     reference "RFC 2579: Textual Conventions for SMIv2";
@@ -391,7 +391,7 @@ module ietf-yang-types {
     description
       "The mac-address type represents an IEEE 802 MAC address.
        The canonical representation uses lowercase characters.
-       
+
        In the value set and its semantics, this type is equivalent
        to the MacAddress textual convention of the SMIv2.";
     reference
@@ -404,7 +404,7 @@ module ietf-yang-types {
     type string;
     description
       "This type represents an XPATH 1.0 expression.
-       
+
        When a schema node is defined that uses this type, the
        description of the schema node MUST specify the XPath
        context in which the XPath expression is evaluated.";
@@ -429,7 +429,7 @@ module ietf-yang-types {
       "A Universally Unique IDentifier in the string representation
        defined in RFC 4122.  The canonical representation uses
        lowercase characters.
-       
+
        The following is an example of a UUID in string representation:
        f81d4fae-7dec-11d0-a765-00a0c91e6bf6
       ";
index 2301af390bd7cb6c2f5a0bab179529b74cf9b275..d6ab89af935abac2e55ad7590b366e33bf506e64 100644 (file)
@@ -120,7 +120,7 @@ module ned {
   }
   revision 2015-06-25 {
     description
-      "Updated class-map protocol, mpls static output lable, 
+      "Updated class-map protocol, mpls static output lable,
        and ip/ipv6 route list";
   }
   revision 2015-06-15 {
@@ -228,7 +228,7 @@ module ned {
     description
       "Restructuring using new file ios-common0.yang and
        augment(s) in order to fix order dependencies.
-       
+
        Added model constructs for Cisco 2800.";
   }
 
index a0b86c83bd1267bcfabcb8b8a698a756b334f2f1..ec32951e11edf9f53b70ddd8a98a649148ca9725 100644 (file)
@@ -12,21 +12,21 @@ submodule tailf-cli-extensions {
   description
     "This module defines all Tail-f YANG extensions statements
      related to CLI customization.
-     
+
      See also the 'display-' statements and the 'alt-name' statement
      in tailf-common.yang.";
 
   revision 2015-03-19 {
     description
       "Released as part of ConfD-5.4 / NCS-3.4.
-       
+
        Added cli-show-obu-comments.
        Added cli-batch-confirm-default.";
   }
   revision 2014-11-13 {
     description
       "Released as part of ConfD-5.3 / NCS-3.3.
-       
+
        Added cli-strict-leafref.
        Added cli-trigger-on-*.
        Allow cli-boolean-no in typedef.";
@@ -34,7 +34,7 @@ submodule tailf-cli-extensions {
   revision 2013-11-07 {
     description
       "Released as part of ConfD-5.0.
-       
+
        Added cli-disabled-info.
        Added cli-suppress-shortenabled.
        Added cli-no-keyword.
@@ -43,7 +43,7 @@ submodule tailf-cli-extensions {
   revision 2012-11-08 {
     description
       "Released as part of ConfD-4.1.
-       
+
        Added cli-delete-when-empty.
        Added cli-diff-dependency.
        Added cli-ignore-modified.";
@@ -51,14 +51,14 @@ submodule tailf-cli-extensions {
   revision 2012-08-23 {
     description
       "Released as part of ConfD-4.0.1.
-       
+
        Allow tailf:cli-operational-mode and tailf:cli-configure-mode in
          rpc.";
   }
   revision 2012-06-14 {
     description
       "Released as part of ConfD-4.0.
-       
+
        Do not allow tailf:cli-drop-node-name and tailf:cli-sequence-commands
          inside tailf:action.
        Added tailf:cli-configure-mode.
@@ -67,7 +67,7 @@ submodule tailf-cli-extensions {
   revision 2012-05-24 {
     description
       "Released as part of ConfD-3.9.2.
-       
+
        Added tailf:cli-no-value-on-delete.
        Added tailf:cli-no-name-on-delete.
        Added tailf:cli-replace-all.
@@ -76,20 +76,20 @@ submodule tailf-cli-extensions {
   revision 2012-03-08 {
     description
       "Released as part of ConfD-3.9.
-       
+
        Allow tailf:cli-range-list-syntax in lists with one integer based
          key.";
   }
   revision 2011-12-08 {
     description
       "Released as part of ConfD-3.8.
-       
+
        Added tailf:cli-min-column-with.";
   }
   revision 2011-09-22 {
     description
       "Released as part of ConfD-3.7.
-       
+
        Added tailf:cli-disallow-value.
        Added tailf:cli-multi-word.
        Added tailf:cli-before-key.
@@ -98,7 +98,7 @@ submodule tailf-cli-extensions {
   revision 2011-08-25 {
     description
       "Released as part of ConfD-3.6.2.
-       
+
        Added cli-suppress-silent-no.
        Added cli-range-delimiters.
        Removed duplicate tailf:use-in statement from cli-show-config.";
@@ -106,21 +106,21 @@ submodule tailf-cli-extensions {
   revision 2011-06-30 {
     description
       "Released as part of ConfD-3.6.1.
-       
+
        Added cli-reversed.
        Added cli-range-list-syntax.";
   }
   revision 2011-05-26 {
     description
       "Released as part of ConfD-3.6.
-       
+
        Added cli-allow-join-with-key.
        Added cli-display-joined.";
   }
   revision 2011-02-24 {
     description
       "Released as part of ConfD-3.5.
-       
+
        Added cli-boolean-no.
        Added cli-exit-command.
        Added cli-custom-range-enumerator.
@@ -130,28 +130,28 @@ submodule tailf-cli-extensions {
        Added cli-hide-in-submode.
        Added cli-prefix-key.
        Added cli-show-with-default.
-       
+
        Added 'commasep' and 'show:<dictionary>' filter in
        cli-template-string.
-       
+
        Removed deprecated tailf:cli-default-order.";
   }
   revision 2010-12-02 {
     description
       "Released as part of ConfD-3.4.1.
-       
+
        Added cli-flatten-container.";
   }
   revision 2010-11-04 {
     description
       "Released as part of ConfD-3.4.
-       
+
        Added cli-key-format.
        Added cli-list-syntax.
        Added cli-flat-list-syntax.
-       
+
        The following statements were added in ConfD-3.3.3:
-       
+
        Added cli-suppress-list-no.
        Added cli-suppress-no.
        Added cli-full-no.
@@ -160,7 +160,7 @@ submodule tailf-cli-extensions {
   revision 2010-09-16 {
     description
       "Released as part of ConfD-3.3.2.
-       
+
        Added cli-autowizard.
        Added cli-multi-word-key.
        Added cli-no-match-completion.";
@@ -168,7 +168,7 @@ submodule tailf-cli-extensions {
   revision 2010-08-19 {
     description
       "Released as part of ConfD-3.3.1.
-       
+
        Added cli-show-template-footer.
        Added cli-run-template-footer.
        Added cli-table-footer.
@@ -177,24 +177,24 @@ submodule tailf-cli-extensions {
   revision 2010-06-17 {
     description
       "Released as part of ConfD-3.3.
-       
+
        Added cli-display-empty-config.
-       
+
        Added cli-expose-key-name.
-       
+
        Added cli-value-display-template.
-       
+
        Added cli-run-template.
        Added cli-run-template-legend.
        Added cli-run-template-enter.
-       
+
        Added cli-suppress-key-sort.
-       
+
        Added cli-suppress-validation-warning-prompt.
-       
+
        Added 'hex' and 'hexlist' as display parameters in the
        type cli-template-string.
-       
+
        Deprecated tailf:cli-default-order.";
   }
   revision 2010-03-18 {
@@ -214,7 +214,7 @@ submodule tailf-cli-extensions {
        should be displayed as 'no <name>' when it does not exist.
        For example, if a leaf 'shutdown' has this property and
        does not exist, 'no shutdown' is displayed.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -230,7 +230,7 @@ submodule tailf-cli-extensions {
     tailf:use-in "tailf:symlink";
     description
       "Specifies that a pattern for invalid values.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -244,10 +244,10 @@ submodule tailf-cli-extensions {
       "Specifies that a leaf of type boolean should be displayed as
        '<leafname>' if set to true, and 'no <leafname>' if set to
        false.
-       
+
        Cannot be used in conjunction with tailf:cli-hide-in-submode
        or tailf:cli-compact-syntax.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -256,7 +256,7 @@ submodule tailf-cli-extensions {
     description
       "Specified that true should be displayed as 'no <name>' and
        false as 'name'.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -267,11 +267,11 @@ submodule tailf-cli-extensions {
     description
       "Specifies that the autowizard should include this leaf even
        if the leaf is optional.
-       
+
        One use case is when implementing pre-configuration of devices.
        A config false node can be defined for showing if the
        configuration is active or not (preconfigured).
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -285,7 +285,7 @@ submodule tailf-cli-extensions {
     description
       "Specifies that the node will be included when doing a 'show
        running-configuration', even if it is a non-config node.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -297,7 +297,7 @@ submodule tailf-cli-extensions {
       "Specifies that the node will be included when doing a 'show
        stats', even if it is a non-config node, provided
        that the list contains at least one non-config node.
-       
+
        Used in J-style CLI.";
   }
 
@@ -314,16 +314,16 @@ submodule tailf-cli-extensions {
     description
       "Specifies a custom mode name, instead of the default which is the
        name of the list or container node.
-       
+
        Can be used in config nodes only.  If used in a container, the
        container must also have a tailf:cli-add-mode statement, and if
        used in a list, the list must not also have a
        tailf:cli-suppress-mode statement.
-       
+
        Variables for the list keys in the current mode are available.
        For examples, 'config-foo-xx$(name)' (privided the key leaf
        is called 'name').
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -342,9 +342,9 @@ submodule tailf-cli-extensions {
        tailf:cli-show-order-tag attribute. Nodes will be displayed
        in the order indicated in the list. Nodes without a tag will
        be displayed after all nodes with a tag have been displayed.
-       
+
        The scope of a taglist is until a new taglist is encountered.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -365,9 +365,9 @@ submodule tailf-cli-extensions {
        tailf:cli-show-order-tag attribute. Nodes will be displayed
        in the order indicated by a cli-show-order-taglist attribute in
        a parent node.
-       
+
        The scope of a tag reaches until a new taglist is encountered.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -384,17 +384,17 @@ submodule tailf-cli-extensions {
       "Specifies that a custom function will be invoked to find out the mode
        name, instead of using the default with is the name of the list
        or container node.
-       
+
        The argument is the name of an actionpoint, which must be
        implemented by custom code.  In the actionpoint, the command()
        callback function will be invoked, and it must return a string
        with the mode name.  See confd_lib_dp(3) for details.
-       
+
        Can be used in config nodes only.  If used in a container, the
        container must also have a tailf:cli-add-mode statement, and if
        used in a list, the list must not also have a
        tailf:cli-suppress-mode statement.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -404,9 +404,9 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Creates a mode of the container.
-       
+
        Can be used in config nodes only.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -419,9 +419,9 @@ submodule tailf-cli-extensions {
       "Allows the CLI to exit the container and continue to input
        from the parent container when all leaves in the current
        container has been set.
-       
+
        Can be used in config nodes only.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -431,9 +431,9 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Instructs the CLI engine to not make a mode of the list node.
-       
+
        Can be used in config nodes only.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -443,7 +443,7 @@ submodule tailf-cli-extensions {
     description
       "Instructs the CLI engine to delete the list when the last list
        instance is deleted'. Requires that cli-suppress-mode is set.
-       
+
        The behavior is recursive. If all optional leafs in a list
        instance are deleted the list instance itself is deleted. If
        that list instance happens to be the last list instance in a
@@ -471,7 +471,7 @@ submodule tailf-cli-extensions {
     description
       "When displaying the deleted version of this leaf do not
        include the old value.
-       
+
        Applies to C-style";
   }
 
@@ -485,7 +485,7 @@ submodule tailf-cli-extensions {
     description
       "When displaying the deleted version of this element do not
        include the name.
-       
+
        Applies to C-style";
   }
 
@@ -499,7 +499,7 @@ submodule tailf-cli-extensions {
     description
       "Embed no in front of the element name insead of at the
        beginning of the line.
-       
+
        Applies to C-style";
   }
 
@@ -511,7 +511,7 @@ submodule tailf-cli-extensions {
     description
       "When generating configuration diffs delete all contents
        of a container or list before deleting the node.
-       
+
        Applies to C-style";
   }
 
@@ -538,7 +538,7 @@ submodule tailf-cli-extensions {
        with this declaration, it should be removed before the node
        it depends on is removed, ie the declaration controlls the ordering
        of the commands in the 'show configuration' output.
-       
+
        Applies to C-style";
   }
 
@@ -548,11 +548,11 @@ submodule tailf-cli-extensions {
       "Specify that the dependency should trigger on set/modify of
               the target path, but deletion of the target will trigger the
               current node to be placed in front of the target.
-       
+
               The annotation can be used to get the diff behavior where
               one leaf is first deleted before the other leaf is set.
               For example, having the data model below:
-       
+
                container X {
                  leaf A {
                    tailf:cli-diff-dependency \"../B\" {
@@ -567,23 +567,23 @@ submodule tailf-cli-extensions {
                    type empty;
                  }
                }
-       
+
               produces the following diffs when setting one leaf
               and deleting the other
-       
+
                 no X A
                 X B
-       
+
               and
-       
+
                 no X B
                 X A
-       
+
               this can also be done with list instances, for example
-       
+
                 list a {
                   key id;
-       
+
                   leaf id {
                     tailf:cli-diff-dependency \"/c[id=current()/../id]\" {
                       tailf:cli-trigger-on-set;
@@ -591,7 +591,7 @@ submodule tailf-cli-extensions {
                     type string;
                   }
                 }
-       
+
                 list c {
                   key id;
                   leaf id {
@@ -601,19 +601,19 @@ submodule tailf-cli-extensions {
                     type string;
                   }
                 }
-       
+
               we get
-       
+
                 no a foo
                 c foo
                 !
-       
+
               and
-       
+
                 no c foo
                 a foo
                 !
-       
+
               In the above case if we have the same id in list \"a\" and \"c\"
               and we delete the instance in one list, and add it in the other,
               then the deletion will always preceed the create.
@@ -626,19 +626,19 @@ submodule tailf-cli-extensions {
       "This annotation can be used togeter with tailf:cli-trigger-on-set
        to also get the behavior that when deleting the target display
        changes to this node first. For exmaple:
-       
+
         container settings {
           tailf:cli-add-mode;
-       
+
           leaf opmode {
             tailf:cli-no-value-on-delete;
-       
+
             type enumeration {
               enum nat;
               enum transparent;
             }
           }
-       
+
           leaf manageip {
             when \"../opmode = 'transparent'\";
             mandatory true;
@@ -647,40 +647,40 @@ submodule tailf-cli-extensions {
               tailf:cli-trigger-on-set;
               tailf:cli-trigger-on-delete;
             }
-       
+
             type string;
           }
         }
-       
+
        What we are trying to achieve here is that if manageip is
        deleted, it should be displayed before opmode, but if we
        configure both opmode and manageip, we should display opmode
        first, ie get the diffs:
-       
+
        settings
         opmode   transparent
         manageip 1.1.1.1
        !
-       
+
        and
-       
+
        settings
         no manageip
         opmode nat
        !
-       
+
        and
-       
+
        settings
         no manageip
         no opmode
        !
-       
+
        The cli-trigger-on-set annotation will cause the 'no manageip'
        command to be displayed before setting opmode. The
        tailf:cli-trigger-on-delete will cause 'no manageip' to be
        placed before 'no opmode' when both are deleted.
-       
+
        In the first diff where both are created, opmode will come first
        due to the diff-dependency setting, regardless of the
        cli-trigger-on-delete and cli-trigger-on-set.
@@ -693,7 +693,7 @@ submodule tailf-cli-extensions {
       "Specify that the dependency should always trigger. It is the
        same as placing one element before another in the data model.
        For example, given the data model:
-       
+
        container X {
          leaf A {
            tailf:cli-diff-dependency '../B' {
@@ -705,14 +705,14 @@ submodule tailf-cli-extensions {
            type empty;
          }
        }
-       
+
        We get the diffs
-       
+
          X B
          X A
-       
+
        and
-       
+
          no X B
          no X A
       ";
@@ -729,7 +729,7 @@ submodule tailf-cli-extensions {
       "Tells the cdb_cli_diff_iterate system call to not generate
        a CLI string when this container is modified. The string will
        instead be generated for the modified sub-element.
-       
+
        Applies to C-style and I-style";
   }
 
@@ -767,7 +767,7 @@ submodule tailf-cli-extensions {
             interface ethernet1/1
        and
             interface ethernet 1/1
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -783,7 +783,7 @@ submodule tailf-cli-extensions {
             interface ethernet1/1
        and
             interface ethernet 1/1
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -811,7 +811,7 @@ submodule tailf-cli-extensions {
       "Tells the CLI to add an explicit exit-from-submode command.
        The tailf:info substatement can be used for adding a custom
        info text for the command.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -825,7 +825,7 @@ submodule tailf-cli-extensions {
        the configuration. It will not be added if cli-exit-command
        is defined as well. The annotation is inherited by all
        sub-modes.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -845,10 +845,10 @@ submodule tailf-cli-extensions {
        items are numbered from 1-N and the format string should
        indicate how they are related by using $(X) (where X is the
        key number). For example:
-       
+
        tailf:cli-key-format '$(1)-$(2)' means that the first key
        item is concatenated with the second key item by a '-'.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -859,7 +859,7 @@ submodule tailf-cli-extensions {
     description
       "Instructs the CLI engine to not sort the keys in alphabetical order
        when presenting them to the user during TAB completion.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -870,9 +870,9 @@ submodule tailf-cli-extensions {
     description
       "Instructs the CLI engine to not print the list as a table in
        the 'show' command.
-       
+
        Can be used in non-config nodes only.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -886,7 +886,7 @@ submodule tailf-cli-extensions {
     description
       "Instructs the CLI engine to not prompt the user whether to proceed
        or not if a warning is generated for this node.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -897,14 +897,14 @@ submodule tailf-cli-extensions {
     description
       "Key values cannot be abbreviated.  The user must always give
        complete values for keys.
-       
+
        In the J-style CLI this is relevant when using the commands
        'delete' and 'edit'.
-       
+
        In the I- and C-style CLIs this is relevant when using the
        commands 'no', 'show configuration' and for commands to enter
        submodes.
-       
+
        See also /confdConfig/cli/allowAbbrevKeys in confd.conf(5).";
   }
 
@@ -914,14 +914,14 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Key values can be abbreviated.
-       
+
        In the J-style CLI this is relevant when using the commands
        'delete' and 'edit'.
-       
+
        In the I- and C-style CLIs this is relevant when using the
        commands 'no', 'show configuration' and for commands to enter
        submodes.
-       
+
        See also /confdConfig/cli/allowAbbrevKeys in confd.conf(5).";
   }
 
@@ -938,7 +938,7 @@ submodule tailf-cli-extensions {
     description
       "Specifies a template string to be printed before all list entries are
        printed.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -955,7 +955,7 @@ submodule tailf-cli-extensions {
     description
       "Specifies a template string to be printed after all list entries are
        printed.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -973,11 +973,11 @@ submodule tailf-cli-extensions {
     description
       "Specifies that completion for the leaf values is done through a
        callback function.
-       
+
        The argument is the name of an actionpoint, which must be
        implemented by custom code.  In the actionpoint, the completion()
        callback function will be invoked.  See confd_lib_dp(3) for details.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1010,7 +1010,7 @@ submodule tailf-cli-extensions {
     description
       "Tells the CLI to automatically enter multi-line mode when prompting
        the user for a value to this leaf.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1023,9 +1023,9 @@ submodule tailf-cli-extensions {
       "Specifies that the key should allow multiple tokens for the
        value. Proper type restrictions needs to be used to limit
        the range of the leaf value.
-       
+
        Can be used in key leafs only.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1048,9 +1048,9 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Means that the non-integer key should allow range expressions.
-       
+
        Can be used in key leafs only.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1072,7 +1072,7 @@ submodule tailf-cli-extensions {
        example, the delimiters value is set to '/.' then both '/' and
        '.' will be considered delimiters and an key such as 1/2/3.4 will
        consist of the enteties 1,2,3,4, all matched separately.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1082,9 +1082,9 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Means that the integer key should not allow range expressions.
-       
+
        Can be used in key leafs only.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1098,9 +1098,9 @@ submodule tailf-cli-extensions {
     description
       "Specifies that the key should support ranges.  A type matching the
        range expression must be supplied.
-       
+
        Can be used in key leafs only.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1120,18 +1120,18 @@ submodule tailf-cli-extensions {
        function will be invoked to determine if an instance belong in
        the range or not. At least one key element needs a
        cli-custom-range statement.
-       
+
        The argument is the name of an actionpoint, which must be
        implemented by custom code.  In the actionpoint, the
        completion() callback function will be invoked.  See
        confd_lib_dp(3) for details.
-       
+
        When a range expression value which matches the type is given in
        the CLI, the CLI engine will invoke the callback with each
        existing list entry instance.  If the callback returns CONFD_OK,
        it matches the range expression, and if it returns CONFD_ERR, it
        doesn't match.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1151,13 +1151,13 @@ submodule tailf-cli-extensions {
        instances matching a regular expression. This is used
        when instances should be allowed to be created using
        a range expression in set.
-       
+
        The callback is not used for delete or show operations.
-       
+
        The callback is allowed to return a superset of all matching
        instances since the instances will be filtered using the
        range expression afterwards.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1172,9 +1172,9 @@ submodule tailf-cli-extensions {
       "This statement contains the name of a derived type, possibly
        with a prefix.  If no prefix is given, the type must be defined in
        the local module.  For example:
-       
+
         cli-range-type p:my-range-type;
-       
+
        All range expressions must match this type, and a valid key
        value must not match this type.";
   }
@@ -1185,9 +1185,9 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Means that the list allows wildcard expressions in the 'show' pattern.
-       
+
        See also /confdConfig/cli/allowWildcard in confd.conf(5).
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1198,9 +1198,9 @@ submodule tailf-cli-extensions {
     description
       "Means that the list does not allow wildcard expressions in the 'show'
        pattern.
-       
+
        See also /confdConfig/cli/allowWildcard in confd.conf(5).
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1210,10 +1210,10 @@ submodule tailf-cli-extensions {
     description
       "An action or rpc with this attribute will be available in
        configure mode, but not in operational mode.
-       
+
        The default is that the action or rpc is available in both
        configure and operational mode.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1223,10 +1223,10 @@ submodule tailf-cli-extensions {
     description
       "An action or rpc with this attribute will be available in
        operational mode, but not in configure mode.
-       
+
        The default is that the action or rpc is available in both
        configure and operational mode.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1269,12 +1269,12 @@ submodule tailf-cli-extensions {
       "Enables transactions while in a specific submode (or submode of that
        mode).  The modifications performed in that mode will not take effect
        until the user exits that submode.
-       
+
        Can be used in config nodes only.  If used in a container, the
        container must also have a tailf:cli-add-mode statement, and if
        used in a list, the list must not also have a
        tailf:cli-suppress-mode statement.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1285,7 +1285,7 @@ submodule tailf-cli-extensions {
     description
       "Suppresses quoting of non-config elements when displaying them.
        Newlines will be preserved in strings etc.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1302,7 +1302,7 @@ submodule tailf-cli-extensions {
       "Specifies an info string that will be used as a descriptive text for the
        value 'disable' (false) of boolean-typed leafs when the confd.conf(5)
        setting /confdConfig/cli/useShortEnabled is set to 'true'.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1312,7 +1312,7 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Suppresses the confd.conf(5) setting /confdConfig/cli/useShortEnabled.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1322,7 +1322,7 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Do not display value if it is same as default.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1333,7 +1333,7 @@ submodule tailf-cli-extensions {
     description
       "Force the user to enter the name of the key and display the
        key name when displaying the running-configuration.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1345,7 +1345,7 @@ submodule tailf-cli-extensions {
       "Forces the generation of a table for a list element node regardless of
        whether the table will be too wide or not.  This applies to the
        tables generated by the auto-rendred show commands for non-config data.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1358,13 +1358,13 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Specifies that the name of a node is not present in the CLI.
-       
+
        If tailf:cli-drop-node-name is given on a child to a list node,
        we recommend that you also use tailf:cli-suppress-mode on that
        list node, otherwise the CLI will be very confusing.
-       
+
        For example, consider this data model, from the tailf-aaa module:
-       
+
        list alias {
         key name;
         leaf name {
@@ -1376,17 +1376,17 @@ submodule tailf-cli-extensions {
           tailf:cli-drop-node-name;
         }
        }
-       
+
        If you type 'alias foo' in the CLI, you would end up in the
        'alias' submode.  But since the expansion is dropped, you would
        end up specifying the expansion value without typing any command.
-       
+
        If, on the other hand, the 'alias' list had a
        tailf:cli-suppress-mode statement, you would set an expansion
        'bar' by typing 'alias foo bar'.
-       
+
        tailf:cli-drop-node-name cannot be used inside tailf:action.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1399,13 +1399,13 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Specifies that the name of a node is not present in the CLI.
-       
-       
+
+
        Note that is must be used with some care, just
        like tailf:cli-drop-node-name. The resulting data model must still
        be possible to parse deterministically.
        For example, consider the data model
-       
+
        container interfaces {
           list traffic {
               tailf:cli-no-keyword;
@@ -1420,19 +1420,19 @@ submodule tailf-cli-extensions {
               leaf mtu { type uint16; }
           }
        }
-       
+
        In this case it is impossible to determine if the config
-       
+
        interfaces {
           eth0 {
              mtu 1400;
            }
        }
-       
+
        Means that there should be an traffic interface instance named
        'eth0' or a management interface instance maned 'eth0'. If, on
        the other hand, a restriction on the type was used, for example
-       
+
        container interfaces {
           list traffic {
               tailf:cli-no-keyword;
@@ -1447,9 +1447,9 @@ submodule tailf-cli-extensions {
               leaf mtu { type uint16; }
           }
        }
-       
+
        then the problem would disappear.
-       
+
        Used in the J-style CLIs.";
   }
 
@@ -1463,9 +1463,9 @@ submodule tailf-cli-extensions {
        node in the 'show running-configuration' command.  The compact
        representation means that all leaf elements are shown on a
        single line.
-       
+
        Cannot be used in conjunction with tailf:cli-boolean-no.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1483,7 +1483,7 @@ submodule tailf-cli-extensions {
       "Instructs the CLI engine to use the compact representation for this
        node.  The compact representation means that all leaf elements
        are shown on a single line.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1545,7 +1545,7 @@ submodule tailf-cli-extensions {
       "Display leafs in the container as columns, i.e., do not repeat
        the name of the container on each line, but instead indent each
        leaf under the container.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1561,7 +1561,7 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Set a fixed width for the column in the auto-rendered tables.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1577,7 +1577,7 @@ submodule tailf-cli-extensions {
     tailf:use-in "refine";
     description
       "Set a minimum width for the column in the auto-rendered tables.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1598,7 +1598,7 @@ submodule tailf-cli-extensions {
     description
       "Specifies the alignment of the data in the column in the
        auto-rendered tables.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1610,7 +1610,7 @@ submodule tailf-cli-extensions {
     description
       "Specifies that each entry in a leaf-list should be displayed as
        a separate element.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1629,7 +1629,7 @@ submodule tailf-cli-extensions {
       "Specifies that elements in a leaf-list should be entered without
        surrounding brackets. Also, multiple elements can be added to a list
        or deleted from a list.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1651,14 +1651,14 @@ submodule tailf-cli-extensions {
        without surrounding brackets and presented as ranges.  The
        element in the list should be separated by a comma.  For
        example:
-       
+
         vlan 1,3,10-20,30,32,300-310
-       
+
        When this statement is used for lists, the list must have a
        single key.  The elements are be presented as ranges as above.
-       
+
        The type of the list key, or the leaf-list, must be integer based.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1674,7 +1674,7 @@ submodule tailf-cli-extensions {
        the completion list for optional internal nodes, for example, or
        to ensure that the user enters all leaf values in a container
        (if used in combination with cli-sequence-commands).
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1689,7 +1689,7 @@ submodule tailf-cli-extensions {
       "Specifies that an auto-rendered command should be considered complete,
        ie, no additional leaves or containers can be entered on the same
        command line.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1706,12 +1706,12 @@ submodule tailf-cli-extensions {
        This, in combination with tailf:cli-drop-node-name, can be used
        to create CLI commands for setting multiple leafs in a container
        without having to specify the leaf names.
-       
+
        In almost all cases this annotation should be accompanied by the
        tailf:cli-compact-syntax annotation. Otherwise the output from
        'show running-config' will not be correct, and the sequence
        'save xx' 'load override xx' will not work.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1738,7 +1738,7 @@ submodule tailf-cli-extensions {
     description
       "Specifies that all sibling leaves in the container should be
        reset when this element is set.
-       
+
        When used on a container its content is cleared when set.";
   }
 
@@ -1750,7 +1750,7 @@ submodule tailf-cli-extensions {
       "Tells CLI engine to display this container as a separate
        line item even when it has children. Only applies to
        presence containers.
-       
+
        Applicable for optional containers in the C- and I- style CLIs.";
   }
 
@@ -1774,7 +1774,7 @@ submodule tailf-cli-extensions {
       "Specifies that previous cli-sequence-command declaration should
        stop at this point. Only applicable when a cli-sequence-command
        declaration has been used in the parent container.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1788,7 +1788,7 @@ submodule tailf-cli-extensions {
        references to existing instances when the command is executed.
        Without this annotation the requirement is that the instance
        exists on commit time.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1802,7 +1802,7 @@ submodule tailf-cli-extensions {
     description
       "Specifies that this element is optional in the sequence. If it
        is set it must be set in the right sequence but may be skipped.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1818,7 +1818,7 @@ submodule tailf-cli-extensions {
       "Specifies that a path to the show command is considered incomplete,
        i.e., it needs more elements added to the path.  It can also be used
        to specify a minimum number of keys to be given for lists.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -1842,9 +1842,9 @@ submodule tailf-cli-extensions {
       "Hide leaf when submode has been entered. Mostly useful when
        leaf has to be entered in order to enter a submode. Also works
        for flattened containers.
-       
+
        Cannot be used in conjunction with tailf:cli-boolean-no.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1867,10 +1867,10 @@ submodule tailf-cli-extensions {
       "This leaf has to be given as a prefix before entering the actual
        list keys. Very backwards but a construct that exists in some
        Cisco CLIs.
-       
+
        The construct can be used also for leaf-lists but only when
        then tailf:cli-range-list-syntax is also used.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1896,7 +1896,7 @@ submodule tailf-cli-extensions {
        when you save a config and then load it again. With this setting
        in place a leaf that has not been configured will be configured
        after the load.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -1920,7 +1920,7 @@ submodule tailf-cli-extensions {
       "This statement works exactly as tailf:info, with the exception
        that it is used when displaying the element info in the context
        of stats.
-       
+
        Both tailf:info and tailf:cli-oper-info can be present at the same
        time.";
   }
@@ -1933,7 +1933,7 @@ submodule tailf-cli-extensions {
       "Specifies that this node is case-sensitive.
        If applied to a container or a list, any nodes below will
        also be case-sensitive.
-       
+
        Note that this will override any case-sensitivity settings
        configured in confd.conf";
   }
@@ -1946,7 +1946,7 @@ submodule tailf-cli-extensions {
       "Specifies that node is case-insensitive.
        If applied to a container or a list, any nodes below will
        also be case-insensitive.
-       
+
        Note that this will override any case-insensitivity settings
        configured in confd.conf";
   }
@@ -1978,7 +1978,7 @@ submodule tailf-cli-extensions {
       "Specifies that a path to the show command is considered complete, i.e.,
        no more elements can be added to the path.  It can also be used to
        specify a maximum number of keys to be given for lists.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2004,7 +2004,7 @@ submodule tailf-cli-extensions {
       "Specifies that the show command cannot be invoked with the path,
        ie the path is suppressed when auto-rendering show commands for
        config='false' data.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2019,7 +2019,7 @@ submodule tailf-cli-extensions {
       "Specifies that a specific completion match (i.e., a filter match that
        appear at list nodes as an alternative to specifying a single
        instance) to the show command should not be available.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2033,7 +2033,7 @@ submodule tailf-cli-extensions {
        or leaf-list. Only specific instances should be deletable not the
        entire list in one command. ie, 'no foo <instance>' should be allowed
        but not 'no foo'.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2048,7 +2048,7 @@ submodule tailf-cli-extensions {
       "Specifies that the CLI should not auto-render 'no' commands for
        this element. An element with this annotation will not appear in the
        completion list to the 'no' command.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2069,7 +2069,7 @@ submodule tailf-cli-extensions {
        suppressed for a leaf and that a custom error message should
        be displayed when the user attempts to delete a non-existing
        element.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2084,7 +2084,7 @@ submodule tailf-cli-extensions {
       "Specifies that an auto-rendered 'no'-command should be considered complete,
        ie, no additional leaves or containers can be entered on the same
        command line.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2099,7 +2099,7 @@ submodule tailf-cli-extensions {
       "Specifies that an auto-rendered 'no'-command should not be considered
        complete, ie, additional leaves or containers must be entered on the same
        command line.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2110,7 +2110,7 @@ submodule tailf-cli-extensions {
     description
       "Specifies that the CLI engine should not provide match completion
        for the key leafs in the list.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2125,7 +2125,7 @@ submodule tailf-cli-extensions {
       "Specifies that the show running-config command cannot be invoked with
        the path, ie the path is suppressed when auto-rendering show running-
        config commands for config='true' data.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2137,7 +2137,7 @@ submodule tailf-cli-extensions {
       "Specifies that the CLI engine should not perform completion for key
        leafs in the list. This is to avoid querying the data provider
        for all existing keys.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2155,23 +2155,23 @@ submodule tailf-cli-extensions {
        when doing completion in the CLI.  By default, a list entry is
        displayed by listing its key values, and the value of a leaf
        called 'description', if such a leaf exists in the list entry.
-       
+
        The 'cli-instance-info-leafs' statement takes as its argument a
        space separated string of leaf names.  When a list entry is
        displayed, the values of these leafs are concatenated with a
        space character as separator and shown to the user.
-       
+
        For example, when asked to specify an interface the CLI will
        display a list of possible interface instances, say 1 2 3 4.  If
        the cli-instance-info-leafs property is set to 'description' then
        the CLI might show:
-       
+
         Possible completions:
           1 - internet
           2 - lab
           3 - dmz
           4 - wlan
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2186,10 +2186,10 @@ submodule tailf-cli-extensions {
        the need for quoting values containing spaces, but also
        prevents multiple leaves from being set on the same command
        line once a multi-value leaf has been given on a line.
-       
+
        If the tailf:cli-max-words substatements is used then
        additional leaves may be entered.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2209,9 +2209,9 @@ submodule tailf-cli-extensions {
        be referenced from a display template of one leaf. The only
        value accessible is the leaf's own value, accessed through
        $(.).
-       
+
        See the defintion of cli-template-string for more info.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2234,13 +2234,13 @@ submodule tailf-cli-extensions {
        operational mode.  It is primarily intended for displaying
        non-config data but config data may be included in the template
        as well.
-       
+
        See the defintion of cli-template-string for more info.
-       
+
        Some restrictions includes not applying templates on a leaf that
        is the key in a list. It is recommended to use the template
        directly on the list to format the whole list instead.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2262,9 +2262,9 @@ submodule tailf-cli-extensions {
     description
       "Specifies a template string to be printed before all list entries are
        printed.
-       
+
        See the defintion of cli-template-string for more info.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2281,9 +2281,9 @@ submodule tailf-cli-extensions {
     description
       "Specifies a template string to be printed before each list entry is
        printed.
-       
+
        See the defintion of cli-template-string for more info.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2300,9 +2300,9 @@ submodule tailf-cli-extensions {
     description
       "Specifies a template string to be printed after all list entries are
        printed.
-       
+
        See the defintion of cli-template-string for more info.
-       
+
        Used in J-, I- and C-style CLIs.";
   }
 
@@ -2322,9 +2322,9 @@ submodule tailf-cli-extensions {
        command in operational mode.  It is primarily intended for displaying
        config data but non-config data may be included in the template
        as well.
-       
+
        See the defintion of cli-template-string for more info.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2341,9 +2341,9 @@ submodule tailf-cli-extensions {
     description
       "Specifies a template string to be printed before all list entries are
        printed.
-       
+
        See the defintion of cli-template-string for more info.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2361,25 +2361,25 @@ submodule tailf-cli-extensions {
     description
       "Specifies a template string to be printed before each list entry is
        printed.
-       
+
        When used on a container it only has effect when the container
        also has a tailf:cli-add-mode, and when tailf:cli-show-no isn't
        used on the container.
-       
+
        See the defintion of cli-template-string for more info.
-       
+
        The variable .reenter is set to 'true' when the 'show configuration'
        command is executed and the list or container isn't created. This
        allow, for example, to display
-       
+
           create foo
-       
+
        when an instance is created
-       
+
           edit foo
-       
+
        when something inside the instance is modified.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2396,9 +2396,9 @@ submodule tailf-cli-extensions {
     description
       "Specifies a template string to be printed after all list entries are
        printed.
-       
+
        See the defintion of cli-template-string for more info.
-       
+
        Used in I- and C-style CLIs.";
   }
 
@@ -2407,40 +2407,40 @@ submodule tailf-cli-extensions {
     description
       "A template is a text string which is expanded by the CLI engine,
        and then displayed to the user.
-       
+
        The template may contain a mix of text and expandable entries.
        Expandable entries all start with $( and end with a matching ).
        Parentheses and dollar signs need to be quoted in plain text.
-       
+
        The template is expanded as follows:
-       
+
        A parameter is either a relative or absolute path to a leaf
        element (eg /foo/bar, foo/bar), or one of the builtin variables:
        .selected, .entered, .legend_shown, .user, .groups, .ip,
        .display_groups, .path, .ipath or .licounter. In addition the
        variables .spath and  .ispath are available when a command
        is executed from a show path.
-       
+
        .selected
-       
+
            The .selected variable contains the list of selected paths
            to be shown. The show template can inspect this element to
            determine if a given element should be displayed or
            not. For example:
-       
+
                $(.selected~=hwaddr?HW Address)
-       
+
        .entered
-       
+
            The .entered variable is true if the \"entered\" text has
            been displayed (either the auto generated text or a
            showTemplateEnter). This is useful when having a non-table
            template where each instance should have a text.
-       
+
                $(.entered?:host $(name))
-       
+
        .legend_shown
-       
+
            The .legend_shown variable is true if the \"legend\" text has
            been displayed (either the auto generated table header or
            a showTemplateLegend). This is useful to inspect when
@@ -2449,147 +2449,147 @@ submodule tailf-cli-extensions {
            displayed and the showTemplateLegend will not be invoked
            and it may be useful to render the legend specifically
            for this instance.
-       
+
                $(.legend_shown!=true?Address         Interface)
-       
+
        .user
-       
+
            The .user variable contains the name of the current
            user. This can be used for differentiating the content
            displayed for a specific user, or in paths. For exapmle:
-       
+
                $(user{$(.user)}/settings)
-       
+
        .groups
-       
+
            The .groups variable contains the a list of groups that the
            user belongs to.
-       
+
        .display_groups
-       
+
            The .display_groups variable contains a list of selected
            display groups. This can be used to display different
            content depending on the selected display group. For
            example:
-       
+
                $(.display_groups~=details?details...)
-       
+
        .ip
-       
+
            The .ip variable contains the ip address that the user
            connected from.
-       
+
        .path
-       
+
            The .path variable contains the path to the entry,
            formated in CLI style.
-       
+
        .ipath
-       
+
            The .ipath variable contains the path to the entry,
            formated in template style.
-       
+
        .spath
-       
+
            The .spath variable contains the show path,
            formated in CLI style.
-       
+
        .ispath
-       
+
            The .ispath variable contains the show path,
            formated in template style.
-       
+
        .licounter
-       
+
            The .licounter variable contains a counter that is
            incremented for each instance in a list. This means that
            it will be 0 in the legend, contain the total number of
            list instances in the footer and something in between in
            the basic show template.
-       
+
        $(parameter)
-       
+
         The value of 'parameter' is substituted.
-       
+
        $(cond?word1:word2)
-       
+
         The expansion of 'word1' is substituted if 'cond'
         evaluates to true, otherwise the expansion of 'word2' is
         substituted.
-       
+
         'cond' may be one of
-       
+
           parameter
-       
+
             Evaluates to true if the node exists.
-       
+
           parameter == <value>
-       
+
             Evaluates to true if the value of the parameter equals
             <value>.
-       
+
           parameter != <value>
-       
+
             Evalutes to true if the value of the parameter does not
             equal <value>
-       
+
           parameter ~= <value>
-       
+
             Provided that the value of the parameter is a list
             (i.e., the node that the parameter refers to is a
             leaf-list), this expression evaluates to true if <value>
             is a member of the list.
-       
+
        $(parameter|filter)
-       
+
         The value of 'parameter' processed by 'filter' is
         substituted. Filters may be either one of the
         built-ins or a customized filter defined in a
         callback. See /confdConfig/cli/templateFilter.
-       
+
         A built-in 'filter' may be one of:
-       
+
           capfirst
-       
+
             Capitalizes the first character of the value.
-       
+
           lower
-       
+
             Converts the value into lowercase.
-       
+
           upper
-       
+
             Converts the value into uppercase.
-       
+
           filesizeformat
-       
+
             Formats the value in a human-readable format (e.g.,
             '13 KB', '4.10 MB',  '102 bytes' etc), where  K
              means 1024, M means 1024*1024 etc.
-       
+
             When used without argument the default number of
             decimals displayed is 2. When used with a numeric
             integer argument, filesizeformat will display the
             given number of decimal places.
-       
+
           humanreadable
-       
+
             Similar to filesizeformat except no bytes suffix
             is added  (e.g., '13.00 k', '4.10 M' '102' etc),
             where k means 1000, M means 1000*1000 etc.
-       
+
             When used without argument the default number of
             decimals displayed is 2. When used with a numeric
             integer argument, humanreadable will display the
             given number of decimal places.
-       
+
           commasep
-       
+
             Separate the numerical values into groups of three
             digits using a comma (e.g., 1234567 -> 1,234,567)
-       
+
           hex
-       
+
             Display integer as hex number. An argument can be
             used to indicate how many digits should be used in
             the output. If the hex number is too long it will
@@ -2600,9 +2600,9 @@ submodule tailf-cli-extensions {
             with zeroes. Another argument can be given to indicate
             if the hex numbers should be written with lower
             or upper case.
-       
+
             For example:
-       
+
               value            Template                       Output
               12345           {{ value|hex }}                 3039
               12345           {{ value|hex:2 }}               39
@@ -2610,9 +2610,9 @@ submodule tailf-cli-extensions {
               12345           {{ value|hex:-8 }}              3039
               14911           {{ value|hex:-8:upper }}        3A3F
               14911           {{ value|hex:-8:lower }}        3a3f
-       
+
           hexlist
-       
+
             Display integer as hex number with : between pairs. An
             argument can be used to indicate how many digits should
             be used in the output. If the hex number is too long it
@@ -2623,9 +2623,9 @@ submodule tailf-cli-extensions {
             with zeroes. Another argument can be given to indicate
             if the hex numbers should be written with lower
             or upper case.
-       
+
             For example:
-       
+
               value            Template                       Output
               12345           {{ value|hexlist }}             30:39
               12345           {{ value|hexlist:2 }}           39
@@ -2633,124 +2633,124 @@ submodule tailf-cli-extensions {
               12345           {{ value|hexlist:-8 }}          30:39
               14911           {{ value|hexlist:-8:upper }}    3A:3F
               14911           {{ value|hexlist:-8:lower }}    3a:3f
-       
+
           floatformat
-       
+
             Used for type 'float' in tailf-xsd-types. We recommend
             that the YANG built-in type 'decimal64' is used instead of
             'float'.
-       
+
             When used without an argument, rounds a floating-point
             number to one decimal place -- but only if there is a
             decimal part to be displayed.
-       
+
             For example:
-       
+
               value           Template                        Output
               34.23234        {{ value|floatformat }}         34.2
               34.00000        {{ value|floatformat }}         34
               34.26000        {{ value|floatformat }}         34.3
-       
+
             If used with a numeric integer argument, floatformat
             rounds a number to that many decimal places. For example:
-       
+
               value           Template                        Output
               34.23234        {{ value|floatformat:3 }}       34.232
               34.00000        {{ value|floatformat:3 }}       34.000
               34.26000        {{ value|floatformat:3 }}       34.260
-       
+
             If the argument passed to floatformat is negative, it will
             round a number to that many decimal places -- but only if
             there's a decimal part to be displayed. For example:
-       
+
               value           Template                        Output
               34.23234        {{ value|floatformat:-3 }}      34.232
               34.00000        {{ value|floatformat:-3 }}      34
               34.26000        {{ value|floatformat:-3 }}      34.260
-       
+
             Using floatformat with no argument is equivalent to using
             floatformat with an argument of -1.
-       
+
           ljust:width
-       
+
             Left-align the value given a width.
-       
+
           rjust:width
-       
+
             Right-align the value given a width.
-       
+
           trunc:width
-       
+
             Truncate value to a given width.
-       
+
           lower
-       
+
             Convert the value into lowercase.
-       
+
           upper
-       
+
             Convert the value into uppercase.
-       
+
           show:<dictionary>
-       
+
             Substitutes the result of invoking the default display
             function for the parameter. The dictionary can be used
             for introducing own variables that can be accessed in
             the same manner as builtin variables. The user defined
             variables overrides builtin variables. The dictionary
             is specified as a string on the following form:
-       
+
               (key=value)(:key=value)*
-       
+
             For example, with the following expression:
-       
+
               $(foo|show:myvar1=true:myvar2=Interface)
-       
+
             the user defined variables can be accessed like this:
-       
+
               $(.myvar1!=true?Address) $(.myvar2)
-       
+
             A special case is the dict variable 'indent'. It
             controls the indentation level of the displayed path.
             The current indent level can be incremented and
             decremented using =+ and =-.
-       
+
             For example:
-       
+
               $(foobar|show:indent=+2)
               $(foobar|show:indent=-1)
               $(foobar|show:indent=10)
-       
+
             Another special case is he dict variable 'noalign'.
             It  may be used to suppress the default aligning that
             may occur when displaying an element.
-       
+
             For example:
-       
+
               $(foobar|show:noalign)
-       
+
           dict:<dictionary>
-       
+
             Translates the value using the dictionary. Can for
             example be used for displaying on/off instead of
             true/false. The dictionary is specified as a string on
             the following form:
-       
+
               (key=value)(:key=value)*
-       
+
             For example, with the following expression:
-       
+
               $(foo|dict:true=on:false=off)
-       
+
             if the leaf 'foo' has value 'true', it is displayed as 'on', and
             if its value is 'false' it is displayed as 'off'.
-       
+
         Nested invocations are allowed, ie it is possible to have expressions
         like $((state|dict:yes=Yes:no=No)|rjust:14), or $(/foo{$(../bar)})
-       
-       
+
+
        For example:
-       
+
         list interface {
           key name;
           leaf name { ... }
index 8e69a16f1d9e6b51d7d5e02709e0d71a344bd862..7db659a9bcf42944d32ae4a15f014712d65b4ada 100644 (file)
@@ -18,68 +18,68 @@ module tailf-common {
   revision 2015-05-22 {
     description
       "Released as part of ConfD-5.4.2 / NCS-3.4.2.
-       
+
        Allow tailf:export and tailf:unique-selector in
          tailf:annotate-module.";
   }
   revision 2015-03-19 {
     description
       "Released as part of ConfD-5.4 / NCS-3.4.
-       
+
        Added if-feature as substatement to tailf:annotate.
-       
+
        Added tailf:no-dependency.
-       
+
        Updated the description for tailf:dependency.
-       
+
        Allow tailf:id-value as substatement to 'module',
        tailf:annotate-module, 'choice', and 'case'.";
   }
   revision 2014-11-13 {
     description
       "Released as part of ConfD-5.3 / NCS-3.3.
-       
+
        Added tailf:export.";
   }
   revision 2014-06-30 {
     description
       "Released as part of ConfD-5.2 / NCS-3.2.
-       
+
        Added tailf:sha-256-digest-string and tailf:sha-512-digest-string.";
   }
   revision 2014-03-27 {
     description
       "Released as part of ConfD-5.1 / NCS-3.1.
-       
+
        Added tailf:actionpoint as substatement to refine.
        Removed must as substatement to tailf:symlink.";
   }
   revision 2014-02-20 {
     description
       "Released as part of ConfD-5.0.2 / NCS-3.0.2.
-       
+
        Added tailf:snmp-ned-recreate-when-modified.";
   }
   revision 2013-12-23 {
     description
       "Released as part of ConfD-5.0.1 / NCS-3.0.1.
-       
+
        Allow 'unique' in tailf:annotate and tailf:annotate-statement.
-       
+
        Added tailf:snmp-ned-delete-before-create.";
   }
   revision 2013-11-07 {
     description
       "Released as part of ConfD-5.0 / NCS-3.0.
-       
+
        Allow tailf:code-name as substatement to 'bit'.
-       
+
        Disallow tailf:id-value as substatement to 'enum'. Use the
        standard YANG 'value' statement instead.
-       
+
        Deprecated tailf:hex-list.  Use yang:hex-string instead.
          There are no plans to remove tailf:hex-list.
-       
+
        Added the types tailf:ipv4-address-and-prefix-length,
        tailf:ipv6-address-and-prefix-length, and
        tailf:ip-address-and-prefix-length,";
@@ -87,58 +87,58 @@ module tailf-common {
   revision 2013-09-05 {
     description
       "Released as part of ConfD-4.3.
-       
+
        Added tailf:auto-compact as substatement to tailf:indexed-view.";
   }
   revision 2013-06-14 {
     description
       "Released as part of ConfD-4.3.
-       
+
        Deprecated tailf:symlink.  Use tailf:link instead.
-       
+
        Allow tailf:alt-name as substatement to tailf:action and rpc.
-       
+
        Allow status as substatement to tailf:action.
-       
+
        Allow description in tailf:annotate and tailf:annotate-statement.";
   }
   revision 2013-05-16 {
     description
       "Released as part of ConfD-4.2.2.
-       
+
        Added tailf:link";
   }
   revision 2013-03-07 {
     description
       "Released as part of ConfD-4.2.
-       
+
        Allow 'pattern' in tailf:annotate-statement.";
   }
   revision 2012-11-08 {
     description
       "Released as part of ConfD-4.1.
-       
+
        Added tailf:unique-selector and tailf:unique-leaf.
-       
+
        Allow tailf:info in bit.
-       
+
        Allow tailf:code-name as substatement to all statements that
        define data nodes in the schema tree and the 'rpc',
        'notification', 'identity', and 'tailf:action' statements.
-       
+
        Allow status in tailf:symlink";
   }
   revision 2012-08-23 {
     description
       "Released as part of ConfD-4.0.1.
-       
+
        Allow tailf:cli-operational-mode and tailf:cli-configure-mode in
          rpc.";
   }
   revision 2012-06-14 {
     description
       "Released as part of ConfD-4.0.
-       
+
        Added tailf:display-hint.";
   }
   revision 2012-05-24 {
@@ -148,35 +148,35 @@ module tailf-common {
   revision 2012-03-08 {
     description
       "Released as part of ConfD-3.9.
-       
+
        Added tailf:timeout.
        Added tailf:non-strict-leafref.";
   }
   revision 2011-12-08 {
     description
       "Released as part of ConfD-3.8.
-       
+
        Allow validation statements in tailf:annotate and
        tailf:annotate-statement.
-       
+
        Allow tailf:validate in must, in order to override the evaluation
        of the must expression with a callback function.
-       
+
        Disallow tailf:info in range, length and pattern.
-       
+
        Added tailf:snmp-ned-* statements to control the SNMP NED
        behavior in NCS.";
   }
   revision 2011-10-20 {
     description
       "Released as part of ConfD-3.7.1.
-       
+
        Added tailf:priority.";
   }
   revision 2011-09-22 {
     description
       "Released as part of ConfD-3.7.
-       
+
        Allow tailf:typepoint as substatement to leaf and leaf-list.
        Allow tailf:id as substatement to tailf:annotate-module.
        Allow tailf:sort-priority as substatement to tailf:symlink.
@@ -185,19 +185,19 @@ module tailf-common {
        Added tailf:snmp-delete-value and tailf:snmp-send-delete-value.
        Added tailf:step.
        Added tailf:annotate-statement.
-       
+
        Clarified how tailf:display-when is evaluated for lists.";
   }
   revision 2011-08-25 {
     description
       "Released as part of ConfD-3.6.2.
-       
+
        Included latest tailf-cli-extension submodule.";
   }
   revision 2011-06-30 {
     description
       "Released as part of ConfD-3.6.1.
-       
+
        Clarified what statements are allowed in tailf:annotate and
        tailf:annotate-module.  Specifically, that 'symlink' and 'action'
        are not allowed.";
@@ -205,19 +205,19 @@ module tailf-common {
   revision 2011-05-26 {
     description
       "Released as part of ConfD-3.6.
-       
+
        Allow multiple tailf:snmp-name on leafs that represent MIB scalars.";
   }
   revision 2011-03-31 {
     description
       "Released as part of ConfD-3.5.1.
-       
+
        Allow tailf:alt-name as substatement to tailf:symlink.";
   }
   revision 2011-02-24 {
     description
       "Released as part of ConfD-3.5.
-       
+
        Allow tailf:info as substatement to type.
        Added tailf:writable.
        Removed the deprecated tailf:cli-default-order statement.
@@ -226,7 +226,7 @@ module tailf-common {
   revision 2010-11-04 {
     description
       "Released as part of ConfD-3.4.
-       
+
        Added tailf:snmp-exclude-object.
        Allow tailf:hidden as substatement to tailf:symlink.
        Allow multiple tailf:hidden statements to be specified on a node.
@@ -235,118 +235,118 @@ module tailf-common {
   revision 2010-09-16 {
     description
       "Released as part of ConfD-3.3.2.
-       
+
        Included latest tailf-cli-extension submodule.";
   }
   revision 2010-08-19 {
     description
       "Released as part of ConfD-3.3.1.
-       
+
        Allow multiple tailf:snmp-name statements, and expanded the
        semantic meaning of this statement.";
   }
   revision 2010-07-21 {
     description
       "Released as part of ConfD-3.3.0.3.
-       
+
        Added tailf:sort-priority.";
   }
   revision 2010-06-17 {
     description
       "Released as part of ConfD-3.3.
-       
+
        Added tailf:value-length.
-       
+
        Added tailf:info-html.
-       
+
        Added tailf:display-default-order, and deprecated
        tailf:cli-default-order.
-       
+
        Added tailf:dependency as a substatement to when.
-       
+
        Removed the deprecated statements tailf:constant-leaf and
        tailf:constant-value.";
   }
   revision 2010-04-22 {
     description
       "Released as part of ConfD-3.2.1.
-       
+
        Added tailf:invocation-mode,
-       
+
        Fixed bug in tailf:octet-list pattern.";
   }
   revision 2010-03-18 {
     description
       "Released as part of ConfD-3.2.
-       
+
        Split this module into the main module and two submodules,
        tailf-meta-extensions, and tailf-cli-extensions.
-       
+
        Added many tailf:cli- statements in the submodule
        tailf-cli-extensions.
-       
+
        Added tailf:info.
-       
+
        Allow tailf:display-when in tailf:action.
-       
+
        Added tailf:snmp-lax-type-check.
-       
+
        Deprecated tailf:instance-info-leafs.  Use
        tailf:cli-instance-info-leafs instead.
-       
+
        Removed the argument in tailf:cli-show-no to better match
        all the other tailf:cli- statements.";
   }
   revision 2010-01-28 {
     description
       "Released as part of ConfD-3.1.1.
-       
+
        Allow tailf:snmp-oid and tailf:snmp-name in tailf:symlink.
-       
+
        Added tailf:key-default.
-       
+
        Allow tailf:suppress-echo in leaf and leaf-list.";
   }
   revision 2009-12-17 {
     description
       "Released as part of ConfD-3.1.
-       
+
        Added tailf:dependency as a substatement to must.
-       
+
        Added must and tailf:display-when as children to tailf:symlink.
-       
+
        Added tailf:interrupt to tailf:exec.
-       
+
        Allow many tailf statement as substatements to 'refine'.
-       
+
        Allow tailf:symlink statement in 'augment' and 'case'.
-       
+
        Added tailf:internal to tailf:actionpoint.
-       
+
        Deprecated tailf:constant-leaf and tailf:constant-value.";
   }
   revision 2009-11-06 {
     description
       "Released as part of ConfD-3.0.1.
-       
+
        Added tailf:annotate-module statement.
-       
+
        Added tailf:code-name statement.
-       
+
        Clarified the tailf:path-filters statement, and added
        tailf:no-subtree-match.";
   }
   revision 2009-10-01 {
     description
       "Released as part of ConfD-3.0.
-       
+
        Clarified that tailf:annotate is applied on the expanded tree.
        Bugfixes in some typedef patterns.";
   }
   revision 2009-03-17 {
     description
       "Released as part of ConfD-2.8.
-       
+
        Changed module name from tailf-extensions to reflect the content
        better.";
   }
@@ -361,7 +361,7 @@ module tailf-common {
        The value must start with an S.  Any byte magnifier can be left
        out, e.g. S1K1B equals 1025 bytes.  The order is significant
        though, i.e. S1B56G is not a valid byte size.
-       
+
        In ConfD, a 'size' value is represented as an uint64.";
   }
 
@@ -371,7 +371,7 @@ module tailf-common {
     }
     description
       "A list of dot-separated octets e.g. '192.168.255.1.0'.
-       
+
        The statement tailf:value-length can be used to restrict the number
        of octets.  Note that using the 'length' restriction limits the
        number of characters in the lexical representation.";
@@ -382,40 +382,40 @@ module tailf-common {
     description
       "The md5-digest-string type automatically computes a MD5 digest for
        a value adhering to this type.
-       
+
        This is best explained using an example.  Suppose we have a
        leaf:
-       
+
           leaf key {
               type tailf:md5-digest-string;
           }
-       
+
        A valid configuration is:
-       
+
           <key>$0$In god we trust.</key>
-       
+
        The '$0$' prefix signals that this is plain text.  When a plain
        text value is received by the server, an MD5 digest is
        calculated, and the string '$1$<salt>$' is prepended to the
        result, where <salt> is a random eight character salt used to
        generate the digest.  This value is stored in the configuration
        data store.
-       
+
        When a value of this type is read, the computed MD5 value is
        always returned.  In the example above, the following value
        could be returned:
-       
+
           <key>$1$fB$ndk2z/PIS0S1SvzWLqTJb.</key>
-       
+
        If a value starting with '$1$' is received, the server
        knows that the value already represents an MD5 digest, and
        stores it as is in the data store.
-       
+
        A value adhering to this type must have a '$0$' or a
        '$1$<salt>$' prefix.
-       
+
        If a default value is specified, it must have a '$1$<salt>$' prefix.
-       
+
        The digest algorithm used is the same as the md5 crypt function
        used for encrypting passwords for various UNIX systems, see e.g.
        http://www.freebsd.org/cgi/cvsweb.cgi/~checkout/~/src/lib/libcrypt/crypt.c
@@ -432,13 +432,13 @@ module tailf-common {
     description
       "The sha-256-digest-string type automatically computes a SHA-256
        digest for a value adhering to this type.
-       
+
        A value of this type matches one of the forms:
-       
+
         $0$<clear text password>
         $5$<salt>$<password hash>
         $5$rounds=<number>$<salt>$<password hash>
-       
+
        The '$0$' prefix signals that this is plain text. When a plain
        text value is received by the server, a SHA-256 digest is
        calculated, and the string '$5$<salt>$' is prepended to the
@@ -448,13 +448,13 @@ module tailf-common {
        /confdConfig/cryptHash/rounds parameter, which if set to a number
        other than the default will cause '$5$rounds=<number>$<salt>$' to
        be prepended instead of only '$5$<salt>$'.
-       
+
        If a value starting with '$5$' is received, the server
        knows that the value already represents a SHA-256 digest, and
        stores it as is in the data store.
-       
+
        If a default value is specified, it must have a '$5$' prefix.
-       
+
        The digest algorithm used is the same as the SHA-256 crypt function
        used for encrypting passwords for various UNIX systems, see e.g.
        http://www.akkadia.org/drepper/SHA-crypt.txt";
@@ -470,13 +470,13 @@ module tailf-common {
     description
       "The sha-512-digest-string type automatically computes a SHA-512
        digest for a value adhering to this type.
-       
+
        A value of this type matches one of the forms:
-       
+
         $0$<clear text password>
         $6$<salt>$<password hash>
         $6$rounds=<number>$<salt>$<password hash>
-       
+
        The '$0$' prefix signals that this is plain text.  When a plain
        text value is received by the server, a SHA-512 digest is
        calculated, and the string '$6$<salt>$' is prepended to the
@@ -486,13 +486,13 @@ module tailf-common {
        /confdConfig/cryptHash/rounds parameter, which if set to a number
        other than the default will cause '$6$rounds=<number>$<salt>$' to
        be prepended instead of only '$6$<salt>$'.
-       
+
        If a value starting with '$6$' is received, the server
        knows that the value already represents a SHA-512 digest, and
        stores it as is in the data store.
-       
+
        If a default value is specified, it must have a '$6$' prefix.
-       
+
        The digest algorithm used is the same as the SHA-512 crypt function
        used for encrypting passwords for various UNIX systems, see e.g.
        http://www.akkadia.org/drepper/SHA-crypt.txt";
@@ -507,34 +507,34 @@ module tailf-common {
       "The des3-cbc-encrypted-string type automatically encrypts a value
        adhering to this type using DES in CBC mode followed by a base64
        conversion.  If the value isn't encrypted already, that is.
-       
+
        This is best explained using an example.  Suppose we have a leaf:
-       
+
           leaf enc {
               type tailf:des3-cbc-encrypted-string;
           }
-       
+
        A valid configuration is:
-       
+
           <enc>$0$In god we trust.</enc>
-       
+
        The '$0$' prefix signals that this is plain text.  When a plain
        text value is received by the server, the value is DES3/Base64
        encrypted, and the string '$3$' is prepended.  The resulting
        string is stored in the configuration data store.
-       
+
        When a value of this type is read, the encrypted value is always
        returned.  In the example above, the following value could be
        returned:
-       
+
           <enc>$3$lyPjszaQq4EVqK7OPOxybQ==</enc>
-       
+
        If a value starting with '$3$' is received, the server knows
        that the value is already encrypted, and stores it as is in the
        data store.
-       
+
        A value adhering to this type must have a '$0$' or a '$3$' prefix.
-       
+
        ConfD uses a configurable set of encryption keys to encrypt the
        string.  For details, see 'encryptedStrings' in the
        confd.conf(5) manual page.";
@@ -602,15 +602,15 @@ module tailf-common {
     tailf:occurence "*";
     description
       "Makes this data model visible in the northbound interface 'agent'.
-       
+
        This statement makes it possible to have a data model visible
        through some northbound interface but not others.  For example,
        if a MIB is used to generate a YANG module, the resulting YANG
        module can be exposed through SNMP only.
-       
+
        Use the special agent 'none' to make the data model completely
        hidden to all notherbound interfaces.
-       
+
        The agent can also be a free-form string.  In this case, the data
        model will be visible to maapi applications using this string as its
        'context'.";
@@ -638,33 +638,33 @@ module tailf-common {
        Annotation statements can be put in a separate annotation
        module, and then passed to 'confdc' (or 'pyang') when the
        original module is compiled.
-       
+
        Any 'tailf' statement, except 'symlink' and 'action' can be
        annotated.  The statements 'symlink' and 'action' modifies the
        data model, and are thus not allowed.
-       
+
        The validation statements 'must', 'min-elements',
        'max-elements', 'mandatory', 'unique', and 'when' can also be
        annotated.
-       
+
        A 'description' can also be annotated.
-       
+
        'tailf:annotate' can occur on the top-level in a module, or in
        another 'tailf:annotate' statement.
-       
+
        The argument is a 'schema-nodeid', i.e. the same as for
        'augment', or a '*'.  It identifies a target node in the schema
        tree to annotate with new statements.  The special value '*' can
        be used within another 'tailf:annotate' statetement, to select all
        children for annotation.
-       
+
        The target node is searched for after 'uses' and 'augment'
        expansion.  All substatements to 'tailf:annotate' are treated as
        if they were written inline in the target node, with the
        exception of any 'tailf:annotate' substatements.  These are
        treated recursively.  For example, the following snippet adds
        one callpoint to /x and one to /x/y:
-       
+
         tailf:annotate /x {
           tailf:callpoint xcp;
           tailf:annotate y {
@@ -698,11 +698,11 @@ module tailf-common {
        statements can be put in a separate annotation module, and then
        passed to 'confdc' (or 'pyang') when the original module is
        compiled.
-       
+
        'tailf:annotate-module' can occur on the top-level in a module,
        and is used to add 'tailf' statements to the module statement
        itself.
-       
+
        The argument is a name of the module or submodule to annotate.";
   }
 
@@ -725,35 +725,35 @@ module tailf-common {
        touching the module source.  Annotation statements can be put in
        a separate annotation module, and then passed to 'confdc' (or
        'pyang') when the original module is compiled.
-       
+
        Any 'tailf' statement, except 'symlink' and 'action' can be
        annotated.  The statements 'symlink' and 'action' modifies the
        data model, and are thus not allowed.
-       
+
        The validation statements 'must', 'min-elements',
        'max-elements', 'mandatory', 'unique', and 'when' can also be
        annotated.
-       
+
        The type restriction statement 'pattern' can also be annotated.
-       
+
        A 'description' can also be annotated.
-       
+
        The argument is an XPath-like expression that selects a
        statement to annotate.  The syntax is:
-       
+
          <statement-name> ( '[' <arg-name> '=' <arg-value> ']' )
-       
+
        where <statement-name> is the name of the statement to annotate,
        and if there are more than one such statement in the parent,
        <arg-value> is the quoted value of the statement's argument.
-       
+
        All substatements to 'tailf:annotate-statement' are treated as
        if they were written inline in the target node, with the
        exception of any 'tailf:annotate-statement' substatements.
        These are treated recursively.
-       
+
        For example, given the grouping:
-       
+
         grouping foo {
           leaf bar {
             type string;
@@ -762,9 +762,9 @@ module tailf-common {
             type string;
           }
         }
-       
+
        the following snippet adds a callpoint to the leaf 'baz':
-       
+
         tailf:annotate-statement grouping[name='foo'] {
           tailf:annotate-statement leaf[name='baz'] {
             tailf:callpoint xcp;
@@ -791,12 +791,12 @@ module tailf-common {
          tailf:hex-list
          tailf:octet-list
          xs:hexBinary
-       
+
        This type restriction is used to limit the length of the
        value-space value of the type.  Note that since all these types are
        derived from 'string', the standard 'length' statement restricts the
        lexical representation of the value.
-       
+
        The argument is a length expression string, with the same syntax as
        for the standard YANG 'length' statement.";
   }
@@ -811,34 +811,34 @@ module tailf-common {
     tailf:substatement "tailf:no-subtree-match";
     description
       "Used for type 'instance-identifier' only.
-       
+
        The argument is a space separated list of absolute or relative XPath
        expressions.
-       
+
        This statement declares that the instance-identifier value must match
        one of the specified paths, according to the following rules:
-       
+
         1.  each XPath expression is evaluated, and returns a node set.
-       
+
         2.  if there is no 'tailf:no-subtree-match' statement, the
             instance-identifier matches if it refers to a node in this
             node set, or if it refers to any descendant node of this
             node set.
-       
+
         3.  if there is a 'tailf:no-subtree-match' statement, the
             instance-identifier matches if it refers to a node in this
             node set.
-       
+
        For example:
-       
+
          The value /a/b[key='k1']/c matches the XPath expression
          /a/b[key='k1']/c.
-       
+
          The value /a/b[key='k1']/c matches the XPath expression /a/b/c.
-       
+
          The value /a/b[key='k1']/c matches the XPath expression /a/b, if
          there is no 'tailf:no-subtree-match' statement.
-       
+
          The value /a/b[key='k1'] matches the XPath expression /a/b, if
          there is a 'tailf:no-subtree-match' statement.
       ";
@@ -856,20 +856,20 @@ module tailf-common {
        argument is a positive integer or decimal value greater than
        zero.  The allowed values for the type is further restricted to
        only those values that matches the expression:
-       
+
          'low' + n * 'step'
-       
+
        where 'low' is the lowest allowed value in the range, n is a
        non-negative integer.
-       
+
        For example, the following type:
-       
+
          type int32 {
            range '-2 .. 9' {
              tailf:step 3;
            }
          }
-       
+
        has the value space { -2, 1, 4, 7 }";
   }
 
@@ -903,7 +903,7 @@ module tailf-common {
        order for ConfD to be able to manipulate external data, a data
        provider registers itself using the callpoint id as described in
        confd_lib_dp(3).
-       
+
        A callpoint is inherited to all child nodes unless another
        'callpoint' or an 'cdb-oper' is defined.";
   }
@@ -950,21 +950,21 @@ module tailf-common {
        transaction.  Whenever an element gets written, created, or
        deleted, user code gets invoked and can optionally write more
        data into the same transaction.
-       
+
        The difference between set- and transaction hooks are that set
        hooks are invoked immediately when an element is modified, but
        transaction hooks are invoked at commit time.
-       
+
        The value 'subtree' means that all nodes in the configuration
        below where the hook is defined are affected.
-       
+
        The value 'object' means that the hook only applies to the list
        where it is defined, i.e.  it applies to all child nodes that
        are not themselves lists.
-       
+
        The value 'node' means that the hook only applies to
        the node where it is defined and none of its children.
-       
+
        For more details on hooks,
        see the 'Transformations, Hooks, Hidden Data and Symlinks'
        chapter in the User's Guide.";
@@ -987,21 +987,21 @@ module tailf-common {
        transaction.  Whenever an element gets written, created, or
        deleted, user code gets invoked and can optionally write more
        data into the same transaction.
-       
+
        The difference between set- and transaction hooks are that set
        hooks are invoked immediately when an element is modified, but
        transaction hooks are invoked at commit time.
-       
+
        The value 'subtree' means that all nodes in the configuration
        below where the hook is defined are affected.
-       
+
        The value 'object' means that the hook only applies to the list
        where it is defined, i.e.  it applies to all child nodes that
        are not themselves lists.
-       
+
        The value 'node' means that the hook only applies to
        the node where it is defined and none of its children.
-       
+
        For more details on hooks,
        see the 'Transformations, Hooks, Hidden Data and Symlinks'
        chapter in the User's Guide.";
@@ -1083,12 +1083,12 @@ module tailf-common {
       "This statement is used when old confspec models are translated to
        YANG.  It needs to be present if systems deployed with data
        based on confspecs are updated to YANG based data models.
-       
+
        In confspec, the 'id' of a data model was a string that never
        would change, even if the namespace URI would change.  It is not
        needed in YANG, since the namespace URi cannot change as a module
        is updated.
-       
+
        This statement is typically present in YANG modules generated by
        cs2yang.  If no live upgrade needs to be done from a confspec
        based system to a YANG based system, this statement can be
@@ -1150,8 +1150,8 @@ module tailf-common {
        data model.  Whenever such a collision occurs the ConfD daemon
        fails to start and instructs the developer to use the 'id-value'
        statement to resolve the collision.
-       
-       
+
+
        A thorough discussion on id-value can be found in the section Hash
        Values and the id-value Statement in the YANG chapter in the User
        Guide.";
@@ -1170,18 +1170,18 @@ module tailf-common {
        some other leaf in the datamodel.  If no value has been set for
        this leaf, it defaults to the value of the leaf that the
        'default-ref' argument points to.
-       
+
        The textual format of a 'default-ref' is an XPath location path with
        no predicates.
-       
+
        The type of the leaf with a 'default-ref' will be set to the
        type of the referred leaf.  This means that the type statement in
        the leaf with the 'default-ref' is ignored, but it SHOULD match the
        type of the referred leaf.
-       
+
        Here is an example, where a group without a 'hold-time' will get as
        default the value of another leaf up in the hierarchy:
-       
+
         leaf hold-time {
             mandatory true;
             type int32;
@@ -1222,7 +1222,7 @@ module tailf-common {
                not possible to use the function 'find_next' on an
                unsorted list.  If an unsorted list is filtered (e.g.,
                in the CLI, the entire list must be traversed.
-               
+
                If this value is given for a list stored in CDB, it
                has no effect.";
           }
@@ -1255,20 +1255,20 @@ module tailf-common {
        system modifies the target data node instead, and whenever the
        data node is read, the system returns the value of target data
        node.
-       
+
        Note that if the data node is a leaf, the target node MUST also
        be a leaf, and if the data node is a leaf-list, the target node
        MUST also be a leaf-list.
-       
+
        Note that the type of the data node MUST be the same as the
        target data node.  Currently the compiler cannot check this.
-       
+
        The argument is an XPath absolute location path.  If
        the target lies within lists, all keys must be specified.
        A key either has a value, or is a reference to a key in the path of the
        source node, using the function current() as starting
        point for an XPath location path.  For example:
-       
+
          /a/b[k1='paul'][k2=current()/../k]/c";
   }
 
@@ -1277,12 +1277,12 @@ module tailf-common {
     tailf:use-in "leaf-list";
     description
       "Use for config false leafs and leaf-lists only.
-       
+
        This extension serves as a hint to the system that the
        leaf's type has the implict pattern '[^A-Z]*', i.e., all
        strings returned by the data provider are lower case (in
        the 7-bit ASCII range).
-       
+
        The CLI uses this hint when it is run in case-insensitive mode
        to optimize the lookup calls towards the data provider.";
   }
@@ -1320,11 +1320,11 @@ module tailf-common {
       "This statement creates a secondary index with a given name in the
        parent list.  The secondary index can be used to control the
        displayed sort order of the instances of the list.
-       
+
        Read more about sort order in 'The ConfD Command-Line Interface
        (CLI)' chapters in the User Guide, confd_lib_dp(3), and
        confd_lib_maapi(3).
-       
+
        NOTE: Currently secondary-index is not supported for config false
        data stored in CDB.";
   }
@@ -1361,7 +1361,7 @@ module tailf-common {
        with C callback functions that is loaded into the ConfD daemon at
        startup time. Read more about user-defined types in the
        confd_types(3) manual page.
-       
+
        The argument defines the ID associated with a typepoint.  This
        ID is provided by the shared object, and used by the ConfD
        daemon to locate the implementation of a specific user-defined
@@ -1388,9 +1388,9 @@ module tailf-common {
       "The standard YANG statement 'unique' can be used to check for
        uniqueness within a single list only.  Specifically, it cannot
        be used to check for uniqueness of leafs within a sublist.
-       
+
        For example:
-       
+
          container a {
            list b {
              ...
@@ -1402,11 +1402,11 @@ module tailf-common {
              }
            }
          }
-       
+
        The unique expression above is not legal.  The intention is
        that there must not be any two 'server' entries in any 'b' with
        the same combination of ip and port.  This would be illegal:
-       
+
          <a>
            <b>
              <name>b1</name>
@@ -1423,16 +1423,16 @@ module tailf-common {
              </server>
            </b>
          </a>
-       
+
        With 'tailf:unique-selector' and 'tailf:unique-leaf', this kind
        of constraint can be defined.
-       
+
        The argument to 'tailf:unique-selector' is an XPath descendant
        location path (matches the rule 'descendant-schema-nodeid' in
        RFC 6020).  The first node in the path MUST be a list node, and
        it MUST be defined in the same module as the
        tailf:unique-selector.  For example, the following is illegal:
-       
+
          module y {
            ...
            import x {
@@ -1442,16 +1442,16 @@ module tailf-common {
              ...
            }
          }
-       
+
        For each instance of the node where the selector is defined, it
        is evaluated, and for each node selected by the selector, a
        tuple is constructed by evaluating the 'tailf:unique-leaf'
        expression.  All such tuples must be unique.  If a
        'tailf:unique-leaf' expression refers to a non-existing leaf,
        the corresponding tuple is ignored.
-       
+
        In the example above, the unique expression can be replaced by:
-       
+
          container a {
            tailf:unique-selector 'b/server' {
              tailf:unique-leaf 'ip';
@@ -1461,7 +1461,7 @@ module tailf-common {
              ...
            }
          }
-       
+
        For each container 'a', the XPath expression 'b/server' is
        evaluated.  For each such server, a 2-tuple is constructed with
        the 'ip' and 'port' leafs.  Each such 2-tuple is guaranteed to
@@ -1479,7 +1479,7 @@ module tailf-common {
     description
       "See 'tailf:unique-selector' for a description of how this statement
        is used.
-       
+
        The argument is an XPath descendant location path (matches the
        rule 'descendant-schema-nodeid' in RFC 6020), and it MUST refer to
        a leaf.";
@@ -1513,22 +1513,22 @@ module tailf-common {
        typically checks it towards other values in the data store.
        Validation callbacks are used when the YANG built-in validation
        constructs ('must', 'unique') are not expressive enough.
-       
+
        Callbacks use the API described in confd_lib_maapi(3) to
        access whatever other configuration values needed to perform the
        validation.
-       
+
        Validation callbacks are typically assigned to individual nodes
        in the data model, but it may be feasible to use a single
        validation callback on a root node.  In that case the callback
        is responsible for validation of all values and their
        relationships throughout the data store.
-       
+
        The 'validate' statment should in almost all cases have a
        'tailf:dependency' substatement.  If such a statement is not
        given, the validate function is evaluated at every commit,
        leading to overall performance degradation.
-       
+
        If the 'validate' statement is defined in a 'must' statement,
        validation callback is called instead of evaluating the must
        expression.  This is useful if the evaluation of the must statement
@@ -1568,16 +1568,16 @@ module tailf-common {
        or validation function depends on a set of subtrees in the data
        store.  Whenever a node in one of those subtrees are modified,
        the must or when expression is evaluated, or validation code executed.
-       
+
        The textual format of a 'dependency' is an XPath location path with
        no predicates.
-       
+
        If the node that declares the dependency is a leaf, there is an
        implicit dependency to the leaf itself.
-       
+
        For example, with the leafs below, the validation code for'vp'
        will be called whenever 'a' or 'b' is modified.
-       
+
         leaf a {
             type int32;
             tailf:validate vp {
@@ -1587,15 +1587,15 @@ module tailf-common {
         leaf b {
             type int32;
         }
-       
+
        For 'when' and 'must' expressions, the compiler can derive the
        dependencies automatically from the XPath expression in most
        cases.  The exception is if any wildcards are used in the expression.
-       
+
        For 'when' expressions to work, a 'tailf:dependency' statement
        must be given, unless the compiler can figure out the dependency
        by itself.
-       
+
        Note that having 'must' expressions or a 'tailf:validate'
        statement without dependencies impacts the overall performance
        of the system, since all such 'must' expressions or validation
@@ -1624,7 +1624,7 @@ module tailf-common {
       "This extension takes an integer parameter specifying the order
        validation code will be evaluated, in order of increasing
        priority.
-       
+
        The default priority is 0.";
   }
 
@@ -1661,14 +1661,14 @@ module tailf-common {
     description
       "Contains a textual description of the definition, suitable for
        being presented to the CLI and WebUI users.
-       
+
        The first sentence of this textual description is used in the
        CLI as a summary, and displayed to the user when a short
        explanation is presented.
-       
+
        The 'description' statement is related, but targeted to the module
        reader, rather than the CLI or WebUI user.
-       
+
        The info string may contain a ';;' keyword. It is used in type
        descriptions for leafs when the builtin type info needs to be
        customized.  A 'normal' info string describing a type is assumed
@@ -1703,7 +1703,7 @@ module tailf-common {
        before displaying the string to the user.  In most cases,
        using this statement avoids using special descriptions in webspecs
        and clispecs.
-       
+
        If this statement is present, 'tailf:info' cannot be given at the same
        time.";
   }
@@ -1724,7 +1724,7 @@ module tailf-common {
        can be placed on leafs, containers, lists and leaf-lists.
        When showing, or getting configuration, leaf values will be returned
        in order of increasing sort-priority.
-       
+
        The default sort-priority is 0.";
   }
 
@@ -1778,24 +1778,24 @@ module tailf-common {
        northbound interfaces.  All nodes with the same value are
        considered a hide group and are treated the same with regards to
        being visible or not in a northbound interface.
-       
+
        A node with an hidden property is not shown in the northbound
        user interfaces (CLI and Web UI) unless an 'unhide' operation has
        been performed in the user interface.
-       
+
        The hidden value 'full' indicates that the node should be hidden
        from all northbound interfaces, including programmatical interfaces
        such as NETCONF.
-       
+
        The value '*' is not valid.
-       
+
        A hide group can be unhidden only if this has been explicitly
        allowed in the confd.conf(5) daemon configuration.
-       
+
        Multiple hide groups can be specified by giving this statement
        multiple times.  The node is shown if any of the specified hide groups
        has been given in the 'unhide' operation.
-       
+
        Note that if a mandatory node is hidden, a hook callback
        function (or similar) might be needed in order to set the
        element.";
@@ -1821,11 +1821,11 @@ module tailf-common {
        evaluated by the CLI.  If the XPath expression evaluates to
        true, the node is shown as a possible completion candidate,
        otherwise not.
-       
+
        For a list, the display-when expression is evaluated once for the
        entire list.  In this case, the XPath context node is the list's parent
        node.
-       
+
        This feature is further described in the 'Transformations, Hooks,
        Hidden Data and Symlinks' chapter in the User Guide.";
   }
@@ -1845,17 +1845,17 @@ module tailf-common {
       "This property is used in the CLI when 'enableDisplayGroups' has been
        set to true in the confd.conf(5) file.  Display groups are used
        to control which elements should be displayed by the show command.
-       
+
        The argument is a space-separated string of tags.
-       
+
        In the J-style CLI the 'show status', 'show table' and 'show
        all' commands use display groups.  In the C- and I-style
        CLIs the 'show <pattern>' command uses display groups.
-       
+
        If no display groups are specified when running the commands, the
        node will be displayed if it does not have the 'display-groups'
        property, or if the property value includes the special value 'none'.
-       
+
        If display groups are specified when running the command, then
        the node will be displayed only if its 'display-group'
        property contains one of the specified display groups.";
@@ -1866,10 +1866,10 @@ module tailf-common {
     description
       "Specifies that the list should be displayed sorted according
        to this secondary index in the show command.
-       
+
        If the list has more than one secondary index,
        'display-default-order' must be present in one index only.
-       
+
        Used in J-, I- and C-style CLIs and WebUI.";
   }
 
@@ -1936,9 +1936,9 @@ module tailf-common {
        typedef of type binary.  The display-hint is used in the CLI
        and WebUI instead of displaying the binary as a base64-encoded
        string.  It is also used for input.
-       
+
        The value of a 'display-hint' is defined in RFC 2579.
-       
+
        For example, with the display-hint value '1x:', the value is
        printed and inputted as a colon-separated hex list.";
   }
@@ -1958,15 +1958,15 @@ module tailf-common {
     tailf:use-in "refine";
     description
       "Used when the YANG module is mapped to an SNMP module.
-       
+
        If this statement is present as a direct child to 'module',
        it indicates the top level OID for the module.
-       
+
        When the parent node is mapped to an SNMP object, this statement
        specifies the OID of the SNMP object.  It may be either a full
        OID or just a suffix (a period, followed by an integer).  In the
        latter case, a full OID must be given for some ancestor element.
-       
+
        NOTE: when this statement is set in a list, it refers to the OID of
        the correspondig table, not the table entry.";
   }
@@ -1987,45 +1987,45 @@ module tailf-common {
     tailf:occurence "*";
     description
       "Used when the YANG module is mapped to an SNMP module.
-       
+
        When the parent node is mapped to an SNMP object, this statement
        specifies the name of the SNMP object.
-       
+
        If the parent node is mapped to multiple SNMP objects, this
        statement can be given multiple times.  The first statement
        specifies the primary table.
-       
+
        In a list, the argument is interpreted as:
-       
+
              [MIB-MODULE-NAME:]TABLE-NAME
-       
+
        For a leaf representing a table column, it is interpreted as:
-       
+
              [[MIB-MODULE-NAME:]TABLE-NAME:]NAME
-       
+
        For a leaf representing a scalar variable, it is interpreted as:
-       
+
              [MIB-MODULE-NAME:]NAME
-       
+
        If a YANG list is mapped to multiple SNMP tables, each such SNMP
        table must be specified with a 'tailf:snmp-name' statement.  If
        the table is defined in another MIB than the MIB specified in
        'tailf:snmp-mib-module-name', the MIB name must be specified in this
        argument.
-       
+
        A leaf in a list that is mapped to multiple SNMP tables must specify
        the name of the table it is mapped to if it is different from the
        primary table.
-       
+
        In the following example, a single YANG list 'interface' is mapped
        to the MIB tables ifTable, ifXTable, and ipv4InterfaceTable:
-       
+
         list interface {
           key index;
           tailf:snmp-name 'ifTable'; // primary table
           tailf:snmp-name 'ifXTable';
           tailf:snmp-name 'IP-MIB:ipv4InterfaceTable';
-       
+
           leaf index {
             type int32;
           }
@@ -2044,23 +2044,23 @@ module tailf-common {
           }
           ...
         }
-       
+
        When emitting a mib from yang, enum labels are used as-is if they
        follow the SMI rules for labels (no '.' or '_' characters and beginning
        with a lowercase letter). Any label that doesn't satisfy the SMI rules
        will be converted as follows:
-       
+
         An initial uppercase character will be downcased.
-       
+
         If the initial character is not a letter it will be prepended with
         an 'a'.
-       
+
         Any '.' or '_' characters elsewhere in the label will be substituted
         with '-' characters.
-       
+
         In the resulting label, any multiple '-' character sequence will be
         replaced with a single '-' character.
-       
+
        If this automatic conversion is not suitable, snmp-name can be used
        to specify the label to use when emitting a MIB.";
   }
@@ -2079,10 +2079,10 @@ module tailf-common {
     tailf:use-in "refine";
     description
       "Used when the YANG module is mapped to an SNMP module.
-       
+
        Specifies the name of the SNMP MIB module where the SNMP objects
        are defined.
-       
+
        This property is inherited by all child nodes.";
   }
 
@@ -2098,7 +2098,7 @@ module tailf-common {
     tailf:use-in "refine";
     description
       "Used when an SNMP module is generated from the YANG module.
-       
+
        When the parent list node is mapped to an SNMP table, this
        statement specifies the column number of the generated RowStatus
        column.  If it is not specified, the generated RowStatus column
@@ -2120,7 +2120,7 @@ module tailf-common {
        snmp-lax-type-check is set to 'true', the compiler accepts the
        object if the SNMP type's value space is a superset of the YANG
        type's value space.
-       
+
        If snmp-lax-type-check is true and the MIB object is writable, the SNMP
        agent will reject values outside the YANG data type range in runtime.";
   }
@@ -2135,7 +2135,7 @@ module tailf-common {
     description
       "Used when an SNMP MIB is generated from a YANG module, using
        the --generate-oids option to confdc.
-       
+
        If this statement is present, confdc will exclude this object
        from the resulting MIB.";
   }
@@ -2153,14 +2153,14 @@ module tailf-common {
        to delete an optional leaf.  The argument to this statement is the
        special value.  This special value must not be part of the value
        space for the YANG leaf.
-       
+
        If the optional leaf does not exists, reading it over SNMP returns
        'noSuchInstance', unless the statement 'tailf:snmp-send-delete-value'
        is used, in which case the same value as used to delete the node
        is returned.
-       
+
        For example, the YANG leaf:
-       
+
             leaf opt-int {
               type int32 {
                 range '1..255';
@@ -2169,11 +2169,11 @@ module tailf-common {
                 tailf:snmp-send-delete-value;
               }
             }
-       
+
        can be mapped to a SMI object with syntax:
-       
+
             SYNTAX       Integer32 (0..255)
-       
+
        Setting such an object to '0' over SNMP will delete the node
        from the datastore.  If the node does not exsist, reading it over
        SNMP will return '0'.";
@@ -2209,7 +2209,7 @@ module tailf-common {
       "This statement is used on all columns in a table that
        require the usage of the column marked with
        tailf:snmp-ned-set-before-row-modification.
-       
+
        This statement can be used on any column in a table where one
        leaf is marked with tailf:snmp-ned-set-before-row-modification,
        or a table that AUGMENTS such a table, or a table with a
@@ -2232,10 +2232,10 @@ module tailf-common {
        not have to be writable.  The SNMP NED will use this column
        when it uses GET-NEXT to loop through the list entries, and
        when doing existence tests.
-       
+
        If this column is not given, the SNMP NED uses the following
        algorithm:
-       
+
          1.  If there is a RowStatus column, it will be used.
          2.  If an INDEX leaf is accessible, it will be used.
          3.  Otherwise, use the first accessible column returned
@@ -2329,11 +2329,11 @@ module tailf-common {
     tailf:substatement "tailf:info-html";
     description
       "Defines an action (method) in the data model.
-       
+
        When the action is invoked, the instance on which the action is
        invoked is explicitly identified by an hierarchy of
        configuration or state data.
-       
+
        The action statement can have either a 'tailf:actionpoint' or a
        'tailf:exec' substatement.  If the action is implemented as a
        callback in an application daemon, 'tailf:actionpoint' is used,
@@ -2341,9 +2341,9 @@ module tailf-common {
        standalone executable (program or script).  Additionally, 'action'
        can have the same substatements as the standard YANG 'rpc'
        statement, e.g., 'description', 'input', and 'output'.
-       
+
        For example:
-       
+
            container sys {
              list interface {
                key name;
@@ -2361,14 +2361,14 @@ module tailf-common {
                }
              }
            }
-       
+
        We can also add a 'tailf:confirm-text', which defines a string to
        be used in the user interfaces to prompt the user for
        confirmation before the action is executed.  The optional
        'tailf:confirm-default' and 'tailf:cli-batch-confirm-default' can be set
        to control if the default is to proceed or to abort. The latter will only
        be used during batch processing in the CLI (e.g. non-interactive mode).
-       
+
            tailf:action reset {
              tailf:actionpoint my-ap;
              input {
@@ -2381,11 +2381,11 @@ module tailf-common {
                tailf:confirm-default true;
              }
            }
-       
+
        The 'tailf:actionpoint' statement can have a 'tailf:opaque'
        substatement, to define an opaque string that is passed to the
        callback function.
-       
+
            tailf:action reset {
              tailf:actionpoint my-ap {
                tailf:opaque 'reset-interface';
@@ -2397,11 +2397,11 @@ module tailf-common {
                }
              }
            }
-       
+
        When we use the 'tailf:exec' substatement, the argument to exec
        specifies the program or script that should be executed.  For
        example:
-       
+
            tailf:action reboot {
              tailf:exec '/opt/sys/reboot.sh' {
                tailf:args '-c $(context) -p $(path)';
@@ -2472,13 +2472,13 @@ module tailf-common {
     description
       "This element can only be used if the list has a single key of
        an integer type.
-       
+
        It is used to signal that lists instances uses an indexed view,
        i.e., making it possible to insert a new list entry at a certain
        position.  If a list entry is inserted at a certain position, list
        entries following this position are automatically renumbered by the
        system, if needed, to make room for the new entry.
-       
+
        This statement is mainly provided for backwards compatibility with
        confspecs.  New data models should consider using YANG's ordered-by
        user statement instead.";
@@ -2494,7 +2494,7 @@ module tailf-common {
        can either be insterted anywhere in the list, or created at the
        end; but it is an error to try to create a list entry with a
        key that would result in a hole in the sequence.
-       
+
        For example, if the list has entries 1,2,3 it is an error to
        create entry 5, but correct to create 4.";
   }
@@ -2508,10 +2508,10 @@ module tailf-common {
     tailf:use-in "leaf";
     description
       "Must be used for key leafs only.
-       
+
        Specifies a value that the CLI and WebUI will use when a list entry is
        created, and this key leaf is not given a value.
-       
+
        If one key leaf has a key-default value, all key leafs that
        follow this key leaf must also have key-default values.";
   }
@@ -2542,15 +2542,15 @@ module tailf-common {
     description
       "Declares a set of data nodes to be used in the NETCONF <error-info>
        element.
-       
+
        A data provider can use one of the
        confd_*_seterr_extended_info() functions (see confd_lib_dp(3))
        to set these data nodes on errors.
-       
+
        This statement may be used multiple times.
-       
+
        For example:
-       
+
           tailf:error-info {
              leaf severity {
                type enumeration {
@@ -2580,18 +2580,18 @@ module tailf-common {
       "This statement can be used in leafs and leaf-lists similar
        to 'leafref', but allows reference to non-existing leafs,
        and allows reference from config to non-config.
-       
+
        This statement takes no argument, but expects the core YANG
        statement 'path' as a substatement.  The function 'deref' cannot
        be used in the path, since it works on nodes of type leafref
        only.
-       
+
        The type of the leaf or leaf-list must be exactly the same
        as the type of the target.
-       
+
        This statement can be viewed as a substitute for a standard
        'require-instance false' on leafrefs, which isn't allowed.
-       
+
        The CLI uses this statement to provide completion with
        existing values, and the WebUI uses it to provide a
        drop-down box with existing values.";
@@ -2633,30 +2633,30 @@ module tailf-common {
        argument strings.  It may contain variables on the form
        $(variablename).  These variables will be expanded before the
        command is executed.  The following variables are always available:
-       
+
         $(user)   The name of the user which runs the operation.
-       
+
         $(groups) A comma separated string of the names of the groups
                   the user belongs to.
-       
+
         $(ip)     The source ip address of the user session.
-       
+
         $(uid)    The user id of the user.
-       
+
         $(gid)    The group id of the user.
-       
+
        When the parent 'exec' statement is a substatement of 'action', the
        following additional variablenames are available:
-       
+
         $(keypath)   The path that identifies the parent container of 'action'
                      in string keypath form, e.g.,
                      '/sys:host{earth}/interface{eth0}'.
-       
+
         $(path)      The path that identifies the parent container of 'action'
                      in CLI path form, e.g., 'host earth interface eth0'.
-       
+
         $(context)   cli | webui | netconf | any string provided by MAAPI
-       
+
        For  example:
          args '-user $(user) $(uid)';
        might expand to:
@@ -2671,7 +2671,7 @@ module tailf-common {
       "Specifies that ConfD should not convert the RPC XML parameters to
        command line arguments.  Instead, ConfD just passes the raw XML on
        stdin to the program.
-       
+
        This statement is not allowed in 'tailf:action'.";
   }
 
@@ -2703,7 +2703,7 @@ module tailf-common {
     description
       "This statement specifies which signal is sent to executable by ConfD
        in case the client terminates or aborts the execution.
-       
+
        If not specified, 'sigkill' is sent.";
   }
 
@@ -2734,10 +2734,10 @@ module tailf-common {
     tailf:use-in "tailf:exec";
     description
       "Specifies which user id to use when executing the command.
-       
+
        If 'uid' is an integer value, the command is run as the user with
        this user id.
-       
+
        If 'uid' is set to either 'user', 'root' or an integer user id, the
        ConfD daemon must have been started as root (or setuid), or the
        ConfD executable program 'cmdwrapper' must have setuid root
@@ -2771,10 +2771,10 @@ module tailf-common {
     tailf:use-in "tailf:exec";
     description
       "Specifies which group id to use when executing the command.
-       
+
        If 'gid' is an integer value, the command is run as the group with
        this group id.
-       
+
        If 'gid' is set to either 'user', 'root' or an integer group id, the
        ConfD daemon must have been started as root (or setuid), or the
        ConfD executable program 'cmdwrapper' must have setuid root
@@ -2825,9 +2825,9 @@ module tailf-common {
     description
       "DEPRECATED: Use yang:hex-string instead.  There are no plans to remove
        tailf:hex-list.
-       
+
        A list of colon-separated hexa-decimal octets e.g. '4F:4C:41:71'.
-       
+
        The statement tailf:value-length can be used to restrict the number
        of octets.  Note that using the 'length' restriction limits the
        number of characters in the lexical representation.";
@@ -2969,7 +2969,7 @@ module tailf-common {
     description
       "DEPRECATED: Use tailf:link instead.  There are no plans to remove
        tailf:symlink.
-       
+
        This statement defines a 'symbolic link' from a node to some other node.
        The argument is the name of the new node, and the mandatory substatement
        'tailf:path' points to the node which is linked to.";
@@ -2986,13 +2986,13 @@ module tailf-common {
     tailf:use-in "tailf:symlink";
     description
       "This statement specifies which node a symlink points to.
-       
+
        The textual format of a symlink is an XPath absolute location path. If
        the target lies within lists, all keys must be specified.
        A key either has a value, or is a reference to a key in the path of the
        source node, using the function current() as starting
        point for an XPath location path.  For example:
-       
+
        /a/b[k1='paul'][k2=current()/../k]/c
       ";
   }
index 09c829372ce69ab395ff5ecd2bd1b5c63a7d337b..ef891fbd8cfc46f7ebc622293008ac211e73c6fc 100644 (file)
@@ -11,13 +11,13 @@ submodule tailf-meta-extensions {
   revision 2013-11-07 {
     description
       "Released as part of ConfD-5.0.
-       
+
        Added tailf:occurrence.";
   }
   revision 2010-08-19 {
     description
       "Released as part of ConfD-3.3.1.
-       
+
        Added tailf:snmp-identifier.";
   }
   revision 2010-03-18 {
@@ -107,10 +107,10 @@ submodule tailf-meta-extensions {
     tailf:use-in "extension";
     description
       "Specifices how an extension statement may be used.
-       
+
        If this statement is given as a substatement to 'extension',
        it applies to all 'use-in' statements.
-       
+
        If this statement is given as a substatement to 'tailf:substatement',
        it applies to this substatement.";
   }
index 8a235208c5c1537b23a690dec9027a519cc29dcb..329c55c77d4b306800601746589c0600f20d5342 100644 (file)
@@ -1,4 +1,4 @@
-{ 
+{
    "tunnel-monitor-interval":{
       "interval":"$int"
    }
index aa1c846920d061024801cae51e2bbc4ace1b00b9..ff1b3aed130481e8c0bd9e9d67eb59ad7988c977 100644 (file)
@@ -4,7 +4,7 @@
     "enable_dhcp": false,
     "network_id": "{netId}",
     "tenant_id": "{tntId}",
-    "dns_nameservers": [], 
+    "dns_nameservers": [],
     "gateway_ip": "192.168.111.254",
     "ipv6_ra_mode": null,
     "allocation_pools": [
index 27dd13c3f277d0b1f33af85df927f3fd9791c361..39aacef131e87579d9695fc94ba00642bb797c83 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
+<flow
     xmlns="urn:opendaylight:flow:inventory">
     <flow-name>push-mpls-action</flow-name>
     <instructions>
index 5f20ceaa9929d38a0bb450743b127575083d359a..759e19cdf7ff1231e93979a91960b5057e8c27c8 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
+<flow
     xmlns="urn:opendaylight:flow:inventory">
     <flow-name>FooXf159</flow-name>
     <instructions>
index c083d64d46ec4778660ae34135bf11abc362cbc2..e1c8856c6c9f2620e85def2465e64a285e7845b4 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
+<flow
     xmlns="urn:opendaylight:flow:inventory">
     <flow-name>swap-mpls-action</flow-name>
     <instructions>
index 488fc56b1b9cd2347957091dfc7f8dfd8dced411..0c3ac422e1faede207d40098d1e891351384a926 100644 (file)
@@ -33,7 +33,7 @@
         <ipv4-destination>20.4.5.6/16</ipv4-destination>
                <ip-match>
             <ip-protocol>56</ip-protocol>
-            <ip-dscp>60</ip-dscp> 
+            <ip-dscp>60</ip-dscp>
            <ip-ecn>1</ip-ecn>
         </ip-match>
     </match>
index 9e526d2e74a6223338bd16f2b9502e0babddd8b9..0b1ab1850d8eea70df727ade254b48eda9791b0b 100644 (file)
@@ -33,7 +33,7 @@
         <ipv4-destination>20.4.5.6/16</ipv4-destination>
                <ip-match>
             <ip-protocol>56</ip-protocol>
-            <ip-dscp>60</ip-dscp> 
+            <ip-dscp>60</ip-dscp>
            <ip-ecn>1</ip-ecn>
         </ip-match>
     </match>
index 0d7bde5c5215fffaa97a27bd43429f6ae9028318..240779b6ae2c36326b4d8574a5ca0bb29e6d28ab 100644 (file)
@@ -33,7 +33,7 @@
         <ipv4-destination>20.4.0.0/16</ipv4-destination>
                <ip-match>
             <ip-protocol>56</ip-protocol>
-            <ip-dscp>60</ip-dscp> 
+            <ip-dscp>60</ip-dscp>
            <ip-ecn>1</ip-ecn>
         </ip-match>
     </match>
index 0273652088bebf2a0004a2d0313741de54ce50fa..4d35339696310cff80bd978eb4a2f4073221f3ae 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
+<flow
     xmlns="urn:opendaylight:flow:inventory">
     <strict>false</strict>
     <instructions>
index 785d093ffd27333076990257251c98109207d2b2..ed6b12bfaae4696b6d3805717e00c49f168625fe 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
+<flow
     xmlns="urn:opendaylight:flow:inventory">
     <strict>false</strict>
     <instructions>
index 7ba5f335b31eb9b0ae2a81da09579f10e4afdc06..caa326eb50cbc905cd93b8e6439af0f41562dc7f 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
+<flow
     xmlns="urn:opendaylight:flow:inventory">
     <strict>false</strict>
     <instructions>
index 607af868933ac3baea769a10922237de2a5531b9..f1929bc81dcc85b1581c28588edbd6adfb07dd57 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
+<flow
     xmlns="urn:opendaylight:flow:inventory">
     <strict>false</strict>
     <instructions>
index bc8ca9435c90230388dc0677f69de86f7a6c4d90..56c3ff9ef5696aba4e525cf457a1d4d593fd646d 100644 (file)
                 <set-mpls-ttl-action>
                     <mpls-ttl>1</mpls-ttl>
                 </set-mpls-ttl-action>
-                <order>0</order>    
+                <order>0</order>
             </action>
             <bucket-id>21</bucket-id>
             <watch_group>14</watch_group>
         <bucket>
             <action>
                 <copy-ttl-out/>
-                <order>0</order>  
+                <order>0</order>
             </action>
             <bucket-id>30</bucket-id>
             <watch_group>14</watch_group>
index 1aa928d60f6efa52191ec5eee31df1aebc3ccf40..87aca19dab6dd41e82b4ea43c74583d887ec9e8d 100644 (file)
                 <set-mpls-ttl-action>
                     <mpls-ttl>1</mpls-ttl>
                 </set-mpls-ttl-action>
-                <order>0</order>    
+                <order>0</order>
             </action>
             <bucket-id>21</bucket-id>
             <watch_group>14</watch_group>
         <bucket>
             <action>
                 <copy-ttl-out/>
-                <order>0</order>  
+                <order>0</order>
             </action>
             <bucket-id>30</bucket-id>
             <watch_group>14</watch_group>
index 81aa83b7b07a6d413514b8778a115eb85d3dd1b5..c449c1495962dda328f5028f3837c3a94e46f920 100755 (executable)
@@ -1,14 +1,14 @@
 # This script is designed to be run in a directory where the karaf.log file is present
-# It greps the log file and produced 3 text files which can then be used to find more 
+# It greps the log file and produced 3 text files which can then be used to find more
 # information about transactions
 #
-# To properly use this script you must ensure that the karaf.log is produced with the 
+# To properly use this script you must ensure that the karaf.log is produced with the
 # following log settings (this goes in etc/org.ops4j.pax.logging.cfg)
 #
 # log4j.logger.org.opendaylight.controller.cluster.datastore.Shard=DEBUG
 # log4j.logger.org.opendaylight.controller.cluster.datastore.AbstractTransactionContext=DEBUG
 #
+
 grep "Total modifications" karaf.log | awk '{print $1","$2"," $20 "," $23}' > txnbegin.txt
 grep "Applying local modifications for Tx" karaf.log | awk '{print $1","$2","$22}' > txnreached.txt
 grep "currentTransactionComplete" karaf.log | awk '{print $1","$2"," $18}' > txnend.txt
index 6a39724799135e9e34f3262a0c03d2785af0dfdf..ee920e7c868b547860225111bcab6a748da6f4af 100644 (file)
@@ -28,7 +28,7 @@ module-shards = [
             {
                 name="default"
                 replicas = {{{REPLICAS_1}}}
-                
+
             }
         ]
     },
@@ -38,7 +38,7 @@ module-shards = [
             {
                 name="topology"
                 replicas = {{{REPLICAS_2}}}
-                
+
             }
         ]
     },
@@ -48,7 +48,7 @@ module-shards = [
             {
                 name="inventory"
                 replicas = {{{REPLICAS_3}}}
-                
+
             }
         ]
     },
index 71c12d2f34a0dae7c85cd8e3dede692ccfffee96..4117ec99faf7da894fa9085b352095117756d9fd 100644 (file)
@@ -40,11 +40,11 @@ modules = [
         namespace = "urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"
         shard-strategy = "module"
     },
-    
+
     {
         name = "car-people"
         namespace = "urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"
         shard-strategy = "module"
-    }    
+    }
 
 ]
index 60c4656139948e3d0b5e7b7040a7e839ba490e27..c8ac5552ee1486f6730d00c26639988a515a4bbc 100644 (file)
@@ -24,14 +24,14 @@ operational.persistent=false
 # The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
 #shard-transaction-idle-timeout-in-minutes=10
 
-# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the 
+# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
 # next messages before it aborts the transaction.
 #shard-transaction-commit-timeout-in-seconds=30
 
 # The maximum allowed capacity for each shard's transaction commit queue.
 #shard-transaction-commit-queue-capacity=20000
 
-# The maximum amount of time to wait for a shard to initialize from persistence on startup before 
+# The maximum amount of time to wait for a shard to initialize from persistence on startup before
 # failing an operation (eg transaction create and change listener registration).
 #shard-initialization-timeout-in-seconds=300
 
@@ -44,20 +44,20 @@ operational.persistent=false
 # The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
 #shard-snapshot-data-threshold-percentage=12
 
-# The interval at which the leader of the shard will check if its majority followers are active and 
+# The interval at which the leader of the shard will check if its majority followers are active and
 # term itself as isolated.
 #shard-isolated-leader-check-interval-in-millis=5000
 
-# The number of transaction modification operations (put, merge, delete) to batch before sending to the 
-# shard transaction actor. Batching improves performance as less modifications messages are sent to the 
+# The number of transaction modification operations (put, merge, delete) to batch before sending to the
+# shard transaction actor. Batching improves performance as less modifications messages are sent to the
 # actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
 #shard-batched-modification-count=1000
 
 # The maximum amount of time for akka operations (remote or local) to complete before failing.
 #operation-timeout-in-seconds=5
 
-# The initial number of transactions per second that are allowed before the data store should begin 
-# applying back pressure. This number is only used as an initial guidance, subsequently the datastore 
+# The initial number of transactions per second that are allowed before the data store should begin
+# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
 # measures the latency for a commit and auto-adjusts the rate limit.
 #transaction-creation-initial-rate-limit=100
 
index f7b852dfcb4f87b04c9fef9860340a921e436d6d..2ba4ea0f8cbf398a56b9f1ca65ce16a07409df35 100644 (file)
@@ -64,7 +64,7 @@ odl-cluster-data {
 
     persistence {
       # By default the snapshots/journal directories live in KARAF_HOME. You can choose to put it somewhere else by
-      # modifying the following two properties. The directory location specified may be a relative or absolute path. 
+      # modifying the following two properties. The directory location specified may be a relative or absolute path.
       # The relative path is always relative to KARAF_HOME.
 
       # snapshot-store.local.dir = "target/snapshots"
index 6a39724799135e9e34f3262a0c03d2785af0dfdf..ee920e7c868b547860225111bcab6a748da6f4af 100644 (file)
@@ -28,7 +28,7 @@ module-shards = [
             {
                 name="default"
                 replicas = {{{REPLICAS_1}}}
-                
+
             }
         ]
     },
@@ -38,7 +38,7 @@ module-shards = [
             {
                 name="topology"
                 replicas = {{{REPLICAS_2}}}
-                
+
             }
         ]
     },
@@ -48,7 +48,7 @@ module-shards = [
             {
                 name="inventory"
                 replicas = {{{REPLICAS_3}}}
-                
+
             }
         ]
     },
index 71c12d2f34a0dae7c85cd8e3dede692ccfffee96..4117ec99faf7da894fa9085b352095117756d9fd 100644 (file)
@@ -40,11 +40,11 @@ modules = [
         namespace = "urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"
         shard-strategy = "module"
     },
-    
+
     {
         name = "car-people"
         namespace = "urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"
         shard-strategy = "module"
-    }    
+    }
 
 ]
index 540747a2ca410e2a9514ed6647df24afe5c1d99a..7fa9a5e84278b8e8d01578b11f2b93540dd8f349 100644 (file)
@@ -28,7 +28,7 @@ module-shards = [
             {
                 name="default"
                 replicas = {{{REPLICAS_1}}}
-                
+
             }
         ]
     },
@@ -38,7 +38,7 @@ module-shards = [
             {
                 name="topology"
                 replicas = {{{REPLICAS_2}}}
-                
+
             }
         ]
     },
@@ -48,7 +48,7 @@ module-shards = [
             {
                 name="inventory"
                 replicas = {{{REPLICAS_3}}}
-                
+
             }
         ]
     },
index 6059bba715d789b3b51953f0dfadd4fb8ad1abfa..8e1841286aac089db73f9e0723f9d5eeafbdce50 100644 (file)
@@ -13,26 +13,26 @@ https://jira.opendaylight.org/browse/INTTEST-34
 ### 1node  Setup (1 Openstack Control Node)
 Requires 4 VM instances
 * 1 for robot execution
-* 1 for Control Node 
+* 1 for Control Node
 * 2 Compute Nodes
 
 #### 1node setup Platform Requirements
 * All Nodes should have this hardware support as minimum
      - 4 VCPU
      - 8192 MB RAM
-  
+
 ### 3node Setup (3 Openstack Control Nodes for HA)
 Requires 7 VM instances
 * 1 for robot execution
-* 3 Openstack Control Nodes 
+* 3 Openstack Control Nodes
 * 1 HAProxy Node
 * 2 Compute Nodes
 
 #### 3node setup Platform Requirements
-* All Control Nodes to have 
+* All Control Nodes to have
      - 4 VCPU
      - 12288 MB RAM
-     
+
 * All Other Nodes should have this hardware support as minimum
      - 4 VCPU
      - 8192 MB RAM
@@ -41,14 +41,14 @@ Requires 7 VM instances
 * All VM's will run the latest CentOS (7) distro
   At the time of creating this text, latest can be found here
   [CentOS 7.4](http://mirrors.kernel.org/centos/7.4.1708/)
-  
+
 * Ensure that one common sudo capable username/password can login to all VM's. i.e login with the same username/password combination
   is possible in all VM's, preferrably have the same root password in all VM's
-  
+
 * Ensure that SELINUX is disabled in all nodes.
    ```
    Edit the file /etc/selinux/config and ensure the line
-   SELINUX=disabled 
+   SELINUX=disabled
    ```
 * Ensure the instances can reach internet to download and install packages
 
@@ -84,8 +84,8 @@ Requires 7 VM instances
                               |           |            |
                             Data      External      External
                                       Network1    Network2
-                                      
-                                 
+
+
  ### 3node Topology
 
 
@@ -113,35 +113,35 @@ Requires 7 VM instances
        |            |         |           |            |
        |  haproxy   |---------|           |            |
        |            |         |           |            |
-       -------------          |           |            |  
+       -------------          |           |            |
        -------------          |           |            |
        |            |---------|-----------|            |
        |  Compute1  |---------|           |            |
        |            |---------|-----------|------------|
-       -------------          |           |            |  
+       -------------          |           |            |
        -------------          |           |            |
        |            |---------|-----------|            |
        |  Compute2  |---------|           |            |
        |            |---------|-----------|------------|
-       -------------          |           |            |  
-                              |           |            |   
-                              |           |            |  
+       -------------          |           |            |
+                              |           |            |
+                              |           |            |
                               Data      External      External
                                         Network1       Network2
+
+
  ## Steps to Execute from Robot VM
+
  ### Get Deployer
+
  * Install robotframework pre-requisites
  ```
        sudo yum install python-pip git -y
-       pip install robotframework robotframework-sshlibrary 
+       pip install robotframework robotframework-sshlibrary
        pip install robotframework-requests
        pip install robotframework-httplibrary
  ```
+
  * Get the Deployer
  ```
        git clone https://git.opendaylight.org/gerrit/p/integration/test
@@ -151,11 +151,11 @@ Requires 7 VM instances
  ```
  Note: The deployer is not merged yet
  ```
+
  ### Test 1node Openstack with ODL
+
  #### Deploy 1node Openstack with ODL
+
  * Run the deployer with pybot
  ```
        pybot --debug ~/debug_1node.log \
@@ -189,7 +189,7 @@ Requires 7 VM instances
 
 * If the status is "PASS", there will be an Openstack Installation with
   one control node and 2 compute nodes.
-  
+
 * All the settings for executing CSIT will be configured.
 
 #### Execute CSIT
@@ -258,7 +258,7 @@ Requires 7 VM instances
 * After execution, Check the log.html to understand the status of execution
 
 * If the status is "PASS", there will be an Openstack Installation with
-  three control nodes as HA and 2 compute nodes along with HAProxy node 
+  three control nodes as HA and 2 compute nodes along with HAProxy node
   configured to load balance and ensure HA.
 
 * All the settings for executing CSIT will be configured.
index 4fa38c9594cc320431fc37b5e32a7942ffa8c53d..810900ed04af477d9afe00f5bcd72b4907bed0e4 100644 (file)
@@ -8,18 +8,18 @@ add and delete flows.
 
 The test suite contains the following scripts:
 
-- inventory_crawler.py: 
+- inventory_crawler.py:
   Retrieves all nodes from either the config or operational data store
   and prints a flow summary to the console. Depending on the print level
   specified in a command line option, the summary can shows the overall
-  number of flows in the network, the number of flows in each node, or 
+  number of flows in the network, the number of flows in each node, or
   detailed data for each flow
 
 - flow_config_blaster.py:
   Adds and deletes ("blasts") flows into ODL's config space. Command line
-  options control the number of "blaster" threads, the number of blast 
-  cycles, the number of flows blasted in each cycle by each thread, etc. 
-  flow_config_blaster.py provides the FlowConfigBlaster class that is 
+  options control the number of "blaster" threads, the number of blast
+  cycles, the number of flows blasted in each cycle by each thread, etc.
+  flow_config_blaster.py provides the FlowConfigBlaster class that is
   reusable in other tests, such as in flow_add_delete_test.py
 
 - flow_config_blaster_fle.py:
@@ -30,17 +30,17 @@ The test suite contains the following scripts:
   Cleans up the config data store by deleting the entire inventory.
 
 - flow_add_delete_test.py:
-  Adds/deletes ("blasts") flows into ODL's config space. Similar to the 
+  Adds/deletes ("blasts") flows into ODL's config space. Similar to the
   flow_config_blaster (in fact, the flow_config_blaster is used in this
   test), but has more advanced handling of the add/delete cycles. The
   test executes in three steps:
   1. The specified number of flows is added in the 'add cycle' (uses
      flow_config_blaster to blast flows)
-  2. The network is polled for flow statistics from the network 
-     (using the inventory_crawler) to make sure that all flows have been 
+  2. The network is polled for flow statistics from the network
+     (using the inventory_crawler) to make sure that all flows have been
      properly programmed into the network and stats can properly read them
-  3. The flows are deleted in the flow cycle (either in 'bulk' using the 
-     config_cleanup script or one by one using the flow_config_blaster) 
+  3. The flows are deleted in the flow cycle (either in 'bulk' using the
+     config_cleanup script or one by one using the flow_config_blaster)
 
 
 Prerequisites:
@@ -78,7 +78,7 @@ Examples:
 To show a summary of all flows shown in the network, type:
 > ./inventory_crawler.py --plevel=1 --auth
 
-NOTE: REST authentication is turned by default in ODL Helium. To use 
+NOTE: REST authentication is turned by default in ODL Helium. To use
 authenticated REST, you have to specify the '--auth' switch in the command
 line.
 
@@ -133,20 +133,20 @@ optional arguments:
   --file FILE           File from which to read the JSON flow template;
                         default: no file, use a built in template.
 
-NOTE: The 'startflow' command line parameter is used with multiple 
+NOTE: The 'startflow' command line parameter is used with multiple
 flow_config_blasters blasting flows at the same ODL instance. With Python's
-GIL any given blaster can not use more than one CPU even when multiple blaster 
+GIL any given blaster can not use more than one CPU even when multiple blaster
 threads are specified. Therefore, multiple blaster processes must be used to
-test ODL's performance limits. The 'startflow' parameter gives each blaster 
+test ODL's performance limits. The 'startflow' parameter gives each blaster
 process its own flow id space so that each injects unique flows into ODL's
 config data store.
 
 NOTE: You don't have to be connected to mininet (or another openflow network,
-for that matter) to use this script. If ODL is connected to an openflow 
+for that matter) to use this script. If ODL is connected to an openflow
 network, flow_config_blaster will evenly distribute flows across the network.
-If ODL is not connected to a network, flows are only stored in the config 
-data store (i.e. nodes that may connect at some point in the future are in 
-effect "preconfigured"). The not-connected mode can be used to test the 
+If ODL is not connected to a network, flows are only stored in the config
+data store (i.e. nodes that may connect at some point in the future are in
+effect "preconfigured"). The not-connected mode can be used to test the
 performance of the data store and the REST subsystems. The 'nodes' parameter
 determines how many nodes are used in the non-connected mode.
 
@@ -155,31 +155,31 @@ Examples:
 To put 5000 flows into ODL running on the same node as the script type:
    > ./flow_config_blaster.py --flows=5000 --auth --no-delete
 
-To use 5 threads to put 5000 flows into ODL running on the same node as 
+To use 5 threads to put 5000 flows into ODL running on the same node as
 the script type:
    > ./flow_config_blaster.py --threads=5 --flows=1000 --auth --no-delete
 
-   NOTE: each thread will put 1000 flows, and all 5 threads will work 
+   NOTE: each thread will put 1000 flows, and all 5 threads will work
    simultaneously.
 
 To first put and then delete 5000 flows into ODL running on the same node
 as the script type:
    > ./flow_config_blaster.py --flows=5000 --auth
 
-To use 5 threads to first put and then delete 5000 flows into ODL running 
+To use 5 threads to first put and then delete 5000 flows into ODL running
 on the same node as the script type:
    > ./flow_config_blaster.py --threads=5 --flows=1000 --auth
-  
+
  NOTE: 5 threads are used to both add and delete flows
 
-To use 5 threads to first put and then delete 5000 flows into ODL in 10 
+To use 5 threads to first put and then delete 5000 flows into ODL in 10
 add/delete cycles type:
    > ./flow_config_blaster.py --threads=5 --flows=100 --cycles=10 --auth
 
-   NOTE: 5 threads are used to both add and delete flows. 
+   NOTE: 5 threads are used to both add and delete flows.
 
-   NOTE: Both Add and Delete are performed in 10 cycles. 5 worker threads 
-   are started in each cycle and the cycle ends when all threads finish. 
+   NOTE: Both Add and Delete are performed in 10 cycles. 5 worker threads
+   are started in each cycle and the cycle ends when all threads finish.
    Cycles are useful to determine performance degradation with increasing
    number of flows in the datastore and in the network.
 
index 3f756241de3ecf97c3ae72917820c151c5d4a459..f1c7ae4ca2e4c96760400ccb91127a06656eb64d 100644 (file)
@@ -38,7 +38,7 @@ modules = [
         namespace = "urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"
        shard-strategy = "module"
     }
-    
+
     {
        name = "car-purchase"
         namespace = "urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase"
index 955a44eab6890e799eb499920e52b99ebccc841b..4051261d781a166e2f1caed18e4f6cc40b14e5f0 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/bash
 
 # This script will start mininet OF10 on local controller
-sudo mn --controller 'remote,ip=127.0.0.1,port=6633' --topo tree,2 
+sudo mn --controller 'remote,ip=127.0.0.1,port=6633' --topo tree,2
index b85d1c97ad9458e5f66218aab563e591a1c5b5c4..d1810fb064b4130d449e336aea72dcb591905f37 100644 (file)
@@ -110,7 +110,7 @@ The `loop_wcbench.sh` script is a fairly simple wrapper around `wcbench.sh` ("I
 In more detail, the `loop_wcbench.sh` script supports:
 
 * Repeatedly running WCBench against ODL without restarting ODL between runs. This test revealed the perf degradation over time described in [bug 1395](https://bugs.opendaylight.org/show_bug.cgi?id=1395).
-* Repeatedly running WCBench against ODL, restarting ODL between runs. This acted as a control when finding [bug 1395](https://bugs.opendaylight.org/show_bug.cgi?id=1395), as restarting ODL between runs mitigated perf decreases. 
+* Repeatedly running WCBench against ODL, restarting ODL between runs. This acted as a control when finding [bug 1395](https://bugs.opendaylight.org/show_bug.cgi?id=1395), as restarting ODL between runs mitigated perf decreases.
 * Pass run length info to WCBench, causing WCBench runs to last for the given number of minutes. Note that longer runs seem to result in lower standard deviation flows/sec results.
 * Pin ODL to a given number of processors. This is basically a thin hand-off to `wcbench.sh`. As mentioned above, pinning ODL allows it to be tested while the process is properly pegged.
 
index 4702097926841e7a93c7c1676899913de2ab9245..95b141c3e12a5344539074723965ab51aa0a7e2e 100755 (executable)
@@ -822,7 +822,7 @@ uninstall_cbench()
     fi
     if [ -f $OFLOPS_BIN ]; then
         echo "Removing $OFLOPS_BIN"
-        sudo rm -f $OFLOPS_BIN 
+        sudo rm -f $OFLOPS_BIN
     fi
 }