Skip to content

Commit 7b53724

Browse files
committed
fix: permissions issue with config.json.
1 parent 6033bad commit 7b53724

File tree

7 files changed

+73
-27
lines changed

7 files changed

+73
-27
lines changed

Cargo.lock

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,12 @@ secure-signer-loader = { git = "https://github.com/movementlabsxyz/secure-signin
134134
secure-signer-aws-kms = { git = "https://github.com/movementlabsxyz/secure-signing.git", rev = "f37eebd6d494d21b26b2faa44e1188de42ff1007" }
135135

136136
# kestrel
137-
kestrel = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "0a23ffdad33b9398ec906dfea05b4369b5a58d37" }
138-
jsonlvar = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "0a23ffdad33b9398ec906dfea05b4369b5a58d37" }
139-
commander = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "0a23ffdad33b9398ec906dfea05b4369b5a58d37" }
140-
include-dir = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "0a23ffdad33b9398ec906dfea05b4369b5a58d37" }
141-
include-vendor = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "0a23ffdad33b9398ec906dfea05b4369b5a58d37" }
142-
ready-docker = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "0a23ffdad33b9398ec906dfea05b4369b5a58d37" }
137+
kestrel = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "3220d704df7e06d1dcc5266e15eaf05db86fdb07" }
138+
jsonlvar = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "3220d704df7e06d1dcc5266e15eaf05db86fdb07" }
139+
commander = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "3220d704df7e06d1dcc5266e15eaf05db86fdb07" }
140+
include-dir = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "3220d704df7e06d1dcc5266e15eaf05db86fdb07" }
141+
include-vendor = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "3220d704df7e06d1dcc5266e15eaf05db86fdb07" }
142+
ready-docker = { git = "https://github.com/movementlabsxyz/kestrel.git", rev = "3220d704df7e06d1dcc5266e15eaf05db86fdb07" }
143143

144144
# orfile
145145
orfile = { git = "https://github.com/movementlabsxyz/orfile.git", rev = "b49cb42495816fa00a1107be5bbf41aff3a8255d" }

