x/ref: Flatten services/security/{discharger,role}

We're moving to a flatter package structure, so we will no longer
have services/mgmt or services/security.  This is a mechanical
change along those lines.

services/security/discharger.vdl -> services/discharger
services/security/discharger -> services/discharger/dischargerlib
services/security/role.vdl   -> services/role
services/security/roled      -> services/role/roled

Change-Id: Ia11539df7c97a01107de87ac05618b5df3295112
diff --git a/cmd/vrun/vrun.go b/cmd/vrun/vrun.go
index 4bdafd1..6fdf2db 100644
--- a/cmd/vrun/vrun.go
+++ b/cmd/vrun/vrun.go
@@ -15,7 +15,7 @@
 	"v.io/x/ref/envvar"
 	"v.io/x/ref/security/agent"
 	"v.io/x/ref/security/agent/keymgr"
-	isecurity "v.io/x/ref/services/security"
+	"v.io/x/ref/services/role"
 
 	"v.io/v23"
 	"v.io/v23/context"
@@ -27,8 +27,8 @@
 
 var (
 	durationFlag time.Duration
-	name         string
-	role         string
+	nameFlag     string
+	roleFlag     string
 )
 
 var cmdVrun = &cmdline.Command{
@@ -44,8 +44,8 @@
 	syscall.CloseOnExec(4)
 
 	cmdVrun.Flags.DurationVar(&durationFlag, "duration", 1*time.Hour, "Duration for the blessing.")
-	cmdVrun.Flags.StringVar(&name, "name", "", "Name to use for the blessing. Uses the command name if unset.")
-	cmdVrun.Flags.StringVar(&role, "role", "", "Role object from which to request the blessing. If set, the blessings from this role server are used and --name is ignored. If not set, the default blessings of the calling principal are extended with --name.")
+	cmdVrun.Flags.StringVar(&nameFlag, "name", "", "Name to use for the blessing. Uses the command name if unset.")
+	cmdVrun.Flags.StringVar(&roleFlag, "role", "", "Role object from which to request the blessing. If set, the blessings from this role server are used and --name is ignored. If not set, the default blessings of the calling principal are extended with --name.")
 
 	os.Exit(cmdVrun.Main())
 }
@@ -61,11 +61,11 @@
 	if err != nil {
 		return err
 	}
