Skip to content

Commit c8bdf73

Browse files
authored
fix: loosen tfgrid input validation (#507)
* fix: decrease SRU minimal requirement to 100 GB * fix: make serial number optional
1 parent 7d3dc25 commit c8bdf73

File tree

10 files changed

+39
-52
lines changed

10 files changed

+39
-52
lines changed

substrate-node/pallets/pallet-dao/src/mock.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ use pallet_tfgrid::{
1414
twin::TwinIp,
1515
DocumentHashInput, DocumentLinkInput, TwinIpInput,
1616
};
17-
use pallet_tfgrid::{
18-
CityNameInput, CountryNameInput, LatitudeInput, LongitudeInput, SerialNumberInput,
19-
};
17+
use pallet_tfgrid::{CityNameInput, CountryNameInput, LatitudeInput, LongitudeInput};
2018
use pallet_timestamp;
2119
use sp_core::H256;
2220
use sp_runtime::{
@@ -237,10 +235,6 @@ pub(crate) fn get_longitude_input(longitude_input: &[u8]) -> LongitudeInput {
237235
BoundedVec::try_from(longitude_input.to_vec()).expect("Invalid longitude input.")
238236
}
239237

240-
pub(crate) fn get_serial_number_input(serial_number_input: &[u8]) -> SerialNumberInput {
241-
BoundedVec::try_from(serial_number_input.to_vec()).expect("Invalid serial number input.")
242-
}
243-
244238
// Build genesis storage according to the mock runtime.
245239
pub fn new_test_ext() -> sp_io::TestExternalities {
246240
let mut t = frame_system::GenesisConfig::default()

substrate-node/pallets/pallet-dao/src/tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ fn prepare_node(account_id: u64, farm_id: u32) {
809809
bounded_vec![],
810810
false,
811811
false,
812-
get_serial_number_input(b"some_serial"),
812+
None,
813813
));
814814
}
815815

@@ -837,7 +837,7 @@ fn prepare_big_node(account_id: u64, farm_id: u32) {
837837
bounded_vec![],
838838
false,
839839
false,
840-
get_serial_number_input(b"some_serial"),
840+
None,
841841
));
842842
}
843843

substrate-node/pallets/pallet-smart-contract/src/mock.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use codec::{alloc::sync::Arc, Decode};
88
use frame_support::{
99
construct_runtime, parameter_types,
1010
traits::{ConstU32, GenesisBuild},
11-
BoundedVec,
1211
weights::PostDispatchInfo,
12+
BoundedVec,
1313
};
1414
use frame_system::EnsureRoot;
1515
use pallet_tfgrid::node::{CityName, CountryName};
@@ -23,9 +23,7 @@ use pallet_tfgrid::{
2323
twin::TwinIp,
2424
DocumentHashInput, DocumentLinkInput, PublicIpGatewayInput, PublicIpIpInput, TwinIpInput,
2525
};
26-
use pallet_tfgrid::{
27-
CityNameInput, CountryNameInput, LatitudeInput, LongitudeInput, SerialNumberInput,
28-
};
26+
use pallet_tfgrid::{CityNameInput, CountryNameInput, LatitudeInput, LongitudeInput};
2927
use parking_lot::RwLock;
3028
use sp_core::{
3129
crypto::Ss58Codec,
@@ -297,10 +295,6 @@ pub(crate) fn get_longitude_input(longitude_input: &[u8]) -> LongitudeInput {
297295
BoundedVec::try_from(longitude_input.to_vec()).expect("Invalid longitude input.")
298296
}
299297

300-
pub(crate) fn get_serial_number_input(serial_number_input: &[u8]) -> SerialNumberInput {
301-
BoundedVec::try_from(serial_number_input.to_vec()).expect("Invalid serial number input.")
302-
}
303-
304298
/// Helper function to generate a crypto pair from seed
305299
fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {
306300
TPublic::Pair::from_string(&format!("//{}", seed), None)

substrate-node/pallets/pallet-smart-contract/src/tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ fn test_update_node_contract_works() {
203203
deployment_hash: new_hash,
204204
deployment_data,
205205
public_ips: 0,
206-
public_ips_list: Vec::new().try_into().unwrap(),
206+
public_ips_list: bounded_vec![],
207207
};
208208
let contract_type = types::ContractData::NodeContract(node_contract);
209209

@@ -2674,7 +2674,7 @@ pub fn prepare_farm_and_node() {
26742674
bounded_vec![],
26752675
false,
26762676
false,
2677-
get_serial_number_input(b"some_serial"),
2677+
None,
26782678
)
26792679
.unwrap();
26802680
}
@@ -2708,7 +2708,7 @@ pub fn prepare_dedicated_farm_and_node() {
27082708
bounded_vec![],
27092709
false,
27102710
false,
2711-
get_serial_number_input(b"some_serial"),
2711+
None,
27122712
)
27132713
.unwrap();
27142714
}

