pub mod assign;
pub mod capability;
pub mod engine;
pub mod memory;
pub mod node_facts;
pub mod perf;
pub mod requirement;
pub mod roles;
pub mod vocabulary;
pub mod vocabulary_pin;
#[cfg(test)]
mod tests_assign;
#[cfg(test)]
mod tests_matching;
#[cfg(test)]
mod tests_node_facts;
#[cfg(test)]
mod tests_vocab;
pub use assign::{Assignment, match_all};
pub use capability::{AttrValue, Capability, CapabilityId, CapabilityState, Provenance};
pub use memory::{MemoryDemand, MemoryLedger, MemoryPool, MemoryShortfall};
pub use node_facts::{
FactsDelta, FactsError, NodeFacts, NodeLoad, ProbeNote, StateChange, TrustTier,
};
pub use requirement::{AttrPredicate, IdSelector, MatchFailure, PredicateOp, Requirement};
pub use vocabulary::{VocabWarning, Vocabulary, VocabularyError};
pub use vocabulary_pin::{
VOCABULARY_CONFIG_KEY, VOCABULARY_CONFIG_NAMESPACE, VocabularyChange, VocabularyPin,
};
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
pub enum PlacementTypeError {
#[error("invalid capability id {id:?}: {reason}")]
InvalidId {
id: String,
reason: String,
},
#[error("invalid attribute {attr:?} on {id}: {reason}")]
InvalidAttr {
id: String,
attr: String,
reason: String,
},
#[error("invalid predicate on {attr:?}: {reason}")]
InvalidPredicate {
attr: String,
reason: String,
},
#[error("invalid requirement: {0}")]
InvalidRequirement(String),
}