From b373d3440a12f1f3e65a81248b76aafbfe450b06 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 30 Sep 2021 15:38:40 +0200 Subject: [PATCH] Improve names used for definitions in externalServices.prs --- syndicate-server/protocols/schema-bundle.bin | 8 +++-- .../protocols/schemas/externalServices.prs | 17 +++++---- syndicate-server/src/services/daemon.rs | 36 +++++++++---------- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/syndicate-server/protocols/schema-bundle.bin b/syndicate-server/protocols/schema-bundle.bin index b0f0c1b..edc2ffe 100644 --- a/syndicate-server/protocols/schema-bundle.bin +++ b/syndicate-server/protocols/schema-bundle.bin @@ -1,3 +1,5 @@ -´³bundle·µ³externalServices„´³schema·³version‘³ definitions·³Service´³refµ„³ DaemonService„³ClearEnv´³orµµ±present´³dict·³clearEnv´³named³clearEnv´³atom³Boolean„„„„„µ±invalid´³dict·³clearEnv´³named³clearEnv³any„„„„µ±absent´³dict·„„„„„³DaemonId³any³EnvValue´³orµµ±set´³atom³String„„µ±remove´³lit€„„µ±invalid³any„„„³ DaemonDir´³orµµ±present´³dict·³dir´³named³dir´³atom³String„„„„„µ±invalid´³dict·³dir´³named³dir³any„„„„µ±absent´³dict·„„„„„³ DaemonEnv´³orµµ±present´³dict·³env´³named³env´³dictof´³refµ„³ EnvVariable„´³refµ„³EnvValue„„„„„„µ±invalid´³dict·³env´³named³env³any„„„„µ±absent´³dict·„„„„„³ -DaemonSpec´³orµµ±simple´³refµ„³ CommandLine„„µ±full´³refµ„³FullDaemonSpec„„„„³ CommandLine´³orµµ±shell´³atom³String„„µ±full´³refµ„³FullCommandLine„„„„³ EnvVariable´³orµµ±string´³atom³String„„µ±symbol´³atom³Symbol„„µ±invalid³any„„„³ ReadyOnStart´³orµµ±present´³dict·³ readyOnStart´³named³ readyOnStart´³atom³Boolean„„„„„µ±invalid´³dict·³ readyOnStart´³named³ readyOnStart³any„„„„µ±absent´³dict·„„„„„³ RestartField´³orµµ±present´³dict·³restart´³named³restart´³refµ„³ RestartPolicy„„„„„µ±invalid´³dict·³restart´³named³restart³any„„„„µ±absent´³dict·„„„„„³ DaemonProcess´³rec´³lit³daemon„´³tupleµ´³named³id´³refµ„³DaemonId„„´³named³config´³refµ„³ -DaemonSpec„„„„„³ DaemonService´³rec´³lit³daemon„´³tupleµ´³named³id´³refµ„³DaemonId„„„„„³ RestartPolicy´³orµµ±always´³lit³always„„µ±onError´³lit³on-error„„µ±all´³lit³all„„„„³FullDaemonSpec´³andµ´³dict·³argv´³named³argv´³refµ„³ CommandLine„„„„´³named³env´³refµ„³ DaemonEnv„„´³named³dir´³refµ„³ DaemonDir„„´³named³clearEnv´³refµ„³ClearEnv„„´³named³ readyOnStart´³refµ„³ ReadyOnStart„„´³named³restart´³refµ„³ RestartField„„„„³FullCommandLine´³ tuplePrefixµ´³named³program´³atom³String„„„´³named³args´³seqof´³atom³String„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³internalServices„´³schema·³version‘³ definitions·³ Milestone´³rec´³lit³ milestone„´³tupleµ´³named³name³any„„„„³ DebtReporter´³lit³ debt-reporter„³ ConfigWatcher´³rec´³lit³config-watcher„´³tupleµ´³named³path´³atom³String„„„„„³TcpRelayListener´³rec´³lit³relay-listener„´³tupleµ´³named³addr´³refµ³TransportAddress„³Tcp„„„„„³UnixRelayListener´³rec´³lit³relay-listener„´³tupleµ´³named³addr´³refµ³TransportAddress„³Unix„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„„„ \ No newline at end of file +´³bundle·µ³externalServices„´³schema·³version‘³ definitions·³Process´³orµµ±simple´³refµ„³ CommandLine„„µ±full´³refµ„³ FullProcess„„„„³Service´³refµ„³ DaemonService„³ClearEnv´³orµµ±present´³dict·³clearEnv´³named³clearEnv´³atom³Boolean„„„„„µ±invalid´³dict·³clearEnv´³named³clearEnv³any„„„„µ±absent´³dict·„„„„„³EnvValue´³orµµ±set´³atom³String„„µ±remove´³lit€„„µ±invalid³any„„„³ +ProcessDir´³orµµ±present´³dict·³dir´³named³dir´³atom³String„„„„„µ±invalid´³dict·³dir´³named³dir³any„„„„µ±absent´³dict·„„„„„³ +ProcessEnv´³orµµ±present´³dict·³env´³named³env´³dictof´³refµ„³ EnvVariable„´³refµ„³EnvValue„„„„„„µ±invalid´³dict·³env´³named³env³any„„„„µ±absent´³dict·„„„„„³ CommandLine´³orµµ±shell´³atom³String„„µ±full´³refµ„³FullCommandLine„„„„³ EnvVariable´³orµµ±string´³atom³String„„µ±symbol´³atom³Symbol„„µ±invalid³any„„„³ FullProcess´³andµ´³dict·³argv´³named³argv´³refµ„³ CommandLine„„„„´³named³env´³refµ„³ +ProcessEnv„„´³named³dir´³refµ„³ +ProcessDir„„´³named³clearEnv´³refµ„³ClearEnv„„´³named³ readyOnStart´³refµ„³ ReadyOnStart„„´³named³restart´³refµ„³ RestartField„„„„³ ReadyOnStart´³orµµ±present´³dict·³ readyOnStart´³named³ readyOnStart´³atom³Boolean„„„„„µ±invalid´³dict·³ readyOnStart´³named³ readyOnStart³any„„„„µ±absent´³dict·„„„„„³ RestartField´³orµµ±present´³dict·³restart´³named³restart´³refµ„³ RestartPolicy„„„„„µ±invalid´³dict·³restart´³named³restart³any„„„„µ±absent´³dict·„„„„„³ DaemonProcess´³rec´³lit³daemon„´³tupleµ´³named³id³any„´³named³config´³refµ„³Process„„„„„³ DaemonService´³rec´³lit³daemon„´³tupleµ´³named³id³any„„„„³ RestartPolicy´³orµµ±always´³lit³always„„µ±onError´³lit³on-error„„µ±all´³lit³all„„„„³FullCommandLine´³ tuplePrefixµ´³named³program´³atom³String„„„´³named³args´³seqof´³atom³String„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³internalServices„´³schema·³version‘³ definitions·³ Milestone´³rec´³lit³ milestone„´³tupleµ´³named³name³any„„„„³ DebtReporter´³lit³ debt-reporter„³ ConfigWatcher´³rec´³lit³config-watcher„´³tupleµ´³named³path´³atom³String„„„„„³TcpRelayListener´³rec´³lit³relay-listener„´³tupleµ´³named³addr´³refµ³TransportAddress„³Tcp„„„„„³UnixRelayListener´³rec´³lit³relay-listener„´³tupleµ´³named³addr´³refµ³TransportAddress„³Unix„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„„„ \ No newline at end of file diff --git a/syndicate-server/protocols/schemas/externalServices.prs b/syndicate-server/protocols/schemas/externalServices.prs index 4108d49..4280b2b 100644 --- a/syndicate-server/protocols/schemas/externalServices.prs +++ b/syndicate-server/protocols/schemas/externalServices.prs @@ -3,21 +3,20 @@ embeddedType EntityRef.Cap . Service = DaemonService . -DaemonService = . +DaemonService = . +DaemonProcess = . -DaemonProcess = . -DaemonId = any . -DaemonSpec = @simple CommandLine / @full FullDaemonSpec . -FullDaemonSpec = +Process = @simple CommandLine / @full FullProcess . +FullProcess = & { argv: CommandLine } - & @env DaemonEnv - & @dir DaemonDir + & @env ProcessEnv + & @dir ProcessDir & @clearEnv ClearEnv & @readyOnStart ReadyOnStart & @restart RestartField . -DaemonEnv = @present { env: { EnvVariable: EnvValue ...:... } } / @invalid { env: any } / @absent {} . -DaemonDir = @present { dir: string } / @invalid { dir: any } / @absent {} . +ProcessEnv = @present { env: { EnvVariable: EnvValue ...:... } } / @invalid { env: any } / @absent {} . +ProcessDir = @present { dir: string } / @invalid { dir: any } / @absent {} . ClearEnv = @present { clearEnv: bool } / @invalid { clearEnv: any } / @absent {} . ReadyOnStart = @present { readyOnStart: bool } / @invalid { readyOnStart: any } / @absent {} . RestartField = @present { restart: RestartPolicy } / @invalid { restart: any } / @absent {} . diff --git a/syndicate-server/src/services/daemon.rs b/syndicate-server/src/services/daemon.rs index 7d48baa..e6e49af 100644 --- a/syndicate-server/src/services/daemon.rs +++ b/syndicate-server/src/services/daemon.rs @@ -34,18 +34,18 @@ fn cannot_start() -> Result { Err("Cannot start daemon process")? } -impl DaemonSpec { - fn elaborate(self) -> FullDaemonSpec { +impl Process { + fn elaborate(self) -> FullProcess { match self { - DaemonSpec::Simple(command_line) => FullDaemonSpec { + Process::Simple(command_line) => FullProcess { argv: *command_line, - env: DaemonEnv::Absent, - dir: DaemonDir::Absent, + env: ProcessEnv::Absent, + dir: ProcessDir::Absent, clear_env: ClearEnv::Absent, ready_on_start: ReadyOnStart::Absent, restart: RestartField::Absent, }, - DaemonSpec::Full(spec) => *spec, + Process::Full(spec) => *spec, } } } @@ -62,7 +62,7 @@ impl CommandLine { } } -struct DaemonProcessInstance { +struct ProcessInstance { name: tracing::Span, cmd: process::Command, announce_presumed_readiness: bool, @@ -71,7 +71,7 @@ struct DaemonProcessInstance { restart_policy: RestartPolicy, } -impl DaemonProcessInstance { +impl ProcessInstance { fn handle_exit(self, t: &mut Activation, error_message: Option) -> ActorResult { let delay = std::time::Duration::from_millis(if let None = error_message { 200 } else { 1000 }); @@ -178,13 +178,13 @@ fn run( Ok(()) }))?; - enclose!((unready_configs, completed_processes) during!(t, config_ds, language(), , { + enclose!((unready_configs, completed_processes) during!(t, config_ds, language(), , { enclose!((unready_configs, completed_processes) |t: &mut Activation| { tracing::debug!(?config, "new config"); counter::adjust(t, &unready_configs, 1); counter::adjust(t, &total_configs, 1); - match language().parse::(&config) { + match language().parse::(&config) { Ok(config) => { tracing::info!(?config); let config = config.elaborate(); @@ -194,9 +194,9 @@ fn run( let mut cmd = process::Command::new(argv.program); cmd.args(argv.args); match config.dir { - DaemonDir::Present { dir } => { cmd.current_dir(dir); () }, - DaemonDir::Absent => (), - DaemonDir::Invalid { dir } => { + ProcessDir::Present { dir } => { cmd.current_dir(dir); () }, + ProcessDir::Absent => (), + ProcessDir::Invalid { dir } => { tracing::error!(?dir, "Invalid working directory"); return cannot_start(); } @@ -211,7 +211,7 @@ fn run( } } match config.env { - DaemonEnv::Present { env } => { + ProcessEnv::Present { env } => { for (k, v) in env { if let Some(env_variable) = match k { EnvVariable::String(k) => Some(k), @@ -234,8 +234,8 @@ fn run( } } } - DaemonEnv::Absent => (), - DaemonEnv::Invalid { env } => { + ProcessEnv::Absent => (), + ProcessEnv::Invalid { env } => { tracing::error!(?env, "Invalid daemon environment"); return cannot_start(); } @@ -262,7 +262,7 @@ fn run( cmd.stderr(std::process::Stdio::inherit()); cmd.kill_on_drop(true); - let process_instance = DaemonProcessInstance { + let process_instance = ProcessInstance { name: tracing::Span::current(), cmd, announce_presumed_readiness, @@ -279,7 +279,7 @@ fn run( Ok(()) } Err(_) => { - tracing::error!(?config, "Invalid DaemonSpec"); + tracing::error!(?config, "Invalid Process specification"); return Ok(()); } }