From 69f7084fd8a5e56eea71abdcc6f059da53bfbf2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Sterba?= <andre.sterba@stud.h-da.de> Date: Mon, 4 Jul 2022 10:58:06 +0200 Subject: [PATCH] Add get role by ID --- cli/cmd/userGet.go | 8 +++++++- controller/api/role.go | 4 +++- controller/api/role_test.go | 3 ++- controller/northbound/server/role.go | 8 +++++++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/cli/cmd/userGet.go b/cli/cmd/userGet.go index b5f1a0bd9..1a487a3a7 100644 --- a/cli/cmd/userGet.go +++ b/cli/cmd/userGet.go @@ -33,6 +33,7 @@ package cmd import ( "code.fbi.h-da.de/danet/gosdn/controller/api" + "github.com/google/uuid" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -45,7 +46,12 @@ var userGetCmd = &cobra.Command{ Long: `Requests one user using the provided name to search for it in the stored users.`, RunE: func(cmd *cobra.Command, args []string) error { - resp, err := api.GetUser(createContextWithAuthorization(), viper.GetString("controllerAPIEndpoint"), nbUserName) + resp, err := api.GetUser( + createContextWithAuthorization(), + viper.GetString("controllerAPIEndpoint"), + nbUserName, + uuid.Nil, + ) if err != nil { return err } diff --git a/controller/api/role.go b/controller/api/role.go index b9d6bcc5c..cef731972 100644 --- a/controller/api/role.go +++ b/controller/api/role.go @@ -6,6 +6,7 @@ import ( apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac" nbi "code.fbi.h-da.de/danet/gosdn/controller/northbound/client" + "github.com/google/uuid" ) // CreateRoles creates roles with provided data @@ -24,7 +25,7 @@ func CreateRoles(ctx context.Context, addr string, roles []*apb.Role) (*apb.Crea } // GetRole returns one requested role found by name -func GetRole(ctx context.Context, addr, name string) (*apb.GetRoleResponse, error) { +func GetRole(ctx context.Context, addr, name string, uuid uuid.UUID) (*apb.GetRoleResponse, error) { roleClient, err := nbi.RoleClient(addr, dialOptions...) if err != nil { return nil, err @@ -33,6 +34,7 @@ func GetRole(ctx context.Context, addr, name string) (*apb.GetRoleResponse, erro r := &apb.GetRoleRequest{ Timestamp: time.Now().UnixNano(), RoleName: name, + Id: uuid.String(), } return roleClient.GetRole(ctx, r) diff --git a/controller/api/role_test.go b/controller/api/role_test.go index c98b0d277..2dd79fd69 100644 --- a/controller/api/role_test.go +++ b/controller/api/role_test.go @@ -61,6 +61,7 @@ func TestGetRole(t *testing.T) { ctx context.Context addr string name string + uuid uuid.UUID } tests := []struct { name string @@ -97,7 +98,7 @@ func TestGetRole(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := GetRole(tt.args.ctx, tt.args.addr, tt.args.name) + got, err := GetRole(tt.args.ctx, tt.args.addr, tt.args.name, tt.args.uuid) if (err != nil) != tt.wantErr { t.Errorf("GetRole() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/controller/northbound/server/role.go b/controller/northbound/server/role.go index 4cb05b6e1..4141c6250 100644 --- a/controller/northbound/server/role.go +++ b/controller/northbound/server/role.go @@ -2,6 +2,7 @@ package server import ( "context" + "fmt" "time" apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac" @@ -59,7 +60,12 @@ func (r Role) GetRole(ctx context.Context, request *apb.GetRoleRequest) (*apb.Ge start := metrics.StartHook(labels, grpcRequestsTotal) defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds) - roleData, err := r.roleService.Get(store.Query{Name: request.RoleName}) + roleID, err := uuid.Parse(request.Id) + if err != nil { + return nil, fmt.Errorf("could not parse role uuid") + } + + roleData, err := r.roleService.Get(store.Query{Name: request.RoleName, ID: roleID}) if err != nil { return nil, err } -- GitLab