checks/migrator/checks/sketchpad/src/accounts_equal.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ pub mod test {
33

44
use mtma_migrator_test_accounts_equal_criterion::AccountsEqual;
55
use mtma_migrator_test_types::check::checked_migration;
6-
use mtma_migrator_types::migrator::MovementMigrator;
6+
use mtma_migrator_types::migrator::{movement_migrator::Overlays, MovementMigrator};
77
use mtma_node_null_core::config::Config as MtmaNullConfig;
88
use mtma_node_test_types::prelude::Prelude;
99

1010
#[tokio::test]
1111
#[tracing_test::traced_test]
1212
async fn test_accounts_equal() -> Result<(), anyhow::Error> {
1313
// Form the migrator.
14-
let mut movement_migrator = MovementMigrator::try_debug()?;
14+
let mut movement_migrator = MovementMigrator::try_debug_home()?;
15+
movement_migrator.set_overlays(Overlays::default());
1516

1617
// Start the migrator so that it's running in the background.
1718
// In the future, some migrators may be for already running nodes.

checks/migrator/util/types/src/check.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::criterion::{Criterionish, MovementMigrator};
2+
use anyhow::Context;
23
use mtma_migrator_types::migration::Migrationish;
34
use mtma_node_test_types::prelude::Prelude;
45

@@ -23,26 +24,32 @@ pub async fn checked_migration<T: Criterionish + Send + Sync>(
2324
criteria: Vec<T>,
2425
) -> Result<(), CheckError> {
2526
// Get the executor
26-
let mut movement_executor =
27-
movement_migrator.node().await.map_err(|e| CheckError::Internal(e.into()))?;
27+
let mut movement_executor = movement_migrator
28+
.node()
29+
.await
30+
.context("failed to get movement node")
31+
.map_err(|e| CheckError::Internal(e.into()))?;
2832

2933
// Run the prelude
3034
prelude
3135
.run(&mut movement_executor)
3236
.await
37+
.context("failed to run prelude")
3338
.map_err(|e| CheckError::Prelude(e.into()))?;
3439

3540
// Run the migration
3641
let movement_aptos_migrator = migration
3742
.migrate(movement_migrator)
3843
.await
44+
.context("failed to run migration")
3945
.map_err(|e| CheckError::Migration(e.into()))?;
4046

4147
// Run the criteria
4248
for criterion in criteria {
4349
criterion
4450
.satisfies(&movement_migrator, &movement_aptos_migrator)
4551
.await
52+
.context("failed to satisfy criterion")
4653
.map_err(|e| CheckError::Criteria(e.into()))?;
4754
}
4855

migration/util/migrator-types/src/migrator/movement_migrator.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use kestrel::WaitCondition;
33
pub use maptos_opt_executor;
44
pub use maptos_opt_executor::aptos_types::{chain_id::ChainId, state_store::TStateView};
55
use movement_client::rest_client::Client as MovementRestClient;
6-
use movement_core::Movement;
6+
pub use movement_core::{Movement, Overlay, Overlays};
77
use mtma_node_types::executor::MovementNode;
88

99
/// An enum supporting different types of runners.
@@ -50,6 +50,12 @@ impl MovementMigrator {
5050
Ok(Self::new(Runner::Movement(movement)))
5151
}
5252

53+
/// Create a new [MovementMigrator] with a debug_home [Movement] runner.
54+
pub fn try_debug_home() -> Result<Self, anyhow::Error> {
55+
let movement = Movement::try_debug_home()?;
56+
Ok(Self::new(Runner::Movement(movement)))
57+
}
58+
5359
/// Rest Api url for the runner.
5460
pub async fn wait_for_rest_api_url(
5561
&self,
@@ -86,8 +92,15 @@ impl MovementMigrator {
8692
pub async fn node(&self) -> Result<MovementNode, anyhow::Error> {
8793
match &self.runner {
8894
Runner::Movement(movement) => {
89-
MovementNode::from_dir(movement.workspace_path().to_path_buf()).await
95+
MovementNode::try_from_dir(movement.workspace_path().to_path_buf()).await
9096
}
9197
}
9298
}
99+
100+
/// Sets the overlays for the runner.
101+
pub fn set_overlays(&mut self, overlays: Overlays) {
102+
match &mut self.runner {
103+
Runner::Movement(movement) => movement.set_overlays(overlays),
104+
}
105+
}
93106
}

migration/util/node-types/src/executor/movement_executor.rs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ use maptos_opt_executor::aptos_types::{
1212
};
1313
pub use maptos_opt_executor::Executor as MovementOptExecutor;
1414
use movement_util::common_args::MovementArgs;
15+
use std::fs::Permissions;
16+
use std::os::unix::fs::PermissionsExt;
1517
use std::sync::Arc;
1618

1719
use anyhow::Context;
@@ -32,14 +34,29 @@ impl MovementNode {
3234
Self { opt_executor }
3335
}
3436

35-
pub async fn from_dir(dir: PathBuf) -> Result<Self, anyhow::Error> {
37+
pub async fn try_from_dir(dir: PathBuf) -> Result<Self, anyhow::Error> {
3638
let movement_args = MovementArgs { movement_path: Some(dir.clone().display().to_string()) };
3739

38-
let config = movement_args.config().await?;
40+
// print the tokio::fs:metadata for the dir and dir/config.json
41+
println!("dir: {:?}", dir);
42+
let dir_metadata = tokio::fs::metadata(dir.clone()).await?;
43+
println!("dir metadata: {:?}", dir_metadata);
44+
let config_metadata = tokio::fs::metadata(dir.join("config.json")).await?;
45+
println!("config metadata: {:?}", config_metadata);
46+
47+
// because the config.json is in a nix shell, it will be reassigned read-only permissions
48+
// reassing it to be 755
49+
tokio::fs::set_permissions(dir.join("config.json"), Permissions::from_mode(0o755))
50+
.await
51+
.context("failed to reset permissions on config.json")?;
52+
53+
let config = movement_args.config().await.context("failed to get movement config")?;
3954
let maptos_config = config.execution_config.maptos_config;
4055

4156
let (sender, _receiver) = futures_channel::mpsc::channel(1024);
42-
let opt_executor = MovementOptExecutor::try_from_config(maptos_config, sender).await?;
57+
let opt_executor = MovementOptExecutor::try_from_config(maptos_config, sender)
58+
.await
59+
.context("failed to create movement opt executor")?;
4360

4461
Ok(Self::new(opt_executor))
4562
}

util/movement/movement-core/src/movement.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,14 @@ impl Movement {
193193
Ok(Self::new(workspace, BTreeSet::new().into()))
194194
}
195195

196+
/// Creates a new [Movement] within a debug home directory.
197+
pub fn try_debug_home() -> Result<Self, MovementError> {
198+
let workspace =
199+
MovementWorkspace::try_debug_home().map_err(|e| MovementError::Internal(e.into()))?;
200+
201+
Ok(Self::new(workspace, BTreeSet::new().into()))
202+
}
203+
196204
/// Adds an overlay to [Movement].
197205
pub fn add_overlay(&mut self, overlay: Overlay) {
198206
self.overlays.add(overlay);

0 commit comments

Comments
 (0)