Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
9106149
support in cliain for version_upgrade
fixxxedpoint Nov 4, 2022
a13cc8f
support of our docker-compose to run using bridged docker's network
fixxxedpoint Nov 4, 2022
dc072d9
catchup_version_upgrade_test.sh
fixxxedpoint Nov 4, 2022
83e02be
added the catchup version upgrade test to github pipelines
fixxxedpoint Nov 4, 2022
143ec1b
review changes
fixxxedpoint Nov 6, 2022
8ca57d7
chmod +x catchup_version_upgrade_test.sh
fixxxedpoint Nov 7, 2022
02fd76b
review changes: using `matrix` for catch-up version upgrade test
fixxxedpoint Nov 7, 2022
87defd7
review changes: bumped version of aleph-client; added schedule_versio…
fixxxedpoint Nov 7, 2022
65a41f6
review changes: comment about key derivation in docker-compose `//1` …
fixxxedpoint Nov 7, 2022
4e05972
fix: e2e...yml: wrong `uses`
fixxxedpoint Nov 7, 2022
148439c
bumped e2e-tests/Cargo.lock
fixxxedpoint Nov 7, 2022
d3d65ed
fix: version_upgrade after api refactor
fixxxedpoint Nov 7, 2022
35563c7
review changes: added cache cleanup to build-cliain-image job
fixxxedpoint Nov 7, 2022
22dce1e
fix: typo in e2e...yml s/NODE2/Node2
fixxxedpoint Nov 7, 2022
781c881
fix for e2e...yml: fixed matrix-include for catch-up version upgrade …
fixxxedpoint Nov 7, 2022
999ef6f
Merge branch 'main' into message_compatibility-catchup
fixxxedpoint Nov 8, 2022
992926a
review changes: renamed local variable in catchup_version_upgrade.sh
fixxxedpoint Nov 8, 2022
dd9e3ed
Merge branch 'main' into message_compatibility-catchup
fixxxedpoint Nov 8, 2022
0b27557
more review changes for catchup_version_upgrade_test.sh
fixxxedpoint Nov 8, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
support in cliain for version_upgrade
  • Loading branch information
