module Propellor.Property.HostingProvider.Exoscale (
distroKernel,
) where
import Propellor.Base
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Grub as Grub
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Reboot as Reboot
type KernelFlavor = String
distroKernel :: KernelFlavor -> Property DebianLike
distroKernel :: KernelFlavor -> Property DebianLike
distroKernel KernelFlavor
kernelflavor = Property DebianLike
go forall i. Property i -> KernelFlavor -> Property i
`flagFile` KernelFlavor
theFlagFile
where
go :: Property
(MetaTypes
(Combine
(Combine
(Combine
(Combine
'[ 'Targeting 'OSDebian, 'Targeting 'OSBuntish]
'[ 'Targeting 'OSDebian, 'Targeting 'OSBuntish,
'Targeting 'OSArchLinux])
'[ 'Targeting 'OSDebian, 'Targeting 'OSBuntish])
'[ 'Targeting 'OSDebian, 'Targeting 'OSBuntish,
'Targeting 'OSArchLinux, 'Targeting 'OSFreeBSD])
'[ 'Targeting 'OSDebian, 'Targeting 'OSBuntish]))
go = forall {k} (metatypes :: k).
SingI metatypes =>
KernelFlavor
-> Props (MetaTypes metatypes) -> Property (MetaTypes metatypes)
combineProperties KernelFlavor
"boots distro kernel" forall a b. (a -> b) -> a -> b
$ Props UnixLike
props
forall {a} p (y :: [a]) (x :: [a]).
(IsProp p, MetaTypes y ~ GetMetaTypes p,
CheckCombinableNote x y (NoteFor ('Text "&"))) =>
Props (MetaTypes x) -> p -> Props (MetaTypes (Combine x y))
& [KernelFlavor] -> Property DebianLike
Apt.installed [KernelFlavor
"grub2", KernelFlavor
"linux-image-" forall a. [a] -> [a] -> [a]
++ KernelFlavor
kernelflavor]
forall {a} p (y :: [a]) (x :: [a]).
(IsProp p, MetaTypes y ~ GetMetaTypes p,
CheckCombinableNote x y (NoteFor ('Text "&"))) =>
Props (MetaTypes x) -> p -> Props (MetaTypes (Combine x y))
& KernelFlavor -> Property Linux
Grub.boots KernelFlavor
"/dev/vda"
forall {a} p (y :: [a]) (x :: [a]).
(IsProp p, MetaTypes y ~ GetMetaTypes p,
CheckCombinableNote x y (NoteFor ('Text "&"))) =>
Props (MetaTypes x) -> p -> Props (MetaTypes (Combine x y))
& Property DebianLike
Grub.mkConfig
forall {a} p (y :: [a]) (x :: [a]).
(IsProp p, MetaTypes y ~ GetMetaTypes p,
CheckCombinableNote x y (NoteFor ('Text "&"))) =>
Props (MetaTypes x) -> p -> Props (MetaTypes (Combine x y))
& KernelFlavor -> [KernelFlavor] -> Property UnixLike
File.hasContent KernelFlavor
theFlagFile [KernelFlavor
""]
forall {a} p (y :: [a]) (x :: [a]).
(IsProp p, MetaTypes y ~ GetMetaTypes p,
CheckCombinableNote x y (NoteFor ('Text "&"))) =>
Props (MetaTypes x) -> p -> Props (MetaTypes (Combine x y))
& Property DebianLike
Reboot.toDistroKernel
theFlagFile :: KernelFlavor
theFlagFile = KernelFlavor
"/etc/propellor-distro-kernel"