-	if len(role) == 0 {
-		if len(name) == 0 {
-			name = filepath.Base(args[0])
+	if len(roleFlag) == 0 {
+		if len(nameFlag) == 0 {
+			nameFlag = filepath.Base(args[0])
 		}
-		if err := bless(ctx, principal, name); err != nil {
+		if err := bless(ctx, principal, nameFlag); err != nil {
 			return err
 		}
 	} else {
@@ -73,14 +73,14 @@
 		// with RoleSuffix. This is to avoid accidentally granting role
 		// access to anything else that might have been blessed by the
 		// same principal.
-		if err := bless(ctx, principal, isecurity.RoleSuffix); err != nil {
+		if err := bless(ctx, principal, role.RoleSuffix); err != nil {
 			return err
 		}
 		rCtx, err := v23.SetPrincipal(ctx, principal)
 		if err != nil {
 			return err
 		}
-		if err := setupRoleBlessings(rCtx, role); err != nil {
+		if err := setupRoleBlessings(rCtx, roleFlag); err != nil {
 			return err
 		}
 	}
@@ -165,8 +165,8 @@
 	return principal, conn, nil
 }
 
-func setupRoleBlessings(ctx *context.T, role string) error {
-	b, err := isecurity.RoleClient(role).SeekBlessings(ctx)
+func setupRoleBlessings(ctx *context.T, roleStr string) error {
+	b, err := role.RoleClient(roleStr).SeekBlessings(ctx)
 	if err != nil {
 		return err
 	}
diff --git a/services/security/discharger.vdl b/services/discharger/discharger.vdl
similarity index 97%
rename from services/security/discharger.vdl
rename to services/discharger/discharger.vdl
index 040fe21..7aed262 100644
--- a/services/security/discharger.vdl
+++ b/services/discharger/discharger.vdl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package security
+package discharger
 
 import "v.io/v23/security"
 
diff --git a/services/security/discharger.vdl.go b/services/discharger/discharger.vdl.go
similarity index 95%
rename from services/security/discharger.vdl.go
rename to services/discharger/discharger.vdl.go
index 3b0715a..1024842 100644
--- a/services/security/discharger.vdl.go
+++ b/services/discharger/discharger.vdl.go
@@ -5,7 +5,7 @@
 // This file was auto-generated by the vanadium vdl tool.
 // Source: discharger.vdl
 
-package security
+package discharger
 
 import (
 	// VDL system imports
@@ -21,7 +21,7 @@
 
 var (
 	// Indicates that the Caveat does not require a discharge
-	ErrNotAThirdPartyCaveat = verror.Register("v.io/x/ref/services/security.NotAThirdPartyCaveat", verror.NoRetry, "{1:}{2:} discharges are not required for non-third-party caveats (id: {c.id})")
+	ErrNotAThirdPartyCaveat = verror.Register("v.io/x/ref/services/discharger.NotAThirdPartyCaveat", verror.NoRetry, "{1:}{2:} discharges are not required for non-third-party caveats (id: {c.id})")
 )
 
 func init() {
@@ -132,7 +132,7 @@
 // descDischarger hides the desc to keep godoc clean.
 var descDischarger = rpc.InterfaceDesc{
 	Name:    "Discharger",
-	PkgPath: "v.io/x/ref/services/security",
+	PkgPath: "v.io/x/ref/services/discharger",
 	Doc:     "// Discharger is the interface for obtaining discharges for ThirdPartyCaveats.",
 	Methods: []rpc.MethodDesc{
 		{
diff --git a/services/security/discharger/discharger.go b/services/discharger/dischargerlib/discharger.go
similarity index 86%
rename from services/security/discharger/discharger.go
rename to services/discharger/dischargerlib/discharger.go
index 30ad199..1c3e405 100644
--- a/services/security/discharger/discharger.go
+++ b/services/discharger/dischargerlib/discharger.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package discharger
+package dischargerlib
 
 import (
 	"fmt"
@@ -10,7 +10,7 @@
 
 	"v.io/v23/rpc"
 	"v.io/v23/security"
-	services "v.io/x/ref/services/security"
+	"v.io/x/ref/services/discharger"
 )
 
 // dischargerd issues discharges for all caveats present in the current
@@ -22,7 +22,7 @@
 	secCall := security.GetCall(ctx)
 	tp := caveat.ThirdPartyDetails()
 	if tp == nil {
-		return security.Discharge{}, services.NewErrNotAThirdPartyCaveat(call.Context(), caveat)
+		return security.Discharge{}, discharger.NewErrNotAThirdPartyCaveat(call.Context(), caveat)
 	}
 	if err := tp.Dischargeable(ctx); err != nil {
 		return security.Discharge{}, fmt.Errorf("third-party caveat %v cannot be discharged for this context: %v", tp, err)
@@ -40,6 +40,6 @@
 // Discharges are valid for 15 minutes.
 // TODO(ashankar,ataly): Parameterize this? Make it easier for clients to add
 // caveats on the discharge?
-func NewDischarger() services.DischargerServerMethods {
+func NewDischarger() discharger.DischargerServerMethods {
 	return dischargerd{}
 }
diff --git a/services/identity/internal/revocation/revocation_test.go b/services/identity/internal/revocation/revocation_test.go
index 463f12d..ce54d9b 100644
--- a/services/identity/internal/revocation/revocation_test.go
+++ b/services/identity/internal/revocation/revocation_test.go
@@ -8,8 +8,8 @@
 	"testing"
 
 	_ "v.io/x/ref/profiles"
-	services "v.io/x/ref/services/security"
-	"v.io/x/ref/services/security/discharger"
+	"v.io/x/ref/services/discharger"
+	"v.io/x/ref/services/discharger/dischargerlib"
 	"v.io/x/ref/test"
 
 	"v.io/v23"
@@ -29,7 +29,7 @@
 	if err != nil {
 		t.Fatalf("dischargerServer.Listen failed: %v", err)
 	}
-	dischargerServiceStub := services.DischargerServer(discharger.NewDischarger())
+	dischargerServiceStub := discharger.DischargerServer(dischargerlib.NewDischarger())
 	if err := dischargerServer.Serve("", dischargerServiceStub, nil); err != nil {
 		t.Fatalf("dischargerServer.Serve revoker: %s", err)
 	}
@@ -48,7 +48,7 @@
 	dcKey, dc, revoker, closeFunc := revokerSetup(t, ctx)
 	defer closeFunc()
 
-	discharger := services.DischargerClient(dc)
+	discharger := discharger.DischargerClient(dc)
 	caveat, err := revoker.NewCaveat(dcKey, dc)
 	if err != nil {
 		t.Fatalf("failed to create revocation caveat: %s", err)
diff --git a/services/identity/internal/server/identityd.go b/services/identity/internal/server/identityd.go
index 089a765..733e26d 100644
--- a/services/identity/internal/server/identityd.go
+++ b/services/identity/internal/server/identityd.go
@@ -27,6 +27,8 @@
 
 	"v.io/x/ref/lib/signals"
 	"v.io/x/ref/security/audit"
+	"v.io/x/ref/services/discharger"
+	"v.io/x/ref/services/discharger/dischargerlib"
 	"v.io/x/ref/services/identity/internal/auditor"
 	"v.io/x/ref/services/identity/internal/blesser"
 	"v.io/x/ref/services/identity/internal/caveats"
@@ -35,8 +37,6 @@
 	"v.io/x/ref/services/identity/internal/revocation"
 	"v.io/x/ref/services/identity/internal/templates"
 	"v.io/x/ref/services/identity/internal/util"
-	services "v.io/x/ref/services/security"
-	"v.io/x/ref/services/security/discharger"
 )
 
 const (
@@ -242,7 +242,7 @@
 func newDispatcher(macaroonKey []byte, blesserParams blesser.OAuthBlesserParams) rpc.Dispatcher {
 	d := dispatcher(map[string]interface{}{
 		macaroonService:     blesser.NewMacaroonBlesserServer(macaroonKey),
-		dischargerService:   services.DischargerServer(discharger.NewDischarger()),
+		dischargerService:   discharger.DischargerServer(dischargerlib.NewDischarger()),
 		oauthBlesserService: blesser.NewOAuthBlesserServer(blesserParams),
 	})
 	// Set up the glob invoker.
diff --git a/services/security/role.vdl b/services/role/role.vdl
similarity index 97%
rename from services/security/role.vdl
rename to services/role/role.vdl
index 26e970a..454d0dc 100644
--- a/services/security/role.vdl
+++ b/services/role/role.vdl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package security
+package role
 
 import "v.io/v23/security"
 
diff --git a/services/security/role.vdl.go b/services/role/role.vdl.go
similarity index 98%
rename from services/security/role.vdl.go
rename to services/role/role.vdl.go
index e15db68..1b4ab83 100644
--- a/services/security/role.vdl.go
+++ b/services/role/role.vdl.go
@@ -5,7 +5,7 @@
 // This file was auto-generated by the vanadium vdl tool.
 // Source: role.vdl
 
-package security
+package role
 
 import (
 	// VDL system imports
@@ -130,7 +130,7 @@
 // descRole hides the desc to keep godoc clean.
 var descRole = rpc.InterfaceDesc{
 	Name:    "Role",
-	PkgPath: "v.io/x/ref/services/security",
+	PkgPath: "v.io/x/ref/services/role",
 	Doc:     "// Role is an interface to request blessings from a role account server. The\n// returned blessings are bound to the client's public key thereby authorizing\n// the client to acquire the role. The server may tie the returned blessings\n// with the client's presented blessing name in order to maintain audit\n// information in the blessing.\n//\n// In order to avoid granting role blessings to all delegates of a principal,\n// the role server requires that each authorized blessing presented by the\n// client have the string \"_role\" as suffix.",
 	Methods: []rpc.MethodDesc{
 		{
diff --git a/services/security/roled/internal/caveats.vdl b/services/role/roled/internal/caveats.vdl
similarity index 100%
rename from services/security/roled/internal/caveats.vdl
rename to services/role/roled/internal/caveats.vdl
diff --git a/services/security/roled/internal/caveats.vdl.go b/services/role/roled/internal/caveats.vdl.go
similarity index 100%
rename from services/security/roled/internal/caveats.vdl.go
rename to services/role/roled/internal/caveats.vdl.go
diff --git a/services/security/roled/internal/config.vdl b/services/role/roled/internal/config.vdl
similarity index 100%
rename from services/security/roled/internal/config.vdl
rename to services/role/roled/internal/config.vdl
diff --git a/services/security/roled/internal/config.vdl.go b/services/role/roled/internal/config.vdl.go
similarity index 95%
rename from services/security/roled/internal/config.vdl.go
rename to services/role/roled/internal/config.vdl.go
index 6e10437..0928eb7 100644
--- a/services/security/roled/internal/config.vdl.go
+++ b/services/role/roled/internal/config.vdl.go
@@ -40,7 +40,7 @@
 }
 
 func (Config) __VDLReflect(struct {
-	Name string "v.io/x/ref/services/security/roled/internal.Config"
+	Name string "v.io/x/ref/services/role/roled/internal.Config"
 }) {
 }
 
diff --git a/services/security/roled/internal/discharger.go b/services/role/roled/internal/discharger.go
similarity index 84%
rename from services/security/roled/internal/discharger.go
rename to services/role/roled/internal/discharger.go
index 8bcab33..43b2cd9 100644
--- a/services/security/roled/internal/discharger.go
+++ b/services/role/roled/internal/discharger.go
@@ -13,7 +13,7 @@
 	"v.io/v23/security"
 	"v.io/v23/verror"
 
-	isecurity "v.io/x/ref/services/security"
+	"v.io/x/ref/services/discharger"
 
 	"v.io/x/lib/vlog"
 )
@@ -26,12 +26,12 @@
 
 }
 
-type discharger struct{}
+type dischargerImpl struct{}
 
-func (discharger) Discharge(call rpc.ServerCall, caveat security.Caveat, impetus security.DischargeImpetus) (security.Discharge, error) {
+func (dischargerImpl) Discharge(call rpc.ServerCall, caveat security.Caveat, impetus security.DischargeImpetus) (security.Discharge, error) {
 	details := caveat.ThirdPartyDetails()
 	if details == nil {
-		return security.Discharge{}, isecurity.NewErrNotAThirdPartyCaveat(call.Context(), caveat)
+		return security.Discharge{}, discharger.NewErrNotAThirdPartyCaveat(call.Context(), caveat)
 	}
 	if err := details.Dischargeable(call.Context()); err != nil {
 		return security.Discharge{}, err
diff --git a/services/security/roled/internal/dispatcher.go b/services/role/roled/internal/dispatcher.go
similarity index 93%
rename from services/security/roled/internal/dispatcher.go
rename to services/role/roled/internal/dispatcher.go
index 22478b9..7081124 100644
--- a/services/security/roled/internal/dispatcher.go
+++ b/services/role/roled/internal/dispatcher.go
@@ -16,12 +16,13 @@
 	"v.io/v23/security"
 	"v.io/v23/verror"
 
-	isecurity "v.io/x/ref/services/security"
+	"v.io/x/ref/services/discharger"
+	"v.io/x/ref/services/role"
 
 	"v.io/x/lib/vlog"
 )
 
-const requiredSuffix = security.ChainSeparator + isecurity.RoleSuffix
+const requiredSuffix = security.ChainSeparator + role.RoleSuffix
 
 // NewDispatcher returns a dispatcher object for a role service and its
 // associated discharger service.
@@ -41,7 +42,7 @@
 
 func (d *dispatcher) Lookup(suffix string) (interface{}, security.Authorizer, error) {
 	if len(suffix) == 0 {
-		return isecurity.DischargerServer(&discharger{}), &openAuthorizer{}, nil
+		return discharger.DischargerServer(&dischargerImpl{}), &openAuthorizer{}, nil
 	}
 	fileName := filepath.Join(d.configRoot, filepath.FromSlash(suffix+".conf"))
 	if !strings.HasPrefix(fileName, d.configRoot) {
@@ -57,7 +58,7 @@
 		return nil, nil, verror.Convert(verror.ErrInternal, nil, err)
 	}
 	obj := &roleService{role: suffix, config: config, dischargerLocation: d.dischargerLocation}
-	return isecurity.RoleServer(obj), &authorizer{config}, nil
+	return role.RoleServer(obj), &authorizer{config}, nil
 }
 
 type openAuthorizer struct{}
diff --git a/services/security/roled/internal/doc.go b/services/role/roled/internal/doc.go
similarity index 90%
rename from services/security/roled/internal/doc.go
rename to services/role/roled/internal/doc.go
index 118ee40..f72d7c5 100644
--- a/services/security/roled/internal/doc.go
+++ b/services/role/roled/internal/doc.go
@@ -2,5 +2,5 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// Package internal implements the role service defined in v.io/x/ref/services/security
+// Package internal implements the role service defined in v.io/x/ref/services/role
 package internal
diff --git a/services/security/roled/internal/role.go b/services/role/roled/internal/role.go
similarity index 90%
rename from services/security/roled/internal/role.go
rename to services/role/roled/internal/role.go
index c3e8b24..7b1f129 100644
--- a/services/security/roled/internal/role.go
+++ b/services/role/roled/internal/role.go
@@ -16,11 +16,11 @@
 
 	"v.io/x/lib/vlog"
 
-	isecurity "v.io/x/ref/services/security"
+	"v.io/x/ref/services/role"
 )
 
 var (
-	errNoLocalBlessings = verror.Register("v.io/x/ref/services/security/roled/internal/noLocalBlessings", verror.NoRetry, "{1:}{2:} no local blessings")
+	errNoLocalBlessings = verror.Register("v.io/x/ref/services/role/roled/internal/noLocalBlessings", verror.NoRetry, "{1:}{2:} no local blessings")
 )
 
 type roleService struct {
@@ -68,14 +68,14 @@
 	return results
 }
 
-func extensions(config *Config, role string, blessingNames []string) []string {
+func extensions(config *Config, roleStr string, blessingNames []string) []string {
 	if !config.Extend {
-		return []string{role}
+		return []string{roleStr}
 	}
 	var extensions []string
 	for _, b := range blessingNames {
-		b = strings.TrimSuffix(b, security.ChainSeparator+isecurity.RoleSuffix)
-		extensions = append(extensions, role+security.ChainSeparator+b)
+		b = strings.TrimSuffix(b, security.ChainSeparator+role.RoleSuffix)
+		extensions = append(extensions, roleStr+security.ChainSeparator+b)
 	}
 	return extensions
 }
diff --git a/services/security/roled/internal/role_internal_test.go b/services/role/roled/internal/role_internal_test.go
similarity index 100%
rename from services/security/roled/internal/role_internal_test.go
rename to services/role/roled/internal/role_internal_test.go
diff --git a/services/security/roled/internal/role_test.go b/services/role/roled/internal/role_test.go
similarity index 97%
rename from services/security/roled/internal/role_test.go
rename to services/role/roled/internal/role_test.go
index b1f5c43..023e15b 100644
--- a/services/security/roled/internal/role_test.go
+++ b/services/role/roled/internal/role_test.go
@@ -20,8 +20,8 @@
 
 	_ "v.io/x/ref/profiles"
 	vsecurity "v.io/x/ref/security"
-	isecurity "v.io/x/ref/services/security"
-	irole "v.io/x/ref/services/security/roled/internal"
+	"v.io/x/ref/services/role"
+	irole "v.io/x/ref/services/role/roled/internal"
 	"v.io/x/ref/test/testutil"
 )
 
@@ -104,7 +104,7 @@
 	addr := newRoleServer(t, newPrincipalContext(t, ctx, root, "roles"), workdir)
 	for _, tc := range testcases {
 		user := v23.GetPrincipal(tc.ctx).BlessingStore().Default()
-		c := isecurity.RoleClient(naming.Join(addr, tc.role))
+		c := role.RoleClient(naming.Join(addr, tc.role))
 		blessings, err := c.SeekBlessings(tc.ctx)
 		if verror.ErrorID(err) != tc.errID {
 			t.Errorf("unexpected error ID for (%q, %q). Got %#v, expected %#v", user, tc.role, verror.ErrorID(err), tc.errID)
diff --git a/services/security/roled/main.go b/services/role/roled/main.go
similarity index 95%
rename from services/security/roled/main.go
rename to services/role/roled/main.go
index 38a3a61..655156c 100644
--- a/services/security/roled/main.go
+++ b/services/role/roled/main.go
@@ -14,7 +14,7 @@
 	"v.io/x/lib/vlog"
 	"v.io/x/ref/lib/signals"
 	_ "v.io/x/ref/profiles/static"
-	irole "v.io/x/ref/services/security/roled/internal"
+	irole "v.io/x/ref/services/role/roled/internal"
 )
 
 var (