From: Giuseppe Lettieri <g.lettieri@iet.unipi.it> Date: Sat, 6 Oct 2012 11:34:49 +0000 (+0200) Subject: Comments for the internal targets of the Makefile X-Git-Tag: sliver-openvswitch-1.8.90-5~13 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=fc582831c774c336fe2a961ffea02de10be6818e;p=sliver-openvswitch.git Comments for the internal targets of the Makefile --- diff --git a/planetlab/exp-tool/Makefile b/planetlab/exp-tool/Makefile index f8ed90d06..fdfff1637 100644 --- a/planetlab/exp-tool/Makefile +++ b/planetlab/exp-tool/Makefile @@ -176,15 +176,29 @@ cache/stop.%: del-bridge.% @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs stop && rm cache/switch.$* cache/db.$* ### link-oriented targets -# L/<nodeid>-<node_id> +# L/<nodeid1>-<node_id2>: +# Establish a link between nodes <node_id1> and <node_id2> L/%: cache/endpoint.%@1 cache/endpoint.%@2 @touch $@ @echo "Link $* is up" +# U/<node_id1>-<node_id2> +# Tear down the link between nodes <node_id1> and <node_id2> U/%: del-iface.%@1 del-iface.%@2 @rm -f L/$* @echo "Deleted link $*" +# del-bridge.<node_id>: Delete the bridge on node <node_id>. +# +# We can do this only if the db on node <node_id> is running, but +# we don't need to re-delete if the db is restarted (hence the +# order-only dependency). +# +# Deleting a bridge also deletes all interfaces of the bridge +# as a side effect. This in turn invalidates local tunnel +# port numbers and endpoint info on both sides of each affected tunnel. +# The corresponding links obviously go down. We invalidate the +# cache accordingly. del-bridge.%: | cache/db.% @echo "Deleting bridge on $(call display,$*)" @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs del-bridge $(BRIDGE); @@ -194,6 +208,13 @@ del-bridge.%: | cache/db.% cache/endpoint.$*$(SEP)*@? cache/endpoint.*$(SEP)$*@? \ L/$*$(SEP)* L/*$(SEP)$* +# del-switch.<node_id>: Stops the switch daemon on <node_id>. +# +# As a side effect, the local port numbers of the tunnels +# are no longer valid (they will change when the daemon is restarted) +# and, therefore, the endpoint info on the remote side of +# the tunnels must be invalidated. The links also go down. +# We invalidate the cache accordingly. del-switch.%: @echo "Shutting down switch on $(call display,$*)" @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs stop-switch @@ -202,22 +223,33 @@ del-switch.%: cache/endpoint.$*$(SEP)*@2 cache/endpoint.*$(SEP)$*@1 \ L/$*$(SEP)* L/*$(SEP)$* +# del-db.<node_id>: Stops the db daemon on <node_id>. +# +# This has no additional side effects. del-db.%: @echo "Shutting down db on $(call display,$*)" @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs stop-db @rm -f cache/db.$* +# del-controller.<node_id>: +# Detaches <node_id> from the controller. +# +# This has no additional side effects. del-controller-%: | cache/db.% @echo "Removing controller for $(call display,$*)" @$(SSH) $(HOST_$*) $(SUDO) sliver-ovs del-controller $(BRIDGE) @rm -f cache/controller.$* +# del-links: Shortcut to delete all currently up links. del-links: $(addprefix U/,$(notdir $(wildcard L/*))) +# del-switchs: Shortcut to stop all currently running switch daemons. del-switchs: $(addprefix del-,$(notdir $(wildcard cache/switch.*))) +# del-dbs: Shortcut to stop all currently running db daemona.s del-dbs: $(addprefix del-,$(notdir $(wildcard cache/db.*))) +# shutdown: Shortcut to stop all currently running daemons. shutdown: del-switchs del-dbs .PHONY: del-links del-switchs del-dbs shutdown @@ -259,7 +291,15 @@ cache/rsnap.links.%: .SECONDEXPANSION: -del-iface.%: +# del-iface.<node_id>-<node_id>@<endpoint>: +# Deletes the interface of link <node_id1>-<node_id2> on either +# <node_id1> or <node_id2>, according to <endpoint>. +# +# We need a running db daemon to do this, but we do not have to +# redo the delete if the db daemon is restarted. +# +# This also invalidates the local port of the tunnel and the endpoint +# info on both sides of the tunnel. del-iface.%: | cache/db.$$(call get,%) @echo "Removing interface for link $(call linkpart,$*) from $(call get,$*)" @$(SSH) $(HOST_$(call get,$*)) \ @@ -272,12 +312,29 @@ del-iface.%: | cache/db.$$(call get,%) #linkid=$(call linkpart,%) #nodeid=$(call get,%) #bridgefile=cache/bridge.$(nodeid) + +# cache/iface.<node_id1>-<node_id2>@<endpoint>: +# Creates the interface for link <node_id1>-<node_id2> on +# <node_id<endpoint>>. +# +# The bridge of the local node must already exist, and we need to create +# the interface again if the bridge is re-created. +# We also need a running db daemon, but we do not need to do anything +# if the db daemon is restarted. cache/iface.%: cache/bridge.$$(call get,%) | cache/db.$$(call get,%) @echo "Creating interface for link $(call linkpart,$(*F)) on $(call display,$(call get,$(*F))) - logs in $(call log,$@)" @$(SSH) $(call solve,$(call get,$(*F))) $(SUDO) sliver-ovs create-port $(BRIDGE) \ L$(call linkpart,$(*F)) &> $(call log,$@) \ && touch $@ +# cache/port.<node_id1>-<node_id2>@<endpoint>: +# Retrieves the local port of link <node_id1>-<node_id2> on +# node <node_id<endpoint>>. +# +# The local interface must have been created already and the +# switch daemon must be running. We need to retrieve the port +# number again if the interface is re-created, or the switch +# daemon is restarted. cache/port.%: cache/iface.% cache/switch.$$(call get,%) @echo "Getting port number for link $(call linkpart,$(*F)) on $(call display,$(call get,$(*F))) - logs in $(call log,$@)" @$(SSH) $(call solve,$(call get,$(*F))) $(SUDO) \ @@ -289,6 +346,13 @@ cache/port.%: cache/iface.% cache/switch.$$(call get,%) # nodeid=$(call get,%) # iface1=cache/iface.% # iface2=cache/iface.$(call opp,%) + +# cache/endpoint.<node_id1>-<node_id2>@<endpoint>: +# Sets the other side (IP address, UDP port) info for link <node_id1>-<node_id2> +# on <node_id<endpoint>>. +# +# We need the IP address and the UDP port of the other side and the interace of this side. +# We need to set the info again if any of these change. cache/endpoint.%: cache/host.$$(call rget,%) cache/port.$$(call opp,%) cache/iface.% @echo "Setting port number of link $(call linkpart,$(*F)) on $(call display,$(call get,$(*F))) - logs in $(call log,$@)" @$(SSH) $(call solve,$(call get,$(*F))) $(SUDO) sliver-ovs set-remote-endpoint L$(call linkpart,$(*F)) \