Skip to content

Commit cdada40

Browse files
feat: Unify AgentControlDynamicConfig traits into one AgentControlDynamicConfigRepository (#1339)
1 parent 6ebaae2 commit cdada40

File tree

15 files changed

+75
-108
lines changed

15 files changed

+75
-108
lines changed

agent-control/src/agent_control.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
pub mod agent_id;
22
pub mod config;
3-
pub mod config_storer;
3+
pub mod config_repository;
44
pub mod config_validator;
55
pub mod defaults;
66
pub mod error;

agent-control/src/agent_control/agent_control.rs

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
use super::config::{
22
AgentControlConfig, AgentControlDynamicConfig, SubAgentsMap, sub_agents_difference,
33
};
4-
use super::config_storer::loader_storer::{
5-
AgentControlDynamicConfigLoader, AgentControlRemoteConfigDeleter,
6-
AgentControlRemoteConfigHashGetter, AgentControlRemoteConfigHashStateUpdater,
7-
AgentControlRemoteConfigStorer,
8-
};
4+
use super::config_repository::repository::AgentControlDynamicConfigRepository;
95
use super::resource_cleaner::ResourceCleaner;
106
use super::version_updater::VersionUpdater;
117
use crate::agent_control::config_validator::DynamicConfigValidator;
@@ -35,11 +31,7 @@ use tracing::{debug, error, info, instrument, trace, warn};
3531
pub struct AgentControl<S, O, SL, DV, RC, VU>
3632
where
3733
O: StartedClient,
38-
SL: AgentControlRemoteConfigStorer
39-
+ AgentControlDynamicConfigLoader
40-
+ AgentControlRemoteConfigDeleter
41-
+ AgentControlRemoteConfigHashStateUpdater
42-
+ AgentControlRemoteConfigHashGetter,
34+
SL: AgentControlDynamicConfigRepository,
4335
S: SubAgentBuilder,
4436
DV: DynamicConfigValidator,
4537
RC: ResourceCleaner,
@@ -63,11 +55,7 @@ impl<S, O, SL, DV, RC, VU> AgentControl<S, O, SL, DV, RC, VU>
6355
where
6456
O: StartedClient,
6557
S: SubAgentBuilder,
66-
SL: AgentControlRemoteConfigStorer
67-
+ AgentControlDynamicConfigLoader
68-
+ AgentControlRemoteConfigDeleter
69-
+ AgentControlRemoteConfigHashStateUpdater
70-
+ AgentControlRemoteConfigHashGetter,
58+
SL: AgentControlDynamicConfigRepository,
7159
DV: DynamicConfigValidator,
7260
RC: ResourceCleaner,
7361
VU: VersionUpdater,
@@ -448,7 +436,7 @@ mod tests {
448436
use crate::agent_control::config::{
449437
AgentControlConfig, AgentControlDynamicConfig, SubAgentConfig,
450438
};
451-
use crate::agent_control::config_storer::loader_storer::tests::MockAgentControlDynamicConfigStore;
439+
use crate::agent_control::config_repository::repository::tests::MockAgentControlDynamicConfigStore;
452440
use crate::agent_control::config_validator::DynamicConfigValidatorError;
453441
use crate::agent_control::config_validator::tests::MockDynamicConfigValidator;
454442
use crate::agent_control::resource_cleaner::ResourceCleanerError;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
pub mod repository;
2+
pub mod store;

agent-control/src/agent_control/config_storer/loader_storer.rs renamed to agent-control/src/agent_control/config_repository/repository.rs

Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10,41 +10,28 @@ pub trait AgentControlConfigLoader {
1010
fn load(&self) -> Result<AgentControlConfig, AgentControlConfigError>;
1111
}
1212

13-
/// AgentControlRemoteConfigStorer stores a remote_config containing
14-
/// the dynamic part of the AgentControlConfig and the remote config hash and status
15-
pub trait AgentControlRemoteConfigStorer {
13+
/// AgentControlDynamicConfigRepository loads, stores, deletes or updates agent_control's remote_configs
14+
#[cfg_attr(test, mockall::automock)]
15+
pub trait AgentControlDynamicConfigRepository {
16+
/// load the dynamic part of the AgentControlConfig
17+
fn load(&self) -> Result<AgentControlDynamicConfig, AgentControlConfigError>;
18+
/// store a remote_config containing
19+
/// the dynamic part of the AgentControlConfig and the remote config hash and status
1620
fn store(&self, config: &RemoteConfig) -> Result<(), AgentControlConfigError>;
17-
}
1821

19-
/// AgentControlRemoteConfigHashUpdater stores the hash and status for a remote_config
20-
pub trait AgentControlRemoteConfigHashStateUpdater {
22+
/// update the state of a remote_config
2123
fn update_hash_state(&self, state: &ConfigState) -> Result<(), AgentControlConfigError>;
22-
}
2324

24-
/// AgentControlRemoteConfigHashGetter retrieves the hash and status
25-
/// from the stored remote_config if exists
26-
pub trait AgentControlRemoteConfigHashGetter {
25+
/// retrieves the hash and status from the stored remote_config if exists
2726
fn get_hash(&self) -> Result<Option<Hash>, AgentControlConfigError>;
28-
}
2927

30-
/// AgentControlRemoteConfigDeleter deletes the dynamic part of the AgentControlConfig
31-
pub trait AgentControlRemoteConfigDeleter {
28+
/// delete the dynamic part of the AgentControlConfig
3229
fn delete(&self) -> Result<(), AgentControlConfigError>;
3330
}
3431

35-
/// AgentControlDynamicConfigLoader loads the dynamic part of the AgentControlConfig
36-
#[cfg_attr(test, mockall::automock)]
37-
pub trait AgentControlDynamicConfigLoader {
38-
fn load(&self) -> Result<AgentControlDynamicConfig, AgentControlConfigError>;
39-
}
40-
4132
#[cfg(test)]
4233
pub(crate) mod tests {
43-
use super::{
44-
AgentControlConfigError, AgentControlDynamicConfigLoader, AgentControlRemoteConfigDeleter,
45-
AgentControlRemoteConfigHashGetter, AgentControlRemoteConfigHashStateUpdater,
46-
AgentControlRemoteConfigStorer,
47-
};
34+
use super::{AgentControlConfigError, AgentControlDynamicConfigRepository};
4835
use crate::agent_control::config::AgentControlDynamicConfig;
4936
use crate::opamp::remote_config::hash::{ConfigState, Hash};
5037
use crate::values::config::RemoteConfig;
@@ -53,20 +40,16 @@ pub(crate) mod tests {
5340
mock! {
5441
pub AgentControlDynamicConfigStore {}
5542

56-
impl AgentControlRemoteConfigStorer for AgentControlDynamicConfigStore {
57-
fn store(&self, config: &RemoteConfig) -> Result<(), AgentControlConfigError>;
58-
}
59-
impl AgentControlDynamicConfigLoader for AgentControlDynamicConfigStore {
43+
impl AgentControlDynamicConfigRepository for AgentControlDynamicConfigStore {
6044
fn load(&self) -> Result<AgentControlDynamicConfig, AgentControlConfigError>;
61-
}
62-
impl AgentControlRemoteConfigDeleter for AgentControlDynamicConfigStore {
63-
fn delete(&self) -> Result<(), AgentControlConfigError>;
64-
}
65-
impl AgentControlRemoteConfigHashStateUpdater for AgentControlDynamicConfigStore {
45+
46+
fn store(&self, config: &RemoteConfig) -> Result<(), AgentControlConfigError>;
47+
6648
fn update_hash_state(&self, state: &ConfigState) -> Result<(), AgentControlConfigError>;
67-
}
68-
impl AgentControlRemoteConfigHashGetter for AgentControlDynamicConfigStore {
49+
6950
fn get_hash(&self) -> Result<Option<Hash>, AgentControlConfigError>;
51+
52+
fn delete(&self) -> Result<(), AgentControlConfigError>;
7053
}
7154
}
7255

agent-control/src/agent_control/config_storer/store.rs renamed to agent-control/src/agent_control/config_repository/store.rs

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ use crate::agent_control::agent_id::AgentID;
22
use crate::agent_control::config::{
33
AgentControlConfig, AgentControlConfigError, AgentControlDynamicConfig,
44
};
5-
use crate::agent_control::config_storer::loader_storer::{
6-
AgentControlConfigLoader, AgentControlDynamicConfigLoader, AgentControlRemoteConfigDeleter,
7-
AgentControlRemoteConfigHashGetter, AgentControlRemoteConfigHashStateUpdater,
8-
AgentControlRemoteConfigStorer,
5+
use crate::agent_control::config_repository::repository::{
6+
AgentControlConfigLoader, AgentControlDynamicConfigRepository,
97
};
108
use crate::agent_control::defaults::{AGENT_CONTROL_CONFIG_ENV_VAR_PREFIX, default_capabilities};
119
use crate::opamp::remote_config::hash::{ConfigState, Hash};
@@ -36,55 +34,35 @@ where
3634
}
3735
}
3836

39-
impl<Y> AgentControlDynamicConfigLoader for AgentControlConfigStore<Y>
37+
impl<Y> AgentControlDynamicConfigRepository for AgentControlConfigStore<Y>
4038
where
4139
Y: ConfigRepository,
4240
{
4341
fn load(&self) -> Result<AgentControlDynamicConfig, AgentControlConfigError> {
4442
Ok(self._load_config()?.dynamic)
4543
}
46-
}
47-
48-
impl<Y> AgentControlRemoteConfigDeleter for AgentControlConfigStore<Y>
49-
where
50-
Y: ConfigRepository,
51-
{
52-
fn delete(&self) -> Result<(), AgentControlConfigError> {
53-
self.values_repository
54-
.delete_remote(&self.agent_control_id)?;
55-
Ok(())
56-
}
57-
}
5844

59-
impl<Y> AgentControlRemoteConfigStorer for AgentControlConfigStore<Y>
60-
where
61-
Y: ConfigRepository,
62-
{
6345
fn store(&self, config: &RemoteConfig) -> Result<(), AgentControlConfigError> {
6446
self.values_repository
6547
.store_remote(&self.agent_control_id, config)?;
6648
Ok(())
6749
}
68-
}
6950

70-
impl<Y> AgentControlRemoteConfigHashStateUpdater for AgentControlConfigStore<Y>
71-
where
72-
Y: ConfigRepository,
73-
{
7451
fn update_hash_state(&self, state: &ConfigState) -> Result<(), AgentControlConfigError> {
7552
self.values_repository
7653
.update_hash_state(&self.agent_control_id, state)?;
7754
Ok(())
7855
}
79-
}
8056

81-
impl<Y> AgentControlRemoteConfigHashGetter for AgentControlConfigStore<Y>
82-
where
83-
Y: ConfigRepository,
84-
{
8557
fn get_hash(&self) -> Result<Option<Hash>, AgentControlConfigError> {
8658
Ok(self.values_repository.get_hash(&self.agent_control_id)?)
8759
}
60+
61+
fn delete(&self) -> Result<(), AgentControlConfigError> {
62+
self.values_repository
63+
.delete_remote(&self.agent_control_id)?;
64+
Ok(())
65+
}
8866
}
8967

9068
impl<V> AgentControlConfigStore<V>

agent-control/src/agent_control/config_storer.rs

Lines changed: 0 additions & 2 deletions
This file was deleted.

agent-control/src/agent_control/run/k8s.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::agent_control::AgentControl;
22
use crate::agent_control::config::K8sConfig;
3-
use crate::agent_control::config_storer::loader_storer::AgentControlConfigLoader;
4-
use crate::agent_control::config_storer::store::AgentControlConfigStore;
3+
use crate::agent_control::config_repository::repository::AgentControlConfigLoader;
4+
use crate::agent_control::config_repository::store::AgentControlConfigStore;
55
use crate::agent_control::config_validator::RegistryDynamicConfigValidator;
66
use crate::agent_control::defaults::{
77
AGENT_CONTROL_VERSION, FLEET_ID_ATTRIBUTE_KEY, HOST_NAME_ATTRIBUTE_KEY,

agent-control/src/agent_control/run/on_host.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::agent_control::AgentControl;
2-
use crate::agent_control::config_storer::loader_storer::AgentControlConfigLoader;
3-
use crate::agent_control::config_storer::store::AgentControlConfigStore;
2+
use crate::agent_control::config_repository::repository::AgentControlConfigLoader;
3+
use crate::agent_control::config_repository::store::AgentControlConfigStore;
44
use crate::agent_control::config_validator::RegistryDynamicConfigValidator;
55
use crate::agent_control::defaults::{
66
AGENT_CONTROL_VERSION, FLEET_ID_ATTRIBUTE_KEY, HOST_ID_ATTRIBUTE_KEY, HOST_NAME_ATTRIBUTE_KEY,

agent-control/src/bin/main_config_migrate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use newrelic_agent_control::agent_control::config_storer::store::AgentControlConfigStore;
1+
use newrelic_agent_control::agent_control::config_repository::store::AgentControlConfigStore;
22
use newrelic_agent_control::agent_control::defaults::{
33
AGENT_CONTROL_DATA_DIR, AGENT_CONTROL_LOCAL_DATA_DIR, AGENT_CONTROL_LOG_DIR, SUB_AGENT_DIR,
44
};

agent-control/src/config_migrate/migration/agent_config_getter.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::agent_control::config::{AgentControlConfigError, AgentControlDynamicConfig};
2-
use crate::agent_control::config_storer::loader_storer::AgentControlDynamicConfigLoader;
2+
use crate::agent_control::config_repository::repository::AgentControlDynamicConfigRepository;
33
use crate::agent_type::agent_type_id::AgentTypeID;
44
use semver::VersionReq;
55
use thiserror::Error;
@@ -16,15 +16,15 @@ pub enum ConversionError {
1616

1717
pub struct AgentConfigGetter<SL>
1818
where
19-
SL: AgentControlDynamicConfigLoader,
19+
SL: AgentControlDynamicConfigRepository,
2020
{
2121
pub(super) sub_agents_config_loader: SL,
2222
}
2323

2424
#[cfg_attr(test, mockall::automock)]
2525
impl<SL> AgentConfigGetter<SL>
2626
where
27-
SL: AgentControlDynamicConfigLoader + 'static,
27+
SL: AgentControlDynamicConfigRepository + 'static,
2828
{
2929
pub fn new(sub_agents_config_loader: SL) -> Self {
3030
Self {
@@ -69,13 +69,23 @@ pub(crate) mod tests {
6969
use super::*;
7070
use crate::agent_control::agent_id::AgentID;
7171
use crate::agent_control::config::{AgentControlDynamicConfig, SubAgentConfig};
72+
use crate::opamp::remote_config::hash::{ConfigState, Hash};
73+
use crate::values::config::RemoteConfig;
7274
use mockall::mock;
7375
use std::collections::HashMap;
7476

7577
mock! {
7678
pub AgentControlDynamicConfigLoader {}
77-
impl AgentControlDynamicConfigLoader for AgentControlDynamicConfigLoader {
79+
impl AgentControlDynamicConfigRepository for AgentControlDynamicConfigLoader {
7880
fn load(&self) -> Result<AgentControlDynamicConfig, AgentControlConfigError>;
81+
82+
fn store(&self, config: &RemoteConfig) -> Result<(), AgentControlConfigError>;
83+
84+
fn update_hash_state(&self, state: &ConfigState) -> Result<(), AgentControlConfigError>;
85+
86+
fn get_hash(&self) -> Result<Option<Hash>, AgentControlConfigError>;
87+
88+
fn delete(&self) -> Result<(), AgentControlConfigError>;
7989
}
8090
}
8191

0 commit comments

Comments
 (0)