Merge branch 'master' of ssh://git.onelab.eu/git/sliver-openvswitch
[sliver-openvswitch.git] / planetlab / exp-tool / Makefile
index a6b0103..d151a66 100644 (file)
@@ -38,6 +38,7 @@ opp=$(call linkpart,$(1))@$(call flip,$(call endpart,$(1)))
 # rget(x-y@2) = x
 rget=$(call get,$(call opp,$(1)))
 ###
+default=$(if $($(1)_$(2)),$($(1)_$(2)),$($(1)))
 solve=$(HOST_$(1))
 solve_ip=$(IP_$(1))
 # can be redefined in conf.mk if that's not the expected behaviour
@@ -113,6 +114,10 @@ BRIDGES=$(foreach id,$(ALL_NODE_IDS),cache/bridge.$(id))
 bridges: $(BRIDGES)
 .PHONY: bridges
 
+CONTROLLERS=$(foreach id,$(ALL_NODE_IDS),cache/controller.$(id))
+controllers: $(CONTROLLERS)
+.PHONY: controllers
+
 ### node-oriented targets
 # check ssh connectivity
 cache/sshcheck.%: FORCE
@@ -141,6 +146,10 @@ cache/bridge.%: cache/switch.%
        @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs create-bridge $(BRIDGE) $(IP_$*) > $@ 2> $(call log,$@) || { rm $@; exit 1; }
        @echo Created bridge with tap $$(cat $@) on $(call display,$*)
 
+cache/controller.%: cache/bridge.%
+       @echo "Setting controller $(call default,CONTROLLER,$*) on $(call display,$*) - logs in $(call log,$@)"
+       @$(SSH) $(HOST_$*) $(SUDO) ovs-vsctl set-controller $(BRIDGE) $(call default,CONTROLLER,$*) &> $(call log,$@) || { rm $@; exit 1; }
+
 # xxx this probably needs a more thorough cleanup in cache/
 cache/stop.%: del-bridge.%
        @echo "Stopping switch & db on $(call display,$*)"