diff options
| author | Joey Hess <joeyh@joeyh.name> | 2015-10-16 14:20:13 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2015-10-16 14:23:01 -0400 |
| commit | e66b62f40bcb29ca62c905dabe87cc6e91a6bccd (patch) | |
| tree | ab317c5bccecfb347c4dc4d9f122334532397fba /src/Propellor/Info.hs | |
| parent | e5b5a190b7de979cd889c92ecff530417534864e (diff) | |
Added Propellor.Property.Spin, which can be used to make a host be a controller of other hosts.
The hard part of this is avoiding loops of controllers. To make that work,
a ControllerChain is passed to the host that's spun, and is added to the
Info of the host being spun, where the controller property can check it
to detect an avoid a loop.
That needed an expansion of the CmdLine data type. I made the new
ControlledRun only be used when there is a ControllerChain provided.
This avoids breaking backwards compatability with old propellor
deployments, as --spin still uses SimpleRun.
Note: Making an old propellor deployment be controlled by a controller
won't work until it's been updated to this commit, so it knows about
the ControlledRun parameter.
(Untested)
Diffstat (limited to 'src/Propellor/Info.hs')
| -rw-r--r-- | src/Propellor/Info.hs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/Propellor/Info.hs b/src/Propellor/Info.hs index fed62ff9..889f8439 100644 --- a/src/Propellor/Info.hs +++ b/src/Propellor/Info.hs @@ -101,3 +101,6 @@ getAddresses = mapMaybe getIPAddr . S.toList . fromDnsInfo . getInfo hostAddresses :: HostName -> [Host] -> [IPAddr] hostAddresses hn hosts = maybe [] (getAddresses . hostInfo) (findHost hosts hn) + +addHostInfo ::IsInfo v => Host -> v -> Host +addHostInfo h v = h { hostInfo = addInfo (hostInfo h) v } |
