language-puppet-1.3.8.1: Tools to parse and evaluate the Puppet DSL.

Safe HaskellNone
LanguageHaskell98

Puppet.Interpreter.Resolve

Contents

Description

This module is all about converting and resolving foreign data into the fully exploitable corresponding data type. The main use case is the conversion of Expression to PValue.

Synopsis

Pure resolution functions

getVariable #

Arguments

:: Container ScopeInformation

The whole scope data.

-> Text

Current scope name.

-> Text

Full variable name.

-> Either Doc PValue 

A pure function for resolving variables.

pValue2Bool :: PValue -> Bool #

Turns a PValue into a Bool, as explained in the reference documentation.

Monadic resolution functions

resolveVariable :: Text -> InterpreterMonad PValue #

Resolves a variable, or throws an error if it can't.

resolveExpression :: Expression -> InterpreterMonad PValue #

The main resolution function : turns an Expression into a PValue, if possible.

resolveValue :: UnresolvedValue -> InterpreterMonad PValue #

Resolves an UnresolvedValue (terminal for the Expression data type) into a PValue

resolvePValueString :: PValue -> InterpreterMonad Text #

Turns strings, numbers and booleans into Text, or throws an error.

resolvePValueNumber :: PValue -> InterpreterMonad Scientific #

Turns everything it can into a number, or throws an error

resolveExpressionString :: Expression -> InterpreterMonad Text #

resolveExpressionString = resolveExpression >=> resolvePValueString

runHiera :: Text -> HieraQueryType -> InterpreterMonad (Maybe PValue) #

A hiera helper function, that will throw all Hiera errors and log messages to the main monad.

isNativeType :: Text -> InterpreterMonad Bool #

A simple helper that checks if a given type is native or a define.

Search expression management

checkSearchExpression :: RSearchExpression -> Resource -> Bool #

Checks whether a given Resource matches a RSearchExpression. Note that the expression doesn't check for type, so you must filter the resources by type beforehand, if needs be.

searchExpressionToPuppetDB :: Text -> RSearchExpression -> Query ResourceField #

Turns a resource type and RSearchExpression into something that can be used in a PuppetDB query.

Higher order puppet functions handling

hfGenerateAssociations :: HOLambdaCall -> InterpreterMonad [[(Text, PValue)]] #

Generates variable associations for evaluation of blocks. Each item corresponds to an iteration in the calling block.

hfSetvars :: [(Text, PValue)] -> InterpreterMonad (Container (Pair (Pair PValue PPosition) CurContainerDesc)) #

Sets the proper variables, and returns the scope variables the way they were before being modified. This is a hack that ensures that variables are local to the new scope.

It doesn't work at all like other Puppet parts, but consistency isn't really expected here ...

hfRestorevars :: Container (Pair (Pair PValue PPosition) CurContainerDesc) -> InterpreterMonad () #

Restores what needs restoring. This will erase all allocations.

toNumbers :: PValue -> PValue -> Maybe NumberPair #

Tries to convert a pair of PValues into Numbers, as defined in attoparsec. If the two values can be converted, it will convert them so that they are of the same type

fixResourceName #

Arguments

:: Text

Resource type

-> Text

Resource name

-> Text 

Converts class resource names to lowercase (fix for the jenkins plugin).

datatypeMatch :: DataType -> PValue -> Bool #

Checks that a value matches a puppet datatype