Skip to content

Commit c088d33

Browse files
committed
fix: tedge connect creating mapper directory owned by root
preventing tedge flows to start. Signed-off-by: Didier Wenzek <didier.wenzek@free.fr>
1 parent 95216fc commit c088d33

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

crates/core/tedge_mapper/src/c8y/mapper.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ use tedge_timer_ext::TimerActor;
4242
use tedge_uploader_ext::UploaderActor;
4343
use tedge_utils::file::change_mode;
4444
use tedge_utils::file::change_user_and_group;
45+
use tedge_utils::file::create_directory_with_user_group;
4546
use tedge_watch_ext::WatchActorBuilder;
4647
use tracing::warn;
4748
use yansi::Paint;
@@ -336,9 +337,15 @@ pub async fn bridge_rules(
336337
tedge_config: &TEdgeConfig,
337338
cloud_profile: Option<&ProfileName>,
338339
) -> anyhow::Result<BridgeConfig> {
339-
let bridge_config_dir = tedge_config
340-
.mapper_config_dir::<C8yMapperSpecificConfig>(cloud_profile)
341-
.join("bridge");
340+
let mapper_config_dir =
341+
tedge_config.mapper_config_dir::<C8yMapperSpecificConfig>(cloud_profile);
342+
if let Err(err) =
343+
create_directory_with_user_group(mapper_config_dir.clone(), "tedge", "tedge", 0o755).await
344+
{
345+
warn!("failed to set file ownership for '{mapper_config_dir}': {err}");
346+
}
347+
348+
let bridge_config_dir = mapper_config_dir.join("bridge");
342349

343350
// Persist the built-in bridge configuration templates
344351
persist_bridge_config_file(

crates/extensions/c8y_mapper_ext/src/flows.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,20 @@ use tedge_flows::FlowRegistryExt;
55
use tedge_flows::UpdateFlowRegistryError;
66
use tedge_mqtt_ext::TopicFilter;
77
use tedge_utils::file::create_directory_with_defaults;
8+
use tracing::error;
89

910
impl C8yMapperBuilder {
1011
pub async fn flow_registry(
1112
&self,
1213
flows_dir: impl AsRef<Utf8Path>,
1314
) -> Result<ConnectedFlowRegistry, UpdateFlowRegistryError> {
14-
create_directory_with_defaults(flows_dir.as_ref()).await?;
15+
if let Err(err) = create_directory_with_defaults(flows_dir.as_ref()).await {
16+
error!(
17+
"failed to create flow directory '{}': {err}",
18+
flows_dir.as_ref()
19+
);
20+
return Err(err)?;
21+
};
1522
let mut flows = ConnectedFlowRegistry::new(flows_dir);
1623

1724
let mapper_topic_id = self.config.service_topic_id.clone();

0 commit comments

Comments
 (0)