parameters:
  linux:
    system:
      config:
        jenkins_master:
          grains:
            fqdn: dummy
          pillar:
            jenkins:
              master:
                home: /srv/volumes/jenkins
                approved_scripts:
                  - field java.lang.String value
                  - field java.util.ArrayList size
                  - method com.cloudbees.jenkins.plugins.sshcredentials.SSHUserPrivateKey getPrivateKey
                  - method com.cloudbees.plugins.credentials.common.IdCredentials getId
                  - method com.cloudbees.plugins.credentials.common.PasswordCredentials getPassword
                  - method com.cloudbees.plugins.credentials.common.UsernameCredentials getUsername
                  - method groovy.json.JsonBuilder toPrettyString
                  - method groovy.json.JsonSlurperClassic parseText java.lang.String
                  - method groovy.lang.GString getBytes
                  - method groovy.lang.GroovyObject getProperty java.lang.String
                  - method hudson.model.Run getEnvironment
                  - method java.io.File getAbsolutePath
                  - method java.io.File getName
                  - method java.io.File getParent
                  - method java.io.Writer write java.lang.String
                  - method java.lang.AutoCloseable close
                  - method java.lang.Class isInstance java.lang.Object
                  - method java.lang.Iterable iterator
                  - method java.net.HttpURLConnection getResponseCode
                  - method java.net.HttpURLConnection setRequestMethod java.lang.String
                  - method java.net.URI getHost
                  - method java.net.URI getPort
                  - method java.net.URL openConnection
                  - method java.net.URLConnection getHeaderField java.lang.String
                  - method java.net.URLConnection getInputStream
                  - method java.net.URLConnection getOutputStream
                  - method java.net.URLConnection setDoOutput boolean
                  - method java.net.URLConnection setRequestProperty java.lang.String java.lang.String
                  - method java.util.LinkedHashMap$LinkedHashIterator hasNext
                  - method java.util.Map size
                  - method java.util.regex.MatchResult group int
                  - method java.util.regex.Matcher matches
                  - method java.util.regex.Pattern matcher java.lang.CharSequence
                  - method org.jenkinsci.plugins.workflow.job.WorkflowRun doStop
                  - method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper build
                  - new groovy.json.JsonBuilder java.lang.Object
                  - new groovy.json.JsonSlurperClassic
                  - new java.io.File java.lang.String
                  - new java.io.OutputStreamWriter java.io.OutputStream
                  - new java.lang.Exception java.lang.String
                  - new java.lang.InterruptedException
                  - new java.net.URI java.lang.String
                  - new java.util.Date
                  - staticField groovy.io.FileType FILES
                  - staticMethod com.cloudbees.plugins.credentials.CredentialsProvider lookupCredentials java.lang.Class hudson.model.ItemGroup
                  - staticMethod java.lang.System getenv java.lang.String
                  - staticMethod jenkins.model.Jenkins getInstance
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods collect java.util.Map groovy.lang.Closure
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods eachFile java.io.File groovy.io.FileType groovy.lang.Closure
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods get java.util.Map java.lang.Object java.lang.Object
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.Iterable int
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.String int
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getBytes java.io.File
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getText java.io.InputStream
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods hasProperty java.lang.Object java.lang.String
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods iterator java.lang.Object
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods iterator java.lang.Object[]
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.lang.Iterable
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.lang.Object
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.util.Collection
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods putAt java.lang.Object java.lang.String java.lang.Object
                  - staticMethod org.codehaus.groovy.runtime.EncodingGroovyMethods encodeBase64 byte[]
                  - staticMethod org.codehaus.groovy.runtime.ScriptBytecodeAdapter bitwiseNegate java.lang.Object
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods println java.lang.Object java.lang.Object
                  - method hudson.PluginWrapper getShortName
                  - method hudson.PluginManager getPlugins
                  - method jenkins.model.Jenkins getPluginManager
                  - method hudson.model.ItemGroup getItem java.lang.String
                  - method hudson.model.Job getLastBuild
                  - method hudson.model.Run getResult
                  - method hudson.model.Job getBuilds
                  - staticMethod java.lang.String format java.lang.String java.lang.Object[]
                  - staticMethod java.util.regex.Pattern quote java.lang.String
                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods findAll java.util.List groovy.lang.Closure
                  - method java.util.Collection remove java.lang.Object
                  - staticMethod java.lang.System exit int

