Skip to content

Commit ed5f61e

Browse files
committed
Add bulk API support for remove operation for next-hop-group and next-hop-group-members
1 parent 8e7fe35 commit ed5f61e

1 file changed

Lines changed: 27 additions & 1 deletion

File tree

dataplane/saiserver/routing.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ func (nhg *nextHopGroup) updateNextHopGroupMember(ctx context.Context, nhgid, mi
288288
func (nhg *nextHopGroup) RemoveNextHopGroup(_ context.Context, req *saipb.RemoveNextHopGroupRequest) (*saipb.RemoveNextHopGroupResponse, error) {
289289
oid := req.GetOid()
290290
if _, ok := nhg.groups[oid]; !ok {
291-
return nil, status.Errorf(codes.FailedPrecondition, "group %d does not exist", oid)
291+
return nil, status.Errorf(codes.NotFound, "group %d does not exist", oid)
292292
}
293293
delete(nhg.groups, oid)
294294

@@ -306,6 +306,19 @@ func (nhg *nextHopGroup) RemoveNextHopGroup(_ context.Context, req *saipb.Remove
306306
return &saipb.RemoveNextHopGroupResponse{}, nil
307307
}
308308

309+
// RemoveNextHopGroups removes multiple next hop groups specified in the OID.
310+
func (nhg *nextHopGroup) RemoveNextHopGroups(ctx context.Context, req *saipb.RemoveNextHopGroupsRequest) (*saipb.RemoveNextHopGroupsResponse, error) {
311+
resp := &saipb.RemoveNextHopGroupsResponse{}
312+
for _, req := range req.GetReqs() {
313+
res, err := attrmgr.InvokeAndSave(ctx, nhg.mgr, nhg.RemoveNextHopGroup, req)
314+
if err != nil {
315+
return nil, err
316+
}
317+
resp.Resps = append(resp.Resps, res)
318+
}
319+
return resp, nil
320+
}
321+
309322
// CreateNextHopGroupMember adds a next hop to a next hop group.
310323
func (nhg *nextHopGroup) CreateNextHopGroupMember(ctx context.Context, req *saipb.CreateNextHopGroupMemberRequest) (*saipb.CreateNextHopGroupMemberResponse, error) {
311324
nhgid := req.GetNextHopGroupId()
@@ -357,6 +370,19 @@ func (nhg *nextHopGroup) RemoveNextHopGroupMember(ctx context.Context, req *saip
357370
return &saipb.RemoveNextHopGroupMemberResponse{}, nil
358371
}
359372

373+
// RemoveNextHopGroupMembers removes multiple next hop group members specified in the OID.
374+
func (nhg *nextHopGroup) RemoveNextHopGroupMembers(ctx context.Context, r *saipb.RemoveNextHopGroupMembersRequest) (*saipb.RemoveNextHopGroupMembersResponse, error) {
375+
resp := &saipb.RemoveNextHopGroupMembersResponse{}
376+
for _, req := range r.GetReqs() {
377+
res, err := attrmgr.InvokeAndSave(ctx, nhg.mgr, nhg.RemoveNextHopGroupMember, req)
378+
if err != nil {
379+
return nil, err
380+
}
381+
resp.Resps = append(resp.Resps, res)
382+
}
383+
return resp, nil
384+
}
385+
360386
type nextHop struct {
361387
saipb.UnimplementedNextHopServer
362388
mgr *attrmgr.AttrMgr

0 commit comments

Comments
 (0)