propellor 0.9.0 → 0.9.1
raw patch · 10 files changed
+74/−20 lines, 10 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Propellor.Property.Docker: name :: String -> Property
+ Propellor.Info: findHostNoAlias :: [Host] -> HostName -> Maybe Host
+ Propellor.Property: (&^) :: IsProp p => Host -> p -> Host
+ Propellor.Property.Docker: restartAlways :: Property
+ Propellor.Property.Docker: restartNever :: Property
+ Propellor.Property.Docker: restartOnFailure :: Maybe Int -> Property
Files
- CHANGELOG +9/−0
- config-joey.hs +0/−1
- debian/changelog +9/−0
- debian/control +1/−1
- propellor.cabal +1/−1
- src/Propellor/Info.hs +4/−1
- src/Propellor/Property.hs +9/−1
- src/Propellor/Property/Docker.hs +32/−7
- src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs +8/−7
- src/Propellor/Property/SiteSpecific/JoeySites.hs +1/−1
CHANGELOG view
@@ -1,3 +1,12 @@+propellor (0.9.1) unstable; urgency=medium++ * Docker: Add ability to control when containers restart.+ * Docker: Default to always restarting containers, so they come back + up after reboots and docker daemon upgrades.+ * Fix loop when a docker host that does not exist was docked.++ -- Joey Hess <joeyh@debian.org> Fri, 24 Oct 2014 09:57:31 -0400+ propellor (0.9.0) unstable; urgency=medium * Avoid encoding the current stable suite in propellor's code,
config-joey.hs view
@@ -53,7 +53,6 @@ & Apt.buildDep ["git-annex"] `period` Daily & Docker.configured ! Docker.docked hosts "android-git-annex"- ! Docker.docked hosts "webserver" clam :: Host clam = standardSystem "clam.kitenet.net" Unstable "amd64"
debian/changelog view
@@ -1,3 +1,12 @@+propellor (0.9.1) unstable; urgency=medium++ * Docker: Add ability to control when containers restart.+ * Docker: Default to always restarting containers, so they come back + up after reboots and docker daemon upgrades.+ * Fix loop when a docker host that does not exist was docked.++ -- Joey Hess <joeyh@debian.org> Fri, 24 Oct 2014 09:57:31 -0400+ propellor (0.9.0) unstable; urgency=medium * Avoid encoding the current stable suite in propellor's code,
debian/control view
@@ -19,7 +19,7 @@ Maintainer: Joey Hess <joeyh@debian.org> Standards-Version: 3.9.5 Vcs-Git: git://git.kitenet.net/propellor-Homepage: http://joeyh.name/code/propellor/+Homepage: http://propellor.branchable.com/ Package: propellor Architecture: any
propellor.cabal view
@@ -1,5 +1,5 @@ Name: propellor-Version: 0.9.0+Version: 0.9.1 Cabal-Version: >= 1.6 License: BSD3 Maintainer: Joey Hess <joey@kitenet.net>
src/Propellor/Info.hs view
@@ -80,7 +80,10 @@ map (\h -> map (\aka -> (aka, h)) $ S.toList $ _aliases $ hostInfo h) findHost :: [Host] -> HostName -> Maybe Host-findHost l hn = maybe (findAlias l hn) Just (M.lookup hn (hostMap l))+findHost l hn = maybe (findAlias l hn) Just (findHostNoAlias l hn)++findHostNoAlias :: [Host] -> HostName -> Maybe Host+findHostNoAlias l hn = M.lookup hn (hostMap l) findAlias :: [Host] -> HostName -> Maybe Host findAlias l hn = M.lookup hn (aliasMap l)
src/Propellor/Property.hs view
@@ -135,7 +135,7 @@ -- -- Can add Properties and RevertableProperties (&) :: IsProp p => Host -> p -> Host-(Host hn ps as) & p = Host hn (ps ++ [toProp p]) (as <> getInfo p)+(Host hn ps is) & p = Host hn (ps ++ [toProp p]) (is <> getInfo p) infixl 1 & @@ -144,6 +144,14 @@ h ! p = h & revert p infixl 1 !++-- | Like (&), but adds the property as the first property of the host.+-- Normally, property order should not matter, but this is useful+-- when it does.+(&^) :: IsProp p => Host -> p -> Host+(Host hn ps is) &^ p = Host hn ([toProp p] ++ ps) (getInfo p <> is)++infixl 1 &^ -- Changes the action that is performed to satisfy a property. adjustProperty :: Property -> (Propellor Result -> Propellor Result) -> Property
src/Propellor/Property/Docker.hs view
@@ -19,7 +19,6 @@ -- * Container configuration dns, hostname,- name, publish, expose, user,@@ -30,6 +29,9 @@ cpuShares, link, ContainerAlias,+ restartAlways,+ restartOnFailure,+ restartNever, -- * Internal use chain, ) where@@ -106,7 +108,7 @@ let cid = ContainerId hn cn ensureProperties [findContainer mhost cid cn $ a cid] - mhost = findHost hosts (cn2hn cn)+ mhost = findHostNoAlias hosts (cn2hn cn) setup cid (Container image runparams) = provisionContainer cid@@ -150,14 +152,18 @@ mkContainer :: ContainerId -> Host -> Maybe Container mkContainer cid@(ContainerId hn _cn) h = Container <$> fromVal (_dockerImage info)- <*> pure (map (\a -> a hn) (_dockerRunParams info))+ <*> pure (map (\mkparam -> mkparam hn) (_dockerRunParams info)) where info = _dockerinfo $ hostInfo h' h' = h- -- expose propellor directory inside the container+ -- Restart by default so container comes up on+ -- boot or when docker is upgraded.+ &^ restartAlways+ -- Expose propellor directory inside the container. & volume (localdir++":"++localdir)- -- name the container in a predictable way so we- -- and the user can easily find it later+ -- Name the container in a predictable way so we+ -- and the user can easily find it later. This property+ -- comes last, so it cannot be overridden. & name (fromContainerId cid) -- | Causes *any* docker images that are not in use by running containers to@@ -217,7 +223,7 @@ hostname :: String -> Property hostname = runProp "hostname" --- | Set name for container. (Normally done automatically.)+-- | Set name of container. name :: String -> Property name = runProp "name" @@ -273,6 +279,25 @@ -- | A short alias for a linked container. -- Each container has its own alias namespace. type ContainerAlias = String++-- | This property is enabled by default for docker containers configured by+-- propellor; as well as keeping badly behaved containers running,+-- it ensures that containers get started back up after reboot or+-- after docker is upgraded.+restartAlways :: Property+restartAlways = runProp "restart" "always"++-- | Docker will restart the container if it exits nonzero.+-- If a number is provided, it will be restarted only up to that many+-- times.+restartOnFailure :: Maybe Int -> Property+restartOnFailure Nothing = runProp "restart" "on-failure"+restartOnFailure (Just n) = runProp "restart" ("on-failure:" ++ show n)++-- | Makes docker not restart a container when it exits+-- Note that this includes not restarting it on boot!+restartNever :: Property+restartNever = runProp "restart" "no" -- | A container is identified by its name, and the host -- on which it's deployed.
src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs view
@@ -65,6 +65,7 @@ buildDepsApt :: Property buildDepsApt = combineProperties "gitannexbuilder build deps" [ Apt.buildDep ["git-annex"]+ , Apt.installed ["liblockfile-simple-perl"] , buildDepsNoHaskellLibs , "git-annex source build deps installed" ==> Apt.buildDepIn builddir ]@@ -113,17 +114,14 @@ & os osver & Apt.stdSourcesList & Apt.installed ["systemd"]+ & Docker.tweaked & User.accountFor builduser & File.dirExists gitbuilderdir & File.ownerGroup homedir builduser builduser- & buildDepsNoHaskellLibs+ & buildDepsApt & flagFile chrootsetup ("/chrootsetup") `requires` setupgitannexdir- & Docker.tweaked- -- TODO: automate installing haskell libs- -- (Currently have to run- -- git-annex/standalone/android/install-haskell-packages- -- which is not fully automated.)+ & flagFile haskellpkgsinstalled ("/haskellpkgsinstalled") where -- Use git-annex's android chroot setup script, which will install -- ghc-android and the NDK, all build deps, etc, in the home@@ -131,7 +129,10 @@ chrootsetup = scriptProperty [ "cd " ++ gitannexdir ++ " && ./standalone/android/buildchroot-inchroot" ]- osver = System (Debian (Stable "wheezy")) "i386"+ haskellpkgsinstalled = userScriptProperty "builder"+ [ "cd " ++ gitannexdir ++ " && ./standalone/android/install-haskell-packages"+ ]+ osver = System (Debian Testing) "i386" -- once jessie is released, use: (Stable "jessie") -- armel builder has a companion container using amd64 that -- runs the build first to get TH splices. They need
src/Propellor/Property/SiteSpecific/JoeySites.hs view
@@ -72,7 +72,7 @@ oldUseNetShellBox :: Property oldUseNetShellBox = propertyList "olduse.net shellbox" [ oldUseNetInstalled "oldusenet"- , Service.running "oldusenet"+ , Service.running "shellinabox" ] oldUseNetInstalled :: Apt.Package -> Property