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    #[error("custom_processes['{0}'].{1}")]
25    CustomProcess(String, anyhow::Error),
26}
27
28/// An error at the field level.
29#[derive(thiserror::Error, Debug)]
30pub enum FieldError {
31    #[error("name: {0}")]
32    Name(anyhow::Error),
33
34    #[error("chain: {0}")]
35    Chain(anyhow::Error),
36
37    #[error("image: {0}")]
38    Image(anyhow::Error),
39
40    #[error("default_image: {0}")]
41    DefaultImage(anyhow::Error),
42
43    #[error("command: {0}")]
44    Command(anyhow::Error),
45
46    #[error("default_command: {0}")]
47    DefaultCommand(anyhow::Error),
48
49    #[error("bootnodes_addresses[{0}]: '{1}' {2}")]
50    BootnodesAddress(usize, String, anyhow::Error),
51
52    #[error("genesis_wasm_generator: {0}")]
53    GenesisWasmGenerator(anyhow::Error),
54
55    #[error("genesis_state_generator: {0}")]
56    GenesisStateGenerator(anyhow::Error),
57
58    #[error("genesis_patch: {0}")]
59    GenesisPatch(anyhow::Error),
60
61    #[error("local_ip: {0}")]
62    LocalIp(anyhow::Error),
63
64    #[error("default_resources.{0}")]
65    DefaultResources(anyhow::Error),
66
67    #[error("resources.{0}")]
68    Resources(anyhow::Error),
69
70    #[error("ready_check: {0}")]
71    ReadyCheck(anyhow::Error),
72
73    #[error("depends_on: {0}")]
74    DependsOn(anyhow::Error),
75
76    #[error("timeout: {0}")]
77    Timeout(anyhow::Error),
78
79    #[error("request_memory: {0}")]
80    RequestMemory(anyhow::Error),
81
82    #[error("request_cpu: {0}")]
83    RequestCpu(anyhow::Error),
84
85    #[error("limit_memory: {0}")]
86    LimitMemory(anyhow::Error),
87
88    #[error("limit_cpu: {0}")]
89    LimitCpu(anyhow::Error),
90
91    #[error("ws_port: {0}")]
92    WsPort(anyhow::Error),
93
94    #[error("rpc_port: {0}")]
95    RpcPort(anyhow::Error),
96
97    #[error("prometheus_port: {0}")]
98    PrometheusPort(anyhow::Error),
99
100    #[error("p2p_port: {0}")]
101    P2pPort(anyhow::Error),
102
103    #[error("session_key: {0}")]
104    SessionKey(anyhow::Error),
105
106    #[error("registration_strategy: {0}")]
107    RegistrationStrategy(anyhow::Error),
108
109    #[error("ports: {0}")]
110    Ports(anyhow::Error),
111}
112
113/// A conversion error for shared types across fields.
114#[derive(thiserror::Error, Debug, Clone)]
115pub enum ConversionError {
116    #[error("'{0}' shouldn't contains whitespace")]
117    ContainsWhitespaces(String),
118
119    #[error("'{}' doesn't match regex '{}'", .value, .regex)]
120    DoesntMatchRegex { value: String, regex: String },
121
122    #[error("can't be empty")]
123    CantBeEmpty,
124
125    #[error("deserialize error")]
126    DeserializeError(String),
127}
128
129/// A validation error for shared types across fields.
130#[derive(thiserror::Error, Debug, Clone)]
131pub enum ValidationError {
132    #[error("'{0}' is already used across config")]
133    PortAlreadyUsed(Port),
134
135    #[error("can't be empty")]
136    CantBeEmpty(),
137}