huawei-nqa

Network quality analysis.

  • Version: 2021-04-29

    huawei-nqa@2021-04-29


    
      module huawei-nqa {
    
        yang-version 1;
    
        namespace "urn:huawei:yang:huawei-nqa";
    
        prefix nqa;
    
        import huawei-pub-type {
          prefix pub-type;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-ifm-trunk {
          prefix ifm-trunk;
        }
    
        include huawei-nqa-type;
        include huawei-nqa-global;
        include huawei-nqa-server;
        include huawei-nqa-instance;
        include huawei-nqa-reflector;
        include huawei-nqa-record;
        include huawei-nqa-test-flow;
    
        organization
          "Huawei Technologies Co., Ltd.";
    
        contact
          "Huawei Industrial Base
    Bantian, Longgang
    Shenzhen 518129
    People's Republic of China
    Website: http://www.huawei.com
    Email: support@huawei.com";
    
        description "Network quality analysis.";
    
        revision "2021-04-29" {
          description
            "Add ethernet-service test instance and test flow and ethernet-service-results. Modify reflector.";
          reference
            "Huawei private.";
    
        }
    
        revision "2021-03-19" {
          description
            "Modify default-value of probe-count, jitter-packet-num, and data-size in a jitter test instance.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-09-24" {
          description
            "Add MAC ping test instance and modify jitter-results.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-07-04" {
          description "Add BIER IPv6 OAM.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-06-30" {
          description
            "Add rpc for nqa execution policy.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-10-25" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "sla";
    
        container nqa {
          description
            "Network quality analysis (NQA) service.";
          container global {
            description
              "Configure NQA global configuration.";
            uses nqa:global-type {
              refine vxlan-echo-v4/source-ip-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'LoopBack'";
              }
            }
          }  // container global
    
          container server {
            description
              "Configure NQA server list.";
            uses nqa:server-type;
          }  // container server
    
          container testflows {
            description
              "Configure test flow list.";
            uses nqa:test-flows-type;
          }  // container testflows
    
          container reflectors {
            description
              "Configure reflector list.";
            uses nqa:reflectors-type {
              refine reflector/if-name {
                must
                  "(/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Virtual-Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Pos' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '200GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GEBrief' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '4x10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'XGigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50|100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'FlexE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Global-VE') or ((/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ip-Trunk') and not(/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm-trunk:trunk/ifm-trunk:members/ifm-trunk:member/ifm-trunk:name))";
              }
            }
          }  // container reflectors
    
          container instances {
            description
              "Configure NQA test instance list.";
            uses nqa:instances-type {
              refine instance/type/lsp-jitter/lsp-jitter-input/lsp-protocol/te/te-lsp-jitter/tunnel-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Tunnel'";
              }
    
              refine instance/type/icmp/icmp-input/out-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
              }
    
              refine instance/type/icmp/icmp-input/fwd-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-Ethernet' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'MTunnel' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Tunnel' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'LoopBack' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Vbdif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Serial' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Mp-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Mp-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Trunk-Serial' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-VE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
              }
    
              refine instance/type/path-mtu/path-mtu-input/out-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
              }
    
              refine instance/type/arp-ping-ip/arp-ping-ip-input/out-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Vlanif' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Virtual-Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '200GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GEBrief' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'MEth' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Vbdif' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Global-VE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50|100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'FlexE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '4x10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'XGigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Lmpif'";
              }
    
              refine instance/type/jitter/jitter-input/out-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
              }
    
              refine instance/type/trace/trace-input/out-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
              }
    
              refine instance/type/mac-ping/mac-ping-input/source-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '200GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GEBrief' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '4x10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50|100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'FlexE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'XGigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Lmpif'";
              }
    
              refine instance/type/icmp-jitter/icmp-jitter-input/out-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'NULL' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'E1' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Fabric-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Stack-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Atm-Bundle' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Ima-group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Cpos-Trunk' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Global-Ima-Group' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FCoE-Port' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FC' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Remote-Ap' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ServiceIf' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'ATM' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-200GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-50|100G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Virtual-if' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-400G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'FlexE-10G' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'Lmpif' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'HP-GE' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type != 'OpticalAmplifier'";
              }
    
              refine instance/type/ethernet-service/ethernet-service-input/fwd-if-name {
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '200GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GEBrief' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '4x10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'XGigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '50|100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'FlexE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = '400GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Global-VE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type = 'Vbdif'";
              }
            }
          }  // container instances
    
          container record {
            config false;
            description
              "Statistics of NQA test instance test record table.";
            uses nqa:record-type;
          }  // container record
        }  // container nqa
    
        rpc test-instance-execution {
          ext:node-ref "/nqa:nqa/nqa:instances/nqa:instance";
          description
            "The test instance execution.";
          input {
            leaf admin-name {
              type leafref {
                path "/nqa/instances/instance/admin-name";
              }
              mandatory true;
              description "Administrator name.";
            }
    
            leaf test-name {
              type leafref {
                path "/nqa/instances/instance/test-name";
              }
              mandatory true;
              description "Test name.";
            }
    
            choice execution-policy {
              description
                "The test instance start policy.";
              case start {
                description "Start the test.";
                choice start-type {
                  description
                    "The test instance start type.";
                  case start-now {
                    description
                      "Start the test now.";
                    leaf start-now {
                      type empty;
                      mandatory true;
                      description
                        "Receive the command then start the test.";
                    }
    
                    choice start-now-end-type {
                      description
                        "Test instance end type.";
                      case at {
                        description
                          "Stop the test at the specified time.";
                        leaf start-now-end-time {
                          type pub-type:time;
                          mandatory true;
                          description
                            "The test instance end time.";
                        }
    
                        leaf start-now-end-date {
                          type pub-type:date;
                          description
                            "The test instance end date.";
                        }
                      }  // case at
    
                      case delay {
                        description
                          "Stop the test after the specified delay time.";
                        choice start-now-end-delay-type {
                          mandatory true;
                          description
                            "The test instance end delay type.";
                          case end-delay-time {
                            description
                              "The test instance end delay time.";
                            leaf start-now-end-delay-time {
                              type pub-type:time;
                              description
                                "The test instance end delay time.";
                            }
                          }  // case end-delay-time
    
                          case end-delay-seconds {
                            description
                              "The test instance end delay seconds.";
                            leaf start-now-end-delay-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end delay seconds.";
                            }
                          }  // case end-delay-seconds
                        }  // choice start-now-end-delay-type
                      }  // case delay
    
                      case lifetime {
                        description
                          "Stop the test after the specified life time.";
                        choice start-now-end-lifetime-type {
                          mandatory true;
                          description
                            "The test instance end lifetime type.";
                          case lifetime-time {
                            description
                              "The test instance end lifetime time.";
                            leaf start-now-end-lifetime-time {
                              type pub-type:time;
                              description
                                "The test instance end lifetime time.";
                            }
                          }  // case lifetime-time
    
                          case lifetime-seconds {
                            description
                              "The test instance end lifetime seconds.";
                            leaf start-now-end-lifetime-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end lifetime seconds.";
                            }
                          }  // case lifetime-seconds
                        }  // choice start-now-end-lifetime-type
                      }  // case lifetime
                    }  // choice start-now-end-type
                  }  // case start-now
    
                  case start-at {
                    description
                      "Execute at the specified time.";
                    leaf start-time {
                      type pub-type:time;
                      mandatory true;
                      description
                        "The test instance start time.";
                    }
    
                    leaf start-date {
                      type pub-type:date;
                      description
                        "The test instance start date.";
                    }
    
                    choice start-at-end-type {
                      description
                        "Test instance end type.";
                      case at {
                        description
                          "Stop the test at the specified time.";
                        leaf start-at-end-time {
                          type pub-type:time;
                          mandatory true;
                          description
                            "The test instance end time.";
                        }
    
                        leaf start-at-end-date {
                          type pub-type:date;
                          description
                            "The test instance end date.";
                        }
                      }  // case at
    
                      case delay {
                        description
                          "Stop the test after the specified delay time.";
                        choice start-at-end-delay-type {
                          mandatory true;
                          description
                            "The test instance end delay type.";
                          case end-delay-time {
                            description
                              "The test instance end delay time.";
                            leaf start-at-end-delay-time {
                              type pub-type:time;
                              description
                                "The test instance end delay time.";
                            }
                          }  // case end-delay-time
    
                          case end-delay-seconds {
                            description
                              "The test instance end delay seconds.";
                            leaf start-at-end-delay-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end delay seconds.";
                            }
                          }  // case end-delay-seconds
                        }  // choice start-at-end-delay-type
                      }  // case delay
    
                      case lifetime {
                        description
                          "Stop the test after the specified life time.";
                        choice start-at-end-lifetime-type {
                          mandatory true;
                          description
                            "The test instance end lifetime type.";
                          case lifetime-time {
                            description
                              "The test instance end lifetime time.";
                            leaf start-at-end-lifetime-time {
                              type pub-type:time;
                              description
                                "The test instance end lifetime time.";
                            }
                          }  // case lifetime-time
    
                          case lifetime-seconds {
                            description
                              "The test instance end lifetime seconds.";
                            leaf start-at-end-lifetime-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end lifetime seconds.";
                            }
                          }  // case lifetime-seconds
                        }  // choice start-at-end-lifetime-type
                      }  // case lifetime
                    }  // choice start-at-end-type
                  }  // case start-at
    
                  case start-delay {
                    description
                      "Delay some time then execute testcase.";
                    choice start-delay-type {
                      mandatory true;
                      description
                        "The test instance start delay time.";
                      case start-delay-time {
                        description
                          "Execute at the specified time.";
                        leaf start-delay-time {
                          type pub-type:time;
                          description
                            "The test instance start delay time.";
                        }
                      }  // case start-delay-time
    
                      case start-delay-seconds {
                        description
                          "The test instance start delay seconds.";
                        leaf start-delay-seconds {
                          type uint32 {
                            range "1..86399";
                          }
                          units "s";
                          description
                            "The test instance start delay seconds.";
                        }
                      }  // case start-delay-seconds
                    }  // choice start-delay-type
    
                    choice start-delay-end-type {
                      description
                        "Test instance end type.";
                      case at {
                        description
                          "Stop the test at the specified time.";
                        leaf start-delay-end-time {
                          type pub-type:time;
                          mandatory true;
                          description
                            "The test instance end time.";
                        }
    
                        leaf start-delay-end-date {
                          type pub-type:date;
                          description
                            "The test instance end date.";
                        }
                      }  // case at
    
                      case delay {
                        description
                          "Stop the test after the specified delay time.";
                        choice start-delay-end-delay-type {
                          mandatory true;
                          description
                            "The test instance end delay type.";
                          case end-delay-time {
                            description
                              "The test instance end delay time.";
                            leaf start-delay-end-delay-time {
                              type pub-type:time;
                              description
                                "The test instance end delay time.";
                            }
                          }  // case end-delay-time
    
                          case end-delay-seconds {
                            description
                              "The test instance end delay seconds.";
                            leaf start-delay-end-delay-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end delay seconds.";
                            }
                          }  // case end-delay-seconds
                        }  // choice start-delay-end-delay-type
                      }  // case delay
    
                      case lifetime {
                        description
                          "Stop the test after the specified life time.";
                        choice start-delay-end-lifetime-type {
                          mandatory true;
                          description
                            "The test instance end lifetime type.";
                          case lifetime-time {
                            description
                              "The test instance end lifetime time.";
                            leaf start-delay-end-lifetime-time {
                              type pub-type:time;
                              description
                                "The test instance end lifetime time.";
                            }
                          }  // case lifetime-time
    
                          case lifetime-seconds {
                            description
                              "The test instance end lifetime seconds.";
                            leaf start-delay-end-lifetime-seconds {
                              type uint32 {
                                range "6..86399";
                              }
                              units "s";
                              description
                                "The test instance end lifetime seconds.";
                            }
                          }  // case lifetime-seconds
                        }  // choice start-delay-end-lifetime-type
                      }  // case lifetime
                    }  // choice start-delay-end-type
                  }  // case start-delay
    
                  case start-daily {
                    description
                      "Execute the test instance daily.";
                    leaf daily-start-time {
                      type pub-type:time;
                      mandatory true;
                      description
                        "Start time of daily execution.";
                    }
    
                    leaf daily-start-date {
                      type pub-type:date;
                      description
                        "Start date of daily execution.";
                    }
    
                    leaf daily-end-time {
                      type pub-type:time;
                      mandatory true;
                      description
                        "End time of daily execution.";
                    }
    
                    leaf daily-end-date {
                      type pub-type:date;
                      description
                        "End date of daily execution.";
                    }
                  }  // case start-daily
                }  // choice start-type
              }  // case start
    
              case stop {
                description "Stop the test.";
                leaf stop {
                  type empty;
                  description "Stop the test.";
                }
              }  // case stop
    
              case restart {
                description "Restart the test.";
                leaf restart {
                  type empty;
                  description
                    "Restart the test.";
                }
              }  // case restart
            }  // choice execution-policy
          }
        }  // rpc test-instance-execution
      }  // module huawei-nqa
    

© 2023 YumaWorks, Inc. All rights reserved.