Skip to content

Commit b730b44

Browse files
committed
feat: Unify AgentControlDynamicConfig traits into one AgentControlDynamicConfigRepository
1 parent 6ebaae2 commit b730b44

File tree

6 files changed

+46
-62
lines changed

6 files changed

+46
-62
lines changed

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;

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/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

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::agent_control::config::AgentControlConfigError;
2-
use crate::agent_control::config_storer::loader_storer::AgentControlDynamicConfigLoader;
3-
use crate::agent_control::config_storer::store::AgentControlConfigStore;
2+
use crate::agent_control::config_repository::repository::AgentControlDynamicConfigRepository;
3+
use crate::agent_control::config_repository::store::AgentControlConfigStore;
44
use crate::agent_type::agent_type_registry::AgentRegistry;
55
use crate::agent_type::embedded_registry::EmbeddedRegistry;
66
#[cfg_attr(test, mockall_double::double)]
@@ -39,7 +39,7 @@ pub enum MigratorError {
3939

4040
pub struct ConfigMigrator<
4141
R: AgentRegistry,
42-
SL: AgentControlDynamicConfigLoader + 'static,
42+
SL: AgentControlDynamicConfigRepository + 'static,
4343
C: DirectoryManager,
4444
F: FileReader,
4545
> {

agent-control/tests/k8s/garbage_collector.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ use super::tools::{
1010
use k8s_openapi::api::core::v1::Secret;
1111
use kube::{api::Api, core::TypeMeta};
1212
use mockall::mock;
13+
use newrelic_agent_control::agent_control::config_repository::repository::AgentControlDynamicConfigRepository;
14+
use newrelic_agent_control::opamp::remote_config::hash::{ConfigState, Hash};
1315
use newrelic_agent_control::sub_agent::k8s::supervisor::NotStartedSupervisorK8s;
16+
use newrelic_agent_control::values::config::RemoteConfig;
1417
use newrelic_agent_control::{
1518
agent_control::config::default_group_version_kinds, agent_type::agent_type_id::AgentTypeID,
1619
};
@@ -26,7 +29,7 @@ use newrelic_agent_control::{
2629
use newrelic_agent_control::{
2730
agent_control::{
2831
config::{AgentControlConfig, AgentControlConfigError, AgentControlDynamicConfig},
29-
config_storer::loader_storer::{AgentControlConfigLoader, AgentControlDynamicConfigLoader},
32+
config_repository::repository::AgentControlConfigLoader,
3033
},
3134
k8s::labels::Labels,
3235
};
@@ -49,10 +52,18 @@ mock! {
4952

5053
// Setup AgentControlDynamicConfigLoader mock
5154
mock! {
52-
pub AgentControlDynamicConfigLoader{}
55+
pub AgentControlDynamicConfigRepository{}
5356

54-
impl AgentControlDynamicConfigLoader for AgentControlDynamicConfigLoader {
57+
impl AgentControlDynamicConfigRepository for AgentControlDynamicConfigRepository {
5558
fn load(&self) -> Result<AgentControlDynamicConfig, AgentControlConfigError>;
59+
60+
fn store(&self, config: &RemoteConfig) -> Result<(), AgentControlConfigError>;
61+
62+
fn update_hash_state(&self, state: &ConfigState) -> Result<(), AgentControlConfigError>;
63+
64+
fn get_hash(&self) -> Result<Option<Hash>, AgentControlConfigError>;
65+
66+
fn delete(&self) -> Result<(), AgentControlConfigError>;
5667
}
5768
}
5869

agent-control/tests/k8s/store.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,8 @@ use crate::k8s::tools::k8s_env::K8sEnv;
44
use k8s_openapi::api::core::v1::ConfigMap;
55
use kube::Api;
66
use newrelic_agent_control::agent_control::agent_id::AgentID;
7-
use newrelic_agent_control::agent_control::config_storer::loader_storer::{
8-
AgentControlDynamicConfigLoader, AgentControlRemoteConfigDeleter,
9-
AgentControlRemoteConfigStorer,
10-
};
11-
use newrelic_agent_control::agent_control::config_storer::store::AgentControlConfigStore;
7+
use newrelic_agent_control::agent_control::config_repository::repository::AgentControlDynamicConfigRepository;
8+
use newrelic_agent_control::agent_control::config_repository::store::AgentControlConfigStore;
129
use newrelic_agent_control::agent_control::defaults::default_capabilities;
1310
use newrelic_agent_control::k8s::client::SyncK8sClient;
1411
use newrelic_agent_control::k8s::labels::Labels;

0 commit comments

Comments
 (0)