zombienet_configuration/shared/
errors.rs

1use super::types::{ParaId, Port};
2
3/// An error at the configuration level.
4#[derive(thiserror::Error, Debug)]
5pub enum ConfigError {
6    #[error("relaychain.{0}")]
7    Relaychain(anyhow::Error),
8
9    #[error("parachain[{0}].{1}")]
10    Parachain(ParaId, anyhow::Error),
11
12    #[error("global_settings.{0}")]
13    GlobalSettings(anyhow::Error),
14
15    #[error("nodes['{0}'].{1}")]
16    Node(String, anyhow::Error),
17
18    #[error("collators['{0}'].{1}")]
19    Collator(String, anyhow::Error),
20}
21
22/// An error at the field level.
23#[derive(thiserror::Error, Debug)]
24pub enum FieldError {
25    #[error("name: {0}")]
26    Name(anyhow::Error),
27
28    #[error("chain: {0}")]
29    Chain(anyhow::Error),
30
31    #[error("image: {0}")]
32    Image(anyhow::Error),
33
34    #[error("default_image: {0}")]
35    DefaultImage(anyhow::Error),
36
37    #[error("command: {0}")]
38    Command(anyhow::Error),
39
40    #[error("default_command: {0}")]
41    DefaultCommand(anyhow::Error),
42
43    #[error("bootnodes_addresses[{0}]: '{1}' {2}")]
44    BootnodesAddress(usize, String, anyhow::Error),
45
46    #[error("genesis_wasm_generator: {0}")]
47    GenesisWasmGenerator(anyhow::Error),
48
49    #[error("genesis_state_generator: {0}")]
50    GenesisStateGenerator(anyhow::Error),
51
52    #[error("local_ip: {0}")]
53    LocalIp(anyhow::Error),
54
55    #[error("default_resources.{0}")]
56    DefaultResources(anyhow::Error),
57
58    #[error("resources.{0}")]
59    Resources(anyhow::Error),
60
61    #[error("request_memory: {0}")]
62    RequestMemory(anyhow::Error),
63
64    #[error("request_cpu: {0}")]
65    RequestCpu(anyhow::Error),
66
67    #[error("limit_memory: {0}")]
68    LimitMemory(anyhow::Error),
69
70    #[error("limit_cpu: {0}")]
71    LimitCpu(anyhow::Error),
72
73    #[error("ws_port: {0}")]
74    WsPort(anyhow::Error),
75
76    #[error("rpc_port: {0}")]
77    RpcPort(anyhow::Error),
78
79    #[error("prometheus_port: {0}")]
80    PrometheusPort(anyhow::Error),
81
82    #[error("p2p_port: {0}")]
83    P2pPort(anyhow::Error),
84
85    #[error("registration_strategy: {0}")]
86    RegistrationStrategy(anyhow::Error),
87}
88
89/// A conversion error for shared types across fields.
90#[derive(thiserror::Error, Debug, Clone)]
91pub enum ConversionError {
92    #[error("'{0}' shouldn't contains whitespace")]
93    ContainsWhitespaces(String),
94
95    #[error("'{}' doesn't match regex '{}'", .value, .regex)]
96    DoesntMatchRegex { value: String, regex: String },
97
98    #[error("can't be empty")]
99    CantBeEmpty,
100
101    #[error("deserialize error")]
102    DeserializeError(String),
103}
104
105/// A validation error for shared types across fields.
106#[derive(thiserror::Error, Debug, Clone)]
107pub enum ValidationError {
108    #[error("'{0}' is already used across config")]
109    PortAlreadyUsed(Port),
110
111    #[error("'{0}' is already used across config")]
112    NodeNameAlreadyUsed(String),
113
114    #[error("can't be empty")]
115    CantBeEmpty(),
116}