pub struct DiscoveryTarget {
pub plugin_type: PluginTypeId,
pub plugin_config: Value,
pub plugin_config_name: String,
pub roles: Vec<PluginRole>,
pub package_identifier: Option<String>,
pub config_override: Option<Value>,
pub execution_site: Option<String>,
}Expand description
A structured target that tells the autodiscovery controller exactly which plugin config (and role assignments) to create for a discovered software item.
Plugins emit DiscoveryTarget values inside super::DiscoveredSoftware::targets
so that the web-API controller can process them generically — without any
plugin-specific synthesis logic.
§Examples
PHS plugin discovering a GitHub-managed app (fetch releases only; the
owner/repo is expressed as the package_identifier override):
let target = DiscoveryTarget {
plugin_type: plugin_ids::RELEASES_GITHUB.clone(),
plugin_config: serde_json::json!({
"tag_strip_prefix": "v",
"include_prereleases": false,
}),
plugin_config_name: "GitHub Releases".to_string(),
roles: vec![PluginRole::FetchReleases],
package_identifier: Some("BookLore/BookLore".to_string()),
config_override: None,
execution_site: None,
};Fields§
§plugin_type: PluginTypeIdTarget plugin type (may differ from the discovering plugin).
For example, the PHS plugin discovers software but targets
releases.github or package-manager.apt for tracking.
plugin_config: ValueConfig JSON for find-or-create of the target plugin config.
The controller will search for an existing active plugin config whose JSON matches this value, or create a new one.
plugin_config_name: StringDisplay name for auto-created plugin config (e.g. “BookLore/BookLore”).
roles: Vec<PluginRole>Which roles this target covers.
Typically all three: DetectVersion, FetchReleases, ExecuteUpdate.
package_identifier: Option<String>Package identifier override (None = same as parent DiscoveredSoftware).
Used when the target plugin needs a different identifier than the discovering plugin’s slug (e.g. PHS slug → APT package name).
config_override: Option<Value>Per-assignment config override.
execution_site: Option<String>Execution site hint ("auto" | "agent" | "controller"; None = "auto").
Trait Implementations§
Source§impl Clone for DiscoveryTarget
impl Clone for DiscoveryTarget
Source§fn clone(&self) -> DiscoveryTarget
fn clone(&self) -> DiscoveryTarget
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DiscoveryTarget
impl Debug for DiscoveryTarget
Source§impl<'de> Deserialize<'de> for DiscoveryTarget
impl<'de> Deserialize<'de> for DiscoveryTarget
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<DiscoveryTarget, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<DiscoveryTarget, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for DiscoveryTarget
Source§impl PartialEq for DiscoveryTarget
impl PartialEq for DiscoveryTarget
Source§impl Serialize for DiscoveryTarget
impl Serialize for DiscoveryTarget
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for DiscoveryTarget
Auto Trait Implementations§
impl Freeze for DiscoveryTarget
impl RefUnwindSafe for DiscoveryTarget
impl Send for DiscoveryTarget
impl Sync for DiscoveryTarget
impl Unpin for DiscoveryTarget
impl UnsafeUnpin for DiscoveryTarget
impl UnwindSafe for DiscoveryTarget
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.