v.io/x/ref/services/mounttable/lib: Use verror insetad of fmt.Errof or errors.New

This change replaces uses of fmt.Errorf or errors.New with verror in
v.io/x/ref/services/mounttable/lib.

Error messages are kept as similar as possible, typically only adding the
prefix {1:}{2:} (to get the server and RPC name prefixes).

Tested:
	cd v.io
	v23 go test ./...
	v23 test run vanadium-go-test

Change-Id: I6ee81b288868f94645de4179a7e40e41f2536c7e
diff --git a/services/mounttable/lib/mounttable.go b/services/mounttable/lib/mounttable.go
index e40e986..cc84e5b 100644
--- a/services/mounttable/lib/mounttable.go
+++ b/services/mounttable/lib/mounttable.go
@@ -6,7 +6,6 @@
 
 import (
 	"encoding/json"
-	"fmt"
 	"os"
 	"reflect"
 	"strings"
@@ -26,17 +25,27 @@
 	"v.io/x/lib/vlog"
 )
 
+const pkgPath = "v.io/x/ref/services/mounttable/lib"
+
 var (
-	errNamingLoop = verror.Register("v.io/x/ref/services/mountable/lib", verror.NoRetry, "Loop in namespace")
-	traverseTags  = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Create, mounttable.Admin}
-	createTags    = []mounttable.Tag{mounttable.Create, mounttable.Admin}
-	removeTags    = []mounttable.Tag{mounttable.Admin}
-	mountTags     = []mounttable.Tag{mounttable.Mount, mounttable.Admin}
-	resolveTags   = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Admin}
-	globTags      = []mounttable.Tag{mounttable.Read, mounttable.Admin}
-	setTags       = []mounttable.Tag{mounttable.Admin}
-	getTags       = []mounttable.Tag{mounttable.Admin, mounttable.Read}
-	allTags       = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Admin, mounttable.Mount, mounttable.Create}
+	errMalformedAddress = verror.Register(pkgPath+".errMalformedAddress", verror.NoRetry, "{1:}{2:} malformed address {3} for mounted server {4}{:_}")
+	errMTDoesntMatch    = verror.Register(pkgPath+".errMTDoesntMatch", verror.NoRetry, "{1:}{2:} MT doesn't match{:_}")
+	errLeafDoesntMatch  = verror.Register(pkgPath+".errLeafDoesntMatch", verror.NoRetry, "{1:}{2:} Leaf doesn't match{:_}")
+	errCantDeleteRoot   = verror.Register(pkgPath+".errCantDeleteRoot", verror.NoRetry, "{1:}{2:} cannot delete root node{:_}")
+	errNotEmpty         = verror.Register(pkgPath+".errNotEmpty", verror.NoRetry, "{1:}{2:} cannot delete {3}: has children{:_}")
+	errNamingLoop       = verror.Register(pkgPath+".errNamingLoop", verror.NoRetry, "{1:}{2:} Loop in namespace{:_}")
+)
+
+var (
+	traverseTags = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Create, mounttable.Admin}
+	createTags   = []mounttable.Tag{mounttable.Create, mounttable.Admin}
+	removeTags   = []mounttable.Tag{mounttable.Admin}
+	mountTags    = []mounttable.Tag{mounttable.Mount, mounttable.Admin}
+	resolveTags  = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Admin}
+	globTags     = []mounttable.Tag{mounttable.Read, mounttable.Admin}
+	setTags      = []mounttable.Tag{mounttable.Admin}
+	getTags      = []mounttable.Tag{mounttable.Admin, mounttable.Read}
+	allTags      = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Admin, mounttable.Mount, mounttable.Create}
 )
 
 // mountTable represents a namespace.  One exists per server instance.
@@ -439,7 +448,7 @@
 	}
 	_, err := v23.NewEndpoint(epString)
 	if err != nil {
-		return fmt.Errorf("malformed address %q for mounted server %q", epString, server)
+		return verror.New(errMalformedAddress, call.Context(), epString, server)
 	}
 
 	// Find/create node in namespace and add the mount.
@@ -462,10 +471,10 @@
 		n.mount = &mount{servers: newServerList(), mt: wantMT, leaf: wantLeaf}
 	} else {
 		if wantMT != n.mount.mt {
-			return fmt.Errorf("MT doesn't match")
+			return verror.New(errMTDoesntMatch, call.Context())
 		}
 		if wantLeaf != n.mount.leaf {
-			return fmt.Errorf("Leaf doesn't match")
+			return verror.New(errLeafDoesntMatch, call.Context())
 		}
 	}
 	n.mount.servers.add(server, time.Duration(ttlsecs)*time.Second)
@@ -555,7 +564,7 @@
 	vlog.VI(2).Infof("*********************Delete %q, %v", ms.name, deleteSubTree)
 	if len(ms.elems) == 0 {
 		// We can't delete the root.
-		return fmt.Errorf("cannot delete root node")
+		return verror.New(errCantDeleteRoot, call.Context())
 	}
 	mt := ms.mt
 	// Find and lock the parent node.
@@ -569,7 +578,7 @@
 	defer n.parent.Unlock()
 	defer n.Unlock()
 	if !deleteSubTree && len(n.children) > 0 {
-		return fmt.Errorf("cannot delete %s: has children", ms.name)
+		return verror.New(errNotEmpty, call.Context(), ms.name)
 	}
 	delete(n.parent.children, ms.elems[len(ms.elems)-1])
 	return nil
diff --git a/services/mounttable/lib/neighborhood.go b/services/mounttable/lib/neighborhood.go
index 034867e..a757414 100644
--- a/services/mounttable/lib/neighborhood.go
+++ b/services/mounttable/lib/neighborhood.go
@@ -5,7 +5,6 @@
 package mounttable
 
 import (
-	"errors"
 	"net"
 	"strconv"
 	"strings"
@@ -28,6 +27,15 @@
 	mdns "github.com/presotto/go-mdns-sd"
 )
 
+var (
+	errNoUsefulAddresses             = verror.Register(pkgPath+".errNoUsefulAddresses", verror.NoRetry, "{1:}{2:} neighborhood passed no useful addresses{:_}")
+	errCantFindPort                  = verror.Register(pkgPath+".errCantFindPort", verror.NoRetry, "{1:}{2:} neighborhood couldn't determine a port to use{:_}")
+	errDoesntImplementMount          = verror.Register(pkgPath+".errDoesntImplementMount", verror.NoRetry, "{1:}{2:} this server does not implement Mount{:_}")
+	errDoesntImplementUnmount        = verror.Register(pkgPath+".errDoesntImplementUnmount", verror.NoRetry, "{1:}{2:} this server does not implement Unmount{:_}")
+	errDoesntImplementDelete         = verror.Register(pkgPath+".errDoesntImplementDelete", verror.NoRetry, "{1:}{2:} this server does not implement Delete{:_}")
+	errDoesntImplementSetPermissions = verror.Register(pkgPath+".errDoesntImplementSetPermissions", verror.NoRetry, "{1:}{2:} this server does not implement SetPermissions{:_}")
+)
+
 const addressPrefix = "address:"
 
 // neighborhood defines a set of machines on the same multicast media.
@@ -83,10 +91,10 @@
 		}
 	}
 	if txt == nil {
-		return nil, errors.New("neighborhood passed no useful addresses")
+		return nil, verror.New(errNoUsefulAddresses, nil)
 	}
 	if port == 0 {
-		return nil, errors.New("neighborhood couldn't determine a port to use")
+		return nil, verror.New(errCantFindPort, nil)
 	}
 
 	// Start up MDNS, subscribe to the vanadium service, and add us as a vanadium service provider.
@@ -231,18 +239,18 @@
 }
 
 // Mount not implemented.
-func (ns *neighborhoodService) Mount(_ rpc.ServerCall, _ string, _ uint32, _ naming.MountFlag) error {
-	return errors.New("this server does not implement Mount")
+func (ns *neighborhoodService) Mount(call rpc.ServerCall, _ string, _ uint32, _ naming.MountFlag) error {
+	return verror.New(errDoesntImplementMount, call.Context())
 }
 
 // Unmount not implemented.
-func (*neighborhoodService) Unmount(_ rpc.ServerCall, _ string) error {
-	return errors.New("this server does not implement Unmount")
+func (*neighborhoodService) Unmount(call rpc.ServerCall, _ string) error {
+	return verror.New(errDoesntImplementUnmount, call.Context())
 }
 
 // Delete not implemented.
-func (*neighborhoodService) Delete(_ rpc.ServerCall, _ bool) error {
-	return errors.New("this server does not implement Delete")
+func (*neighborhoodService) Delete(call rpc.ServerCall, _ bool) error {
+	return verror.New(errDoesntImplementDelete, call.Context())
 }
 
 // Glob__ implements rpc.AllGlobber
@@ -283,7 +291,7 @@
 }
 
 func (*neighborhoodService) SetPermissions(call rpc.ServerCall, acl access.Permissions, etag string) error {
-	return errors.New("this server does not implement SetPermissions")
+	return verror.New(errDoesntImplementSetPermissions, call.Context())
 }
 
 func (*neighborhoodService) GetPermissions(call rpc.ServerCall) (acl access.Permissions, etag string, err error) {