summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/Spin.hs
AgeCommit message (Collapse)Author
2015-10-20The Propellor.Property.Spin added in the last release is replaced with a ↵Joey Hess
very different Propellor.Property.ControlHeir. Rethought it because it turned out that propigating the PrivData rendered the loop detection pointless, because when there was a loop, each host included the other's PrivData, which in turn lead to a loop. And, it was not possible to break that loop. So, changed from adding properties to hosts to a top-down hierarchy that makes changes as needed when applied to the hosts. Which makes it easy to detect and break loops. Aka: The Ur Quan know what they're up to.
2015-10-20unused importJoey Hess
2015-10-20privdata propigation for Spin.controllerJoey Hess
Controlling host inherits the privdata for the host it spins, and sends it along to that host.
2015-10-19improve Info type using GADT, at nomeata's suggestionJoey Hess
This makes Show Info work, and simplifies the implementation.
2015-10-18fix typo: propigate → propagateFelix Gruber
2015-10-17do propigate Controlling info out of containersJoey Hess
If someone wants to make a container be a controller, that should work, and it should then detect loops that loop back to the container's host.
2015-10-17use Info to detect controller loopsJoey Hess
Much less invasive than the other implementation.
2015-10-16fix key types in examplesJoey Hess
2015-10-16improve ssh user key propertiesJoey Hess
* Ssh.keyImported is replaced with Ssh.userKeys. (API change) The new property only gets the private key from the privdata; the public key is provided as a parameter, and so is available as Info that other properties can use. * Ssh.keyImported' is renamed to Ssh.userKeyAt, and also changed to only import the private key from the privdata. (API change) * While Ssh.keyImported and Ssh.keyImported' avoided updating existing keys, the new Ssh.userKeys and Ssh.userKeyAt properties will always update out of date key files. * Ssh.pubKey renamed to Ssh.hostPubKey. (API change) This makes eg, setting up ssh for spin controllers work better.
2015-10-16rewordJoey Hess
2015-10-16comment reorgJoey Hess
2015-10-16improve types and add exampleJoey Hess
2015-10-16renameJoey Hess
2015-10-16Added Propellor.Property.Spin, which can be used to make a host be a ↵Joey Hess
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)