sandwich-contexts-kubernetes
Safe HaskellNone
LanguageHaskell2010

Test.Sandwich.Contexts.Kubernetes.Images

Description

Functions for managing images on a Kubernetes cluster.

Synopsis

Introduce a set of images

introduceImages Source #

Arguments

:: forall context (m :: Type -> Type). (HasCallStack, KubernetesClusterBasicWithoutReader context m) 
=> [ImageLoadSpec]

Images to load

-> SpecFree (LabelValue "kubernetesClusterImages" [Text] :> context) m () 
-> SpecFree context m () 

Introduce a list of images into a Kubernetes cluster. Stores the list of transformed image names under the "kubernetesClusterImages" label.

Query images

getLoadedImages Source #

Arguments

:: (HasCallStack, KubernetesClusterBasic context m) 
=> m (Set Text)

List of image names

Get the images loaded onto the cluster.

getLoadedImages' Source #

Arguments

:: (HasCallStack, KubernetesBasic context m) 
=> KubernetesClusterContext

Cluster context

-> m (Set Text)

List of image names

Same as getLoadedImages, but allows you to pass in the KubernetesClusterContext.

clusterContainsImage Source #

Arguments

:: (HasCallStack, KubernetesClusterBasic context m) 
=> Text

Image

-> m Bool 

Test if a cluster has a given image loaded.

clusterContainsImage' Source #

Arguments

:: (HasCallStack, MonadUnliftIO m, MonadLogger m) 
=> KubernetesClusterContext

Cluster context

-> Text

Image

-> m Bool 

Same as clusterContainsImage, but allows you to pass in the KubernetesClusterContext.

Load images

loadImage Source #

Arguments

:: (HasCallStack, MonadFail m, KubernetesClusterBasic context m) 
=> ImageLoadSpec

Image load spec

-> m Text

The loaded image name

Load an image into a Kubernetes cluster. This will load the image onto the cluster and return the modified image name (i.e. the name by which the cluster knows the image).

loadImage' Source #

Arguments

:: (HasCallStack, MonadFail m, KubernetesBasic context m) 
=> KubernetesClusterContext

Cluster context

-> ImageLoadSpec

Image load spec

-> m Text

The loaded image name

Same as loadImage, but allows you to pass in the KubernetesClusterContext.

Load images if not present

loadImageIfNecessary Source #

Arguments

:: (HasCallStack, MonadFail m, KubernetesClusterBasic context m) 
=> ImageLoadSpec

Image load spec

-> m () 

Same as loadImage, but first checks if the given image is already present on the cluster.

loadImageIfNecessary' Source #

Arguments

:: (HasCallStack, MonadFail m, KubernetesBasic context m) 
=> KubernetesClusterContext

Cluster context

-> ImageLoadSpec

Image load spec

-> m ()

The transformed image name

Same as loadImage, but allows you to pass in the KubernetesClusterContext.

Retry helpers

withImageLoadRetry :: (MonadLoggerIO m, MonadMask m) => ImageLoadSpec -> m a -> m a Source #

A combinator to wrap around your loadImage or loadImageIfNecessary calls to retry on failure. Image loads sometimes fail on Minikube (version 1.33.0 at time of writing).

withImageLoadRetry' :: (MonadLoggerIO m, MonadMask m) => RetryPolicyM m -> ImageLoadSpec -> m a -> m a Source #

Same as withImageLoadRetry, but allows you to specify the retry policy.

Util

findAllImages :: Text -> [Text] Source #

Find all image references in a chunk of YAML containing multiple sections.

findAllImages' :: Text -> [Text] Source #

Find all image references in a single chunk of YAML.

Types

kubernetesClusterImages :: Label "kubernetesClusterImages" [Text] Source #

type HasKubernetesClusterImagesContext context = HasLabel context "kubernetesClusterImages" [Text] Source #

data ImageLoadSpec Source #

Constructors

ImageLoadSpecTarball FilePath

A .tar or .tar.gz file

ImageLoadSpecDocker

An image pulled via Docker

ImageLoadSpecPodman

An image pulled via Podman