summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess2015-05-12 11:06:51 -0400
committerJoey Hess2015-05-12 11:06:51 -0400
commit40fc41b8c1c302f8384f38ba9683a09aa64570e8 (patch)
tree7d423ae5d779e524864eb3d653cd024e6d6bec7c
parenta1926ac2d08c79a131f2619e23caddeb05757f92 (diff)
parent04d04fe9174563fef2276fc66235074ac2a3392f (diff)
Merge branch 'joeyconfig'
-rw-r--r--debian/changelog2
-rw-r--r--src/Propellor/Property/Docker.hs25
2 files changed, 25 insertions, 2 deletions
diff --git a/debian/changelog b/debian/changelog
index 37d31938..dc3b09de 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,8 @@ propellor (2.5.0) UNRELEASED; urgency=medium
* cmdProperty' renamed to cmdPropertyEnv to make way for a new,
more generic cmdProperty' (API change)
+ * Add docker image related properties.
+ Thanks, Antoine Eiche.
-- Joey Hess <id@joeyh.name> Thu, 07 May 2015 12:08:34 -0400
diff --git a/src/Propellor/Property/Docker.hs b/src/Propellor/Property/Docker.hs
index 6ca5005c..745b5622 100644
--- a/src/Propellor/Property/Docker.hs
+++ b/src/Propellor/Property/Docker.hs
@@ -11,12 +11,14 @@ module Propellor.Property.Docker (
configured,
container,
docked,
+ imageBuilt,
+ imagePulled,
memoryLimited,
garbageCollected,
tweaked,
Image,
ContainerName,
- Container,
+ Container(..),
-- * Container configuration
dns,
hostname,
@@ -43,6 +45,7 @@ import Propellor.Types.Docker
import Propellor.Types.CmdLine
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
+import qualified Propellor.Property.Cmd as Cmd
import qualified Propellor.Shim as Shim
import Utility.SafeCommand
import Utility.Path
@@ -76,7 +79,10 @@ configured = prop `requires` installed
type ContainerName = String
-- | A docker container.
-data Container = Container Image Host
+data Container = Container
+ { containerImage :: Image
+ , containerHost :: Host
+ }
instance PropAccum Container where
(Container i h) & p = Container i (h & p)
@@ -135,6 +141,21 @@ docked ctr@(Container _ h) =
]
]
+-- | Build the image from a directory containing a Dockerfile.
+imageBuilt :: FilePath -> Image -> Property NoInfo
+imageBuilt directory image = describe built msg
+ where
+ msg = "docker image " ++ image ++ " built from " ++ directory
+ built = Cmd.cmdProperty' dockercmd ["build", "--tag", image, "./"] workDir
+ workDir p = p { cwd = Just directory }
+
+-- | Pull the image from the standard Docker Hub registry.
+imagePulled :: Image -> Property NoInfo
+imagePulled image = describe pulled msg
+ where
+ msg = "docker image " ++ image ++ " pulled"
+ pulled = Cmd.cmdProperty dockercmd ["pull", image]
+
propigateContainerInfo :: (IsProp (Property i)) => Container -> Property i -> Property HasInfo
propigateContainerInfo ctr@(Container _ h) p = propigateContainer ctr p'
where