Skip to main content

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