| Age | Commit message (Collapse) | Author |
|
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.
|
|
* 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.
|
|
|
|
|
|
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.
|
|
specify an image name and an optional tag.
This also introduces the class ImageIdentifier which is internally
used by some Docker methods.
|
|
variables to containers.
|
|
respectively. They also continue to accept Strings, for backwards compatability.
|
|
Propellor.Property.Cmd, so they are available for use in constricting your own Properties when using propellor as a library.
Several imports of Utility.SafeCommand now redundant.
|
|
|
|
|
|
image name. Image related functions now require a HasImage instance.
|
|
- a property to pull image from standard Docker Hub registry.
- a property to build image from a local directory (with a Dockerfile).
|
|
|
|
* Property has been converted to a GADT, and will be Property NoInfo
or Property HasInfo.
This was done to make sure that ensureProperty is only used on
properties that do not have Info.
Transition guide:
- Change all "Property" to "Property NoInfo" or "Property WithInfo"
(The compiler can tell you if you got it wrong!)
- To construct a RevertableProperty, it is useful to use the new
(<!>) operator
- Constructing a list of properties can be problimatic, since
Property NoInto and Property WithInfo are different types and cannot
appear in the same list. To deal with this, "props" has been added,
and can built up a list of properties of different types,
using the same (&) and (!) operators that are used to build
up a host's properties.
|
|
Not yet used
|
|
|
|
This is more general; it doesn't need to contain a Host.
It would, for example, be possible to make Property itself be an instance
of PropAccum.
|
|
Properties now form a tree, instead of the flat list used before.
This simplifies propigation of Info from the Properties used inside a
container to the outer host; the Property that docks the container on the
host can just have as child properties all the inner Properties, and their
Info can then be gathered recursively. (Although in practice it still needs
to be filtered, since not all Info should propigate out of a container.)
Note that there is no change to how Properties are actually satisfied.
Just because a Property lists some child properties, this does not mean
they always have their propertySatisfy actions run. It's still up to the
parent property to run those actions.
That's necessary so that a container's properties can be satisfied inside
it, not outside. It also allows property combinators to
add the combined Properties to their childProperties list, even if,
like onChange, they don't always run the child properties at all.
Testing: I tested that the exact same Info is calculated before and after
this change, for every Host in my config file.
|
|
docker exec doesn't enter a chroot.
|
|
where Info is correctly propigated. Better approach needed.
|
|
|
|
|
|
|
|
(cherry picked from commit 1d02d589c79781cc4b0bd82467edbdf64c40f34d)
|
|
|
|
|
|
|
|
|
|
factored out info up-propigation code rom Docker
|
|
Since the containers are no longer on the host list, they were not found
while provisioning, oops.
To fix, had to add to a host's info a map of the containers docked to it.
Unfortunately, that required Propellor.Types.Info be glommed into
Propellor.Types, since it needed to refer to Host.
|
|
Docker containers are now a separate data type, cannot be included in the
main host list, and are instead passed to Docker.docked. (API change)
|
|
|
|
|
|
Lock a lock file while provisioning inside, otherwise propellor could be
running to init the container when the system has just booted, or the
container was just started from being stopped, and at the same time,
propellor run outside the container chains into it to provision.
Previously, simplesh prevented this in a different way.
|
|
|
|
|
|
|
|
And --chain was already not used.
|
|
|
|
package which has been removed in docker.io 1.3.1~dfsg1-2.
|
|
|
|
The problem is it fell back to looking for an alias for the bad hostname,
but to get the aliases, it needs to know which hosts are docked where,
so looped.
|
|
This reverts commit 26bef2486d27b2cde6feda633c6a7509675a3fe5.
|
|
This reverts commit 8d353813bf1e4d0c64f33cf2beed0938eeca92b4.
|
|
This reverts commit ac7b182b5a0f3711414757d05bb461385516e700.
|
|
|
|
This reverts commit 80f5b53f1b7fdc876d5e45df68c29f53bd9666b2.
|
|
This reverts commit 45ce3a5e8ccf90e357dbaf6e0152daa4de88b7fd.
|
|
|