From 804f4ad9715e3f77a5f0e7e8bd47892624807038 Mon Sep 17 00:00:00 2001 From: Martynas Pumputis Date: Tue, 14 Jun 2016 17:55:55 +0100 Subject: [PATCH] Add check-datapath to weaveutil The utility is used to check whether a datapath can be created. --- prog/weaveutil/datapath.go | 13 +++++++++++++ prog/weaveutil/main.go | 1 + weave | 3 +-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/prog/weaveutil/datapath.go b/prog/weaveutil/datapath.go index f4494967..52e320f8 100644 --- a/prog/weaveutil/datapath.go +++ b/prog/weaveutil/datapath.go @@ -31,6 +31,19 @@ func deleteDatapath(args []string) error { return odp.DeleteDatapath(args[0]) } +// Checks whether a datapath can be created by actually creating and destroying it +func checkDatapath(args []string) error { + if len(args) != 1 { + cmdUsage("check-datapath", "") + } + + if err := createDatapath(args); err != nil { + return err + } + + return odp.DeleteDatapath(args[0]) +} + func addDatapathInterface(args []string) error { if len(args) != 2 { cmdUsage("add-datapath-interface", " ") diff --git a/prog/weaveutil/main.go b/prog/weaveutil/main.go index 1d737341..8fd855ad 100644 --- a/prog/weaveutil/main.go +++ b/prog/weaveutil/main.go @@ -15,6 +15,7 @@ func init() { "docker-tls-args": dockerTLSArgs, "create-datapath": createDatapath, "delete-datapath": deleteDatapath, + "check-datapath": checkDatapath, "add-datapath-interface": addDatapathInterface, "create-plugin-network": createPluginNetwork, "remove-plugin-network": removePluginNetwork, diff --git a/weave b/weave index 045f025b..c40e2a5e 100755 --- a/weave +++ b/weave @@ -619,8 +619,7 @@ create_bridge() { else if [ -n "$LAUNCHING_ROUTER" ] ; then if [ "$BRIDGE_TYPE" = bridge -a -z "$WEAVE_NO_FASTDP" ] && - util_op create-datapath $DATAPATH 2>/dev/null && - util_op delete-datapath $DATAPATH 2>/dev/null ; then + util_op check-datapath $DATAPATH 2>/dev/null ; then cat <&2 WEAVE_NO_FASTDP is not set, but there is already a bridge present of the wrong type for fast datapath. Please do 'weave reset' to remove