propellor-5.13: property-based host configuration management in haskell

Safe Haskell | None
Language | Haskell2010

Propellor.Container

Synopsis

- class IsContainer c where
  - containerProperties :: c -> [ChildProperty]
  - containerInfo :: c -> Info
  - setContainerProperties :: c -> [ChildProperty] -> c
- containerProps :: IsContainer c => c -> Props UnixLike
- setContainerProps :: IsContainer c => c -> Props metatypes -> c
- propagateContainer :: (IncludesInfo metatypes ~ 'True, IsContainer c) => String -> c -> (PropagateInfo -> Bool) -> Property metatypes -> Property metatypes
- propagatableInfo :: (PropagateInfo -> Bool) -> Info -> Info
- normalContainerInfo :: PropagateInfo -> Bool
- onlyPrivData :: PropagateInfo -> Bool

# Documentation

class IsContainer c where Source #

Methods

containerProperties :: c -> [ChildProperty] Source #

containerInfo :: c -> Info Source #

setContainerProperties :: c -> [ChildProperty] -> c Source #

#### Instances

Instances details

IsContainer Host Source # |
Instance details Defined in Propellor.Container Methods containerProperties :: Host -> [ChildProperty] Source # containerInfo :: Host -> Info Source # setContainerProperties :: Host -> [ChildProperty] -> Host Source #
IsContainer Container Source # |
Instance details Defined in Propellor.Property.Docker Methods containerProperties :: Container -> [ChildProperty] Source # containerInfo :: Container -> Info Source # setContainerProperties :: Container -> [ChildProperty] -> Container Source #
IsContainer Chroot Source # |
Instance details Defined in Propellor.Property.Chroot Methods containerProperties :: Chroot -> [ChildProperty] Source # containerInfo :: Chroot -> Info Source # setContainerProperties :: Chroot -> [ChildProperty] -> Chroot Source #
IsContainer Container Source # |
Instance details Defined in Propellor.Property.Systemd Methods containerProperties :: Container -> [ChildProperty] Source # containerInfo :: Container -> Info Source # setContainerProperties :: Container -> [ChildProperty] -> Container Source #

containerProps :: IsContainer c => c -> Props UnixLike Source #

Note that the metatype of a container's properties is not retained, so this defaults to UnixLike. So, using this with setContainerProps can add properties to a container that conflict with properties already in it. Use caution when using this; only add properties that do not have restricted targets.

setContainerProps :: IsContainer c => c -> Props metatypes -> c Source #

propagateContainer :: (IncludesInfo metatypes ~ 'True, IsContainer c) => String -> c -> (PropagateInfo -> Bool) -> Property metatypes -> Property metatypes Source #

Adjust the provided Property, adding to its propertyChidren the properties of the provided container.

The Info of the propertyChildren is adjusted to only include info that should be propagated out to the Property.

Any PrivInfo that uses HostContext is adjusted to use the name of the container as its context.

propagatableInfo :: (PropagateInfo -> Bool) -> Info -> Info Source #

Filters out parts of the Info that should not propagate out of a container.

normalContainerInfo :: PropagateInfo -> Bool Source #

onlyPrivData :: PropagateInfo -> Bool Source #