fixxxedpoint committed Nov 4, 2022
commit 91061493c88589f557f5fa5d6f1f637b43d8772c
3 changes: 2 additions & 1 deletion aleph-client/src/version_upgrade.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ pub fn schedule_upgrade(
connection: &RootConnection,
version: Version,
session: SessionIndex,
state: XtStatus,
) -> Result<(), ApiClientError> {
let connection = connection.as_connection();
let upgrade_call = compose_call!(
Expand All @@ -30,7 +31,7 @@ pub fn schedule_upgrade(
&connection,
xt,
Some("schedule finality version change"),
XtStatus::Finalized,
state,
)
.map(|_| ())
}
35 changes: 32 additions & 3 deletions bin/cliain/src/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ use std::{
path::{Path, PathBuf},
};

use aleph_client::BlockNumber;
use clap::{Args, Subcommand};
use primitives::{Balance, CommitteeSeats};
use aleph_client::{BlockNumber, XtStatus};
use clap::{clap_derive::ValueEnum, Args, Subcommand};
use primitives::{Balance, CommitteeSeats, SessionIndex};
use serde::{Deserialize, Serialize};
use sp_core::H256;
use substrate_api_client::AccountId;
Expand Down Expand Up @@ -111,6 +111,8 @@ pub struct ChangeValidatorArgs {
pub committee_size: Option<CommitteeSeats>,
}

pub type Version = u32;

impl std::str::FromStr for ChangeValidatorArgs {
type Err = serde_json::Error;

Expand All @@ -124,6 +126,21 @@ impl std::str::FromStr for ChangeValidatorArgs {
}
}

#[derive(Debug, Clone, ValueEnum)]
pub enum ExtrinsicState {
InBlock,
Finalized,
}

impl From<ExtrinsicState> for XtStatus {
fn from(state: ExtrinsicState) -> Self {
match state {
ExtrinsicState::InBlock => XtStatus::InBlock,
ExtrinsicState::Finalized => XtStatus::Finalized,
}
}
}

#[derive(Debug, Clone, Subcommand)]
pub enum Command {
/// Staking call to bond stash with controller
Expand Down Expand Up @@ -336,4 +353,16 @@ pub enum Command {
/// Code can only be removed by its original uploader (its owner) and only if it is not used by any contract.
/// API signature: https://polkadot.js.org/docs/substrate/extrinsics/#removecodecode_hash-h256
ContractRemoveCode(ContractRemoveCode),

/// Schedules a version upgrade of the network.
VersionUpgradeSchedule {
#[clap(long)]
version: Version,

#[clap(long)]
session: SessionIndex,

#[clap(long, value_enum, default_value_t=ExtrinsicState::Finalized)]
expected_state: ExtrinsicState,
},
}
2 changes: 2 additions & 0 deletions bin/cliain/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ mod staking;
mod transfer;
mod treasury;
mod validators;
mod version_upgrade;
mod vesting;

use aleph_client::{
Expand All @@ -27,6 +28,7 @@ pub use treasury::{
approve as treasury_approve, propose as treasury_propose, reject as treasury_reject,
};
pub use validators::change_validators;
pub use version_upgrade::schedule_upgrade;
pub use vesting::{vest, vest_other, vested_transfer};

pub struct ConnectionConfig {
Expand Down
14 changes: 11 additions & 3 deletions bin/cliain/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ use clap::Parser;
use cliain::{
bond, call, change_validators, finalize, force_new_era, instantiate, instantiate_with_code,
next_session_keys, nominate, owner_info, prepare_keys, prompt_password_hidden, remove_code,
rotate_keys, set_emergency_finalizer, set_keys, set_staking_limits, transfer, treasury_approve,
treasury_propose, treasury_reject, update_runtime, upload_code, validate, vest, vest_other,
vested_transfer, Command, ConnectionConfig,
rotate_keys, schedule_upgrade, set_emergency_finalizer, set_keys, set_staking_limits, transfer,
treasury_approve, treasury_propose, treasury_reject, update_runtime, upload_code, validate,
vest, vest_other, vested_transfer, Command, ConnectionConfig,
};
use log::{error, info};
use sp_core::Pair;
Expand Down Expand Up @@ -182,6 +182,14 @@ fn main() {
Ok(result) => println!("{:?}", result),
Err(why) => error!("Contract remove code failed {:?}", why),
},
Command::VersionUpgradeSchedule {
version,
session: session_for_upgrade,
expected_state,
} => match schedule_upgrade(cfg.into(), version, session_for_upgrade, expected_state) {
Ok(_) => {}
Err(why) => error!("Unable to schedule an upgrade {:?}", why),
},
}
}

Expand Down
20 changes: 20 additions & 0 deletions bin/cliain/src/version_upgrade.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
use aleph_client::RootConnection;
use anyhow::Error;
use primitives::SessionIndex;

use crate::commands::{ExtrinsicState, Version};

pub fn schedule_upgrade(
connection: RootConnection,
version: Version,
session_for_upgrade: SessionIndex,
expected_state: ExtrinsicState,
) -> anyhow::Result<()> {
aleph_client::schedule_upgrade(
&connection,
version,
session_for_upgrade,
expected_state.into(),
)
.map_err(Error::new)
}
16 changes: 13 additions & 3 deletions e2e-tests/src/test/version_upgrade.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use aleph_client::{
get_current_session, get_session_period, schedule_upgrade, wait_for_at_least_session,
wait_for_finalized_block, AnyConnection,
wait_for_finalized_block, AnyConnection, XtStatus,
};
use primitives::{Header, SessionIndex};

Expand Down Expand Up @@ -28,7 +28,12 @@ pub fn schedule_version_change(config: &Config) -> anyhow::Result<()> {
.unwrap_or(UPGRADE_FINALIZATION_WAIT_SESSIONS);
let session_after_upgrade = session_for_upgrade + wait_sessions_after_upgrade;

schedule_upgrade(&connection, version_for_upgrade, session_for_upgrade)?;
schedule_upgrade(
&connection,
version_for_upgrade,
session_for_upgrade,
XtStatus::Finalized,
)?;

wait_for_at_least_session(&connection, session_after_upgrade)?;
let block_number = session_after_upgrade * get_session_period(&connection);
Expand Down Expand Up @@ -56,7 +61,12 @@ pub fn schedule_doomed_version_change_and_verify_finalization_stopped(
.unwrap_or(UPGRADE_FINALIZATION_WAIT_SESSIONS);
let session_after_upgrade = session_for_upgrade + wait_sessions_after_upgrade;

schedule_upgrade(&connection, version_for_upgrade, session_for_upgrade)?;
schedule_upgrade(
&connection,
version_for_upgrade,
session_for_upgrade,
XtStatus::Finalized,
)?;
wait_for_at_least_session(&connection, session_for_upgrade)?;
let last_finalized_block = session_for_upgrade * get_session_period(&connection) - 1;

Expand Down