substrate-node/pallets/pallet-tfgrid/src/lib.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,7 +1055,7 @@ pub mod pallet {
10551055
interfaces: InterfaceInput<T>,
10561056
secure_boot: bool,
10571057
virtualized: bool,
1058-
serial_number: SerialNumberInput,
1058+
serial_number: Option<SerialNumberInput>,
10591059
) -> DispatchResultWithPostInfo {
10601060
let account_id = ensure_signed(origin)?;
10611061

@@ -1078,7 +1078,12 @@ pub mod pallet {
10781078
let node_resources = Self::get_resources(resources)?;
10791079
let node_location = Self::get_location(location)?;
10801080
let node_interfaces = Self::get_interfaces(&interfaces)?;
1081-
let node_serial_number = Self::get_serial_number(serial_number)?;
1081+
1082+
let node_serial_number = if let Some(serial_input) = serial_number {
1083+
Some(Self::get_serial_number(serial_input)?)
1084+
} else {
1085+
None
1086+
};
10821087

10831088
let created = <timestamp::Pallet<T>>::get().saturated_into::<u64>() / 1000;
10841089

@@ -1129,7 +1134,7 @@ pub mod pallet {
11291134
interfaces: InterfaceInput<T>,
11301135
secure_boot: bool,
11311136
virtualized: bool,
1132-
serial_number: SerialNumberInput,
1137+
serial_number: Option<SerialNumberInput>,
11331138
) -> DispatchResultWithPostInfo {
11341139
let account_id = ensure_signed(origin)?;
11351140

@@ -1165,7 +1170,12 @@ pub mod pallet {
11651170
let node_resources = Self::get_resources(resources)?;
11661171
let node_location = Self::get_location(location)?;
11671172
let node_interfaces = Self::get_interfaces(&interfaces)?;
1168-
let node_serial_number = Self::get_serial_number(serial_number)?;
1173+
1174+
let node_serial_number = if let Some(serial_input) = serial_number {
1175+
Some(Self::get_serial_number(serial_input)?)
1176+
} else {
1177+
None
1178+
};
11691179

11701180
// If the resources on a certified node changed, reset the certification level to DIY
11711181
if stored_node.resources != node_resources

substrate-node/pallets/pallet-tfgrid/src/migrations/v12.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -165,15 +165,8 @@ fn migrate_nodes<T: Config>() -> frame_support::weights::Weight {
165165
};
166166

167167
let serial_number = match get_serial_number::<T>(&node) {
168-
Ok(serial) => serial,
169-
Err(e) => {
170-
info!(
171-
"failed to parse serial number for node: {:?}, error: {:?}",
172-
k, e
173-
);
174-
info!("set default serial number for node");
175-
<T as Config>::SerialNumber::default()
176-
}
168+
Ok(serial) => Some(serial),
169+
Err(_) => None,
177170
};
178171

179172
let new_node = TfgridNode::<T> {

substrate-node/pallets/pallet-tfgrid/src/mock.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::{
1111
weights, CityNameInput, Config, CountryNameInput, DocumentHashInput, DocumentLinkInput,
1212
DomainInput, FarmNameInput, GW4Input, GW6Input, IP4Input, IP6Input, InterfaceIpInput,
1313
InterfaceMacInput, InterfaceNameInput, LatitudeInput, LongitudeInput, PublicIpGatewayInput,
14-
PublicIpIpInput, SerialNumberInput, TwinIpInput,
14+
PublicIpIpInput, TwinIpInput,
1515
};
1616
use frame_support::{construct_runtime, parameter_types, traits::ConstU32, BoundedVec};
1717
use frame_system::EnsureRoot;
@@ -336,10 +336,6 @@ pub(crate) fn get_longitude_input(longitude_input: &[u8]) -> LongitudeInput {
336336
BoundedVec::try_from(longitude_input.to_vec()).expect("Invalid longitude input.")
337337
}
338338

339-
pub(crate) fn get_serial_number_input(serial_number_input: &[u8]) -> SerialNumberInput {
340-
BoundedVec::try_from(serial_number_input.to_vec()).expect("Invalid serial number input.")
341-
}
342-
343339
// industry dismiss casual gym gap music pave gasp sick owner dumb cost
344340
/// Helper function to generate a crypto pair from seed
345341
fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {

substrate-node/pallets/pallet-tfgrid/src/tests.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -672,10 +672,10 @@ fn update_node_moved_from_farm_list_works() {
672672
2,
673673
resources,
674674
location,
675-
Vec::new().try_into().unwrap(),
675+
bounded_vec![],
676676
true,
677677
true,
678-
get_serial_number_input(b"some_serial"),
678+
None,
679679
));
680680

681681
// should be removed from farm 1 nodes
@@ -728,10 +728,10 @@ fn update_certified_node_resources_loses_certification_works() {
728728
1,
729729
node_resources,
730730
node_location,
731-
Vec::new().try_into().unwrap(),
731+
bounded_vec![],
732732
true,
733733
true,
734-
get_serial_number_input(b"some_serial"),
734+
None,
735735
));
736736

737737
let our_events = System::events();
@@ -785,10 +785,10 @@ fn update_certified_node_same_resources_keeps_certification_works() {
785785
1,
786786
node_resources,
787787
node_location,
788-
Vec::new().try_into().unwrap(),
788+
bounded_vec![],
789789
true,
790790
true,
791-
get_serial_number_input(b"some_serial"),
791+
None,
792792
));
793793

794794
let node = TfgridModule::nodes(1).unwrap();
@@ -839,7 +839,7 @@ fn create_node_with_interfaces_works() {
839839
interfaces,
840840
true,
841841
true,
842-
get_serial_number_input(b"some_serial"),
842+
None,
843843
));
844844
});
845845
}
@@ -1292,7 +1292,7 @@ fn create_node_with_same_pubkey_fails() {
12921292
bounded_vec![],
12931293
true,
12941294
true,
1295-
get_serial_number_input(b"some_serial"),
1295+
None,
12961296
),
12971297
Error::<TestRuntime>::NodeWithTwinIdExists
12981298
);
@@ -2133,7 +2133,7 @@ fn create_node() {
21332133
interfaces,
21342134
true,
21352135
true,
2136-
get_serial_number_input(b"some_serial"),
2136+
None,
21372137
));
21382138
}
21392139

@@ -2158,10 +2158,10 @@ fn create_extra_node() {
21582158
1,
21592159
resources,
21602160
location,
2161-
Vec::new().try_into().unwrap(),
2161+
bounded_vec![],
21622162
true,
21632163
true,
2164-
get_serial_number_input(b"some_serial"),
2164+
None,
21652165
));
21662166
}
21672167

substrate-node/support/src/resources.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ impl Resources {
3030
}
3131

3232
pub fn validate_sru(&self) -> bool {
33-
// SRU minimum of 500 GB
34-
self.sru as u128 >= 500 * GIGABYTE
33+
// SRU minimum of 100 GB
34+
self.sru as u128 >= 100 * GIGABYTE
3535
}
3636

3737
pub fn validate_cru(&self) -> bool {

substrate-node/support/src/types.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ pub struct Node<Location, PubConfig, If, SerialNumber> {
8585
pub certification: NodeCertification,
8686
pub secure_boot: bool,
8787
pub virtualized: bool,
88-
pub serial_number: SerialNumber,
88+
pub serial_number: Option<SerialNumber>,
8989
pub connection_price: u32,
9090
}
9191

0 commit comments

Comments
 (0)