Remove hardcoded milestones and system-layer notions
This commit is contained in:
parent
b556414fec
commit
b09fbdceec
|
@ -3,7 +3,7 @@ ByteString
|
||||||
ProcessDir´³orµµ±present´³dict·³dir´³named³dir´³atom³String„„„„„µ±invalid´³dict·³dir´³named³dir³any„„„„µ±absent´³dict·„„„„„³
|
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´³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µ„³
|
ProcessEnv„„´³named³dir´³refµ„³
|
||||||
ProcessDir„„´³named³clearEnv´³refµ„³ClearEnv„„„„³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µ„³DaemonProcessSpec„„„„„³
DaemonService´³rec´³lit³daemon„´³tupleµ´³named³id³any„„„„³
ProtocolField´³orµµ±present´³dict·³protocol´³named³protocol´³refµ„³Protocol„„„„„µ±invalid´³dict·³protocol´³named³protocol³any„„„„µ±absent´³dict·„„„„„³
RestartPolicy´³orµµ±always´³lit³always„„µ±onError´³lit³on-error„„µ±all´³lit³all„„„„³FullCommandLine´³tuplePrefixµ´³named³program´³atom³String„„„´³named³args´³seqof´³atom³String„„„„³DaemonProcessSpec´³orµµ±simple´³refµ„³CommandLine„„µ±oneShot´³rec´³lit³one-shot„´³tupleµ´³named³setup´³refµ„³CommandLine„„„„„„µ±full´³refµ„³FullDaemonProcess„„„„³FullDaemonProcess´³andµ´³named³process´³refµ„³FullProcess„„´³named³readyOnStart´³refµ„³ReadyOnStart„„´³named³restart´³refµ„³RestartField„„´³named³protocol´³refµ„³
ProtocolField„„„„„³embeddedType´³refµ³ EntityRef„³Cap„„„µ³internalServices„´³schema·³version‘³definitions·³ ConfigEnv´³dictof´³atom³Symbol„³any„³ Milestone´³rec´³lit³ milestone„´³tupleµ´³named³name³any„„„„³DebtReporter´³rec´³lit³
debt-reporter„´³tupleµ´³named³intervalSeconds´³atom³Double„„„„„³
ConfigWatcher´³rec´³lit³config-watcher„´³tupleµ´³named³path´³atom³String„„´³named³env´³refµ„³ ConfigEnv„„„„„³TcpRelayListener´³rec´³lit³relay-listener„´³tupleµ´³named³addr´³refµ³TransportAddress„³Tcp„„´³named³
|
ProcessDir„„´³named³clearEnv´³refµ„³ClearEnv„„„„³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µ„³DaemonProcessSpec„„„„„³
DaemonService´³rec´³lit³daemon„´³tupleµ´³named³id³any„„„„³
ProtocolField´³orµµ±present´³dict·³protocol´³named³protocol´³refµ„³Protocol„„„„„µ±invalid´³dict·³protocol´³named³protocol³any„„„„µ±absent´³dict·„„„„„³
RestartPolicy´³orµµ±always´³lit³always„„µ±onError´³lit³on-error„„µ±all´³lit³all„„„„³FullCommandLine´³tuplePrefixµ´³named³program´³atom³String„„„´³named³args´³seqof´³atom³String„„„„³DaemonProcessSpec´³orµµ±simple´³refµ„³CommandLine„„µ±oneShot´³rec´³lit³one-shot„´³tupleµ´³named³setup´³refµ„³CommandLine„„„„„„µ±full´³refµ„³FullDaemonProcess„„„„³FullDaemonProcess´³andµ´³named³process´³refµ„³FullProcess„„´³named³readyOnStart´³refµ„³ReadyOnStart„„´³named³restart´³refµ„³RestartField„„´³named³protocol´³refµ„³
ProtocolField„„„„„³embeddedType´³refµ³ EntityRef„³Cap„„„µ³internalServices„´³schema·³version‘³definitions·³ ConfigEnv´³dictof´³atom³Symbol„³any„³DebtReporter´³rec´³lit³
debt-reporter„´³tupleµ´³named³intervalSeconds´³atom³Double„„„„„³
ConfigWatcher´³rec´³lit³config-watcher„´³tupleµ´³named³path´³atom³String„„´³named³env´³refµ„³ ConfigEnv„„„„„³TcpRelayListener´³rec´³lit³relay-listener„´³tupleµ´³named³addr´³refµ³TransportAddress„³Tcp„„´³named³
|
||||||
gatekeeper´³embedded´³refµ³
|
gatekeeper´³embedded´³refµ³
|
||||||
gatekeeper„³Resolve„„„„„„³UnixRelayListener´³rec´³lit³relay-listener„´³tupleµ´³named³addr´³refµ³TransportAddress„³Unix„„´³named³
|
gatekeeper„³Resolve„„„„„„³UnixRelayListener´³rec´³lit³relay-listener„´³tupleµ´³named³addr´³refµ³TransportAddress„³Unix„„´³named³
|
||||||
gatekeeper´³embedded´³refµ³
|
gatekeeper´³embedded´³refµ³
|
||||||
|
|
|
@ -6,6 +6,5 @@ DebtReporter = <debt-reporter @intervalSeconds double>.
|
||||||
TcpRelayListener = <relay-listener @addr TransportAddress.Tcp @gatekeeper #!gatekeeper.Resolve> .
|
TcpRelayListener = <relay-listener @addr TransportAddress.Tcp @gatekeeper #!gatekeeper.Resolve> .
|
||||||
UnixRelayListener = <relay-listener @addr TransportAddress.Unix @gatekeeper #!gatekeeper.Resolve> .
|
UnixRelayListener = <relay-listener @addr TransportAddress.Unix @gatekeeper #!gatekeeper.Resolve> .
|
||||||
ConfigWatcher = <config-watcher @path string @env ConfigEnv>.
|
ConfigWatcher = <config-watcher @path string @env ConfigEnv>.
|
||||||
Milestone = <milestone @name any>.
|
|
||||||
|
|
||||||
ConfigEnv = { symbol: any ...:... }.
|
ConfigEnv = { symbol: any ...:... }.
|
||||||
|
|
|
@ -3,16 +3,13 @@ use preserves_schema::Codec;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use syndicate::actor::*;
|
use syndicate::actor::*;
|
||||||
use syndicate::during::entity;
|
|
||||||
use syndicate::enclose;
|
use syndicate::enclose;
|
||||||
use syndicate::preserves::rec;
|
use syndicate::preserves::rec;
|
||||||
use syndicate::schemas::dataspace::Observe;
|
|
||||||
use syndicate::schemas::service;
|
use syndicate::schemas::service;
|
||||||
use syndicate::value::NestedValue;
|
use syndicate::value::NestedValue;
|
||||||
|
|
||||||
use crate::counter;
|
use crate::counter;
|
||||||
use crate::language::language;
|
use crate::language::language;
|
||||||
use crate::schemas::internal_services;
|
|
||||||
|
|
||||||
use syndicate_macros::during;
|
use syndicate_macros::during;
|
||||||
|
|
||||||
|
@ -28,31 +25,6 @@ pub fn boot(t: &mut Activation, ds: Arc<Cap>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run(t: &mut Activation, ds: Arc<Cap>, service_name: AnyValue) -> ActorResult {
|
fn run(t: &mut Activation, ds: Arc<Cap>, service_name: AnyValue) -> ActorResult {
|
||||||
if !service_name.value().is_simple_record("milestone", Some(1)) {
|
|
||||||
let system_layer_dep = service::ServiceDependency {
|
|
||||||
depender: service_name.clone(),
|
|
||||||
dependee: service::ServiceState {
|
|
||||||
service_name: language().unparse(&internal_services::Milestone {
|
|
||||||
name: AnyValue::symbol("system-layer"),
|
|
||||||
}),
|
|
||||||
state: service::State::Ready,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
let milestone_monitor = entity(ds.assert(t, language(), &system_layer_dep))
|
|
||||||
.on_asserted(enclose!((ds) move |handle, t, _captures: AnyValue| {
|
|
||||||
ds.update::<_, service::ServiceDependency>(t, handle, language(), None);
|
|
||||||
Ok(Some(Box::new(enclose!((ds, system_layer_dep) move |handle, t| {
|
|
||||||
ds.update(t, handle, language(), Some(&system_layer_dep));
|
|
||||||
Ok(())
|
|
||||||
}))))
|
|
||||||
}))
|
|
||||||
.create_cap(t);
|
|
||||||
ds.assert(t, language(), &Observe {
|
|
||||||
pattern: syndicate_macros::pattern!{<system-layer-service #(&service_name)>},
|
|
||||||
observer: milestone_monitor,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let obstacle_count = t.named_field("obstacle_count", 1isize);
|
let obstacle_count = t.named_field("obstacle_count", 1isize);
|
||||||
t.dataflow(enclose!((service_name, obstacle_count) move |t| {
|
t.dataflow(enclose!((service_name, obstacle_count) move |t| {
|
||||||
tracing::trace!(?service_name, obstacle_count = ?t.get(&obstacle_count));
|
tracing::trace!(?service_name, obstacle_count = ?t.get(&obstacle_count));
|
||||||
|
|
|
@ -120,7 +120,6 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
services::config_watcher::on_demand(t, Arc::clone(&server_config_ds));
|
services::config_watcher::on_demand(t, Arc::clone(&server_config_ds));
|
||||||
services::daemon::on_demand(t, Arc::clone(&server_config_ds), Arc::clone(&log_ds));
|
services::daemon::on_demand(t, Arc::clone(&server_config_ds), Arc::clone(&log_ds));
|
||||||
services::debt_reporter::on_demand(t, Arc::clone(&server_config_ds));
|
services::debt_reporter::on_demand(t, Arc::clone(&server_config_ds));
|
||||||
services::milestone::on_demand(t, Arc::clone(&server_config_ds));
|
|
||||||
services::tcp_relay_listener::on_demand(t, Arc::clone(&server_config_ds));
|
services::tcp_relay_listener::on_demand(t, Arc::clone(&server_config_ds));
|
||||||
services::unix_relay_listener::on_demand(t, Arc::clone(&server_config_ds));
|
services::unix_relay_listener::on_demand(t, Arc::clone(&server_config_ds));
|
||||||
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
use preserves_schema::Codec;
|
|
||||||
|
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use syndicate::actor::*;
|
|
||||||
use syndicate::enclose;
|
|
||||||
use syndicate::preserves::value::NestedValue;
|
|
||||||
use syndicate::supervise::{Supervisor, SupervisorConfiguration};
|
|
||||||
|
|
||||||
use crate::language::language;
|
|
||||||
use crate::lifecycle;
|
|
||||||
use crate::schemas::internal_services::Milestone;
|
|
||||||
|
|
||||||
use syndicate_macros::during;
|
|
||||||
|
|
||||||
pub fn on_demand(t: &mut Activation, ds: Arc<Cap>) {
|
|
||||||
t.spawn(Some(AnyValue::symbol("milestone_listener")), move |t| {
|
|
||||||
Ok(during!(t, ds, language(), <run-service $spec: Milestone>, |t: &mut Activation| {
|
|
||||||
Supervisor::start(
|
|
||||||
t,
|
|
||||||
Some(language().unparse(&spec)),
|
|
||||||
SupervisorConfiguration::default(),
|
|
||||||
|_, _| Ok(()),
|
|
||||||
enclose!((ds) move |t| enclose!((ds, spec) run(t, ds, spec))))
|
|
||||||
}))
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
fn run(
|
|
||||||
t: &mut Activation,
|
|
||||||
ds: Arc<Cap>,
|
|
||||||
spec: Milestone,
|
|
||||||
) -> ActorResult {
|
|
||||||
lifecycle::terminate_on_service_restart(t, &ds, &spec);
|
|
||||||
tracing::info!(milestone = ?spec.name, "entered");
|
|
||||||
ds.assert(t, language(), &lifecycle::started(&spec));
|
|
||||||
ds.assert(t, language(), &lifecycle::ready(&spec));
|
|
||||||
t.on_stop(move |_| { tracing::info!(milestone = ?spec.name, "exited"); Ok(()) });
|
|
||||||
Ok(())
|
|
||||||
}
|
|
|
@ -1,6 +1,5 @@
|
||||||
pub mod config_watcher;
|
pub mod config_watcher;
|
||||||
pub mod daemon;
|
pub mod daemon;
|
||||||
pub mod debt_reporter;
|
pub mod debt_reporter;
|
||||||
pub mod milestone;
|
|
||||||
pub mod tcp_relay_listener;
|
pub mod tcp_relay_listener;
|
||||||
pub mod unix_relay_listener;
|
pub mod unix_relay_listener;
|
||||||
|
|
Loading…
Reference in New Issue