From b339bb27079f450ae761305133bb5df2330a24b9 Mon Sep 17 00:00:00 2001
From: Li Yi <denverdino@gmail.com>
Date: Fri, 23 Oct 2015 22:45:22 +0800
Subject: [PATCH] Fix the issue for the --cluster-store URL with path

Change-Id: I6542ceb28f70e2c6bf2162462255359362594c6d
Signed-off-by: Li Yi <denverdino@gmail.com>
---
 libnetwork/datastore/datastore.go | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/libnetwork/datastore/datastore.go b/libnetwork/datastore/datastore.go
index 3919afe0fc..67ca5a6152 100644
--- a/libnetwork/datastore/datastore.go
+++ b/libnetwork/datastore/datastore.go
@@ -144,7 +144,8 @@ func makeDefaultScopes() map[string]*ScopeCfg {
 	return def
 }
 
-var rootChain = []string{"docker", "network", "v1.0"}
+var defaultRootChain = []string{"docker", "network", "v1.0"}
+var rootChain = defaultRootChain
 
 func init() {
 	consul.Register()
@@ -195,6 +196,11 @@ func ParseKey(key string) ([]string, error) {
 
 // newClient used to connect to KV Store
 func newClient(scope string, kv string, addr string, config *store.Config, cached bool) (DataStore, error) {
+	var (
+		parts = strings.SplitN(addr, "/", 2)
+		addrs = strings.Split(parts[0], ",")
+	)
+
 	if cached && scope != LocalScope {
 		return nil, fmt.Errorf("caching supported only for scope %s", LocalScope)
 	}
@@ -203,7 +209,10 @@ func newClient(scope string, kv string, addr string, config *store.Config, cache
 		config = &store.Config{}
 	}
 
-	addrs := strings.Split(addr, ",")
+	// Add the custom prefix to the root chain
+	if len(parts) == 2 {
+		rootChain = append([]string{parts[1]}, defaultRootChain...)
+	}
 
 	store, err := libkv.NewStore(store.Backend(kv), addrs, config)
 	if err != nil {