added del-controllers target
[sliver-openvswitch.git] / planetlab / exp-tool / Makefile
index 09560ee..bf66afb 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
@@ -117,6 +118,9 @@ CONTROLLERS=$(foreach id,$(ALL_NODE_IDS),cache/controller.$(id))
 controllers: $(CONTROLLERS)
 .PHONY: controllers
 
+del-controllers: $(foreach id,$(ALL_NODE_IDS),del-controller-$(id))
+.PHONY: del-controllers
+
 ### node-oriented targets
 # check ssh connectivity
 cache/sshcheck.%: FORCE
@@ -146,8 +150,8 @@ cache/bridge.%: cache/switch.%
        @echo Created bridge with tap $$(cat $@) on $(call display,$*)
 
 cache/controller.%: cache/bridge.%
-       @echo "Setting controller on $(call display,$*) - logs in $(call log,$@)"
-       @$(SSH) $(HOST_$*) $(SUDO) ovs-vsctl set-controller $(BRIDGE) $(CONTROLLER_$*) &> $(call log,$@) || { rm $@; exit 1; }
+       @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.%
@@ -182,6 +186,11 @@ del-db.%:
        @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs stop-db
        @rm -f cache/db.$*
 
+del-controller.%:
+       @echo "Removing controller for $(call display,$*)"
+       @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs del-controller $(BRIDGE)
+       @rm -f cache/controller.$*
+
 del-links: $(addprefix U/,$(notdir $(filter-out %.log,$(wildcard L/*))))
 
 del-switchs: $(addprefix del-,$(notdir $(filter-out %.log,$(wildcard cache/switch.*))))
@@ -203,6 +212,17 @@ remote-snapshot-ips: $(addprefix cache/rsnap.ip.,$(CONF_NODE_IDS))
 remote-snapshot-links: $(addprefix cache/rsnap.links.,$(CONF_NODE_IDS))
        @sort -u /dev/null $^
 
+### update sliver-ovs
+update: $(addprefix update-,$(CONF_NODE_IDS))
+       @true
+
+update-%: FORCE
+       @[ -n "$(SLIVER_OVS)" ] || { echo "SLIVER_OVS not set" >&2; exit 1; }
+       @[ -f "$(SLIVER_OVS)" ] || { echo "$(SLIVER_OVS) not found" >&2; exit 1; }
+       @echo "Sending $(SLIVER_OVS) to $(call display,$*)"
+       @scp -q $(SLIVER_OVS) $(SLICE)@$(call solve,$*):
+       @$(SSH) $(call solve,$*) $(SUDO) mv $(notdir $(SLIVER_OVS)) /usr/sbin/sliver-ovs
+
 .PHONY: remote-snapshot remote-snapshot-ips remote-snapshot-links
 
 cache/rsnap.ip.%: 
@@ -260,6 +280,7 @@ graph.dot:
 graph.ps: graph.dot
        dot -Tps < $^ > $@      
 
+
 ####################
 # 'virtual' targets in that there's no real file attached
 define node_shortcuts