From 6c2fef637810e5faebaa5d0555bb62800c8e9f89 Mon Sep 17 00:00:00 2001 From: cprabha Date: Sun, 22 Dec 2024 20:01:51 -0800 Subject: [PATCH 01/14] RT-1.32 : actions_MED_LocPref_prepend_flow_control_test.go (#2767) * updated RT-1.32 * resolving conflicts * Fixing go static error * Resolving conflicts * Resolving conflicts * Changed folder name as per latest git commit * updating with git copy of README * Resolving conflicts * Resolving conflicts * updated * updating deviations * resolving conflicts * Resvoling conflicts * resolving conflicts * Added verification for setmedincrease policy * updated verification * Resolving conflicts * resoving conflicts * Resolving conflicts * Resolving commit * resolving conflicts * REsolving conflicts * removed space * updated with native cli * resolving conflicts * Update deviations.go * Update deviations.go * Update deviations.go * Update metadata.pb.go * Update metadata.pb.go * Update actions_MED_LocPref_prepend_flow_control_test.go * Update metadata.textproto * Update metadata.textproto * Update deviations.go * Update metadata.proto * Update metadata.pb.go * regenerated proto stubs * REsolving conflicts * Resolving conflicts * Update internal/deviations/deviations.go Co-authored-by: Darren Loher * updating comments * REsolving erros * updating comment * updating review comment --------- Co-authored-by: Swetha-haridasula Co-authored-by: Nisha Sadhasivam Co-authored-by: Pramod Maurya Co-authored-by: Darren Loher --- ...s_MED_LocPref_prepend_flow_control_test.go | 91 ++++++++++----- .../metadata.textproto | 9 ++ internal/deviations/deviations.go | 6 + proto/metadata.proto | 4 + proto/metadata_go_proto/metadata.pb.go | 110 ++++++++++-------- 5 files changed, 145 insertions(+), 75 deletions(-) diff --git a/feature/bgp/policybase/otg_tests/actions_med_localpref_prepend_flow_control/actions_MED_LocPref_prepend_flow_control_test.go b/feature/bgp/policybase/otg_tests/actions_med_localpref_prepend_flow_control/actions_MED_LocPref_prepend_flow_control_test.go index d083febdadf..c4df5796bf2 100644 --- a/feature/bgp/policybase/otg_tests/actions_med_localpref_prepend_flow_control/actions_MED_LocPref_prepend_flow_control_test.go +++ b/feature/bgp/policybase/otg_tests/actions_med_localpref_prepend_flow_control/actions_MED_LocPref_prepend_flow_control_test.go @@ -15,6 +15,7 @@ package actions_med_localpref_prepend_flow_control_test import ( + "fmt" "strconv" "strings" "testing" @@ -25,6 +26,7 @@ import ( "github.com/openconfig/featureprofiles/internal/attrs" "github.com/openconfig/featureprofiles/internal/deviations" "github.com/openconfig/featureprofiles/internal/fptest" + "github.com/openconfig/featureprofiles/internal/helpers" "github.com/openconfig/ondatra" "github.com/openconfig/ondatra/gnmi" "github.com/openconfig/ondatra/gnmi/oc" @@ -40,12 +42,12 @@ func TestMain(m *testing.M) { } const ( - advertisedRoutesv4Net1 = "192.168.10.0" - advertisedRoutesv6Net1 = "2024:db8:128:128::" - advertisedRoutesv4Net2 = "192.168.20.0" - advertisedRoutesv6Net2 = "2024:db8:64:64::" - advertisedRoutesv4PrefixLen = 24 - advertisedRoutesv6PrefixLen = 64 + advertisedRoutesv4Net1 = "192.168.10.1" + advertisedRoutesv6Net1 = "2024:db8:128:128::1" + advertisedRoutesv4Net2 = "192.168.20.1" + advertisedRoutesv6Net2 = "2024:db8:64:64::1" + advertisedRoutesv4PrefixLen = 32 + advertisedRoutesv6PrefixLen = 128 dutAS = 64500 ateAS = 64501 plenIPv4 = 30 @@ -209,6 +211,24 @@ func VerifyBgpState(t *testing.T, dut *ondatra.DUTDevice) { t.Log("BGP sessions Established") } +// juniperBgpPolicyMEDAdd is used to configure set metric add via native cli as an alternative for below xpath. +// routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-med +func juniperBgpPolicyMEDAdd(polName string, metric int) string { + return fmt.Sprintf(` + policy-options { + policy-statement %s { + term 1 { + then { + metric add %d; + } + } + term 2 { + then accept; + } + } + }`, polName, metric) +} + // configureASLocalPrefMEDPolicy configures MED, Local Pref, AS prepend etc func configureASLocalPrefMEDPolicy(t *testing.T, dut *ondatra.DUTDevice, policyType, policyValue, statement string, ASN uint32) { t.Helper() @@ -228,12 +248,25 @@ func configureASLocalPrefMEDPolicy(t *testing.T, dut *ondatra.DUTDevice, policyT actions.PolicyResult = oc.RoutingPolicy_PolicyResultType_ACCEPT_ROUTE case setMEDPolicy: if strings.Contains(policyValue, "+") { - actions.GetOrCreateBgpActions().SetMed = oc.UnionString(policyValue) + if deviations.BgpSetMedV7Unsupported(dut) { + t.Logf("Push the CLI config:%s", dut.Vendor()) + metric, _ := strconv.Atoi(policyValue) + switch dut.Vendor() { + case ondatra.JUNIPER: + config := juniperBgpPolicyMEDAdd(setMEDPolicy, metric) + helpers.GnmiCLIConfig(t, dut, config) + default: + t.Fatalf("BgpSetMedV7Unsupported deviation needs cli configuration for vendor %s which is not defined", dut.Vendor()) + } + } else { + actions.GetOrCreateBgpActions().SetMed = oc.UnionString(policyValue) + actions.PolicyResult = oc.RoutingPolicy_PolicyResultType_ACCEPT_ROUTE + } } else { metric, _ := strconv.Atoi(policyValue) actions.GetOrCreateBgpActions().SetMed = oc.UnionUint32(uint32(metric)) + actions.PolicyResult = oc.RoutingPolicy_PolicyResultType_ACCEPT_ROUTE } - actions.PolicyResult = oc.RoutingPolicy_PolicyResultType_ACCEPT_ROUTE case setPrependPolicy: metric, _ := strconv.Atoi(policyValue) asPrepend := actions.GetOrCreateBgpActions().GetOrCreateSetAsPathPrepend() @@ -298,15 +331,13 @@ func deleteBGPImportExportPolicy(t *testing.T, dut *ondatra.DUTDevice, ipv4, ipv batchConfig := &gnmi.SetBatch{} nbrPolPathv4 := bgpPath.Neighbor(ipv4).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).ApplyPolicy() nbrPolPathv6 := bgpPath.Neighbor(ipv6).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).ApplyPolicy() - if deviations.DefaultRoutePolicyUnsupported(dut) { - // deleteBGPImportExportPolicy on port2 needed when default policy is not supported - nbrPolPathv4_2 := bgpPath.Neighbor(ipv4_2).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).ApplyPolicy() - nbrPolPathv6_2 := bgpPath.Neighbor(ipv6_2).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).ApplyPolicy() - gnmi.BatchDelete(batchConfig, nbrPolPathv4_2.ImportPolicy().Config()) - gnmi.BatchDelete(batchConfig, nbrPolPathv4_2.ExportPolicy().Config()) - gnmi.BatchDelete(batchConfig, nbrPolPathv6_2.ImportPolicy().Config()) - gnmi.BatchDelete(batchConfig, nbrPolPathv6_2.ExportPolicy().Config()) - } + nbrPolPathv4_2 := bgpPath.Neighbor(ipv4_2).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).ApplyPolicy() + nbrPolPathv6_2 := bgpPath.Neighbor(ipv6_2).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).ApplyPolicy() + gnmi.BatchDelete(batchConfig, nbrPolPathv4_2.ImportPolicy().Config()) + gnmi.BatchDelete(batchConfig, nbrPolPathv4_2.ExportPolicy().Config()) + gnmi.BatchDelete(batchConfig, nbrPolPathv6_2.ImportPolicy().Config()) + gnmi.BatchDelete(batchConfig, nbrPolPathv6_2.ExportPolicy().Config()) + gnmi.BatchDelete(batchConfig, nbrPolPathv4.ImportPolicy().Config()) gnmi.BatchDelete(batchConfig, nbrPolPathv4.ExportPolicy().Config()) gnmi.BatchDelete(batchConfig, nbrPolPathv6.ImportPolicy().Config()) @@ -445,6 +476,7 @@ func configureOTG(t *testing.T, otg *otg.OTG) gosnappi.Config { t.Logf("Pushing config to ATE and starting protocols...") otg.PushConfig(t, config) otg.StartProtocols(t) + return config } @@ -454,7 +486,7 @@ func validateOTGBgpPrefixV4AndASLocalPrefMED(t *testing.T, otg *otg.OTG, dut *on _, ok := gnmi.WatchAll(t, otg, gnmi.OTG().BgpPeer(peerName).UnicastIpv4PrefixAny().State(), - 30*time.Second, + 60*time.Second, func(v *ygnmi.Value[*otgtelemetry.BgpPeer_UnicastIpv4Prefix]) bool { _, present := v.Val() return present @@ -466,7 +498,7 @@ func validateOTGBgpPrefixV4AndASLocalPrefMED(t *testing.T, otg *otg.OTG, dut *on if bgpPrefix.Address != nil && bgpPrefix.GetAddress() == ipAddr && bgpPrefix.PrefixLength != nil && bgpPrefix.GetPrefixLength() == prefixLen { foundPrefix = true - t.Logf("Prefix recevied on OTG is correct, got prefix %v, want prefix %v", bgpPrefix, ipAddr) + t.Logf("Prefix recevied on OTG is correct, got prefix %v, want prefix %v", bgpPrefix.GetAddress(), ipAddr) switch pathAttr { case setMEDPolicy: if bgpPrefix.GetMultiExitDiscriminator() != metric { @@ -475,12 +507,14 @@ func validateOTGBgpPrefixV4AndASLocalPrefMED(t *testing.T, otg *otg.OTG, dut *on t.Logf("For Prefix %v, got MED %d want MED %d", bgpPrefix.GetAddress(), bgpPrefix.GetMultiExitDiscriminator(), metric) } case setLocalPrefPolicy: - validateImportRoutingPolicy(t, dut, ipAddr, metric) + if !deviations.BGPRibOcPathUnsupported(dut) { + validateImportRoutingPolicy(t, dut, ipAddr, metric) + } case setPrependPolicy: if len(bgpPrefix.AsPath[0].GetAsNumbers()) != int(metric) { t.Errorf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath[0].GetAsNumbers()), int(metric)) } else { - t.Logf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath), int(metric)) + t.Logf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath[0].GetAsNumbers()), int(metric)) } case setNxtPolicy: if bgpPrefix.GetMultiExitDiscriminator() != metric { @@ -491,7 +525,7 @@ func validateOTGBgpPrefixV4AndASLocalPrefMED(t *testing.T, otg *otg.OTG, dut *on if len(bgpPrefix.AsPath[0].GetAsNumbers()) != asnRepeatN+1 { t.Errorf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath[0].GetAsNumbers()), asnRepeatN+1) } else { - t.Logf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath), asnRepeatN+1) + t.Logf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath[0].GetAsNumbers()), asnRepeatN+1) } default: t.Errorf("Incorrect BGP Path Attribute. Expected MED, Local Pref or AS Path Prepend!!!!") @@ -511,7 +545,7 @@ func validateOTGBgpPrefixV6AndASLocalPrefMED(t *testing.T, otg *otg.OTG, dut *on _, ok := gnmi.WatchAll(t, otg, gnmi.OTG().BgpPeer(peerName).UnicastIpv6PrefixAny().State(), - 30*time.Second, + 60*time.Second, func(v *ygnmi.Value[*otgtelemetry.BgpPeer_UnicastIpv6Prefix]) bool { _, present := v.Val() return present @@ -523,7 +557,7 @@ func validateOTGBgpPrefixV6AndASLocalPrefMED(t *testing.T, otg *otg.OTG, dut *on if bgpPrefix.Address != nil && bgpPrefix.GetAddress() == ipAddr && bgpPrefix.PrefixLength != nil && bgpPrefix.GetPrefixLength() == prefixLen { foundPrefix = true - t.Logf("Prefix recevied on OTG is correct, got prefix %v, want prefix %v", bgpPrefix, ipAddr) + t.Logf("Prefix recevied on OTG is correct, got prefix %v, want prefix %v", bgpPrefix.GetAddress(), ipAddr) switch pathAttr { case setMEDPolicy: if bgpPrefix.GetMultiExitDiscriminator() != metric { @@ -532,12 +566,14 @@ func validateOTGBgpPrefixV6AndASLocalPrefMED(t *testing.T, otg *otg.OTG, dut *on t.Logf("For Prefix %v, got MED %d want MED %d", bgpPrefix.GetAddress(), bgpPrefix.GetMultiExitDiscriminator(), metric) } case setLocalPrefPolicy: - validateImportRoutingPolicyV6(t, dut, ipAddr, metric) + if !deviations.BGPRibOcPathUnsupported(dut) { + validateImportRoutingPolicyV6(t, dut, ipAddr, metric) + } case setPrependPolicy: if len(bgpPrefix.AsPath[0].GetAsNumbers()) != int(metric) { t.Errorf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath[0].GetAsNumbers()), int(metric)) } else { - t.Logf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath), int(metric)) + t.Logf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath[0].GetAsNumbers()), int(metric)) } case setNxtPolicy: if bgpPrefix.GetMultiExitDiscriminator() != metric { @@ -548,7 +584,7 @@ func validateOTGBgpPrefixV6AndASLocalPrefMED(t *testing.T, otg *otg.OTG, dut *on if len(bgpPrefix.AsPath[0].GetAsNumbers()) != asnRepeatN+1 { t.Errorf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath[0].GetAsNumbers()), asnRepeatN+1) } else { - t.Logf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath), asnRepeatN+1) + t.Logf("For Prefix %v, got AS Path Prepend %d want AS Path Prepend %d", bgpPrefix.GetAddress(), len(bgpPrefix.AsPath[0].GetAsNumbers()), asnRepeatN+1) } default: t.Errorf("Incorrect Routing Policy. Expected MED, Local Pref or AS Path Prepend!!!!") @@ -735,6 +771,7 @@ func TestBGPPolicy(t *testing.T) { if tc.isDeletePolicy { deleteBGPImportExportPolicy(t, dut, tc.deleteNbrv4, tc.deleteNbrv6, atePort2.IPv4, atePort2.IPv6) } + // Configure Routing Policy on the DUT. configureASLocalPrefMEDPolicy(t, dut, tc.rpPolicy, tc.policyValue, tc.policyStatement, tc.asn) if !deviations.DefaultRoutePolicyUnsupported(dut) { diff --git a/feature/bgp/policybase/otg_tests/actions_med_localpref_prepend_flow_control/metadata.textproto b/feature/bgp/policybase/otg_tests/actions_med_localpref_prepend_flow_control/metadata.textproto index 24be17ffe8b..c11bd3995b2 100644 --- a/feature/bgp/policybase/otg_tests/actions_med_localpref_prepend_flow_control/metadata.textproto +++ b/feature/bgp/policybase/otg_tests/actions_med_localpref_prepend_flow_control/metadata.textproto @@ -18,6 +18,15 @@ platform_exceptions: { skip_setting_statement_for_policy: true } } +platform_exceptions: { + platform: { + vendor: JUNIPER + } + deviations: { + bgp_rib_oc_path_unsupported: true + bgp_set_med_v7_unsupported: true + } +} platform_exceptions: { platform: { vendor: NOKIA diff --git a/internal/deviations/deviations.go b/internal/deviations/deviations.go index eca0aa92ce8..fb8797c656d 100644 --- a/internal/deviations/deviations.go +++ b/internal/deviations/deviations.go @@ -1258,3 +1258,9 @@ func IsisDisSysidUnsupported(dut *ondatra.DUTDevice) bool { func IsisDatabaseOverloadsUnsupported(dut *ondatra.DUTDevice) bool { return lookupDUTDeviations(dut).GetIsisDatabaseOverloadsUnsupported() } + +// BgpSetMedV7Unsupported returns true if devices which are not +// supporting bgp set med union type in OC. +func BgpSetMedV7Unsupported(dut *ondatra.DUTDevice) bool { + return lookupDUTDeviations(dut).GetBgpSetMedV7Unsupported() +} diff --git a/proto/metadata.proto b/proto/metadata.proto index b0d385bc0cc..29957c9d35d 100644 --- a/proto/metadata.proto +++ b/proto/metadata.proto @@ -664,6 +664,10 @@ message Metadata { bool isis_dis_sysid_unsupported = 239; // Cisco: b/378616912 bool isis_database_overloads_unsupported = 240; + // Juniper: b/358534837 + // Devices that do not support setting med value using union type in OC. + bool bgp_set_med_v7_unsupported = 241; + // Reserved field numbers and identifiers. reserved 84, 9, 28, 20, 90, 97, 55, 89, 19, 36, 35, 40, 173; } diff --git a/proto/metadata_go_proto/metadata.pb.go b/proto/metadata_go_proto/metadata.pb.go index f5ee4b49518..64a87d81f78 100644 --- a/proto/metadata_go_proto/metadata.pb.go +++ b/proto/metadata_go_proto/metadata.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v3.6.1 // source: metadata.proto package metadata_go_proto @@ -946,6 +946,9 @@ type Metadata_Deviations struct { IsisDisSysidUnsupported bool `protobuf:"varint,239,opt,name=isis_dis_sysid_unsupported,json=isisDisSysidUnsupported,proto3" json:"isis_dis_sysid_unsupported,omitempty"` // Cisco: b/378616912 IsisDatabaseOverloadsUnsupported bool `protobuf:"varint,240,opt,name=isis_database_overloads_unsupported,json=isisDatabaseOverloadsUnsupported,proto3" json:"isis_database_overloads_unsupported,omitempty"` + // Juniper: b/358534837 + // Devices that do not support setting med value using union type in OC. + BgpSetMedV7Unsupported bool `protobuf:"varint,241,opt,name=bgp_set_med_v7_unsupported,json=bgpSetMedV7Unsupported,proto3" json:"bgp_set_med_v7_unsupported,omitempty"` } func (x *Metadata_Deviations) Reset() { @@ -2513,6 +2516,13 @@ func (x *Metadata_Deviations) GetIsisDatabaseOverloadsUnsupported() bool { return false } +func (x *Metadata_Deviations) GetBgpSetMedV7Unsupported() bool { + if x != nil { + return x.BgpSetMedV7Unsupported + } + return false +} + type Metadata_PlatformExceptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2576,7 +2586,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, 0xdd, 0x87, 0x01, 0x0a, 0x08, 0x4d, 0x65, 0x74, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9a, 0x88, 0x01, 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, @@ -2610,7 +2620,7 @@ var file_metadata_proto_rawDesc = []byte{ 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, 0xb0, 0x7f, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x61, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xed, 0x7f, 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, 0x67, @@ -3624,45 +3634,49 @@ var file_metadata_proto_rawDesc = []byte{ 0x6f, 0x61, 0x64, 0x73, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0xf0, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x20, 0x69, 0x73, 0x69, 0x73, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 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, 0x4a, 0x04, 0x08, 0x14, 0x10, - 0x15, 0x4a, 0x04, 0x08, 0x5a, 0x10, 0x5b, 0x4a, 0x04, 0x08, 0x61, 0x10, 0x62, 0x4a, 0x04, 0x08, - 0x37, 0x10, 0x38, 0x4a, 0x04, 0x08, 0x59, 0x10, 0x5a, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x4a, - 0x04, 0x08, 0x24, 0x10, 0x25, 0x4a, 0x04, 0x08, 0x23, 0x10, 0x24, 0x4a, 0x04, 0x08, 0x28, 0x10, - 0x29, 0x4a, 0x06, 0x08, 0xad, 0x01, 0x10, 0xae, 0x01, 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, 0xfa, 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, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, - 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x38, 0x4c, 0x49, 0x4e, 0x4b, 0x53, - 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, - 0x54, 0x5f, 0x34, 0x30, 0x30, 0x5a, 0x52, 0x10, 0x08, 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, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x62, 0x67, 0x70, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x64, 0x5f, 0x76, 0x37, 0x5f, 0x75, 0x6e, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0xf1, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, + 0x62, 0x67, 0x70, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x64, 0x56, 0x37, 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, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x15, 0x4a, 0x04, + 0x08, 0x5a, 0x10, 0x5b, 0x4a, 0x04, 0x08, 0x61, 0x10, 0x62, 0x4a, 0x04, 0x08, 0x37, 0x10, 0x38, + 0x4a, 0x04, 0x08, 0x59, 0x10, 0x5a, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x4a, 0x04, 0x08, 0x24, + 0x10, 0x25, 0x4a, 0x04, 0x08, 0x23, 0x10, 0x24, 0x4a, 0x04, 0x08, 0x28, 0x10, 0x29, 0x4a, 0x06, + 0x08, 0xad, 0x01, 0x10, 0xae, 0x01, 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, 0xfa, 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, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, + 0x55, 0x54, 0x5f, 0x41, 0x54, 0x45, 0x5f, 0x38, 0x4c, 0x49, 0x4e, 0x4b, 0x53, 0x10, 0x07, 0x12, + 0x15, 0x0a, 0x11, 0x54, 0x45, 0x53, 0x54, 0x42, 0x45, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x5f, 0x34, + 0x30, 0x30, 0x5a, 0x52, 0x10, 0x08, 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 ( @@ -3679,7 +3693,7 @@ func file_metadata_proto_rawDescGZIP() []byte { var file_metadata_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_metadata_proto_goTypes = []interface{}{ +var file_metadata_proto_goTypes = []any{ (Metadata_Testbed)(0), // 0: openconfig.testing.Metadata.Testbed (Metadata_Tags)(0), // 1: openconfig.testing.Metadata.Tags (*Metadata)(nil), // 2: openconfig.testing.Metadata @@ -3708,7 +3722,7 @@ func file_metadata_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_metadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_metadata_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Metadata); i { case 0: return &v.state @@ -3720,7 +3734,7 @@ func file_metadata_proto_init() { return nil } } - file_metadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_metadata_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*Metadata_Platform); i { case 0: return &v.state @@ -3732,7 +3746,7 @@ func file_metadata_proto_init() { return nil } } - file_metadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_metadata_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*Metadata_Deviations); i { case 0: return &v.state @@ -3744,7 +3758,7 @@ func file_metadata_proto_init() { return nil } } - file_metadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_metadata_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*Metadata_PlatformExceptions); i { case 0: return &v.state From 12f2e209c7c7fcdef4ab7ce5980a4be0fa98d47e Mon Sep 17 00:00:00 2001 From: marcushines <80116818+marcushines@users.noreply.github.com> Date: Thu, 26 Dec 2024 00:53:17 -0600 Subject: [PATCH 02/14] Update README.md (#2632) Add example of specific spiffe format --- .../gnsi/certz/client_certificates/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/feature/security/gnsi/certz/client_certificates/README.md b/feature/security/gnsi/certz/client_certificates/README.md index bd09261d089..0efdc4f8f6c 100644 --- a/feature/security/gnsi/certz/client_certificates/README.md +++ b/feature/security/gnsi/certz/client_certificates/README.md @@ -8,6 +8,20 @@ identification information. The client certificate should have a SPIFFE Idenitifier embedded in it to be used as the identifier of the client to the server. +* SPIFFEE ID format + +``` +spiffe://.../role/ +``` + +* Example: + +``` +URI:spiffe://ca-issuer.sdn.wan.example.com/role/controller-role +``` + + + ## Baseline Setup ### Input Args From fc8c42759079a18e96394aa7635c4555c697cfa7 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 25 Dec 2024 23:07:04 -0800 Subject: [PATCH 03/14] Update ACL-1.2 to cover a management port (#3319) * update ACL-1.2 with controller card * add missing paths for acls and use case --- .../acl/otg_tests/acl_update_test/README.md | 96 +++++++++++++------ 1 file changed, 66 insertions(+), 30 deletions(-) diff --git a/feature/acl/otg_tests/acl_update_test/README.md b/feature/acl/otg_tests/acl_update_test/README.md index b1f79cb014c..1bcfa5175c2 100644 --- a/feature/acl/otg_tests/acl_update_test/README.md +++ b/feature/acl/otg_tests/acl_update_test/README.md @@ -2,7 +2,15 @@ ## Summary -Configure an IP ACL, then test changing the ACL configuration to ensure a make-before-break behavior is performed. Make before break for ACL is defined as +Test configuration of an IP ACL. +Test changing the ACL configuration to ensure no packets are dropped due to +the configuration change, when the rule added or removed is not intended to +affect the traffic (make before break). + + +## Testbed type + +* [`featureprofiles/topologies/atedut_2.testbed`](https://github.com/openconfig/featureprofiles/blob/main/topologies/atedut_2.testbed) ## ACL-1 Layer 3 terms @@ -47,36 +55,64 @@ Configure an IP ACL, then test changing the ACL configuration to ensure a make-b * Repeat the same test by moving ACLs to the DUT egress interface. -## Config Parameter coverage - -``` -acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/destination-address -acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/protocol -acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/source-address - -acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/destination-address -acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/protocol -acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/source-address - -acl/interfaces/interface/ingress-acl-sets/ingress-acl-set -acl/interfaces/interface/ingress-acl-sets/ingress-acl-set/acl-entries -acl/interfaces/interface/ingress-acl-sets/ingress-acl-set/acl-entries/acl-entry - -acl/interfaces/interface/egress-acl-sets/egress-acl-set -acl/interfaces/interface/egress-acl-sets/egress-acl-set/acl-entries -acl/interfaces/interface/egress-acl-sets/egress-acl-set/acl-entries/acl-entry -``` - -## Telemetry Parameter coverage - +### Sub Test 4 + +* Repeat sub tests 1 through 4 using a port where [/interfaces/interface/state/management](https://github.com/openconfig/public/blob/daf73c37e9062b458bb9eab645840e5d3835c74d/release/models/interfaces/openconfig-interfaces.yang#L719-L727) + is true and in the case of a modular form factor device (MFF), provided by a `CONTROLLER_CARD` component. + +## OpenConfig Path and RPC Coverage + +```yaml +paths: + # base acl paths + /acl/acl-sets/acl-set/config/name: + /acl/acl-sets/acl-set/config/type: + /acl/acl-sets/acl-set/acl-entries/acl-entry/config/sequence-id: + /acl/acl-sets/acl-set/acl-entries/acl-entry/config/description: + + # ipv4 address match + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/destination-address: + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/destination-address-prefix-set: + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/protocol: + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/source-address: + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/config/source-address-prefix-set: + + # icmpv4 match + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/icmpv4/config/type: + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv4/icmpv4/config/code: + + # ipv6 address match + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/destination-address: + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/destination-address-prefix-set: + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/protocol: + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/source-address: + /acl/acl-sets/acl-set/acl-entries/acl-entry/ipv6/config/source-address-prefix-set: + + # paths for tcp/udp port and port-range + /acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/source-port: + /acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/source-port-set: + /acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/destination-port: + /acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/destination-port-set: + + # paths needed to match IP fragments + /acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/detail-mode: + /acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/explicit-detail-match-mode: + /acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/explicit-tcp-flags: + /acl/acl-sets/acl-set/acl-entries/acl-entry/transport/config/builtin-detail: + + # state paths for management port and ACL counters + /interfaces/interface/state/management: + /acl/interfaces/interface/ingress-acl-sets/ingress-acl-set/acl-entries/acl-entry/state/matched-packets: + /acl/interfaces/interface/egress-acl-sets/egress-acl-set/acl-entries/acl-entry/state/matched-packets: + +rpcs: + gnmi: + gNMI.Set: + union_replace: true + replace: true + gNMI.Subscribe: + on_change: true ``` -acl/interfaces/interface/ingress-acl-sets/ingress-acl-set/acl-entries/acl-entry/state/matched-packets -acl/interfaces/interface/egress-acl-sets/egress-acl-set/acl-entries/acl-entry/state/matched-packets -``` - -## Protocol/RPC Parameter coverage - -None ## Minimum DUT platform requirement From 50a42c57d5a9e6a56a69e61ca896ade673ced0f3 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 26 Dec 2024 00:52:17 -0800 Subject: [PATCH 04/14] Update CODEOWNERS (#3668) * Update CODEOWNERS This may workaround the pr-approvals bug https://github.com/skymoore/required-approvals/issues/22 which only recognizes approvals from group members, not individuals * add isis owner group * Mapped feature area owner group --------- Co-authored-by: Pramod Maurya --- .github/CODEOWNERS | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 58d1e98ef3b..7036da0df5f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -11,27 +11,27 @@ * @openconfig/featureprofiles-approvers # /feature folders each have owners who are auto requested for review and may merge PR's -/feature/acl/ @alokmtri-g -/feature/aft/ @sudhinj @yunjie-lu -/feature/bgp/ @dplore +/feature/acl/ @openconfig/featureprofiles-owner-acl +/feature/aft/ @openconfig/featureprofiles-owner-aft +/feature/bgp/ @openconfig/featureprofiles-owner-bgp /feature/dhcp/ @alokmtri-g /feature/ethernet/ @ram-mac /feature/gribi/ @nflath @nachikethas @xw-g -/feature/interface/ @ram-mac -/feature/isis/ @rohit-rp -/feature/lldp/ @alokmtri-g -/feature/mpls/ @swetha-haridasula -/feature/mtu/ @swetha-haridasula -/feature/networkinstance/ @swetha-haridasula -/feature/platform/ @amrindrr -/feature/platform/transceiver @jianchen-g @yiwenhu-g @ahsaanyousaf @ejbrever @rezachit -/feature/qos @sezhang2 +/feature/interface/ @openconfig/featureprofiles-owner-interface +/feature/isis/ @openconfig/featureprofiles-owner-isis +/feature/lldp/ @openconfig/featureprofiles-owner-lldp +/feature/mpls/ @openconfig/featureprofiles-owner-mpls +/feature/mtu/ @openconfig/featureprofiles-owner-mtu +/feature/networkinstance/ @openconfig/featureprofiles-owner-networkinstance +/feature/platform/ @openconfig/featureprofiles-owner-platform +/feature/platform/transceiver @openconfig/featureprofiles-owner-platform-transceiver +/feature/qos @openconfig/featureprofiles-owner-qos /feature/routing_policy/ @swetha-haridasula /feature/sampling/ @sudhinj -/feature/security @mihirpitale-googler @morrowc -/feature/staticroute/ @swetha-haridasula +/feature/security @openconfig/featureprofiles-owner-security +/feature/staticroute/ @openconfig/featureprofiles-owner-staticroute /feature/stp/ @alokmtri-g -/feature/system @swetha-haridasula +/feature/system @openconfig/featureprofiles-owner-system /feature/vrrp @amrindrr # Common OTG utilities From 30cb59a835011e2a3dca8c069ebac5a90c12fd37 Mon Sep 17 00:00:00 2001 From: Matthew Starkey <157065700+mastarkey@users.noreply.github.com> Date: Thu, 26 Dec 2024 00:55:44 -0800 Subject: [PATCH 05/14] addressed issue where mtu 5000 and 9236 were failing as mtu was not getting set (#3602) Co-authored-by: Ram --- .../singleton/otg_tests/singleton_test/singleton_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/interface/singleton/otg_tests/singleton_test/singleton_test.go b/feature/interface/singleton/otg_tests/singleton_test/singleton_test.go index ffe41e929ff..c7f442bd77e 100644 --- a/feature/interface/singleton/otg_tests/singleton_test/singleton_test.go +++ b/feature/interface/singleton/otg_tests/singleton_test/singleton_test.go @@ -245,7 +245,7 @@ func (tc *testCase) verifyInterfaceDUT( fptest.LogQuery(t, dp.String(), dip.State(), di) di.PopulateDefaults() - if tc.mtu == 1500 { + if tc.mtu == 1500 || tc.mtu == 5000 || tc.mtu == 9236 { // MTU default values are still not populated. di.GetSubinterface(0).GetIpv4().Mtu = ygot.Uint16(tc.mtu) di.GetSubinterface(0).GetIpv6().Mtu = ygot.Uint32(uint32(tc.mtu)) From d329dcde6fa108f7431a5cc8440b05776b3c2e08 Mon Sep 17 00:00:00 2001 From: Xiao Wang <39514181+xw-g@users.noreply.github.com> Date: Thu, 26 Dec 2024 00:58:53 -0800 Subject: [PATCH 06/14] remove duplicated tests (#2789) Co-authored-by: Pramod Maurya --- feature/gribi/basic_encap/README.md | 389 ---------------------- feature/gribi/encap_decap_scale/README.md | 312 ----------------- 2 files changed, 701 deletions(-) delete mode 100644 feature/gribi/basic_encap/README.md delete mode 100644 feature/gribi/encap_decap_scale/README.md diff --git a/feature/gribi/basic_encap/README.md b/feature/gribi/basic_encap/README.md deleted file mode 100644 index fbe71d04030..00000000000 --- a/feature/gribi/basic_encap/README.md +++ /dev/null @@ -1,389 +0,0 @@ -# TE-16.1: basic encapsulation tests - -## Summary - -Test basic encapsulation behaviors. - -## Topology - -ATE port-1 <------> port-1 DUT -DUT port-2 <------> port-2 ATE -DUT port-3 <------> port-3 ATE -DUT port-4 <------> port-4 ATE -DUT port-5 <------> port-5 ATE - -## Baseline setup - -* Apply the following vrf selection policy to DUT port-1 - -``` -# DSCP value that will be matched to ENCAP_TE_VRF_A -* dscp_encap_a_1 = 10 -* dscp_encap_a_2 = 18 - -# DSCP value that will be matched to ENCAP_TE_VRF_B -* dscp_encap_b_1 = 20 -* dscp_encap_b_2 = 28 - -# DSCP value that will NOT be matched to any VRF for encapsulation. -* dscp_encap_no_match = 30 - -# Magic source IP addresses used in VRF selection policy -* ipv4_outer_src_111 = 198.51.100.111 -* ipv4_outer_src_222 = 198.51.100.222 - -# Magic destination MAC address -* magic_mac = 02:00:00:00:00:01` -``` - -``` -network-instances { - network-instance { - name: DEFAULT - policy-forwarding { - policies { - policy { - policy-id: "vrf_selection_policy_c" - rules { - rule { - sequence-id: 1 - ipv4 { - protocol: 4 - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_A" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 2 - ipv4 { - protocol: 41 - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_A" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 3 - ipv4 { - protocol: 4 - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_A" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 4 - ipv4 { - protocol: 41 - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_A" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 5 - ipv4 { - protocol: 4 - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_B" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 6 - ipv4 { - protocol: 41 - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_B" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 7 - ipv4 { - protocol: 4 - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_B" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 8 - ipv4 { - protocol: 41 - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_B" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 9 - ipv4 { - protocol: 4 - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "DEFAULT" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 10 - ipv4 { - protocol: 41 - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "DEFAULT" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 11 - ipv4 { - protocol: 4 - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "DEFAULT" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 12 - ipv4 { - protocol: 41 - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "DEFAULT" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 13 - ipv4 { - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - } - action { - network-instance: "ENCAP_TE_VRF_A" - } - } - rule { - sequence-id: 14 - ipv6 { - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - } - action { - network-instance: "ENCAP_TE_VRF_A" - } - } - rule { - sequence-id: 15 - ipv4 { - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - } - action { - network-instance: "ENCAP_TE_VRF_B" - } - } - rule { - sequence-id: 16 - ipv6 { - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - } - action { - network-instance: "ENCAP_TE_VRF_B" - } - } - rule { - sequence-id: 17 - action { - network-instance: "DEFAULT" - } - } - } - } - } - } - } -} -``` - -* Using gRIBI, install the following gRIBI AFTs, and validate the specified - behavior. - -``` -IPv6Entry {2015:aa8::/32 (ENCAP_TE_VRF_A)} -> NHG#10 (DEFAULT VRF) -IPv4Entry {138.0.11.0/24 (ENCAP_TE_VRF_A)} -> NHG#10 (DEFAULT VRF) -> { - {NH#201, DEFAULT VRF, weight:1}, - {NH#202, DEFAULT VRF, weight:3}, -} -NH#201 -> { - encapsulate_header: OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV4 - ip_in_ip { - dst_ip: "203.0.113.1" - src_ip: "ipv4_outer_src_111" - } - network_instance: "TE_VRF_111" -} -NH#202 -> { - encapsulate_header: OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV4 - ip_in_ip { - dst_ip: "203.10.113.2" - src_ip: "ipv4_outer_src_111" - } - network_instance: "TE_VRF_111" -} - -// 203.0.113.1 is the tunnel IP address. - -IPv4Entry {203.0.113.1/32 (TE_VRF_111)} -> NHG#1 (DEFAULT VRF) -> { - {NH#1, DEFAULT VRF, weight:1,ip_address=192.0.2.111}, - {NH#2, DEFAULT VRF, weight:3,ip_address=192.0.2.222}, -} -IPv4Entry {192.0.2.111/32 (DEFAULT VRF)} -> NHG#2 (DEFAULT VRF) -> { - {NH#10, DEFAULT VRF, weight:1,mac_address:magic_mac, interface-ref:dut-port-2-interface}, - {NH#11, DEFAULT VRF, weight:3,mac_address:magic_mac, interface-ref:dut-port-3-interface}, -} -IPv4Entry {192.0.2.222/32 (DEFAUlT VRF)} -> NHG#3 (DEFAULT VRF) -> { - {NH#100, DEFAULT VRF, weight:2,mac_address:magic_mac, interface-ref:dut-port-4-interface}, - {NH#101, DEFAULT VRF, weight:3,mac_address:magic_mac, interface-ref:dut-port-5-interface}, -} - -// 203.10.113.2 is the tunnel IP address. Note that the NHG#1 is shared by both tunnels. - -IPv4Entry {203.10.113.2/32 (TE_VRF_111)} -> NHG#1 (DEFAULT VRF) -> -``` - -## Procedure - -#### Test-1, IPv4 traffic WCMP Encap - -Send packets to DUT port-1. The outer v4 header has the destination addresses -138.0.11.8. Validate that: - -* All egress packets (100%) are IPinIP (4in4) encapped. -* Packets are encapped to the tunnel IPs in the specified ratio. Specifically, - 25% of the egress packets should have the destination address 203.0.113.1, - and 75% of the egress packets should have the destination address - 203.10.113.2. -* The encapped/tunneled packets should be distributed hierarchically per the - weight. -* The DSCP value is copied from the inner header to the outer header. -* The TTL value is copied from the inner header to the outer header. - -#### Test-2, IPv6 traffic WCMP Encap - -Send packets to DUT port-1. The outer v6 header has the destination addresses -2015:aa8::1. Validate that: - -* All egress packets (100%) are 6in4 encapped. -* Packets are encapped to the tunnel IPs in the specified ratio. Specifically, - 25% of the egress packets should have the destination address 203.0.113.1, - and 75% of the egress packets should have the destination address - 203.10.113.2. -* The encapped/tunneled packets should be distributed hierarchically per the - weight. -* The DSCP value is copied from the inner header to the outer header. -* The TTL value is copied from the inner header to the outer header. - -#### Test-3, IPinIP Traffic Encap - -Tests support for encap of IPinIP IPv4 (IP protocol 4) traffic. Specifically, in -this test we’ll focus on tunnel traffic identification using -`ipv4_outer_src_111``and`ipv4_outer_src_222``. - -1. Send 4in4 (IP protocol 4) and 6in4 (IP protocol 41) packets to DUT port-1. - * The outer v4 header has the destination address 138.0.11.8. - * The outer v4 header has the source address that’s not - `ipv4_outer_src_111``or`ipv4_outer_src_222``. For example, we can use - 198.100.200.123. - * The outer v4 header should have DSCP value `dscp_encap_a_1`. -2. Validate that: - * All egress packets (100%) are IPinIP (4in4) encapped. - * Packets are encapped to the tunnel IPs in the specified ratio. - Specifically, 25% of the egress packets should have the destination - address 203.0.113.1, and 75% of the egress packets should have the - destination address 203.10.113.2. - * The encapped/tunneled packets should be distributed hierarchically per - the weight. - * The DSCP value is copied from the inner header to the outer header. - * The TTL value is copied from the inner header to the outer header. - -## Config Parameter Coverage - -* network-instances/network-instance/name -* network-instances/network-instance/policy-forwarding/policies/policy/policy-id -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/sequence-id -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/protocol -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/dscp-set -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/source-address -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/protocol -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/dscp-set -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/source-address -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/decap-network-instance -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/post-network-instance -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/decap-fallback-network-instance - -## Telemetry Parameter Coverage - -* network-instances/network-instance/name -* network-instances/network-instance/policy-forwarding/policies/policy/policy-id -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/sequence-id -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/protocol -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/dscp-set -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/source-address -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/protocol -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/dscp-set -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/source-address -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/decap-network-instance -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/post-network-instance -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/decap-fallback-network-instance - -## Protocol/RPC Parameter Coverage - -* gRIBI: - * Modify - * ModifyRequest - -## Required DUT platform - -vRX \ No newline at end of file diff --git a/feature/gribi/encap_decap_scale/README.md b/feature/gribi/encap_decap_scale/README.md deleted file mode 100644 index c233cc1d727..00000000000 --- a/feature/gribi/encap_decap_scale/README.md +++ /dev/null @@ -1,312 +0,0 @@ -# TE-14.2 encap and decap scale - -NOTE: this test depends on https://github.com/openconfig/featureprofiles/pull/1950 - -## Summary - -Introduce encapsulation and decapsulation scale test on top of TE-14.1 - -## Topology - -Use the same topology as TE-14.1 - -## Baseline - -1. Build the same scale setup as TE-14.1. -2. Apply `vrf_selection_policy_w` to DUT port-1. - -vrf_selection_policy_w -``` -network-instances { - network-instance { - name: DEFAULT - policy-forwarding { - policies { - policy { - policy-id: "vrf_selection_policy_w" - rules { - rule { - sequence-id: 1 - ipv4 { - protocol: 4 - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_A" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 2 - ipv4 { - protocol: 41 - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_A" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 3 - ipv4 { - protocol: 4 - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_A" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 4 - ipv4 { - protocol: 41 - dscp-set: [dscp_encap_a_1, dscp_encap_a_2] - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_A" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 5 - ipv4 { - protocol: 4 - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_B" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 6 - ipv4 { - protocol: 41 - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_B" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 7 - ipv4 { - protocol: 4 - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_B" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 8 - ipv4 { - protocol: 41 - dscp-set: [dscp_encap_b_1, dscp_encap_b_2] - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "ENCAP_TE_VRF_B" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 9 - ipv4 { - protocol: 4 - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "DEFAULT" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 10 - ipv4 { - protocol: 41 - source-address: "ipv4_outer_src_222" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "DEFAULT" - decap-fallback-network-instance: "TE_VRF_222" - } - } - rule { - sequence-id: 11 - ipv4 { - protocol: 4 - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "DEFAULT" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 12 - ipv4 { - protocol: 41 - source-address: "ipv4_outer_src_111" - } - action { - decap-network-instance: "DECAP_TE_VRF" - post-network-instance: "DEFAULT" - decap-fallback-network-instance: "TE_VRF_111" - } - } - rule { - sequence-id: 13 - action { - network-instance: "DEFAULT" - } - } - } - } - } - } - } -} -``` - -## Procedure - -1. via gRIBI installs the following AFT entries: - * Add 4 VRFs for encapsulations: `ENCAP_TE_VRF_A`, `ENCAP_TE_VRF_B`, `ENCAP_TE_VRF_C` and `ENCAP_TE_VRF_D`. - * Inject 5000 IPv4Entry-ies and 5000 IPv6Entry-ies to each of the 4 encap VRFs. - * The entries in the encap VRFs should point to NextHopGroups in the `DEFAULT` VRF. Inject 200 such NextHopGroups in the DEFAULT VRF. - * Each NextHopGroup should have 8 NextHops where each NextHop points to a tunnel in the `TE_VRF_111`. In addition, the weights specified in the NextHopGroup should be co-prime and the sum of the weights should be 16. - * Add 1 VRF for decapsulation, `DECAP_TE_VRF`. - * Inject `48` entries in the DECAP_TE_VRF where the entries have a mix of prefix lengths /22, /24, /26, and /28. -2. Send the following packets to DUT-1 - - ``` - * inner_src: `ipv4_inner_src` - * inner_dst: `ipv4_inner_encap_match` - * dscp: `dscp_encap_a` - * outter_src: `ipv4_outter_src_222` - * outter_dst: `ipv4_outter_decap_match` - * dscp: `dscp_encap_a` - * proto: `4` - - * inner_src: `ipv6_inner_src` - * inner_dst: `ipv6_inner_encap_match` - * dscp: `dscp_encap_a` - * outter_src: `ipv4_outter_src_111` - * outter_dst: `ipv4_outter_decap_match` - * dscp: `dscp_encap_a` - * proto: `41` - - * inner_src: `ipv4_inner_src` - * inner_dst: `ipv4_inner_encap_match` - * dscp: `dscp_encap_b` - * outter_src: `ipv4_outter_src_222` - * outter_dst: `ipv4_outter_decap_match` - * dscp: `dscp_encap_b` - * proto: `4` - - * inner_src: `ipv6_inner_src` - * inner_dst: `ipv6_inner_encap_match` - * dscp: `dscp_encap_b` - * outter_src: `ipv4_outter_src_111` - * outter_dst: `ipv4_outter_decap_match` - * dscp: `dscp_encap_b` - * proto: `41` - - * inner_src: `ipv4_inner_src` - * inner_dst: `ipv4_inner_encap_match` - * dscp: `dscp_encap_c` - * outter_src: `ipv4_outter_src_222` - * outter_dst: `ipv4_outter_decap_match` - * dscp: `dscp_encap_c` - * proto: `4` - - * inner_src: `ipv6_inner_src` - * inner_dst: `ipv6_inner_encap_match` - * dscp: `dscp_encap_c` - * outter_src: `ipv4_outter_src_111` - * outter_dst: `ipv4_outter_decap_match` - * dscp: `dscp_encap_c` - * proto: `41` - - * inner_src: `ipv4_inner_src` - * inner_dst: `ipv4_inner_encap_match` - * dscp: `dscp_encap_d` - * outter_src: `ipv4_outter_src_222` - * outter_dst: `ipv4_outter_decap_match` - * dscp: `dscp_encap_d` - * proto: `4` - - * inner_src: `ipv6_inner_src` - * inner_dst: `ipv6_inner_encap_match` - * dscp: `dscp_encap_d` - * outter_src: `ipv4_outter_src_111` - * outter_dst: `ipv4_outter_decap_match` - * dscp: `dscp_encap_d` - * proto: `41` - ``` - -3. Send traffic to DUT-1, covering all the installed v4 and v6 entries in the decap and encap VRFs. Validate that all traffic are all decapped per the DECAP VRFs and then encapsulated per the ENCAP VRFs and received as encapsulated packet by ATE. -4. Flush the `DECAP_TE_VRF`, install 5000 entries with fixed prefix length of /32, and repeat the same traffic validation. - -## Config Parameter Coverage - -* network-instances/network-instance/name -* network-instances/network-instance/policy-forwarding/policies/policy/policy-id -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/sequence-id -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/protocol -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/dscp-set -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/source-address -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/protocol -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/dscp-set -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/source-address -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/decap-network-instance -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/post-network-instance -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/decap-fallback-network-instance - -## Telemetry Parameter Coverage - -* network-instances/network-instance/name -* network-instances/network-instance/policy-forwarding/policies/policy/policy-id -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/sequence-id -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/protocol -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/dscp-set -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv4/source-address -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/protocol -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/dscp-set -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/ipv6/source-address -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/decap-network-instance -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/post-network-instance -* network-instances/network-instance/policy-forwarding/policies/policy/rules/rule/action/decap-fallback-network-instance - -## Protocol/RPC Parameter Coverage - -* gRIBI: - * Modify - * ModifyRequest - -## Required DUT platform - -vRX \ No newline at end of file From 77670940d945f387c75ac5f608a5a7fd338acc62 Mon Sep 17 00:00:00 2001 From: mananpat-cisco Date: Thu, 26 Dec 2024 04:00:31 -0500 Subject: [PATCH 07/14] added cisco deviation (#3597) --- .../otg_tests/disable_ipv6_nd_ra_test/metadata.textproto | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/feature/interface/ip/ipv6_ND/otg_tests/disable_ipv6_nd_ra_test/metadata.textproto b/feature/interface/ip/ipv6_ND/otg_tests/disable_ipv6_nd_ra_test/metadata.textproto index 7e07c4a34fd..9855f84b507 100644 --- a/feature/interface/ip/ipv6_ND/otg_tests/disable_ipv6_nd_ra_test/metadata.textproto +++ b/feature/interface/ip/ipv6_ND/otg_tests/disable_ipv6_nd_ra_test/metadata.textproto @@ -30,4 +30,12 @@ platform_exceptions: { explicit_interface_in_default_vrf: true interface_enabled: true } +} +platform_exceptions: { + platform: { + vendor: CISCO + } + deviations: { + ipv6_router_advertisement_interval_unsupported: true + } } \ No newline at end of file From 646b7b3afc6a02db50247537a64e9eb93d44a69d Mon Sep 17 00:00:00 2001 From: divyarema <134387379+divyarema@users.noreply.github.com> Date: Thu, 26 Dec 2024 14:31:15 +0530 Subject: [PATCH 08/14] gNMI-1.27-updating deviation,isis_level_enabled (#2815) * updating deviation,isis_level_enabled * Update metadata.textproto formatting fix --------- Co-authored-by: Pramod Maurya --- .../tests/gnmi_sample_mode_test/metadata.textproto | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/feature/gnmi/subscribe/tests/gnmi_sample_mode_test/metadata.textproto b/feature/gnmi/subscribe/tests/gnmi_sample_mode_test/metadata.textproto index 9f4c6a67ba7..2a4712692c2 100644 --- a/feature/gnmi/subscribe/tests/gnmi_sample_mode_test/metadata.textproto +++ b/feature/gnmi/subscribe/tests/gnmi_sample_mode_test/metadata.textproto @@ -13,11 +13,19 @@ platform_exceptions: { omit_l2_mtu: true missing_value_for_defaults: true interface_enabled: true - default_network_instance: "default" + default_network_instance: "default" isis_instance_enabled_required: true isis_interface_afi_unsupported: true } } +platform_exceptions: { + platform: { + vendor: JUNIPER + } + deviations: { + isis_level_enabled: true + } +} platform_exceptions: { platform: { vendor: NOKIA From ac12783c215126f55dcdb282472a7eb9b3b4dbdf Mon Sep 17 00:00:00 2001 From: abhijit-dhar <67135817+abhijit-dhar@users.noreply.github.com> Date: Thu, 26 Dec 2024 14:33:58 +0530 Subject: [PATCH 09/14] adding correct deviation (#2035) --- feature/gribi/otg_tests/ipv4_entry_test/metadata.textproto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/gribi/otg_tests/ipv4_entry_test/metadata.textproto b/feature/gribi/otg_tests/ipv4_entry_test/metadata.textproto index b3036f4968f..1fa1844f144 100644 --- a/feature/gribi/otg_tests/ipv4_entry_test/metadata.textproto +++ b/feature/gribi/otg_tests/ipv4_entry_test/metadata.textproto @@ -11,7 +11,7 @@ platform_exceptions: { } deviations: { ipv4_missing_enabled: true - gribi_mac_override_with_static_arp: true + gribi_mac_override_static_arp_static_route: true } } platform_exceptions: { From f7a63306b491a6bfaeda7838dabc87752ab20bce Mon Sep 17 00:00:00 2001 From: Priya Ranjan Nanda <151918045+priyaranjannanda@users.noreply.github.com> Date: Thu, 26 Dec 2024 15:13:28 +0530 Subject: [PATCH 10/14] Changes to await for interface up check after replace config (#3456) Co-authored-by: Ram --- .../otg_tests/ipv6_link_local_test/ipv6_link_local_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/feature/interface/ip/ipv6_link_local/otg_tests/ipv6_link_local_test/ipv6_link_local_test.go b/feature/interface/ip/ipv6_link_local/otg_tests/ipv6_link_local_test/ipv6_link_local_test.go index b77fbcc8d3c..facd36954b2 100644 --- a/feature/interface/ip/ipv6_link_local/otg_tests/ipv6_link_local_test/ipv6_link_local_test.go +++ b/feature/interface/ip/ipv6_link_local/otg_tests/ipv6_link_local_test/ipv6_link_local_test.go @@ -130,6 +130,7 @@ func TestIPv6LinkLocal(t *testing.T) { gnmi.Replace(t, dut, gnmi.OC().Interface(p1.Name()).Enabled().Config(), false) gnmi.Await(t, dut, gnmi.OC().Interface(p1.Name()).Enabled().State(), 30*time.Second, false) gnmi.Replace(t, dut, gnmi.OC().Interface(p1.Name()).Enabled().Config(), true) + gnmi.Await(t, dut, gnmi.OC().Interface(p1.Name()).Enabled().State(), 30*time.Second, true) otgutils.WaitForARP(t, ate.OTG(), top, "IPv6") t.Run("Interface Telemetry", func(t *testing.T) { verifyInterfaceTelemetry(t, dut) @@ -208,6 +209,8 @@ func configureDUTLinkLocalInterface(t *testing.T, dut *ondatra.DUTDevice) { fptest.AssignToNetworkInstance(t, dut, p1.Name(), deviations.DefaultNetworkInstance(dut), 0) fptest.AssignToNetworkInstance(t, dut, p2.Name(), deviations.DefaultNetworkInstance(dut), 0) } + gnmi.Await(t, dut, gnmi.OC().Interface(p1.Name()).OperStatus().State(), time.Minute, oc.Interface_OperStatus_UP) + gnmi.Await(t, dut, gnmi.OC().Interface(p2.Name()).OperStatus().State(), time.Minute, oc.Interface_OperStatus_UP) } func configureOTGInterface(t *testing.T, ate *ondatra.ATEDevice, top gosnappi.Config) { From adfbd1700b630e9eede2c3bb50c843752b226837 Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Thu, 26 Dec 2024 02:37:52 -0800 Subject: [PATCH 11/14] adding missing path (#2534) * adding missing path As per PROCEDURE description below path is needed: `/routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-as-path-prepend/config/asn ` This patch is adding it explicitly in "Config Parameter Coverage" * Added openconfig path and RPC coverage block in readme * Update README.md * Update README.md --------- Co-authored-by: Pramod Maurya --- .../route_installation_test/README.md | 48 ++++++++++--------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/feature/bgp/policybase/otg_tests/route_installation_test/README.md b/feature/bgp/policybase/otg_tests/route_installation_test/README.md index 537844a7399..595f70498ed 100644 --- a/feature/bgp/policybase/otg_tests/route_installation_test/README.md +++ b/feature/bgp/policybase/otg_tests/route_installation_test/README.md @@ -24,25 +24,29 @@ Base BGP policy configuration and route installation. * Validate that traffic is not forwarded to withdrawn routes between ATE port-1 and ATE port-2. -## Config Parameter Coverage - -* /routing-policy/policy-definitions/policy-definition/config/name -* /routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-local-pref -* /routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-med -* /routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-as-path-prepend/config/repeat-n - -## Telemetry Parameter Coverage - -For prefixes: - -* /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor -* /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group - -Paths: - -* afi-safis/afi-safi/apply-policy/state/export-policy -* afi-safis/afi-safi/apply-policy/state/import-policy -* afi-safis/afi-safi/state/prefixes/installed -* afi-safis/afi-safi/state/prefixes/received -* afi-safis/afi-safi/state/prefixes/received-pre-policy -* afi-safis/afi-safi/state/prefixes/sent +## OpenConfig Path and RPC Coverage +```yaml +paths: + ## Config Parameter Coverage + /routing-policy/policy-definitions/policy-definition/config/name: + /routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-local-pref: + /routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/config/set-med: + /routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-as-path-prepend/config/repeat-n: + /routing-policy/policy-definitions/policy-definition/statements/statement/actions/bgp-actions/set-as-path-prepend/config/asn: + + ## Telemetry Parameter Coverage + /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/neighbor-address: + /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/state/peer-group-name: + /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/apply-policy/state/export-policy: + /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/apply-policy/state/import-policy: + /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state/prefixes/installed: + /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state/prefixes/received: + /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state/prefixes/received-pre-policy: + /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state/prefixes/sent: + +rpcs: + gnmi: + gNMI.Get: + gNMI.Subscribe: + +``` From dd9f5eacaf5a8c49f42cbf6af18fb376131da6af Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Thu, 26 Dec 2024 03:10:44 -0800 Subject: [PATCH 12/14] fixing testregistry between RT-1.19 and RT-21.24 (#2430) * fixing testregistry between RT-1.19 and RT-21.24 * Update testregistry.textproto --------- Co-authored-by: Pramod Maurya --- testregistry.textproto | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/testregistry.textproto b/testregistry.textproto index 412f0a93b7d..a70dfc099b8 100644 --- a/testregistry.textproto +++ b/testregistry.textproto @@ -539,10 +539,16 @@ test: { } test: { id: "RT-1.19" - description: "BGP 2-Byte and 4-Byte ASN support" + description: "RT-1.19: BGP 2-Byte and 4-Byte ASN support" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/bgp/otg_tests/bgp_2byte_4byte_asn/README.md" exec: " " } +test: { + id: "RT-1.2" + description: "BGP Policy & Route Installation" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/bgp/policybase/otg_tests/route_installation_test/README.md" + exec: " " +} test: { id: "RT-1.21" description: "BGP TCP MSS and PMTUD" From dc08c6f7100ea4cc6a6fa14f8708d4d2f7d0de16 Mon Sep 17 00:00:00 2001 From: Tushar Rathod <111466464+trathod1@users.noreply.github.com> Date: Thu, 26 Dec 2024 07:22:01 -0500 Subject: [PATCH 13/14] GNMI-1.18: Skipping check for empty integrated-circuit and removing deviations (#3560) * GNMI-1.18: Skipping check for empty integrated-circuit and removing deviations 1. Removing all deviations for Nokia 2. Skipping checks for empty integrated-circuit/switch-chip "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." * updated the commit to use findActiveComponenet function * Restoring the check for removable component --------- Co-authored-by: krisb --- .../metadata.textproto | 12 ------------ .../sampled_backplane_capacity_counters_test.go | 12 +++--------- 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/feature/platform/fabric/otg_tests/sampled_backplane_capacity_counters_test/metadata.textproto b/feature/platform/fabric/otg_tests/sampled_backplane_capacity_counters_test/metadata.textproto index 099686c7f73..6dad9d53b5d 100644 --- a/feature/platform/fabric/otg_tests/sampled_backplane_capacity_counters_test/metadata.textproto +++ b/feature/platform/fabric/otg_tests/sampled_backplane_capacity_counters_test/metadata.textproto @@ -13,18 +13,6 @@ platform_exceptions: { ipv4_missing_enabled: true } } -platform_exceptions: { - platform: { - vendor: NOKIA - } - deviations: { - interface_enabled: true - explicit_port_speed: true - explicit_interface_in_default_vrf: true - qos_queue_requires_id: true - missing_value_for_defaults: true - } -} platform_exceptions: { platform: { vendor: ARISTA diff --git a/feature/platform/fabric/otg_tests/sampled_backplane_capacity_counters_test/sampled_backplane_capacity_counters_test.go b/feature/platform/fabric/otg_tests/sampled_backplane_capacity_counters_test/sampled_backplane_capacity_counters_test.go index 651bb61d582..0fe6d2973ad 100644 --- a/feature/platform/fabric/otg_tests/sampled_backplane_capacity_counters_test/sampled_backplane_capacity_counters_test.go +++ b/feature/platform/fabric/otg_tests/sampled_backplane_capacity_counters_test/sampled_backplane_capacity_counters_test.go @@ -53,7 +53,7 @@ func TestMain(m *testing.M) { func TestSampledBackplaneCapacityCounters(t *testing.T) { dut := ondatra.DUT(t, "dut") - ics := components.FindComponentsByType(t, dut, oc.PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT) + ics := components.FindActiveComponentsByType(t, dut, oc.PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT) if len(ics) == 0 { t.Fatalf("Get IntegratedCircuit card list for %q: got 0, want > 0", dut.Model()) } @@ -65,7 +65,6 @@ func TestSampledBackplaneCapacityCounters(t *testing.T) { if !isCompNameExpected(t, ic, dut.Vendor()) { continue } - t.Run(fmt.Sprintf("Backplane:%s", ic), func(t *testing.T) { if deviations.BackplaneFacingCapacityUnsupported(dut) { t.Skipf("Skipping check for BackplanceFacingCapacity due to deviation BackplaneFacingCapacityUnsupported") @@ -110,20 +109,16 @@ func gnmiOptsForOnChange(t *testing.T, dut *ondatra.DUTDevice) *gnmi.Opts { func TestOnChangeBackplaneCapacityCounters(t *testing.T) { dut := ondatra.DUT(t, "dut") - ics := components.FindComponentsByType(t, dut, oc.PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT) + ics := components.FindActiveComponentsByType(t, dut, oc.PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT) if len(ics) == 0 { t.Fatalf("Get IntegratedCircuit card list for %q: got 0, want > 0", dut.Model()) } t.Logf("IntegratedCircuit components count: %d", len(ics)) - fabrics := components.FindComponentsByType(t, dut, oc.PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FABRIC) + fabrics := components.FindActiveComponentsByType(t, dut, oc.PlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FABRIC) t.Logf("fabrics are %v", fabrics) removable_fabrics := make([]string, 0) for _, f := range fabrics { - compMtyVal, compMtyPresent := gnmi.Lookup(t, dut, gnmi.OC().Component(f).Empty().State()).Val() - if compMtyPresent && compMtyVal { - continue - } if gnmi.Get(t, dut, gnmi.OC().Component(f).Removable().State()) { removable_fabrics = append(removable_fabrics, f) } @@ -226,7 +221,6 @@ func getBackplaneCapacityCounters(t *testing.T, dut *ondatra.DUTDevice, ics []st if !isCompNameExpected(t, ic, dut.Vendor()) { continue } - t.Run(fmt.Sprintf("Backplane:%s", ic), func(t *testing.T) { if deviations.BackplaneFacingCapacityUnsupported(dut) { t.Skipf("Skipping check for BackplanceFacingCapacity due to deviation BackplaneFacingCapacityUnsupported") From d63d627e48c1586ea2dc613500b8ecbc18dc2e8a Mon Sep 17 00:00:00 2001 From: Karim Jahed Date: Thu, 26 Dec 2024 18:52:17 -0500 Subject: [PATCH 14/14] fix file path (#3551) Co-authored-by: Swetha-haridasula --- .../tests/factory_reset_test/factory_reset_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/gnoi/factory_reset/tests/factory_reset_test/factory_reset_test.go b/feature/gnoi/factory_reset/tests/factory_reset_test/factory_reset_test.go index 4cc0240c1af..c26a148955b 100644 --- a/feature/gnoi/factory_reset/tests/factory_reset_test/factory_reset_test.go +++ b/feature/gnoi/factory_reset/tests/factory_reset_test/factory_reset_test.go @@ -36,7 +36,7 @@ import ( var ( remoteFilePath = map[ondatra.Vendor]string{ - ondatra.CISCO: "/misc/disk1/", + ondatra.CISCO: "harddisk:/", ondatra.NOKIA: "/tmp/", ondatra.JUNIPER: "/var/tmp/", ondatra.ARISTA: "/mnt/flash/",