summaryrefslogtreecommitdiff
path: root/src/Propellor/Types
AgeCommit message (Collapse)Author
2016-02-25FooBuntu -> BuntishJoey Hess
Seems that Canonical have trademarked numerous words ending in "buntu", and would like to trademark anything ending in that to the extent their lawyers can make that happen.
2016-02-19trademark nonsenseJoey Hess
Removed references to *buntu from code and documentation because of an unfortunate trademark use policy. http://joeyh.name/blog/entry/trademark_nonsense/ That included changing a data constructor to "FooBuntu", an API change.
2016-02-02Fix (->-) signature in Propellor.Types.ContainerLeonardo Taglialegne
2015-12-19Clean build with ghc 7.10.Joey Hess
Import Prelude after modules that cause warnings due to AMP change
2015-12-06allow using `check` on a UncheckedProperty, which yields a PropertyJoey Hess
2015-12-05typoJoey Hess
2015-12-05remove trivialJoey Hess
2015-12-05UncheckedProperty for cmdProperty et alJoey Hess
* Properties that run an arbitrary command, such as cmdProperty and scriptProperty are converted to use UncheckedProperty, since they cannot tell on their own if the command truely made a change or not. (API Change) Transition guide: - When GHC complains about an UncheckedProperty, add: `assume` MadeChange - Since these properties used to always return MadeChange, that change is always safe to make. - Or, if you know that the command should modifiy a file, use: `changesFile` filename * A few properties have had their Result improved, for example Apt.buldDep and Apt.autoRemove now check if a change was made or not.
2015-12-05Added UncheckedProperty type, along with unchecked to indicate a Property ↵Joey Hess
needs its result checked, and checkResult and changesFile to check for changes.
2015-10-19simplify using type safe castJoey Hess
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-17use Info to detect controller loopsJoey Hess
Much less invasive than the other implementation.
2015-10-17newtype info allows deriving monoidJoey Hess
2015-10-16Added --unset-unusedJoey 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-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)
2015-09-30change HostContext for containersJoey Hess
Privdata that uses HostContext inside a container will now have the name of the container as its context, rather than the name of the host(s) where the container is used. This allows eg, having different passwords for a user in different containers. Note that previously, propellor would prompt using the container name as the context, but not actually use privdata using that context; so this is a bug fix. I don't entirely like the implementation; I had to put the code to change the context in PropAccum, and it's not generalized past PrivInfo.
2015-09-23Added --rm-key.Joey Hess
2015-09-16Types.Dns: simplify canonicalGroupFélix Sipma
Signed-off-by: Félix Sipma <felix.sipma@no-log.org>
2015-09-15documentationJoey Hess
2015-09-15add PTR record type to Propellor.Types.DNS.RecordFélix Sipma
- add canonicalIP and reverseIP to Propellor.Types.Dns - remove corresponding canonical and revIP from Propellor.Property.Unbound - Propellor.Property.Dns: convert rValue, rField and genRecord to return Maybe String Signed-off-by: Félix Sipma <felix.sipma@no-log.org>
2015-09-14Allow storing arbitrary ByteStrings in PrivData, extracted using ↵Joey Hess
privDataByteString.
2015-09-14clean up privdata excess/lacking newline issueJoey Hess
* PrivData converted to newtype (API change). * Stopped stripping trailing newlines when setting PrivData; this was previously done to avoid mistakes when pasting eg passwords with an unwanted newline. Instead, PrivData consumers should use either privDataLines or privDataVal, to extract respectively lines or a value (without internal newlines) from PrivData.
2015-09-13Follow some hlint suggestions.Mario Lang
2015-09-08better Show for InfoJoey Hess
2015-09-06Added Propellor.Property.Rsync. WIP; untestedJoey Hess
Convert Info to use Data.Dynamic, so properties can export and consume info of any type that is Typeable and a Monoid, including data types private to a module. (API change) Thanks to Joachim Breitner for the idea.
2015-06-29Added --unset to delete a privdata field.Joey Hess
2015-06-01add BoundJoey Hess
2015-06-01reorganize Port type for systemd can use itJoey Hess
2015-04-22API change: Added User and Group newtypes, and Properties that used to use ↵Joey Hess
the type UserName = String were changed to use them. Note that UserName is kept and PrivData still uses it in its sum type. This is to avoid breaking PrivData serialization.
2015-04-19jessie is almost ready to be the new debian stable, update a few examplesJoey Hess
no behavior changes
2015-04-02Make propellor resistent to changes to shared libraries, such as libffiJoey Hess
* Make propellor resistent to changes to shared libraries, such as libffi, which might render the propellor binary unable to run. This is dealt with by checking the binary both when running propellor on a remote host, and by Cron.runPropellor. If the binary doesn't work, it will be rebuilt. * Note that since a new switch had to be added to allow testing the binary, upgrading to this version will cause a rebuild from scratch of propellor.
2015-01-19split out types to improve haddock for Propellor.TypesJoey Hess
2015-01-15Add descriptions of how to set missing fields to --list-fields output. ↵Joey Hess
(Minor API changes)
2015-01-04DNS records for hosts with known ssh public keys now automatically include ↵Joey Hess
SSHFP records.
2015-01-04cleanupJoey Hess
2015-01-04Ssh.hostKeys now also installs any available SshEd25519 keys.Joey Hess
2015-01-04add $INCLUDE of pubkeys before zone file is written, to avoid pogoingJoey Hess
2015-01-04propellor spinJoey Hess
2015-01-04resign zone if keys changeJoey Hess
2015-01-04DNS WIPJoey Hess
2015-01-03add DnsSec privdata typesJoey Hess
2014-12-14broke up big function to describe PrivDataFieldJoey Hess
2014-12-14support for crypted passwords in privdataJoey Hess
* Added CryptPassword to PrivDataField, for password hashes as produced by crypt(3). * User.hasPassword and User.hasSomePassword will now use either a CryptPassword or a Password from privdata, depending on which is set.
2014-12-07Display a warning when ensureProperty is used on a property which has Info ↵Joey Hess
and is so prevented from propigating it. Would much rather a type-based fixed, but this is all I have for now.
2014-12-07more uses for hostContextJoey Hess
2014-12-07Fixed privdata introspection for User.hasPassword and User.hasSomePasswordJoey Hess
This is not a complete fix for the problem that Info doen't propigate from the called property when code does something like: do hostname <- asks hostName ensureProperty $ foo hostname Instead, I just eliminated the need to implement hasPassword that way, by making the PrivData Info use a HostContext which automatically gets the right hostname passed to it. All other uses of withPrivData don't have the problem. It's still possible for the user to run into the problem if they write something like the above, where foo is a property that uses privdata. However, all properties that take a Context now also accept a HostContext, so it's at least less likely the user needs to write that.
2014-12-05spelling typoJoey Hess
2014-11-22Hostname parameters not containing dots are looked up in the DNS to find the ↵Joey Hess
full hostname.