Skip to content
Snippets Groups Projects

Process response overhaul

Merged Ghost User requested to merge process-response-overhaul into develop
1 file
+ 33
31
Compare changes
  • Side-by-side
  • Inline
+ 33
31
@@ -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{
Loading