Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 10 additions & 30 deletions bench/tx-generator/src/Cardano/TxGenerator/Setup/NodeConfig.hs
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,18 @@ module Cardano.TxGenerator.Setup.NodeConfig
import Cardano.Api (BlockType (..), ProtocolInfoArgs (..))

import qualified Cardano.Ledger.Api.Transition as Ledger (tcShelleyGenesisL)
import Cardano.Node.Configuration.Adapter (nodeConfigurationFromFile)
import Cardano.Node.Configuration.POM
import Cardano.Node.Handlers.Shutdown (ShutdownConfig (..))
import Cardano.Node.Protocol.Cardano
import Cardano.Node.Protocol.Types (SomeConsensusProtocol (..))
import Cardano.Node.Types (ConfigYamlFilePath (..), GenesisFile, KESSource (..),
NodeProtocolConfiguration (..), NodeShelleyProtocolConfiguration (..),
ProtocolFilepaths (..))
import Cardano.Node.Types (GenesisFile, NodeProtocolConfiguration (..),
NodeShelleyProtocolConfiguration (..))
import Cardano.TxGenerator.Types
import qualified Ouroboros.Consensus.Cardano.Node as Consensus

import Control.Applicative (Const (Const), getConst)
import Control.Monad.Trans.Except (runExceptT)
import Data.Bifunctor (first)
import Data.Monoid


-- | extract genesis from a Cardano protocol
Expand Down Expand Up @@ -53,29 +51,11 @@ mkConsensusProtocol nodeConfig =
<$> runExceptT (mkSomeConsensusProtocolCardano byronConfig shelleyConfig alonzoConfig conwayConfig dijkstraConfig hardforkConfig checkpointsConfig Nothing)

-- | Creates a NodeConfiguration from a config file;
-- the result is devoid of any keys/credentials
-- the result is devoid of any keys/credentials.
--
-- The configuration is parsed and resolved through the @cardano-config@ package
-- (via "Cardano.Node.Configuration.Adapter"), applying no CLI overrides, so the
-- credential and socket paths are left unset.
mkNodeConfig :: FilePath -> IO (Either TxGenError NodeConfiguration)
mkNodeConfig configFp_
= do
configYamlPc <- parseNodeConfigurationFP . Just $ configFp
return
$ first (TxGenError . ("mkNodeConfig: " ++))
$! makeNodeConfiguration (configYamlPc <> filesPc)
where
configFp = ConfigYamlFilePath configFp_

filesPc :: PartialNodeConfiguration
filesPc = defaultPartialNodeConfiguration
{ pncProtocolFiles = Last . Just $
ProtocolFilepaths
{ byronCertFile = Just ""
, byronKeyFile = Just ""
, shelleyKESSource = Just (KESKeyFilePath "")
, shelleyVRFFile = Just ""
, shelleyCertFile = Just ""
, shelleyBulkCredsFile = Just ""
}
, pncValidateDB = Last $ Just False
, pncShutdownConfig = Last $ Just $ ShutdownConfig Nothing Nothing
, pncConfigFile = Last $ Just configFp
}
mkNodeConfig configFp =
first (TxGenError . ("mkNodeConfig: " ++)) <$> nodeConfigurationFromFile configFp
8 changes: 8 additions & 0 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -182,3 +182,11 @@ source-repository-package
location: https://github.com/f-f/ekg-forward
tag: b24b3aba2806ce223c62f8ce3e267ec92dcc52e2
--sha256: sha256-s5Hxxm04HmFVmdBjAnFEsJEhTqr5Z/uiB4K1s2VaVwE=

source-repository-package
type: git
location: https://github.com/IntersectMBO/cardano-base
tag: 8761e5c7ad09935376ec440cf33919b7544b5975
--sha256: sha256-uMExJzjeRB3DZi27zBgfdXArxiNen4e9poavE58atuI=
subdir:
cardano-config
3 changes: 1 addition & 2 deletions cardano-node-capi/cardano-node-capi.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ library
import: project-config
exposed-modules: Node
build-depends: base >= 4.14 && < 5
, aeson
, bytestring
, cardano-config
, cardano-node
, optparse-applicative
hs-source-dirs: src
12 changes: 6 additions & 6 deletions cardano-node-capi/src/Node.hs
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
module Node where

