Improve names used for definitions in externalServices.prs
This commit is contained in:
parent
ed12c0883e
commit
b373d3440a
|
@ -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„„„„„
|
||||
´³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„„„„„
|
|
@ -3,21 +3,20 @@ embeddedType EntityRef.Cap .
|
|||
|
||||
Service = DaemonService .
|
||||
|
||||
DaemonService = <daemon @id DaemonId> .
|
||||
DaemonService = <daemon @id any> .
|
||||
DaemonProcess = <daemon @id any @config Process>.
|
||||
|
||||
DaemonProcess = <daemon @id DaemonId @config DaemonSpec>.
|
||||
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 {} .
|
||||
|
|
|
@ -34,18 +34,18 @@ fn cannot_start<R>() -> Result<R, Error> {
|
|||
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<String>) -> 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(), <daemon #(service.id.0) $config>, {
|
||||
enclose!((unready_configs, completed_processes) during!(t, config_ds, language(), <daemon #(service.id) $config>, {
|
||||
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::<DaemonSpec>(&config) {
|
||||
match language().parse::<Process>(&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(());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue