diff --git a/northbound/server/pnd.go b/northbound/server/pnd.go index 00a334b8808a6877ab4129bfdb865934edde9f4f..2b8a3b3f8963ec432a2edaeddc3b84f486984d85 100644 --- a/northbound/server/pnd.go +++ b/northbound/server/pnd.go @@ -2,6 +2,8 @@ package server import ( "context" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "reflect" "time" @@ -20,7 +22,7 @@ type pnd struct { func (p pnd) Get(ctx context.Context, request *ppb.GetRequest) (*ppb.GetResponse, error) { pid, err := uuid.Parse(request.Pid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } switch req := request.Request.(type) { case *ppb.GetRequest_Pnd: @@ -32,26 +34,26 @@ func (p pnd) Get(ctx context.Context, request *ppb.GetRequest) (*ppb.GetResponse case *ppb.GetRequest_Change: return handleGetChange(pid, req) default: - return nil, errors.ErrOperationNotSupported{Op: reflect.TypeOf(request.Request)} + return nil, status.Errorf(codes.Aborted, "%v", errors.ErrOperationNotSupported{Op: reflect.TypeOf(request.Request)}) } } func handleGetPnd(pid uuid.UUID) (*ppb.GetResponse, error) { pnd, err := pndc.Get(pid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } onds, err := fillOnds(pnd, true) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } sbis, err := fillSbis(pnd, true) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } changes, err := fillChanges(pnd, true) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } return &ppb.GetResponse{ @@ -70,11 +72,11 @@ func handleGetPnd(pid uuid.UUID) (*ppb.GetResponse, error) { func handleGetSbi(pid uuid.UUID, req *ppb.GetRequest_Sbi) (*ppb.GetResponse, error) { pnd, err := pndc.Get(pid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } sbis, err := fillSbis(pnd, req.Sbi.GetAll(), req.Sbi.Sid...) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } return &ppb.GetResponse{ Timestamp: time.Now().UnixNano(), @@ -87,7 +89,7 @@ func stringToUUID(sid []string) ([]uuid.UUID, error) { for i, id := range sid { parsed, err := uuid.Parse(id) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } UUIDs[i] = parsed } @@ -97,11 +99,11 @@ func stringToUUID(sid []string) ([]uuid.UUID, error) { func handleGetOnd(pid uuid.UUID, req *ppb.GetRequest_Ond) (*ppb.GetResponse, error) { pnd, err := pndc.Get(pid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } onds, err := fillOnds(pnd, req.Ond.All, req.Ond.Did...) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } return &ppb.GetResponse{ Timestamp: time.Now().UnixNano(), @@ -112,11 +114,11 @@ func handleGetOnd(pid uuid.UUID, req *ppb.GetRequest_Ond) (*ppb.GetResponse, err func handleGetChange(pid uuid.UUID, req *ppb.GetRequest_Change) (*ppb.GetResponse, error) { pnd, err := pndc.Get(pid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } changes, err := fillChanges(pnd, req.Change.All, req.Change.Cuid...) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } return &ppb.GetResponse{ Timestamp: time.Now().UnixNano(), @@ -141,14 +143,14 @@ func fillSbis(pnd nucleus.PrincipalNetworkDomain, all bool, sid ...string) ([]*s } sbiList, err = stringToUUID(sid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } } sbis := make([]*spb.SouthboundInterface, len(sbiList)) for i, id := range sbiList { sbi, err := sbiStore.Get(id) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } sbis[i] = &spb.SouthboundInterface{ Id: id.String(), @@ -174,7 +176,7 @@ func fillOnds(pnd nucleus.PrincipalNetworkDomain, all bool, did ...string) ([]*p } ondList, err = stringToUUID(did) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } } @@ -182,12 +184,12 @@ func fillOnds(pnd nucleus.PrincipalNetworkDomain, all bool, did ...string) ([]*p for i, id := range ondList { d, err := pnd.GetDevice(id.String()) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } cfg := ygot.GNMINotificationsConfig{} dev, err := ygot.TogNMINotifications(d.(nucleus.Device).Model(), time.Now().UnixNano(), cfg) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } onds[i] = &ppb.OrchestratedNetworkingDevice{ Id: id.String(), @@ -215,7 +217,7 @@ func fillChanges(pnd nucleus.PrincipalNetworkDomain, all bool, cuid ...string) ( } changeList, err = stringToUUID(cuid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } } @@ -223,7 +225,7 @@ func fillChanges(pnd nucleus.PrincipalNetworkDomain, all bool, cuid ...string) ( for i, ch := range changeList { c, err := pnd.GetChange(ch) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } change, ok := c.(*nucleus.Change) if !ok { @@ -245,25 +247,25 @@ func fillChanges(pnd nucleus.PrincipalNetworkDomain, all bool, cuid ...string) ( func (p pnd) Set(ctx context.Context, request *ppb.SetRequest) (*ppb.SetResponse, error) { pid, err := uuid.Parse(request.Pid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } pnd, err := pndc.Get(pid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } ondResp, err := handleSetOnd(pnd, request.Ond) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } changeResp, err := handleSetChange(pnd, request.Change) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } changeRequestResp, err := handleChangeRequest(pnd, request.ChangeRequest) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } return &ppb.SetResponse{ Timestamp: time.Now().UnixNano(), @@ -280,7 +282,7 @@ func handleSetOnd(pnd nucleus.PrincipalNetworkDomain, req []*ppb.SetOnd) (*ppb.S for _, r := range req { sid, err := uuid.Parse(r.Sbi.Id) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } if err := pnd.AddDevice(r.DeviceName, r.TransportOption, sid); err != nil { return nil, err @@ -303,16 +305,16 @@ func handleSetChange(pnd nucleus.PrincipalNetworkDomain, req []*ppb.SetChange) ( for _, r := range req { cuid, err := uuid.Parse(r.Cuid) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } switch r.Op { case ppb.SetChange_COMMIT: if err := pnd.Commit(cuid); err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } case ppb.SetChange_CONFIRM: if err := pnd.Confirm(cuid); err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } default: return nil, &errors.ErrInvalidParameters{ @@ -331,10 +333,10 @@ func handleChangeRequest(pnd nucleus.PrincipalNetworkDomain, req []*ppb.ChangeRe for _, r := range req { did, err := uuid.Parse(r.Id) if err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } if err := pnd.ChangeOND(did, r.ApiOp, r.Path, r.Value); err != nil { - return nil, err + return nil, status.Errorf(codes.Aborted, "%v", err) } } return &ppb.SetResponse{