4 releases

new 0.1.3 Mar 19, 2025
0.1.2 Mar 19, 2025
0.1.1 Mar 3, 2025
0.1.0 Mar 2, 2025

#2 in #eclipse

Download history 245/week @ 2025-02-28 29/week @ 2025-03-07 149/week @ 2025-03-14

423 downloads per month

MIT license

33KB
725 lines

Eclipse Symphony Target Provider Rust Binding

This crate is Eclipse Symphony Target provider Rust binding, which allows a custom Target provider to be written in Rust.

Symphony is a toolchain orchestrator that aims to provide consistent management experience across multiple toolchains. A key capability of Symphony is state seeking, where a system's current is brought towards a new desired state. Symphony allows different toolchains to join the state seeking process through a Target Provider trait.

pub trait ITargetProvider: Send + Sync {
    fn init(&self, config: ProviderConfig) -> Result<(), String>;
    fn get_validation_rule(&self) -> Result<ValidationRule, String>; // Return Rust native type
    fn get(&self, deployment: DeploymentSpec, references: Vec<ComponentStep>) -> Result<Vec<ComponentSpec>, String>; // Return Rust native types
    fn apply(&self, deployment: DeploymentSpec, step: DeploymentStep, is_dry_run: bool) -> Result<HashMap<String, ComponentResultSpec>, String>; 
 }
  • The get() method returns the current state of a system.
  • The apply() method applies the new desired state.
  • The get_validation_rule() allows a provider to define what properties are expected in the incoming state spec, and what properties to be used for change detection.

Current Rust Providers

Provider Info
ankaios An Eclipse Ankaios provider
mock A mock provider for testing purposes

Dependencies

~1.3–2.5MB
~52K SLoC