Merge "ref/test: simplifying InitRandGenerator()"
diff --git a/services/groups/groupsd/main.go b/services/groups/groupsd/main.go
index a1ef298..c220ae4 100644
--- a/services/groups/groupsd/main.go
+++ b/services/groups/groupsd/main.go
@@ -14,6 +14,7 @@
"v.io/v23"
"v.io/v23/context"
+ "v.io/v23/rpc"
"v.io/v23/security"
"v.io/v23/security/access"
"v.io/x/lib/cmdline"
@@ -23,13 +24,18 @@
"v.io/x/ref/lib/xrpc"
_ "v.io/x/ref/runtime/factories/roaming"
"v.io/x/ref/services/groups/internal/server"
+ "v.io/x/ref/services/groups/internal/store/leveldb"
"v.io/x/ref/services/groups/internal/store/mem"
)
-var flagName string
+var (
+ flagName string
+ flagPersist string
+)
func main() {
cmdGroupsD.Flags.StringVar(&flagName, "name", "", "Name to mount the groups server as.")
+ cmdGroupsD.Flags.StringVar(&flagPersist, "persist", "", "Path to a directory used to persist the groups definitions. If none is specified, groups definitions are not persisted.")
cmdline.HideGlobalFlagsExcept()
cmdline.Main(cmdGroupsD)
@@ -68,8 +74,17 @@
ctx.Infof("No permissions flag provided. Giving local principal all permissions.")
perms = defaultPerms(security.DefaultBlessingPatterns(v23.GetPrincipal(ctx)))
}
- m := server.NewManager(mem.New(), perms)
- server, err := xrpc.NewDispatchingServer(ctx, flagName, m)
+ var dispatcher rpc.Dispatcher
+ if flagPersist == "" {
+ dispatcher = server.NewManager(mem.New(), perms)
+ } else {
+ store, err := leveldb.Open(flagPersist)
+ if err != nil {
+ ctx.Fatalf("Open(%v) failed: %v", flagPersist, err)
+ }
+ dispatcher = server.NewManager(store, perms)
+ }
+ server, err := xrpc.NewDispatchingServer(ctx, flagName, dispatcher)
if err != nil {
fmt.Errorf("NewDispatchingServer(%v) failed: %v", flagName, err)
}