@@ -6,73 +6,75 @@ use crate::agent_control::config_storer::loader_storer::{
66 AgentControlDynamicConfigStorer ,
77} ;
88use crate :: agent_control:: defaults:: { default_capabilities, AGENT_CONTROL_CONFIG_ENV_VAR_PREFIX } ;
9- use crate :: values:: yaml_config:: { YAMLConfig , YAMLConfigError } ;
10- use crate :: values:: yaml_config_repository:: { YAMLConfigRepository , YAMLConfigRepositoryError } ;
9+ use crate :: opamp:: remote_config:: status:: AgentRemoteConfigStatus ;
10+ use crate :: opamp:: remote_config:: status_manager:: error:: ConfigStatusManagerError ;
11+ use crate :: opamp:: remote_config:: status_manager:: ConfigStatusManager ;
12+ use crate :: values:: yaml_config:: YAMLConfigError ;
1113use config:: builder:: DefaultState ;
1214use config:: { Config , ConfigBuilder , Environment , File , FileFormat } ;
1315use opamp_client:: operation:: capabilities:: Capabilities ;
1416use std:: sync:: Arc ;
1517
16- pub struct AgentControlConfigStore < Y >
18+ pub struct AgentControlConfigStore < M >
1719where
18- Y : YAMLConfigRepository ,
20+ M : ConfigStatusManager ,
1921{
2022 config_builder : ConfigBuilder < DefaultState > ,
21- values_repository : Arc < Y > ,
23+ config_manager : Arc < M > ,
2224 agent_control_id : AgentID ,
2325 agent_control_capabilities : Capabilities ,
2426}
2527
26- impl < Y > AgentControlConfigLoader for AgentControlConfigStore < Y >
28+ impl < M > AgentControlConfigLoader for AgentControlConfigStore < M >
2729where
28- Y : YAMLConfigRepository ,
30+ M : ConfigStatusManager ,
2931{
3032 fn load ( & self ) -> Result < AgentControlConfig , AgentControlConfigError > {
3133 self . _load_config ( )
3234 }
3335}
3436
35- impl < Y > AgentControlDynamicConfigLoader for AgentControlConfigStore < Y >
37+ impl < M > AgentControlDynamicConfigLoader for AgentControlConfigStore < M >
3638where
37- Y : YAMLConfigRepository ,
39+ M : ConfigStatusManager ,
3840{
3941 fn load ( & self ) -> Result < AgentControlDynamicConfig , AgentControlConfigError > {
4042 Ok ( self . _load_config ( ) ?. dynamic )
4143 }
4244}
4345
44- impl < Y > AgentControlDynamicConfigDeleter for AgentControlConfigStore < Y >
46+ impl < M > AgentControlDynamicConfigDeleter for AgentControlConfigStore < M >
4547where
46- Y : YAMLConfigRepository ,
48+ M : ConfigStatusManager ,
4749{
4850 fn delete ( & self ) -> Result < ( ) , AgentControlConfigError > {
49- self . values_repository
50- . delete_remote ( & self . agent_control_id ) ?;
51+ self . config_manager
52+ . delete_remote_status ( & self . agent_control_id ) ?;
5153 Ok ( ( ) )
5254 }
5355}
5456
55- impl < Y > AgentControlDynamicConfigStorer for AgentControlConfigStore < Y >
57+ impl < M > AgentControlDynamicConfigStorer for AgentControlConfigStore < M >
5658where
57- Y : YAMLConfigRepository ,
59+ M : ConfigStatusManager ,
5860{
59- fn store ( & self , yaml_config : & YAMLConfig ) -> Result < ( ) , AgentControlConfigError > {
60- self . values_repository
61- . store_remote ( & self . agent_control_id , yaml_config) ?;
61+ fn store ( & self , yaml_config : & AgentRemoteConfigStatus ) -> Result < ( ) , AgentControlConfigError > {
62+ self . config_manager
63+ . store_remote_status ( & self . agent_control_id , yaml_config) ?;
6264 Ok ( ( ) )
6365 }
6466}
6567
66- impl < V > AgentControlConfigStore < V >
68+ impl < M > AgentControlConfigStore < M >
6769where
68- V : YAMLConfigRepository ,
70+ M : ConfigStatusManager ,
6971{
70- pub fn new ( values_repository : Arc < V > ) -> Self {
72+ pub fn new ( config_manager : Arc < M > ) -> Self {
7173 let config_builder = Config :: builder ( ) ;
7274
7375 Self {
7476 config_builder,
75- values_repository ,
77+ config_manager ,
7678 agent_control_id : AgentID :: new_agent_control_id ( ) ,
7779 agent_control_capabilities : default_capabilities ( ) ,
7880 }
8385 /// on top of the local config
8486 fn _load_config ( & self ) -> Result < AgentControlConfig , AgentControlConfigError > {
8587 let local_config_string: String = self
86- . values_repository
87- . load_local ( & self . agent_control_id ) ?
88+ . config_manager
89+ . retrieve_local_config ( & self . agent_control_id ) ?
8890 . ok_or ( AgentControlConfigError :: Load (
8991 "missing local agent control config" . to_string ( ) ,
9092 ) ) ?
@@ -110,8 +112,9 @@ where
110112 . try_deserialize :: < AgentControlConfig > ( ) ?;
111113
112114 if let Some ( remote_config) = self
113- . values_repository
114- . load_remote ( & self . agent_control_id , & self . agent_control_capabilities ) ?
115+ . config_manager
116+ . retrieve_remote_status ( & self . agent_control_id , & self . agent_control_capabilities ) ?
117+ . and_then ( |status| status. remote_config )
115118 {
116119 let dynamic_config: AgentControlDynamicConfig = remote_config. try_into ( ) ?;
117120 config. dynamic = dynamic_config;
@@ -121,12 +124,12 @@ where
121124 }
122125}
123126
124- impl From < YAMLConfigRepositoryError > for AgentControlConfigError {
125- fn from ( e : YAMLConfigRepositoryError ) -> Self {
127+ impl From < ConfigStatusManagerError > for AgentControlConfigError {
128+ fn from ( e : ConfigStatusManagerError ) -> Self {
126129 match e {
127- YAMLConfigRepositoryError :: LoadError ( e) => AgentControlConfigError :: Load ( e) ,
128- YAMLConfigRepositoryError :: StoreError ( e) => AgentControlConfigError :: Store ( e) ,
129- YAMLConfigRepositoryError :: DeleteError ( e) => AgentControlConfigError :: Delete ( e) ,
130+ ConfigStatusManagerError :: Retrieval ( e) => AgentControlConfigError :: Load ( e) ,
131+ ConfigStatusManagerError :: Store ( e) => AgentControlConfigError :: Store ( e) ,
132+ ConfigStatusManagerError :: Deletion ( e) => AgentControlConfigError :: Delete ( e) ,
130133 }
131134 }
132135}
@@ -138,9 +141,10 @@ pub(crate) mod tests {
138141 AgentControlConfig , AgentID , AgentTypeFQN , OpAMPClientConfig , SubAgentConfig ,
139142 } ;
140143 use crate :: agent_control:: defaults:: AGENT_CONTROL_CONFIG_FILENAME ;
141- use crate :: values:: file:: YAMLConfigRepositoryFile ;
144+ use crate :: opamp:: remote_config:: status_manager:: local_filesystem:: FileSystemConfigStatusManager ;
145+ // use crate::values::file::YAMLConfigRepositoryFile;
142146 use serial_test:: serial;
143- use std :: path :: PathBuf ;
147+
144148 use std:: { collections:: HashMap , env} ;
145149 use url:: Url ;
146150
@@ -166,8 +170,8 @@ fleet_control:
166170 "# ;
167171 std:: fs:: write ( remote_file. as_path ( ) , remote_config) . unwrap ( ) ;
168172
169- let vr = YAMLConfigRepositoryFile :: new ( local_dir, remote_dir ) . with_remote ( ) ;
170- let store = AgentControlConfigStore :: new ( Arc :: new ( vr ) ) ;
173+ let cm = FileSystemConfigStatusManager :: new ( local_dir) . with_remote ( remote_dir ) ;
174+ let store = AgentControlConfigStore :: new ( Arc :: new ( cm ) ) ;
171175 let actual = AgentControlConfigLoader :: load ( & store) . unwrap ( ) ;
172176
173177 let expected = AgentControlConfig {
@@ -212,8 +216,8 @@ fleet_control:
212216 let env_var_name = "NR_AC_AGENTS__ROLLDICE1__AGENT_TYPE" ;
213217 env:: set_var ( env_var_name, "namespace/com.newrelic.infrastructure:0.0.2" ) ;
214218
215- let vr = YAMLConfigRepositoryFile :: new ( local_dir, PathBuf :: new ( ) ) . with_remote ( ) ;
216- let store = AgentControlConfigStore :: new ( Arc :: new ( vr ) ) ;
219+ let cm = FileSystemConfigStatusManager :: new ( local_dir) ;
220+ let store = AgentControlConfigStore :: new ( Arc :: new ( cm ) ) ;
217221 let actual = AgentControlConfigLoader :: load ( & store) . unwrap ( ) ;
218222
219223 let expected = AgentControlConfig {
@@ -260,8 +264,8 @@ agents:
260264 let env_var_name = "NR_AC_AGENTS__ROLLDICE2__AGENT_TYPE" ;
261265 env:: set_var ( env_var_name, "namespace/com.newrelic.infrastructure:0.0.2" ) ;
262266
263- let vr = YAMLConfigRepositoryFile :: new ( local_dir, PathBuf :: new ( ) ) . with_remote ( ) ;
264- let store = AgentControlConfigStore :: new ( Arc :: new ( vr ) ) ;
267+ let cm = FileSystemConfigStatusManager :: new ( local_dir) ;
268+ let store = AgentControlConfigStore :: new ( Arc :: new ( cm ) ) ;
265269 let actual: AgentControlConfig = AgentControlConfigLoader :: load ( & store) . unwrap ( ) ;
266270
267271 let expected = AgentControlConfig {
0 commit comments