Invoke the new create_veth from a few places, eliminating code
duplication and inconsistencies.
Semantic differences:
- init_bridged_fastdp now skips the veth creation/config if the veth
already exists. This eliminates routing blips. Though in reality
something very strange must have happened to end up in this code
with an existing veth.
- init_bridged_fastdp no longer deletes the $BRIDGE and $DATAPATH when
veth creation/configuration fails. This is consistent with
init_bridge, which does not delete $BRIDGE when something goes
wrong. And it is generally desirable since the init_* functions are
invoked on potentially existing bridges - e.g. following 'weave
stop'.
- attach_bridge and setup_router_iface_bridge used to mark one veth
end 'up', then invoke add_iface_* for it, and then mark the other
end 'up'. create_veth marks both ends 'up' first. This makes no
practical difference in these cases.
notable other differences:
- we detect veth presence by checking whether *both* ends are present,
rather than just one. We deliberately continue to (and fail in) the
veth creation if one end already exists. This can only happen when
we've stumbled across a different interface, since a veth end cannot
exist independently. So it is right to treat this as an error.
- init_bridged_fastdp invokes add_iface_bridge instead of duplicating
what that does. Also makes for nice coherence with the
add_iface_fastdp it is invoking too.
This was causing container entrypoints to execute too early,
e.g. before the interface had been given an IP address. But only when
running with --no-multicast-route, since otherwise weavewait is
waiting for the multicast route to appear.
Fixes#1942.
This avoids trying to decide if "restarting" is as good as "running".
In wait_for_status we now explitly check_running, and
in dns_add/remove we add an extra check_running test.
They will be named 'weavevolumes-v1.4.3', 'weavevolumes-latest', etc.
Use a label to identify these containers so they can all be removed on `weave reset`.
This is to address the plugin case, where the veth will have a name like 'ethwe0'.
Previously we only looked at the device named exactly 'ethwe'.
Covers `weave ps` and reclaim of addresses for IPAM and WeaveDNS.
- Create an auxilliary container 'weavevolumes' to hold the '/w/w'
files, and map into that instead of creating new volumes every time.
- Show "/bin/false" as its command in `docker ps` instead of
"/home/weave/sigproxy".
- Remove volumes when cleaning up smoketest containers.
...if possible. This provides a stable peer identity across
reboots. If we cannot determinbe the system UUID then we revert to a
random MAC, as before.
Fixes#901.
Note that we remove the ability to set the weavemesh network name, or
disabling it altogether. This was always poorly support, since the
removal operation only ever operated on the default name. The option
was also not listed in the usage, though it was in the docs.