| Age | Commit message (Collapse) | Author |
|
|
|
|
|
I had 2 MVars both involved in the same lock, and it seemed intractable to
avoid deadlocks with them. STM makes it easy.
At this point, the concurrent process stuff seems to work pretty well, but
I'm not 100% sure it's not got some bugs.
|
|
|
|
Not yet handled: Output from concurrent programs.
|
|
RevertableProperty used to be assumed to contain info, but this is now made
explicit, with RevertableProperty HasInfo or RevertableProperty NoInfo.
Transition guide:
- If you define a RevertableProperty, expect some type check
failures like: "Expecting one more argument to ‘RevertableProperty’".
- Change it to "RevertableProperty NoInfo"
- The compiler will then tell you if it needs "HasInfo" instead.
- If you have code that uses the RevertableProperty constructor
that fails to type check, use the more powerful <!> operator
|
|
|
|
* Various property combinators that combined a RevertableProperty
with a non-revertable property used to yield a RevertableProperty.
This was a bug, because the combined property could not be fully
reverted in many cases. Fixed by making the combined property
instead be a Property HasInfo.
* combineWith now takes an addional parameter to control how revert
actions are combined (API change).
|
|
Note that no output multiplexing is currently done.
|
|
|
|
chroot, and won't affect the hostname of the host system.
|
|
Hmm, do I really need my own type class for LiftPropellor? This seems like
a general problem so I am probably reinventing the wheel.
|
|
|
|
* Where before debootstrapped and bootstrapped took a System parameter,
the os property should now be added to the Chroot.
* Follow-on change to Systemd.container, which now takes a System parameter.
Two motivations for this change:
1. When using ChrootTarball, there may be no particular System that
makes sense for the contents of the tarball, so don't force the user to
specify one.
2. When creating a chroot for a disk image with the same properties
as an existing Host, using hostProperties host to get them, this
allows inheriting the os property from the host, and doesn't require
it to be redundantly passed to Chroot.debootstrapped.
|
|
|
|
|
|
mounts.
|
|
|
|
|
|
|
|
And use when reverting conductor property.
Note that I didn't convert existing ssh properties to RevertablePropery
because the API change was too annoying to work through.
|
|
Propellor.Property.Conductor.
Wow, really.. So, this gets back to having properties that are added to
hosts to say what they conduct. I think that
conducts webservers `before` conducts dnsserver is an important thing to be
able to express.
Untested except for eyeballing the resulting Host data.
|
|
|
|
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.
|
|
|
|
So other ways to bootstrap chroots can easily be added in separate modules.
(API change)
|
|
|
|
|
|
|
|
* 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.
|
|
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)
|
|
via origfile.propellor-new~, instead of to a randomly named temp file.
This allows them to clean up any temp file that may have been left by an
interrupted run of propellor.
Also converted the new isSymlinkedTo property to use the same
implementation, with some simplifications.
|
|
|
|
|
|
|
|
This involved some code changes, including some renaming of instance
methods. (ABI change)
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
executable atomically.
|
|
(because I forgot to release it yesterday..)
|
|
|
|
|
|
|
|
|
|
privDataByteString.
|