diff options
author | Rina Fujino <18257209+rina23q@users.noreply.github.com> | 2022-05-19 14:58:08 +0200 |
---|---|---|
committer | Rina Fujino <18257209+rina23q@users.noreply.github.com> | 2022-05-19 14:58:08 +0200 |
commit | 5733a4aed1f980089caf38a39d96f5d50ec9151b (patch) | |
tree | c58f7abc5f80f7644884e7ef6b44608ad19b942b /plugins/c8y_configuration_plugin | |
parent | 79a3df295e881a71a9d8398b5344e4f202ee310e (diff) |
Reload the plugin configuration file properly after update
Signed-off-by: Rina Fujino <18257209+rina23q@users.noreply.github.com>
Diffstat (limited to 'plugins/c8y_configuration_plugin')
-rw-r--r-- | plugins/c8y_configuration_plugin/src/download.rs | 32 | ||||
-rw-r--r-- | plugins/c8y_configuration_plugin/src/main.rs | 4 | ||||
-rw-r--r-- | plugins/c8y_configuration_plugin/src/upload.rs | 23 |
3 files changed, 37 insertions, 22 deletions
diff --git a/plugins/c8y_configuration_plugin/src/download.rs b/plugins/c8y_configuration_plugin/src/download.rs index b281ec78..4c3fbc7a 100644 --- a/plugins/c8y_configuration_plugin/src/download.rs +++ b/plugins/c8y_configuration_plugin/src/download.rs @@ -1,3 +1,4 @@ +use crate::config::FileEntry; use crate::error::ConfigManagementError; use crate::{error, PluginConfig, CONFIG_CHANGE_TOPIC}; use c8y_api::http_proxy::C8YHttpProxy; @@ -28,17 +29,26 @@ pub async fn handle_config_download_request( let () = mqtt_client.published.send(executing_message).await?; let target_config_type = smartrest_request.config_type.clone(); - let target_file_entry = plugin_config.get_file_entry_from_type(&target_config_type)?; - - match download_config_file( - smartrest_request.url.as_str(), - PathBuf::from(&target_file_entry.path), - tmp_dir, - target_file_entry.file_permissions, - http_client, - ) - .await - { + let mut target_file_entry = FileEntry::default(); + + let download_result = { + match plugin_config.get_file_entry_from_type(&target_config_type) { + Ok(file_entry) => { + target_file_entry = file_entry; + download_config_file( + smartrest_request.url.as_str(), + PathBuf::from(&target_file_entry.path), + tmp_dir, + target_file_entry.file_permissions, + http_client, + ) + .await + } + Err(err) => Err(err.into()), + } + }; + + match download_result { Ok(_) => { info!("The configuration download for '{target_config_type}' is successful."); diff --git a/plugins/c8y_configuration_plugin/src/main.rs b/plugins/c8y_configuration_plugin/src/main.rs index b8d56fa0..758a68a3 100644 --- a/plugins/c8y_configuration_plugin/src/main.rs +++ b/plugins/c8y_configuration_plugin/src/main.rs @@ -117,7 +117,7 @@ async fn main() -> Result<(), anyhow::Error> { } async fn run( - plugin_config: PluginConfig, + mut plugin_config: PluginConfig, mqtt_port: u16, http_client: &mut impl C8YHttpProxy, tmp_dir: PathBuf, @@ -145,7 +145,7 @@ async fn run( message.topic.name.as_str() { // Reload the plugin config file - let plugin_config = PluginConfig::new(config_file_path); + plugin_config = PluginConfig::new(config_file_path); // Resend the supported config types let msg = plugin_config.to_supported_config_types_message()?; mqtt_client.published.send(msg).await?; diff --git a/plugins/c8y_configuration_plugin/src/upload.rs b/plugins/c8y_configuration_plugin/src/upload.rs index 585c54de..bd389779 100644 --- a/plugins/c8y_configuration_plugin/src/upload.rs +++ b/plugins/c8y_configuration_plugin/src/upload.rs @@ -53,15 +53,20 @@ pub async fn handle_config_upload_request( let msg = UploadConfigFileStatusMessage::executing()?; let () = mqtt_client.published.send(msg).await?; - let config_file_path = plugin_config - .get_file_entry_from_type(&config_upload_request.config_type)? - .path; - let upload_result = upload_config_file( - Path::new(config_file_path.as_str()), - &config_upload_request.config_type, - http_client, - ) - .await; + let upload_result = { + match plugin_config.get_file_entry_from_type(&config_upload_request.config_type) { + Ok(file_entry) => { + let config_file_path = file_entry.path; + upload_config_file( + Path::new(config_file_path.as_str()), + &config_upload_request.config_type, + http_client, + ) + .await + } + Err(err) => Err(err.into()), + } + }; let target_config_type = &config_upload_request.config_type; |