import Cardano.Node.Parsers (nodeCLIParser, parserHelpHeader, parserHelpOptions,
renderHelpDoc)
import qualified Cardano.Configuration as CC
import Cardano.Node.Run (runNode)

import Data.Aeson (eitherDecodeStrict)
import Data.ByteString.Char8 (pack)
import Options.Applicative

import Foreign.C (CString, peekCString)
Expand All @@ -19,10 +16,13 @@ foreign export ccall "runNode" crunNode :: Int -> Ptr CString -> IO ()
crunNode :: Int -> Ptr CString -> IO ()
crunNode argc argv = peekArray argc argv >>= mapM peekCString >>= \args ->
case execParserPure pref opts args of
Success pnc -> runNode pnc
Success cli -> runNode cli
Failure f -> print f
CompletionInvoked _ -> putStrLn "Completion Invoked?"
where
pref = prefs showHelpOnEmpty
opts = info nodeCLIParser
opts = info (nodeRunParser <**> helper)
( fullDesc <> progDesc "Start node of the Cardano blockchain." )
nodeRunParser =
subparser $
command "run" (info (CC.parseCliArgs <**> helper) (progDesc "Run the node."))
27 changes: 10 additions & 17 deletions cardano-node-chairman/app/Cardano/Chairman/Commands/Run.hs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import qualified Cardano.Api as Api

import Cardano.Chairman (chairmanTest)
import Cardano.Ledger.BaseTypes (unNonZero)
import Cardano.Node.Configuration.POM (PartialNodeConfiguration (..),
parseNodeConfigurationFP)
import Cardano.Node.Configuration.Adapter (nodeConfigurationFromFile)
import Cardano.Node.Configuration.POM (NodeConfiguration (..))
import Cardano.Node.Protocol
import Cardano.Node.Types
import Cardano.Prelude (ConvertText (..))
Expand All @@ -25,7 +25,6 @@ import Ouroboros.Consensus.Node.ProtocolInfo

import Control.Monad.Class.MonadTime.SI (DiffTime)
import Control.Tracer (Tracer, mkTracer, stdoutTracer, traceWith)
import Data.Monoid (Last (..))
import qualified Data.Time.Clock as DTC
import Options.Applicative
import qualified Options.Applicative as Opt
Expand Down Expand Up @@ -98,13 +97,13 @@ run RunOpts
, caConfigYaml
} = do

configYamlPc <- liftIO . parseNodeConfigurationFP $ Just caConfigYaml
nodeConfig <- liftIO (nodeConfigurationFromFile (unConfigPath caConfigYaml))
>>= either
(\err -> error $ "Error in creating the NodeConfiguration from "
<> unConfigPath caConfigYaml <> ": " <> err)
return

ptclConfig <- case getProtocolConfiguration configYamlPc of
Nothing ->
error $ "Node protocol configuration was not specified "<>
"in Config yaml filepath: " <> unConfigPath caConfigYaml
Just ptclConfig -> return ptclConfig
let ptclConfig = ncProtocolConfig nodeConfig

eitherSomeProtocol <- runExceptT $ mkConsensusProtocol ptclConfig Nothing

Expand Down Expand Up @@ -134,17 +133,11 @@ run RunOpts
return ()
where
getConsensusMode :: SecurityParam -> NodeProtocolConfiguration -> ConsensusModeParams
getConsensusMode (SecurityParam k) ncProtocolConfig =
case ncProtocolConfig of
getConsensusMode (SecurityParam k) ncProtocolConfig' =
case ncProtocolConfig' of
NodeProtocolConfigurationCardano{} ->
CardanoModeParams $ EpochSlots $ unNonZero k

getProtocolConfiguration
:: PartialNodeConfiguration
-> Maybe NodeProtocolConfiguration
getProtocolConfiguration PartialNodeConfiguration{pncProtocolConfig} =
getLast pncProtocolConfig

timed :: Tracer IO a -> Tracer IO a
timed tr = mkTracer $ \a -> do
ts <- DTC.getCurrentTime
Expand Down
26 changes: 7 additions & 19 deletions cardano-node/app/cardano-node.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,20 @@
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}

import qualified Cardano.Configuration as CC
import qualified Cardano.Crypto.Init as Crypto
import Cardano.Git.Rev (gitRev)
import Cardano.Node.Configuration.POM (PartialNodeConfiguration (..))
import Cardano.Node.Handlers.TopLevel
import Cardano.Node.Parsers (nodeCLIParser)
import Cardano.Node.Run (runNode)
import Cardano.Node.Tracing.Documentation (TraceDocumentationCmd (..),
parseTraceDocumentationCmd, runTraceDocumentationCmd)

import Data.Monoid (Last (getLast))
import qualified Data.Text as Text
import qualified Data.Text.IO as Text
import Data.Version (showVersion)
import Options.Applicative
import qualified Options.Applicative as Opt
import System.Info (arch, compilerName, compilerVersion, os)
import System.IO (hPutStrLn, stderr)

import Paths_cardano_node (version)

Expand All @@ -32,28 +29,16 @@ main = do
cmd <- Opt.customExecParser p opts

case cmd of
RunCmd args -> do
warnIfSet args pncMaybeMempoolCapacityOverride "mempool-capacity-override" "MempoolCapacityBytesOverride"
runNode args
RunCmd args -> runNode args
TraceDocumentation tdc -> runTraceDocumentationCmd tdc
VersionCmd -> runVersionCommand

where
p = Opt.prefs Opt.showHelpOnEmpty

warnIfSet :: PartialNodeConfiguration -> (PartialNodeConfiguration -> Last a) -> String -> String -> IO ()
warnIfSet args f name key =
maybe
(pure ())
(\_ -> hPutStrLn stderr $ "WARNING: Option --" ++ name ++ " was set via CLI flags.\
\ This CLI flag will be removed in upcoming node releases.\
\ Please, set this configuration option in the configuration file instead with key " ++ key ++ ".")
$ getLast
$ f args

opts :: Opt.ParserInfo Command
opts =
Opt.info (fmap RunCmd nodeCLIParser
Opt.info (fmap RunCmd nodeRunParser
<|> fmap TraceDocumentation parseTraceDocumentationCmd
<|> parseVersionCmd
<**> helper)
Expand All @@ -62,8 +47,11 @@ main = do
Opt.progDesc "Start node of the Cardano blockchain."
)

-- | The node's CLI, parsed by @cardano-config@, under the @run@ subcommand.
nodeRunParser :: Parser CC.CliArgs
nodeRunParser = Opt.subparser $ command' "run" "Run the node." CC.parseCliArgs

data Command = RunCmd PartialNodeConfiguration
data Command = RunCmd CC.CliArgs
| TraceDocumentation TraceDocumentationCmd
| VersionCmd

Expand Down
7 changes: 4 additions & 3 deletions cardano-node/cardano-node.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,15 @@ library

hs-source-dirs: src

exposed-modules: Cardano.Node.Configuration.NodeAddress
exposed-modules: Cardano.Node.Configuration.Adapter
Cardano.Node.Configuration.NodeAddress
Cardano.Node.Configuration.POM
Cardano.Node.Configuration.LedgerDB
Cardano.Node.Configuration.Socket
Cardano.Node.Configuration.TopologyP2P
Cardano.Node.Handlers.Shutdown
Cardano.Node.Handlers.TopLevel
Cardano.Node.Orphans
Cardano.Node.Parsers
Cardano.Node.Pretty
Cardano.Node.Protocol
Cardano.Node.Protocol.Alonzo
Expand Down Expand Up @@ -124,6 +124,7 @@ library
, base16-bytestring
, bytestring
, cardano-api ^>= 11.3
, cardano-config
, cardano-data
, cardano-crypto-class ^>=2.5
, cardano-crypto-wrapper
Expand Down Expand Up @@ -188,7 +189,6 @@ library
, transformers
, transformers-except
, typed-protocols:{typed-protocols, stateful} >= 1.2
, yaml

executable cardano-node
import: project-config
Expand All @@ -206,6 +206,7 @@ executable cardano-node
autogen-modules: Paths_cardano_node

build-depends: base
, cardano-config
, cardano-crypto-class
, cardano-git-rev
, cardano-node
Expand Down
Loading
Loading