From cbd1ead5f2c1026e2d40cc80aa0fdf55ef8da725 Mon Sep 17 00:00:00 2001 From: trathod Date: Thu, 10 Aug 2023 18:38:17 -0400 Subject: [PATCH 1/6] DP-1.7: Adding test support for Nokia Following changes are made in this PR - 1. Updating ConfigureQoS for QoS OC configuration for Nokia 2. Adding function (SetForwardingGroupWithFabricPriority) to configure ForwardingGroup with Fabric-priority in qoscfg.go "This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind." Co-authored-by: Krishna Bovilla --- .../metadata.textproto | 3 +- .../one_sp_queue_traffic_test.go | 116 +++++++++++++----- .../metadata.textproto | 3 +- .../one_sp_queue_traffic_test.go | 116 +++++++++++++----- internal/qoscfg/qoscfg.go | 10 ++ 5 files changed, 182 insertions(+), 66 deletions(-) diff --git a/feature/qos/ate_tests/one_sp_queue_traffic_test/metadata.textproto b/feature/qos/ate_tests/one_sp_queue_traffic_test/metadata.textproto index 4c8748ec05e..37f65b08c89 100644 --- a/feature/qos/ate_tests/one_sp_queue_traffic_test/metadata.textproto +++ b/feature/qos/ate_tests/one_sp_queue_traffic_test/metadata.textproto @@ -26,8 +26,9 @@ platform_exceptions: { vendor: NOKIA } deviations: { - explicit_interface_ref_definition: true interface_enabled: true + explicit_port_speed: true + explicit_interface_in_default_vrf: true } } platform_exceptions: { diff --git a/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go b/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go index 5b516e26e85..ad6c378fc5e 100644 --- a/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go +++ b/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go @@ -18,6 +18,7 @@ import ( "testing" "time" + "github.com/openconfig/entity-naming/entname" "github.com/openconfig/featureprofiles/internal/deviations" "github.com/openconfig/featureprofiles/internal/fptest" "github.com/openconfig/featureprofiles/internal/qoscfg" @@ -117,6 +118,18 @@ func TestOneSPQueueTraffic(t *testing.T) { var tolerance float32 = 2.0 queues := netutil.CommonTrafficQueues(t, dut) + + if dut.Vendor() == ondatra.NOKIA { + queues = &entname.CommonTrafficQueueNames{ + NC1: "NC1", + AF4: "AF4", + AF3: "AF3", + AF2: "AF2", + AF1: "AF1", + BE1: "BE1", + BE0: "BE0", + } + } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } @@ -732,6 +745,14 @@ func ConfigureDUTIntf(t *testing.T, dut *ondatra.DUTDevice) { a := s.GetOrCreateAddress(intf.ipAddr) a.PrefixLength = ygot.Uint8(intf.prefixLen) gnmi.Replace(t, dut, gnmi.OC().Interface(intf.intfName).Config(), i) + if deviations.ExplicitInterfaceInDefaultVRF(dut) { + fptest.AssignToNetworkInstance(t, dut, intf.intfName, deviations.DefaultNetworkInstance(dut), 0) + } + } + if deviations.ExplicitPortSpeed(dut) { + fptest.SetPortSpeed(t, dp1) + fptest.SetPortSpeed(t, dp2) + fptest.SetPortSpeed(t, dp3) } } @@ -743,48 +764,72 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { d := &oc.Root{} q := d.GetOrCreateQos() queues := netutil.CommonTrafficQueues(t, dut) + + if dut.Vendor() == ondatra.NOKIA { + queues = &entname.CommonTrafficQueueNames{ + NC1: "NC1", + AF4: "AF4", + AF3: "AF3", + AF2: "AF2", + AF1: "AF1", + BE1: "BE1", + BE0: "BE0", + } + } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } t.Logf("Create qos forwarding groups config") forwardingGroups := []struct { - desc string - queueName string - targetGroup string + desc string + queueName string + targetGroup string + fabricPriority uint8 }{{ - desc: "forwarding-group-BE1", - queueName: queues.BE1, - targetGroup: "target-group-BE1", - }, { - desc: "forwarding-group-BE0", - queueName: queues.BE0, - targetGroup: "target-group-BE0", - }, { - desc: "forwarding-group-AF1", - queueName: queues.AF1, - targetGroup: "target-group-AF1", - }, { - desc: "forwarding-group-AF2", - queueName: queues.AF2, - targetGroup: "target-group-AF2", - }, { - desc: "forwarding-group-AF3", - queueName: queues.AF3, - targetGroup: "target-group-AF3", - }, { - desc: "forwarding-group-AF4", - queueName: queues.AF4, - targetGroup: "target-group-AF4", - }, { - desc: "forwarding-group-NC1", - queueName: queues.NC1, - targetGroup: "target-group-NC1", + desc: "forwarding-group-BE1", + queueName: queues.BE1, + targetGroup: "target-group-BE1", + fabricPriority: 1, + }, { + desc: "forwarding-group-BE0", + queueName: queues.BE0, + targetGroup: "target-group-BE0", + fabricPriority: 2, + }, { + desc: "forwarding-group-AF1", + queueName: queues.AF1, + targetGroup: "target-group-AF1", + fabricPriority: 3, + }, { + desc: "forwarding-group-AF2", + queueName: queues.AF2, + targetGroup: "target-group-AF2", + fabricPriority: 4, + }, { + desc: "forwarding-group-AF3", + queueName: queues.AF3, + targetGroup: "target-group-AF3", + fabricPriority: 5, + }, { + desc: "forwarding-group-AF4", + queueName: queues.AF4, + targetGroup: "target-group-AF4", + fabricPriority: 6, + }, { + desc: "forwarding-group-NC1", + queueName: queues.NC1, + targetGroup: "target-group-NC1", + fabricPriority: 7, }} t.Logf("qos forwarding groups config: %v", forwardingGroups) for _, tc := range forwardingGroups { - qoscfg.SetForwardingGroup(t, dut, q, tc.targetGroup, tc.queueName) + if dut.Vendor() == ondatra.NOKIA { + qoscfg.SetForwardingGroupWithFabricPriority(t, dut, q, tc.targetGroup, tc.queueName, tc.fabricPriority) + } else { + qoscfg.SetForwardingGroup(t, dut, q, tc.targetGroup, tc.queueName) + } } t.Logf("Create qos Classifiers config") @@ -1036,7 +1081,13 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { input.SetId(tc.inputID) input.SetInputType(tc.inputType) input.SetQueue(tc.queueName) - input.SetWeight(tc.weight) + if dut.Vendor() == ondatra.NOKIA { + if tc.priority != oc.Scheduler_Priority_STRICT { + input.SetWeight(tc.weight) + } + } else { + input.SetWeight(tc.weight) + } gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), q) } @@ -1091,6 +1142,7 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), q) } } + func ConfigureCiscoQos(t *testing.T, dut *ondatra.DUTDevice) { t.Helper() dp1 := dut.Port(t, "port1") diff --git a/feature/qos/otg_tests/one_sp_queue_traffic_test/metadata.textproto b/feature/qos/otg_tests/one_sp_queue_traffic_test/metadata.textproto index 4c8748ec05e..37f65b08c89 100644 --- a/feature/qos/otg_tests/one_sp_queue_traffic_test/metadata.textproto +++ b/feature/qos/otg_tests/one_sp_queue_traffic_test/metadata.textproto @@ -26,8 +26,9 @@ platform_exceptions: { vendor: NOKIA } deviations: { - explicit_interface_ref_definition: true interface_enabled: true + explicit_port_speed: true + explicit_interface_in_default_vrf: true } } platform_exceptions: { diff --git a/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go b/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go index 5da277d05ad..833f541ed72 100644 --- a/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go +++ b/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go @@ -18,6 +18,7 @@ import ( "testing" "time" + "github.com/openconfig/entity-naming/entname" "github.com/openconfig/featureprofiles/internal/attrs" "github.com/openconfig/featureprofiles/internal/deviations" "github.com/openconfig/featureprofiles/internal/fptest" @@ -144,6 +145,18 @@ func TestOneSPQueueTraffic(t *testing.T) { var tolerance float32 = 2.0 queues := netutil.CommonTrafficQueues(t, dut) + + if dut.Vendor() == ondatra.NOKIA { + queues = &entname.CommonTrafficQueueNames{ + NC1: "NC1", + AF4: "AF4", + AF3: "AF3", + AF2: "AF2", + AF1: "AF1", + BE1: "BE1", + BE0: "BE0", + } + } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } @@ -787,6 +800,14 @@ func ConfigureDUTIntf(t *testing.T, dut *ondatra.DUTDevice) { a := s.GetOrCreateAddress(intf.ipAddr) a.PrefixLength = ygot.Uint8(intf.prefixLen) gnmi.Replace(t, dut, gnmi.OC().Interface(intf.intfName).Config(), i) + if deviations.ExplicitInterfaceInDefaultVRF(dut) { + fptest.AssignToNetworkInstance(t, dut, intf.intfName, deviations.DefaultNetworkInstance(dut), 0) + } + } + if deviations.ExplicitPortSpeed(dut) { + fptest.SetPortSpeed(t, dp1) + fptest.SetPortSpeed(t, dp2) + fptest.SetPortSpeed(t, dp3) } } @@ -798,48 +819,72 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { d := &oc.Root{} q := d.GetOrCreateQos() queues := netutil.CommonTrafficQueues(t, dut) + + if dut.Vendor() == ondatra.NOKIA { + queues = &entname.CommonTrafficQueueNames{ + NC1: "NC1", + AF4: "AF4", + AF3: "AF3", + AF2: "AF2", + AF1: "AF1", + BE1: "BE1", + BE0: "BE0", + } + } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } t.Logf("Create qos forwarding groups config") forwardingGroups := []struct { - desc string - queueName string - targetGroup string + desc string + queueName string + targetGroup string + fabricPriority uint8 }{{ - desc: "forwarding-group-BE1", - queueName: queues.BE1, - targetGroup: "target-group-BE1", - }, { - desc: "forwarding-group-BE0", - queueName: queues.BE0, - targetGroup: "target-group-BE0", - }, { - desc: "forwarding-group-AF1", - queueName: queues.AF1, - targetGroup: "target-group-AF1", - }, { - desc: "forwarding-group-AF2", - queueName: queues.AF2, - targetGroup: "target-group-AF2", - }, { - desc: "forwarding-group-AF3", - queueName: queues.AF3, - targetGroup: "target-group-AF3", - }, { - desc: "forwarding-group-AF4", - queueName: queues.AF4, - targetGroup: "target-group-AF4", - }, { - desc: "forwarding-group-NC1", - queueName: queues.NC1, - targetGroup: "target-group-NC1", + desc: "forwarding-group-BE1", + queueName: queues.BE1, + targetGroup: "target-group-BE1", + fabricPriority: 1, + }, { + desc: "forwarding-group-BE0", + queueName: queues.BE0, + targetGroup: "target-group-BE0", + fabricPriority: 2, + }, { + desc: "forwarding-group-AF1", + queueName: queues.AF1, + targetGroup: "target-group-AF1", + fabricPriority: 3, + }, { + desc: "forwarding-group-AF2", + queueName: queues.AF2, + targetGroup: "target-group-AF2", + fabricPriority: 4, + }, { + desc: "forwarding-group-AF3", + queueName: queues.AF3, + targetGroup: "target-group-AF3", + fabricPriority: 5, + }, { + desc: "forwarding-group-AF4", + queueName: queues.AF4, + targetGroup: "target-group-AF4", + fabricPriority: 6, + }, { + desc: "forwarding-group-NC1", + queueName: queues.NC1, + targetGroup: "target-group-NC1", + fabricPriority: 7, }} t.Logf("qos forwarding groups config: %v", forwardingGroups) for _, tc := range forwardingGroups { - qoscfg.SetForwardingGroup(t, dut, q, tc.targetGroup, tc.queueName) + if dut.Vendor() == ondatra.NOKIA { + qoscfg.SetForwardingGroupWithFabricPriority(t, dut, q, tc.targetGroup, tc.queueName, tc.fabricPriority) + } else { + qoscfg.SetForwardingGroup(t, dut, q, tc.targetGroup, tc.queueName) + } } t.Logf("Create qos Classifiers config") @@ -1091,7 +1136,13 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { input.SetId(tc.inputID) input.SetInputType(tc.inputType) input.SetQueue(tc.queueName) - input.SetWeight(tc.weight) + if dut.Vendor() == ondatra.NOKIA { + if tc.priority != oc.Scheduler_Priority_STRICT { + input.SetWeight(tc.weight) + } + } else { + input.SetWeight(tc.weight) + } gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), q) } @@ -1146,6 +1197,7 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), q) } } + func ConfigureCiscoQos(t *testing.T, dut *ondatra.DUTDevice) { t.Helper() dp1 := dut.Port(t, "port1") diff --git a/internal/qoscfg/qoscfg.go b/internal/qoscfg/qoscfg.go index 8d8e294ec17..70eb10c49db 100644 --- a/internal/qoscfg/qoscfg.go +++ b/internal/qoscfg/qoscfg.go @@ -32,6 +32,16 @@ func SetForwardingGroup(t *testing.T, dut *ondatra.DUTDevice, qos *oc.Qos, group gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), qos) } +func SetForwardingGroupWithFabricPriority(t *testing.T, dut *ondatra.DUTDevice, qos *oc.Qos, groupName, queueName string, fabricPriority uint8) { + t.Helper() + + fwdGroup := qos.GetOrCreateForwardingGroup(groupName) + fwdGroup.SetOutputQueue(queueName) + fwdGroup.SetFabricPriority(uint8(fabricPriority)) + qos.GetOrCreateQueue(queueName) + gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), qos) +} + // SetInputClassifier sets an input classifier in the specified QoS config. func SetInputClassifier(t *testing.T, dut *ondatra.DUTDevice, qos *oc.Qos, intfID string, classType oc.E_Input_Classifier_Type, className string) { t.Helper() From b34dab9602a7d3e46016cd8ac8d48a6e35e1a790 Mon Sep 17 00:00:00 2001 From: trathod Date: Mon, 14 Aug 2023 14:44:29 -0400 Subject: [PATCH 2/6] Updating queue-name based on commonTrafficQueueNames based https://github.com/openconfig/entity-naming/pull/24 "This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind." --- .../one_sp_queue_traffic_test.go | 23 ------------------- .../one_sp_queue_traffic_test.go | 23 ------------------- 2 files changed, 46 deletions(-) diff --git a/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go b/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go index ad6c378fc5e..386d0f51064 100644 --- a/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go +++ b/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go @@ -18,7 +18,6 @@ import ( "testing" "time" - "github.com/openconfig/entity-naming/entname" "github.com/openconfig/featureprofiles/internal/deviations" "github.com/openconfig/featureprofiles/internal/fptest" "github.com/openconfig/featureprofiles/internal/qoscfg" @@ -119,17 +118,6 @@ func TestOneSPQueueTraffic(t *testing.T) { var tolerance float32 = 2.0 queues := netutil.CommonTrafficQueues(t, dut) - if dut.Vendor() == ondatra.NOKIA { - queues = &entname.CommonTrafficQueueNames{ - NC1: "NC1", - AF4: "AF4", - AF3: "AF3", - AF2: "AF2", - AF1: "AF1", - BE1: "BE1", - BE0: "BE0", - } - } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } @@ -765,17 +753,6 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { q := d.GetOrCreateQos() queues := netutil.CommonTrafficQueues(t, dut) - if dut.Vendor() == ondatra.NOKIA { - queues = &entname.CommonTrafficQueueNames{ - NC1: "NC1", - AF4: "AF4", - AF3: "AF3", - AF2: "AF2", - AF1: "AF1", - BE1: "BE1", - BE0: "BE0", - } - } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } diff --git a/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go b/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go index 833f541ed72..371ff9e55b2 100644 --- a/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go +++ b/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go @@ -18,7 +18,6 @@ import ( "testing" "time" - "github.com/openconfig/entity-naming/entname" "github.com/openconfig/featureprofiles/internal/attrs" "github.com/openconfig/featureprofiles/internal/deviations" "github.com/openconfig/featureprofiles/internal/fptest" @@ -146,17 +145,6 @@ func TestOneSPQueueTraffic(t *testing.T) { queues := netutil.CommonTrafficQueues(t, dut) - if dut.Vendor() == ondatra.NOKIA { - queues = &entname.CommonTrafficQueueNames{ - NC1: "NC1", - AF4: "AF4", - AF3: "AF3", - AF2: "AF2", - AF1: "AF1", - BE1: "BE1", - BE0: "BE0", - } - } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } @@ -820,17 +808,6 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { q := d.GetOrCreateQos() queues := netutil.CommonTrafficQueues(t, dut) - if dut.Vendor() == ondatra.NOKIA { - queues = &entname.CommonTrafficQueueNames{ - NC1: "NC1", - AF4: "AF4", - AF3: "AF3", - AF2: "AF2", - AF1: "AF1", - BE1: "BE1", - BE0: "BE0", - } - } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } From 7e414f9a8ba3a5135b8d96375b29f00f001a665e Mon Sep 17 00:00:00 2001 From: trathod Date: Mon, 28 Aug 2023 16:39:52 -0400 Subject: [PATCH 3/6] Replacing fabric-priority configuration with queue-id as discussed in b/297188157 "This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind." --- .../one_sp_queue_traffic_test.go | 91 +++++++++---------- .../one_sp_queue_traffic_test.go | 91 +++++++++---------- internal/qoscfg/qoscfg.go | 10 -- 3 files changed, 82 insertions(+), 110 deletions(-) diff --git a/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go b/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go index 386d0f51064..22e7f9855db 100644 --- a/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go +++ b/feature/qos/ate_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go @@ -753,60 +753,57 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { q := d.GetOrCreateQos() queues := netutil.CommonTrafficQueues(t, dut) + if dut.Vendor() == ondatra.NOKIA { + queueNames := []string{queues.NC1, queues.AF4, queues.AF3, queues.AF2, queues.AF1, queues.BE0, queues.BE1} + for i, queue := range queueNames { + q1 := q.GetOrCreateQueue(queue) + q1.Name = ygot.String(queue) + queueid := len(queueNames) - i + q1.QueueId = ygot.Uint8(uint8(queueid)) + } + } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } t.Logf("Create qos forwarding groups config") forwardingGroups := []struct { - desc string - queueName string - targetGroup string - fabricPriority uint8 + desc string + queueName string + targetGroup string }{{ - desc: "forwarding-group-BE1", - queueName: queues.BE1, - targetGroup: "target-group-BE1", - fabricPriority: 1, - }, { - desc: "forwarding-group-BE0", - queueName: queues.BE0, - targetGroup: "target-group-BE0", - fabricPriority: 2, - }, { - desc: "forwarding-group-AF1", - queueName: queues.AF1, - targetGroup: "target-group-AF1", - fabricPriority: 3, - }, { - desc: "forwarding-group-AF2", - queueName: queues.AF2, - targetGroup: "target-group-AF2", - fabricPriority: 4, - }, { - desc: "forwarding-group-AF3", - queueName: queues.AF3, - targetGroup: "target-group-AF3", - fabricPriority: 5, - }, { - desc: "forwarding-group-AF4", - queueName: queues.AF4, - targetGroup: "target-group-AF4", - fabricPriority: 6, - }, { - desc: "forwarding-group-NC1", - queueName: queues.NC1, - targetGroup: "target-group-NC1", - fabricPriority: 7, + desc: "forwarding-group-BE1", + queueName: queues.BE1, + targetGroup: "target-group-BE1", + }, { + desc: "forwarding-group-BE0", + queueName: queues.BE0, + targetGroup: "target-group-BE0", + }, { + desc: "forwarding-group-AF1", + queueName: queues.AF1, + targetGroup: "target-group-AF1", + }, { + desc: "forwarding-group-AF2", + queueName: queues.AF2, + targetGroup: "target-group-AF2", + }, { + desc: "forwarding-group-AF3", + queueName: queues.AF3, + targetGroup: "target-group-AF3", + }, { + desc: "forwarding-group-AF4", + queueName: queues.AF4, + targetGroup: "target-group-AF4", + }, { + desc: "forwarding-group-NC1", + queueName: queues.NC1, + targetGroup: "target-group-NC1", }} t.Logf("qos forwarding groups config: %v", forwardingGroups) for _, tc := range forwardingGroups { - if dut.Vendor() == ondatra.NOKIA { - qoscfg.SetForwardingGroupWithFabricPriority(t, dut, q, tc.targetGroup, tc.queueName, tc.fabricPriority) - } else { - qoscfg.SetForwardingGroup(t, dut, q, tc.targetGroup, tc.queueName) - } + qoscfg.SetForwardingGroup(t, dut, q, tc.targetGroup, tc.queueName) } t.Logf("Create qos Classifiers config") @@ -1058,13 +1055,7 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { input.SetId(tc.inputID) input.SetInputType(tc.inputType) input.SetQueue(tc.queueName) - if dut.Vendor() == ondatra.NOKIA { - if tc.priority != oc.Scheduler_Priority_STRICT { - input.SetWeight(tc.weight) - } - } else { - input.SetWeight(tc.weight) - } + input.SetWeight(tc.weight) gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), q) } diff --git a/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go b/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go index 371ff9e55b2..82edadcaf96 100644 --- a/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go +++ b/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go @@ -808,60 +808,57 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { q := d.GetOrCreateQos() queues := netutil.CommonTrafficQueues(t, dut) + if dut.Vendor() == ondatra.NOKIA { + queueNames := []string{queues.NC1, queues.AF4, queues.AF3, queues.AF2, queues.AF1, queues.BE0, queues.BE1} + for i, queue := range queueNames { + q1 := q.GetOrCreateQueue(queue) + q1.Name = ygot.String(queue) + queueid := len(queueNames) - i + q1.QueueId = ygot.Uint8(uint8(queueid)) + } + } if dut.Vendor() == ondatra.JUNIPER { queues.AF4 = "5" } t.Logf("Create qos forwarding groups config") forwardingGroups := []struct { - desc string - queueName string - targetGroup string - fabricPriority uint8 + desc string + queueName string + targetGroup string }{{ - desc: "forwarding-group-BE1", - queueName: queues.BE1, - targetGroup: "target-group-BE1", - fabricPriority: 1, - }, { - desc: "forwarding-group-BE0", - queueName: queues.BE0, - targetGroup: "target-group-BE0", - fabricPriority: 2, - }, { - desc: "forwarding-group-AF1", - queueName: queues.AF1, - targetGroup: "target-group-AF1", - fabricPriority: 3, - }, { - desc: "forwarding-group-AF2", - queueName: queues.AF2, - targetGroup: "target-group-AF2", - fabricPriority: 4, - }, { - desc: "forwarding-group-AF3", - queueName: queues.AF3, - targetGroup: "target-group-AF3", - fabricPriority: 5, - }, { - desc: "forwarding-group-AF4", - queueName: queues.AF4, - targetGroup: "target-group-AF4", - fabricPriority: 6, - }, { - desc: "forwarding-group-NC1", - queueName: queues.NC1, - targetGroup: "target-group-NC1", - fabricPriority: 7, + desc: "forwarding-group-BE1", + queueName: queues.BE1, + targetGroup: "target-group-BE1", + }, { + desc: "forwarding-group-BE0", + queueName: queues.BE0, + targetGroup: "target-group-BE0", + }, { + desc: "forwarding-group-AF1", + queueName: queues.AF1, + targetGroup: "target-group-AF1", + }, { + desc: "forwarding-group-AF2", + queueName: queues.AF2, + targetGroup: "target-group-AF2", + }, { + desc: "forwarding-group-AF3", + queueName: queues.AF3, + targetGroup: "target-group-AF3", + }, { + desc: "forwarding-group-AF4", + queueName: queues.AF4, + targetGroup: "target-group-AF4", + }, { + desc: "forwarding-group-NC1", + queueName: queues.NC1, + targetGroup: "target-group-NC1", }} t.Logf("qos forwarding groups config: %v", forwardingGroups) for _, tc := range forwardingGroups { - if dut.Vendor() == ondatra.NOKIA { - qoscfg.SetForwardingGroupWithFabricPriority(t, dut, q, tc.targetGroup, tc.queueName, tc.fabricPriority) - } else { - qoscfg.SetForwardingGroup(t, dut, q, tc.targetGroup, tc.queueName) - } + qoscfg.SetForwardingGroup(t, dut, q, tc.targetGroup, tc.queueName) } t.Logf("Create qos Classifiers config") @@ -1113,13 +1110,7 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { input.SetId(tc.inputID) input.SetInputType(tc.inputType) input.SetQueue(tc.queueName) - if dut.Vendor() == ondatra.NOKIA { - if tc.priority != oc.Scheduler_Priority_STRICT { - input.SetWeight(tc.weight) - } - } else { - input.SetWeight(tc.weight) - } + input.SetWeight(tc.weight) gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), q) } diff --git a/internal/qoscfg/qoscfg.go b/internal/qoscfg/qoscfg.go index 70eb10c49db..8d8e294ec17 100644 --- a/internal/qoscfg/qoscfg.go +++ b/internal/qoscfg/qoscfg.go @@ -32,16 +32,6 @@ func SetForwardingGroup(t *testing.T, dut *ondatra.DUTDevice, qos *oc.Qos, group gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), qos) } -func SetForwardingGroupWithFabricPriority(t *testing.T, dut *ondatra.DUTDevice, qos *oc.Qos, groupName, queueName string, fabricPriority uint8) { - t.Helper() - - fwdGroup := qos.GetOrCreateForwardingGroup(groupName) - fwdGroup.SetOutputQueue(queueName) - fwdGroup.SetFabricPriority(uint8(fabricPriority)) - qos.GetOrCreateQueue(queueName) - gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), qos) -} - // SetInputClassifier sets an input classifier in the specified QoS config. func SetInputClassifier(t *testing.T, dut *ondatra.DUTDevice, qos *oc.Qos, intfID string, classType oc.E_Input_Classifier_Type, className string) { t.Helper() From 386a8bde5a9d8c74772ab78b158b6ad16e0b9f33 Mon Sep 17 00:00:00 2001 From: trathod Date: Fri, 15 Sep 2023 15:59:03 -0400 Subject: [PATCH 4/6] Replacing vendor check with deviation for queue-id configurations "This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind." --- .../metadata.textproto | 1 + .../one_sp_queue_traffic_test.go | 2 +- internal/deviations/deviations.go | 5 + proto/metadata.proto | 2 + proto/metadata_go_proto/metadata.pb.go | 271 +++++++++--------- 5 files changed, 148 insertions(+), 133 deletions(-) diff --git a/feature/qos/otg_tests/one_sp_queue_traffic_test/metadata.textproto b/feature/qos/otg_tests/one_sp_queue_traffic_test/metadata.textproto index 37f65b08c89..5ad022dedf8 100644 --- a/feature/qos/otg_tests/one_sp_queue_traffic_test/metadata.textproto +++ b/feature/qos/otg_tests/one_sp_queue_traffic_test/metadata.textproto @@ -29,6 +29,7 @@ platform_exceptions: { interface_enabled: true explicit_port_speed: true explicit_interface_in_default_vrf: true + qos_queue_requires_id: true } } platform_exceptions: { diff --git a/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go b/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go index df7f3dbe4ab..fe5232cddb1 100644 --- a/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go +++ b/feature/qos/otg_tests/one_sp_queue_traffic_test/one_sp_queue_traffic_test.go @@ -808,7 +808,7 @@ func ConfigureQoS(t *testing.T, dut *ondatra.DUTDevice) { q := d.GetOrCreateQos() queues := netutil.CommonTrafficQueues(t, dut) - if dut.Vendor() == ondatra.NOKIA { + if deviations.QOSQueueRequiresId(dut) { queueNames := []string{queues.NC1, queues.AF4, queues.AF3, queues.AF2, queues.AF1, queues.BE0, queues.BE1} for i, queue := range queueNames { q1 := q.GetOrCreateQueue(queue) diff --git a/internal/deviations/deviations.go b/internal/deviations/deviations.go index ed7f7267f8c..a78c7e19c3c 100644 --- a/internal/deviations/deviations.go +++ b/internal/deviations/deviations.go @@ -596,3 +596,8 @@ func ISISCounterManualAddressDropFromAreasUnsupported(dut *ondatra.DUTDevice) bo func ISISCounterPartChangesUnsupported(dut *ondatra.DUTDevice) bool { return lookupDUTDeviations(dut).GetIsisCounterPartChangesUnsupported() } + +// QOSQueueRequiresId returns if device should configure QOS queue along with queue-id +func QOSQueueRequiresId(dut *ondatra.DUTDevice) bool { + return lookupDUTDeviations(dut).GetQosQueueRequiresId() +} diff --git a/proto/metadata.proto b/proto/metadata.proto index a614b68f6a9..62571c43ebd 100644 --- a/proto/metadata.proto +++ b/proto/metadata.proto @@ -327,6 +327,8 @@ message Metadata { // Devices do not support telemetry for isis counter: part-changes. // Arista: partnerissuetracker.corp.google.com/299285991 bool isis_counter_part_changes_unsupported = 107; + // QOS queue requires configuration with queue-id + bool qos_queue_requires_id = 108; // Reserved field numbers and identifiers. reserved 84, 9, 28, 90; diff --git a/proto/metadata_go_proto/metadata.pb.go b/proto/metadata_go_proto/metadata.pb.go index 5415cb33625..56a3f7c5c84 100644 --- a/proto/metadata_go_proto/metadata.pb.go +++ b/proto/metadata_go_proto/metadata.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.3 +// protoc v4.23.2 // source: metadata.proto package metadata_go_proto @@ -594,6 +594,8 @@ type Metadata_Deviations struct { // Devices do not support telemetry for isis counter: part-changes. // Arista: partnerissuetracker.corp.google.com/299285991 IsisCounterPartChangesUnsupported bool `protobuf:"varint,107,opt,name=isis_counter_part_changes_unsupported,json=isisCounterPartChangesUnsupported,proto3" json:"isis_counter_part_changes_unsupported,omitempty"` + // QOS queue requires configuration with queue-id + QosQueueRequiresId bool `protobuf:"varint,108,opt,name=qos_queue_requires_id,json=qosQueueRequiresId,proto3" json:"qos_queue_requires_id,omitempty"` } func (x *Metadata_Deviations) Reset() { @@ -1300,6 +1302,13 @@ func (x *Metadata_Deviations) GetIsisCounterPartChangesUnsupported() bool { return false } +func (x *Metadata_Deviations) GetQosQueueRequiresId() bool { + if x != nil { + return x.QosQueueRequiresId + } + return false +} + type Metadata_PlatformExceptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1363,7 +1372,7 @@ var file_metadata_proto_rawDesc = []byte{ 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x62, 0x65, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x3d, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x3d, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, @@ -1394,7 +1403,7 @@ var file_metadata_proto_rawDesc = []byte{ 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0e, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, - 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xed, 0x35, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, + 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xc9, 0x35, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x70, 0x76, 0x34, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, @@ -1726,136 +1735,134 @@ var file_metadata_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x59, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x61, 0x62, 0x72, 0x69, 0x63, - 0x43, 0x61, 0x72, 0x64, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x5b, - 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x77, 0x65, - 0x72, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x5f, 0x69, - 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x5a, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x26, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x50, 0x6f, - 0x77, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x49, 0x6e, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x57, 0x0a, 0x2a, 0x69, - 0x73, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x65, - 0x5f, 0x6c, 0x31, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x6c, 0x32, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x23, 0x69, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x53, 0x61, 0x6d, 0x65, - 0x4c, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x32, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x12, 0x57, 0x0a, 0x2a, 0x62, 0x67, 0x70, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x6d, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x71, 0x75, - 0x61, 0x6c, 0x5f, 0x6f, 0x73, 0x70, 0x66, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x23, 0x62, 0x67, 0x70, 0x53, 0x65, 0x74, - 0x4d, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x45, 0x71, 0x75, 0x61, 0x6c, - 0x4f, 0x73, 0x70, 0x66, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x4e, 0x0a, - 0x24, 0x70, 0x34, 0x72, 0x74, 0x5f, 0x67, 0x64, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x71, 0x5f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x20, 0x70, 0x34, 0x72, - 0x74, 0x47, 0x64, 0x70, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x44, 0x6f, 0x74, 0x31, - 0x71, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x59, 0x0a, - 0x2a, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, - 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x5e, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x25, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x55, 0x6e, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x5f, - 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x5f, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0d, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x73, 0x0a, 0x38, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x6c, 0x69, 0x66, - 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x72, - 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x60, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x31, 0x69, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x4c, 0x69, 0x66, 0x65, 0x74, - 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x73, 0x4c, 0x73, 0x70, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x77, 0x0a, 0x3a, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0x61, 0x20, 0x01, 0x28, 0x08, 0x52, 0x33, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x50, 0x6f, - 0x72, 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x4f, - 0x0a, 0x24, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, - 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x62, 0x20, 0x01, 0x28, 0x08, 0x52, 0x21, 0x6c, 0x69, - 0x6e, 0x65, 0x63, 0x61, 0x72, 0x64, 0x43, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, - 0x53, 0x0a, 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x75, 0x6e, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x23, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x2b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x08, 0x52, 0x27, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x43, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, + 0x43, 0x61, 0x72, 0x64, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x57, + 0x0a, 0x2a, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x73, + 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x31, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x77, 0x69, + 0x74, 0x68, 0x5f, 0x6c, 0x32, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x5b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x23, 0x69, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x53, + 0x61, 0x6d, 0x65, 0x4c, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x57, 0x69, 0x74, 0x68, 0x4c, + 0x32, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x57, 0x0a, 0x2a, 0x62, 0x67, 0x70, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, + 0x65, 0x71, 0x75, 0x61, 0x6c, 0x5f, 0x6f, 0x73, 0x70, 0x66, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x23, 0x62, 0x67, 0x70, + 0x53, 0x65, 0x74, 0x4d, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x45, 0x71, + 0x75, 0x61, 0x6c, 0x4f, 0x73, 0x70, 0x66, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x12, 0x4e, 0x0a, 0x24, 0x70, 0x34, 0x72, 0x74, 0x5f, 0x67, 0x64, 0x70, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x71, 0x5f, 0x73, 0x75, 0x62, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x20, + 0x70, 0x34, 0x72, 0x74, 0x47, 0x64, 0x70, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x44, + 0x6f, 0x74, 0x31, 0x71, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x12, 0x59, 0x0a, 0x2a, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x5e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x25, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, + 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x73, + 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x5f, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x73, 0x0a, 0x38, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x5f, + 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, + 0x60, 0x20, 0x01, 0x28, 0x08, 0x52, 0x31, 0x69, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x4c, 0x69, + 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4c, 0x73, 0x70, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x77, 0x0a, 0x3a, 0x61, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, + 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x61, 0x20, 0x01, 0x28, 0x08, 0x52, 0x33, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x4f, 0x0a, 0x24, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x70, + 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x62, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x21, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x72, 0x64, 0x43, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x64, 0x72, 0x6f, - 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x66, 0x61, 0x62, - 0x72, 0x69, 0x63, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x55, 0x6e, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x27, 0x6c, 0x69, 0x6e, - 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x18, 0x66, 0x20, 0x01, 0x28, 0x08, 0x52, 0x24, 0x6c, 0x69, 0x6e, 0x65, - 0x63, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x12, 0x46, 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x76, 0x6f, 0x71, 0x5f, 0x64, 0x72, 0x6f, 0x70, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x18, 0x67, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x71, 0x6f, 0x73, 0x56, - 0x6f, 0x71, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x55, 0x6e, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x1f, 0x61, 0x74, 0x65, 0x5f, - 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, - 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x68, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x1b, 0x61, 0x74, 0x65, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x50, - 0x0a, 0x25, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x73, - 0x6e, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x69, 0x20, 0x01, 0x28, 0x08, 0x52, 0x21, 0x69, - 0x73, 0x69, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x73, 0x43, 0x73, 0x6e, 0x70, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x12, 0x71, 0x0a, 0x37, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x5f, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x73, 0x5f, - 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x6a, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x30, 0x69, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x61, - 0x6e, 0x75, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x46, - 0x72, 0x6f, 0x6d, 0x41, 0x72, 0x65, 0x61, 0x73, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x25, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x6b, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x21, 0x69, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x50, - 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x54, 0x10, 0x55, 0x4a, 0x04, 0x08, 0x09, 0x10, - 0x0a, 0x4a, 0x04, 0x08, 0x1c, 0x10, 0x1d, 0x1a, 0xa0, 0x01, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, - 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x47, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, - 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x07, 0x54, - 0x65, 0x73, 0x74, 0x62, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, - 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0f, 0x0a, 0x0b, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x10, 0x01, - 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, - 0x44, 0x55, 0x54, 0x5f, 0x34, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, - 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, - 0x32, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, - 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x34, 0x4c, 0x49, 0x4e, - 0x4b, 0x53, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, - 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x39, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x5f, 0x4c, - 0x41, 0x47, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, - 0x44, 0x55, 0x54, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x32, 0x4c, 0x49, 0x4e, - 0x4b, 0x53, 0x10, 0x06, 0x22, 0x6d, 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x10, - 0x54, 0x41, 0x47, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, - 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x41, 0x47, 0x53, - 0x5f, 0x44, 0x41, 0x54, 0x41, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x44, 0x47, 0x45, - 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x45, 0x44, 0x47, 0x45, 0x10, - 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, - 0x54, 0x10, 0x04, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x64, 0x12, 0x53, 0x0a, 0x26, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x63, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x23, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x55, 0x6e, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x2b, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, + 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x08, 0x52, 0x27, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x43, 0x70, 0x75, 0x55, + 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, + 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x6e, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, + 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x27, + 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, + 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x66, 0x20, 0x01, 0x28, 0x08, 0x52, 0x24, 0x6c, + 0x69, 0x6e, 0x65, 0x63, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x76, 0x6f, 0x71, 0x5f, 0x64, + 0x72, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x6e, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x67, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x71, + 0x6f, 0x73, 0x56, 0x6f, 0x71, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x1f, 0x61, + 0x74, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x68, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x61, 0x74, 0x65, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, + 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x12, 0x50, 0x0a, 0x25, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x73, + 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, + 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x69, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x21, 0x69, 0x73, 0x69, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x73, 0x43, 0x73, 0x6e, 0x70, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x37, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x72, 0x65, + 0x61, 0x73, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x6a, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x30, 0x69, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x44, 0x72, + 0x6f, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x72, 0x65, 0x61, 0x73, 0x55, 0x6e, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x25, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, + 0x6b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x21, 0x69, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x50, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x55, 0x6e, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x15, 0x71, 0x6f, 0x73, 0x5f, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, + 0x64, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x71, 0x6f, 0x73, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x54, 0x10, + 0x55, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x1c, 0x10, 0x1d, 0x4a, 0x04, 0x08, + 0x5a, 0x10, 0x5b, 0x1a, 0xa0, 0x01, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x47, 0x0a, + 0x0a, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x07, 0x54, 0x65, 0x73, 0x74, 0x62, + 0x65, 0x64, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x54, + 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, + 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x44, 0x55, 0x54, 0x5f, + 0x34, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, + 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x32, 0x4c, 0x49, 0x4e, + 0x4b, 0x53, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, + 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x34, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x04, + 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, + 0x41, 0x54, 0x45, 0x5f, 0x39, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x05, + 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, + 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x32, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x06, + 0x22, 0x6d, 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x47, 0x53, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, + 0x0a, 0x10, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x44, 0x47, 0x45, 0x10, 0x02, 0x12, 0x0d, + 0x0a, 0x09, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x45, 0x44, 0x47, 0x45, 0x10, 0x03, 0x12, 0x10, 0x0a, + 0x0c, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x10, 0x04, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( From 5d0ebdc77cf291a47d78ba1ddccae4a9e9d884d7 Mon Sep 17 00:00:00 2001 From: trathod Date: Fri, 22 Sep 2023 15:46:44 -0400 Subject: [PATCH 5/6] Fixing static-analysis error --- internal/deviations/deviations.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/deviations/deviations.go b/internal/deviations/deviations.go index 45bbee50cd0..35537a2b1c1 100644 --- a/internal/deviations/deviations.go +++ b/internal/deviations/deviations.go @@ -597,7 +597,7 @@ func ISISCounterPartChangesUnsupported(dut *ondatra.DUTDevice) bool { return lookupDUTDeviations(dut).GetIsisCounterPartChangesUnsupported() } -// SkipTCPNegotiatedMssCheck returns true for devices that do not +// SkipTCPNegotiatedMSSCheck returns true for devices that do not // support telemetry to check negotiated tcp mss value. func SkipTCPNegotiatedMSSCheck(dut *ondatra.DUTDevice) bool { return lookupDUTDeviations(dut).GetSkipTcpNegotiatedMssCheck() @@ -621,7 +621,7 @@ func ISISLspMetadataLeafsUnsupported(dut *ondatra.DUTDevice) bool { return lookupDUTDeviations(dut).GetIsisLspMetadataLeafsUnsupported() } -// QOSQueueRequiresId returns if device should configure QOS queue along with queue-id +// QOSQueueRequiresID returns if device should configure QOS queue along with queue-id func QOSQueueRequiresID(dut *ondatra.DUTDevice) bool { return lookupDUTDeviations(dut).GetQosQueueRequiresId() } From 86eab2bb436d436103f4d3b0d4d7bba754dee89c Mon Sep 17 00:00:00 2001 From: trathod Date: Fri, 22 Sep 2023 17:01:55 -0400 Subject: [PATCH 6/6] Removing QOSBufferAllocationConfigRequired deviation from this PR --- internal/deviations/deviations.go | 5 -- proto/metadata.proto | 2 - proto/metadata_go_proto/metadata.pb.go | 82 +++++++++++--------------- 3 files changed, 34 insertions(+), 55 deletions(-) diff --git a/internal/deviations/deviations.go b/internal/deviations/deviations.go index 35537a2b1c1..d89cb18d95c 100644 --- a/internal/deviations/deviations.go +++ b/internal/deviations/deviations.go @@ -625,8 +625,3 @@ func ISISLspMetadataLeafsUnsupported(dut *ondatra.DUTDevice) bool { func QOSQueueRequiresID(dut *ondatra.DUTDevice) bool { return lookupDUTDeviations(dut).GetQosQueueRequiresId() } - -// QOSBufferAllocationConfigRequired returns if device should configure QOS buffer-allocation-profile -func QOSBufferAllocationConfigRequired(dut *ondatra.DUTDevice) bool { - return lookupDUTDeviations(dut).GetQosBufferAllocationConfigRequired() -} diff --git a/proto/metadata.proto b/proto/metadata.proto index dede283420e..593ee62ddb0 100644 --- a/proto/metadata.proto +++ b/proto/metadata.proto @@ -339,8 +339,6 @@ message Metadata { bool isis_lsp_metadata_leafs_unsupported = 111; // QOS queue requires configuration with queue-id bool qos_queue_requires_id = 112; - // QOS requires buffer-allocation-profile configuration - bool qos_buffer_allocation_config_required = 113; // Reserved field numbers and identifiers. reserved 84, 9, 28, 90; diff --git a/proto/metadata_go_proto/metadata.pb.go b/proto/metadata_go_proto/metadata.pb.go index 501f0fcfce6..365ce589048 100644 --- a/proto/metadata_go_proto/metadata.pb.go +++ b/proto/metadata_go_proto/metadata.pb.go @@ -606,8 +606,6 @@ type Metadata_Deviations struct { IsisLspMetadataLeafsUnsupported bool `protobuf:"varint,111,opt,name=isis_lsp_metadata_leafs_unsupported,json=isisLspMetadataLeafsUnsupported,proto3" json:"isis_lsp_metadata_leafs_unsupported,omitempty"` // QOS queue requires configuration with queue-id QosQueueRequiresId bool `protobuf:"varint,112,opt,name=qos_queue_requires_id,json=qosQueueRequiresId,proto3" json:"qos_queue_requires_id,omitempty"` - // QOS requires buffer-allocation-profile configuration - QosBufferAllocationConfigRequired bool `protobuf:"varint,113,opt,name=qos_buffer_allocation_config_required,json=qosBufferAllocationConfigRequired,proto3" json:"qos_buffer_allocation_config_required,omitempty"` } func (x *Metadata_Deviations) Reset() { @@ -1349,13 +1347,6 @@ func (x *Metadata_Deviations) GetQosQueueRequiresId() bool { return false } -func (x *Metadata_Deviations) GetQosBufferAllocationConfigRequired() bool { - if x != nil { - return x.QosBufferAllocationConfigRequired - } - return false -} - type Metadata_PlatformExceptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1419,7 +1410,7 @@ var file_metadata_proto_rawDesc = []byte{ 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x62, 0x65, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x40, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x3f, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, @@ -1450,7 +1441,7 @@ var file_metadata_proto_rawDesc = []byte{ 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0e, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, - 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xc1, 0x38, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, + 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xef, 0x37, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x70, 0x76, 0x34, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, @@ -1896,43 +1887,38 @@ var file_metadata_proto_rawDesc = []byte{ 0x0a, 0x15, 0x71, 0x6f, 0x73, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x70, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x71, 0x6f, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x49, - 0x64, 0x12, 0x50, 0x0a, 0x25, 0x71, 0x6f, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, - 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x71, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x21, 0x71, 0x6f, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x54, 0x10, 0x55, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, - 0x04, 0x08, 0x1c, 0x10, 0x1d, 0x4a, 0x04, 0x08, 0x5a, 0x10, 0x5b, 0x1a, 0xa0, 0x01, 0x0a, 0x12, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x47, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc7, - 0x01, 0x0a, 0x07, 0x54, 0x65, 0x73, 0x74, 0x62, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x45, - 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, - 0x55, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, - 0x44, 0x55, 0x54, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x34, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x02, - 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, - 0x41, 0x54, 0x45, 0x5f, 0x32, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, - 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, - 0x34, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x45, 0x53, 0x54, - 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x39, 0x4c, 0x49, 0x4e, - 0x4b, 0x53, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x45, 0x53, 0x54, - 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, - 0x32, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x06, 0x22, 0x6d, 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, - 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x41, - 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, - 0x54, 0x41, 0x47, 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, - 0x45, 0x44, 0x47, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x45, - 0x44, 0x47, 0x45, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x54, 0x52, - 0x41, 0x4e, 0x53, 0x49, 0x54, 0x10, 0x04, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x4a, 0x04, 0x08, 0x54, 0x10, 0x55, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, + 0x1c, 0x10, 0x1d, 0x4a, 0x04, 0x08, 0x5a, 0x10, 0x5b, 0x1a, 0xa0, 0x01, 0x0a, 0x12, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x47, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc7, 0x01, 0x0a, + 0x07, 0x54, 0x65, 0x73, 0x74, 0x62, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x45, 0x53, 0x54, + 0x42, 0x45, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, + 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, + 0x54, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x34, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x02, 0x12, 0x1a, + 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, + 0x45, 0x5f, 0x32, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, + 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x34, 0x4c, + 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, + 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x39, 0x4c, 0x49, 0x4e, 0x4b, 0x53, + 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, + 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x32, 0x4c, + 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x06, 0x22, 0x6d, 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x14, + 0x0a, 0x10, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x41, 0x47, 0x47, + 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x41, + 0x47, 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x44, + 0x47, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x45, 0x44, 0x47, + 0x45, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x4e, + 0x53, 0x49, 0x54, 0x10, 0x04, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (