Reintroducing localhost for local syncbase instances

Change-Id: If22427ec79e31c79b705f1dd9f8179239dd292b9
diff --git a/src/group-manager.js b/src/group-manager.js
index e5880ab..97e215f 100644
--- a/src/group-manager.js
+++ b/src/group-manager.js
@@ -14,25 +14,23 @@
     createSyncGroup: function(name, prefixes) {
       var self = this;
 
-      return this.prereq.then(function() {
-        var sg = self.syncbaseWrapper.syncGroup(self.sgAdmin, name);
+      var sg = self.syncbaseWrapper.syncGroup(self.sgAdmin, name);
 
-        var mgmt = vanadium.naming.join(self.mountNames.app, 'sgmt', name);
-        var spec = sg.buildSpec(prefixes, [mgmt]);
+      var mgmt = vanadium.naming.join(self.mountNames.app, 'sgmt', name);
+      var spec = sg.buildSpec(prefixes, [mgmt]);
 
-        /* TODO(rosswang): Right now, duplicate SyncBase creates on
-         * different SyncBase instances results in siloed SyncGroups.
-         * Revisit this logic once it merges properly. */
-        return sg.joinOrCreate(spec).then(function() {
-          // TODO(rosswang): this is a hack to make the syncgroup joinable
-          return self.vanadiumWrapper.setPermissions(mgmt, new Map([
-            ['Admin', {in: ['...']}],
-            ['Read', {in: ['...']}],
-            ['Resolve', {in: ['...']}]
-          ]));
-        }).then(function() {
-          return sg;
-        });
+      /* TODO(rosswang): Right now, duplicate SyncBase creates on
+       * different SyncBase instances results in siloed SyncGroups.
+       * Revisit this logic once it merges properly. */
+      return sg.joinOrCreate(spec).then(function() {
+        // TODO(rosswang): this is a hack to make the syncgroup joinable
+        return self.vanadiumWrapper.setPermissions(mgmt, new Map([
+          ['Admin', {in: ['...']}],
+          ['Read', {in: ['...']}],
+          ['Resolve', {in: ['...']}]
+        ]));
+      }).then(function() {
+        return sg;
       });
     },
 
@@ -62,11 +60,7 @@
          * mount names on ns.dev.v.io don't yet default to Resolve in [...].
          */
         this.vanadiumWrapper.setPermissions(this.mountNames.user, basicPerms),
-        this.vanadiumWrapper.setPermissions(this.mountNames.app, basicPerms),
-        this.prereq.then(function() {
-          // TODO(rosswang): This seems wrong too.
-          return self.vanadiumWrapper.setPermissions(self.sgAdmin, basicPerms);
-        })
+        this.vanadiumWrapper.setPermissions(this.mountNames.app, basicPerms)
       ]);
     }
   },
@@ -85,12 +79,6 @@
 
     this.sgAdmin = vanadium.naming.join(mountNames.app, 'sgadmin');
 
-    /* TODO(rosswang): Once Vanadium supports global sync-group admin
-     * creation, remove this. For now, use the first local SyncBase
-     * instance to administrate. */
-    this.prereq = vanadiumWrapper.mount(this.sgAdmin, syncbaseWrapper.mountName,
-      vanadiumWrapper.multiMount.FAIL);
-
     this.advertise().catch(this.onError);
   }
 });
diff --git a/src/travel.js b/src/travel.js
index 00485ca..2f99380 100644
--- a/src/travel.js
+++ b/src/travel.js
@@ -428,7 +428,7 @@
       });
 
     var sbName = opts.syncbase ||
-      queryString.parse(location.search).syncbase || 'travel/sgadmin';
+      queryString.parse(location.search).syncbase || 4000;
     if ($.isNumeric(sbName)) {
       sbName = '/localhost:' + sbName;
     }
diff --git a/tools/start_services.sh b/tools/start_services.sh
index e6509e2..5eda897 100644
--- a/tools/start_services.sh
+++ b/tools/start_services.sh
@@ -31,17 +31,33 @@
   local -r PORT=${port-4000}
   local -r SYNCBASED_ADDR=":$((PORT))"
   local -r BLESSINGS=`principal dump --v23.credentials=${CREDS} -s=true`
-  local -r RE="dev\.v\.io/u/(.*)" 
-  if [[ ${BLESSINGS} =~ ${RE} ]]
-    then local -r V_USER=${BASH_REMATCH[1]}
+
+  if [ ${admin-} ]; then
+    local -r RE="dev\.v\.io/u/(.*)" 
+    if [[ ${BLESSINGS} =~ ${RE} ]]; then
+      local -r V_USER=${BASH_REMATCH[1]}
+    fi
+    local -r SG_NAME=users/${V_USER}/travel/sgadmin
+    local -r NS_ROOT=/ns.dev.v.io:8101
+  else
+    local -r MOUNTTABLED_ADDR=":$((PORT+1))"
+    mounttabled \
+      --v23.tcp.address=${MOUNTTABLED_ADDR} \
+      --v23.credentials=${CREDS} &
+
+    local -r SG_NAME=syncbase
+    local -r NS_ROOT=/${MOUNTTABLED_ADDR}
   fi
+
+  echo "Starting syncbased on ${SYNCBASED_ADDR} mounted at ${NS_ROOT}/${SG_NAME}"
+
   mkdir -p $TMP
   ./bin/syncbased \
     --v=5 \
     --alsologtostderr=false \
     --root-dir=${TMP}/syncbase_${PORT} \
-    --name=users/${V_USER}/travel/sgadmin \
-    --v23.namespace.root=/ns.dev.v.io:8101 \
+    --name=${SG_NAME} \
+    --v23.namespace.root=${NS_ROOT} \
     --v23.tcp.address=${SYNCBASED_ADDR} \
     --v23.credentials=${CREDS} \
     --v23.permissions.literal="{\"Admin\":{\"In\":[\"${BLESSINGS}\"]},\"Write\":{\"In\":[\"${BLESSINGS}\"]},\"Read\":{\"In\":[\"${BLESSINGS}\"]},\"Resolve\":{\"In\":[\"${BLESSINGS}\"]},\"Debug\":{\"In\":[\"...\"]}}"