{-# LANGUAGE GADTs #-} {-| Highest-level build functions and and B9-re-exports. -} module B9.Builder ( module B9.B9Monad , module B9.ConfigUtils , module B9.B9Config , module B9.ExecEnv , module B9.DiskImages , module B9.DiskImageBuilder , module B9.ShellScript , module B9.Repository , module B9.RepositoryIO , module B9.ArtifactGenerator , module B9.ArtifactGeneratorImpl , module B9.Vm , module B9.VmBuilder , module B9.Content.AST , module B9.Content.StringTemplate , module B9.Content.ErlTerms , module B9.Content.ErlangPropList , module B9.Content.YamlObject , module B9.Content.Generator , module B9.QCUtil , buildArtifacts ) where import Data.Monoid import Text.Printf ( printf ) import Text.Show.Pretty (ppShow) import B9.B9Monad import B9.ConfigUtils import B9.B9Config import B9.ExecEnv import B9.DiskImages import B9.DiskImageBuilder import B9.ShellScript import B9.Repository import B9.RepositoryIO import B9.ArtifactGenerator import B9.ArtifactGeneratorImpl import B9.Vm import B9.VmBuilder import B9.QCUtil import B9.Content.AST import B9.Content.StringTemplate import B9.Content.ErlTerms import B9.Content.ErlangPropList import B9.Content.YamlObject import B9.Content.Generator buildArtifacts :: ArtifactGenerator -> ConfigParser -> B9Config -> IO Bool buildArtifacts artifactGenerator cfgParser cliCfg = withB9Config cfgParser cliCfg $ \cfg -> run cfgParser cfg $ do infoL "BUILDING ARTIFACTS" getConfig >>= traceL . printf "USING BUILD CONFIGURATION: %v" . ppShow assemble artifactGenerator return True withB9Config :: ConfigParser -> B9Config -> (B9Config -> IO Bool) -> IO Bool withB9Config cfgParser cliCfg f = do let parsedCfg' = parseB9Config cfgParser case parsedCfg' of Left e -> do putStrLn (printf "B9 Failed to start: %s" e) return False Right parsedCfg -> let cfg = defaultB9Config <> parsedCfg <> cliCfg in f cfg {- xxx :: ArtifactGenerator xxx = Each [("domain", ["tec.lbaum.eu" ,"test.meetyoo.de"]) ,("altdomain", ["tec.lbaum.eu" ,"testyoo.de"]) ,("ip_prefix", ["10.1.40" ,"192.168.111"]) ,("ip_prefix_erl", ["10,1,40" ,"192,168,111"]) ,("chassis_config", ["COMMON/chassis/switchraumOG4-motorola" ,"COMMON/chassis/meetyoo-test"]) ,("sipstack_config", ["COMMON/sipstack/lbm-QSC" ,"COMMON/sipstack/meetyoo-test"]) ,("outbound_proxies_config", ["COMMON/outbound_proxies/lbm-QSC" ,"COMMON/outbound_proxies/meetyoo-test"]) ] [Let [("dns","ns1.${domain}") ,("dns_ip", "${ip_prefix}.10") ,("gw", "lb-gw1.${domain}") ,("gw_ip","${ip_prefix}.254") ,("syslog","lb-log1.${domain}") ,("syslog_ip", "${ip_prefix}.110") ,("mail", "mail.${altdomain}") ,("mail_ip", "${ip_prefix}.11") ,("file_server", "lb-ds1.${domain}") ,("file_server_ip", "${ip_prefix}.111") ,("tts", "lb-tts1.${domain}") ,("tts_ip", "${ip_prefix}.102") ,("mrfc", "lb-mrfc1.${domain}") ,("mrfc_ip", "${ip_prefix}.103") ,("sipproxy", "lb-sipproxy1.${domain}") ,("db", "lb-db1.${domain}") ,("db_ip", "${ip_prefix}.101") ,("app", "lb-app1.${domain}") ,("app_ip", "${ip_prefix}.100") ,("freeswitch", "lb-fs1.${domain}") ,("freeswitch_ip", "${ip_prefix}.113") ,("mp1", "lb-mp1.${domain}") ,("mp1_ip", "${ip_prefix}.112") ,("mrfp1", "lb-mrfp1.${domain}") ,("mrfp1_ip", "${ip_prefix}.106") ,("display1", "lb-dp1.${domain}") ,("display1_ip", "${ip_prefix}.105") ,("rtpproxy1", "lb-rp1.${domain}") ,("rtpproxy1_ip", "${ip_prefix}.120")] [Sources [YamlLiteral "user-data" (YamlDict [("write_files" ,YamlEmbedString (ErlangTerms "runtime.config" [Template "${chassis_config}", Template "${sipstack_config}"]))]) ] [Artifact (IID "$hostname") (CloudInit [CI_DIR,CI_ISO] "${out_dir}/mrfp/cloud-init/${instance_id}") ] ]] -}