X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fexp-tool%2FMakefile;h=804918246cb7e16e59d08508fbd1ca60fa109f03;hb=9ceb2057ac7c99c87eb3ba0f3a2a6e01ef5abe62;hp=d880cd604de6c91f570af0e7606ec00ac2c0b8f8;hpb=aaa29c2b20a2c630afde23fcb4eb4ddfcadd0e07;p=sliver-openvswitch.git diff --git a/planetlab/exp-tool/Makefile b/planetlab/exp-tool/Makefile index d880cd604..804918246 100644 --- a/planetlab/exp-tool/Makefile +++ b/planetlab/exp-tool/Makefile @@ -36,7 +36,8 @@ else SSH_KEY_OPTION ?= -i $(SSH_KEY) endif -SSH_OPTIONS ?= $(SSH_KEY_OPTION) -l $(SLICE) -t +#SSH_OPTIONS ?= $(SSH_KEY_OPTION) -l $(SLICE) -t +SSH_OPTIONS ?= $(SSH_KEY_OPTION) -l $(SLICE) SSH = ssh $(SSH_OPTIONS) SUDO ?= sudo -S @@ -63,7 +64,9 @@ showslice: ++SLICE FORCE shownodes: @$(foreach id,$(ALL_NODE_IDS),echo $(id)=$(call display,$(id));) -.PHONY: shownodes +showips: + @$(foreach id,$(ALL_NODE_IDS),echo $(id)=$(call display,$(id)) has ip/network set to $(IP_$(id));) +.PHONY: shownodes showips sshchecks: $(foreach id,$(ALL_NODE_IDS),cache/sshcheck.$(id)) .PHONY: sshchecks @@ -74,29 +77,46 @@ dbs: $(foreach id,$(ALL_NODE_IDS),cache/db.$(id)) switchs: $(foreach id,$(ALL_NODE_IDS),cache/switch.$(id)) .PHONY: switchs +start: dbs switchs +.PHONY: start + +stop:$(foreach id,$(ALL_NODE_IDS),cache/stop.$(id)) +.PHONY: stop + +status:$(foreach id,$(ALL_NODE_IDS),cache/status.$(id)) +.PHONY: status + ### node-oriented targets +# check ssh connectivity +cache/sshcheck.%: FORCE + @if $(SSH) $(HOST_$*) hostname 2> /dev/null; then echo "ssh on" $(call display,$*) "OK" ; \ + else echo "ssh on" $(call display,$*) "KO !!!"; fi + +# should probably replace sshcheck +cache/status.%: FORCE + @echo "=== DB and SWITCH processes on $(call display,$*)" + @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs status + cache/host.%: @echo "IP lookup for $(call display,$*)" @host $(HOST_$*) | sed -n 's/^.*has address *//p' > $@ cache/db.%: - @echo "Starting db server on $(call display,$*)" - @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs start-db > $@ \ - || { rm $@; exit 1; } + @echo "Starting db server on $(call display,$*) - logs in $@.log" + @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs start-db &> $@.log && touch $@ cache/switch.%: cache/db.% - @echo "Starting vswitchd on $(call display,$*)" - @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs start-switch > $@ \ - || { rm $@; exit 1; } + @echo "Starting vswitchd on $(call display,$*) - logs in $@.log" + @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs start-switch &> $@.log && touch $@ cache/bridge.%: cache/switch.% - @echo "Creating bridge on $(call display,$*)" - @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs create-bridge $(IP_$*) > $@ \ - || { rm $@; exit 1; } + @echo "Creating bridge on $(call display,$*) - logs in $@.log" + @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs create-bridge $(IP_$*) > $@ 2> $@.log || { rm $@; exit 1; } -cache/sshcheck.%: FORCE - @if $(SSH) $(HOST_$*) hostname 2> /dev/null; then echo "ssh on" $(call display,$*) "OK" ; \ - else echo "ssh on" $(call display,$*) "KO !!!"; fi +# xxx this probably needs a more thorough cleanup in cache/ +cache/stop.%: del-bridge.% + @echo "Stopping switch & db on $(call display,$*)" + @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs stop && rm cache/switch.% cache/db.% ### link-oriented targets L/%: cache/link.%@1 cache/link.%@2 @@ -120,14 +140,14 @@ del-bridge.%: cache/db.% del-switch.%: del-bridge.% @echo "Shutting down switch on $(call display,$*)" @if [ -f cache/switch.$* ]; then \ - $(SSH) $(HOST_$*) $(SUDO) ovs-appctl exit;\ + $(SSH) $(HOST_$*) $(SUDO) sliver-ovs stop-switch fi @rm -f cache/switch.$* del-db.%: @echo "Shutting down db on $(call display,$*)" @if [ -f cache/db.$* ]; then \ - $(SSH) $(HOST_$*) $(SUDO) ovs-appctl --target=$(VARRUN)/ovsdb-server.$$(cat cache/db.$*).ctl exit;\ + $(SSH) $(HOST_$*) $(SUDO) sliver-ovs stop-db fi @rm -f cache/db.$* @@ -173,11 +193,31 @@ cache/iface.%: cache/bridge.$$(call get,%) cache/link.%: cache/host.$$(call rget,$$*) cache/iface.% cache/iface.$$(call opp,$$*) @echo "Setting port number of link $(call proj1,$*) on $(call get,$*)" @$(SSH) $(HOST_$(call get,$*)) \ - $(SUDO) ovs-vsctl set interface L$(call proj1,$*) \ - options:remote_ip=$$(cat cache/host.$(call rget,$*)) \ - options:remote_port=$$(cat cache/iface.$(call opp,$*)) \ + $(SUDO) sliver-ovs set-remote-endpoint L$(call proj1,$*) \ + $$(cat cache/host.$(call rget,$*)) \ + $$(cat cache/iface.$(call opp,$*)) \ && touch $@ +#################### +# 'virtual' targets in that there's no real file attached +define node_shortcuts +sshcheck.$(1): cache/sshcheck.$(1) FORCE +db.$(1): cache/db.$(1) FORCE +switch.$(1): cache/switch.$(1) FORCE +start.$(1): cache/start.$(1) FORCE +stop.$(1): cache/stop.$(1) FORCE +status.$(1): cache/status.$(1) FORCE +bridge.$(1): cache/bridge.$(1) FORCE +# switch already depends on db, but well +cache/start.$(1): cache/db.$(1) cache/switch.$(1) FORCE +endef + +$(foreach id,$(ALL_NODE_IDS), $(eval $(call node_shortcuts,$(id)))) + +#define link_shortcuts +# +#endef + #################### convenience, for debugging only # make +foo : prints the value of $(foo) # make ++foo : idem but verbose, i.e. foo=$(foo)