1pub mod service;
2#[derive(Debug, Clone)]
3pub struct ServicesClient<T> {
4 client: T,
5 path: String,
6}
7impl<T> ServicesClient<T>
8where
9 T: crate::client::Client,
10{
11 pub fn new(client: T, parent_path: &str) -> Self {
12 Self {
13 client,
14 path: format!("{}{}", parent_path, "/services"),
15 }
16 }
17}
18impl<T> ServicesClient<T>
19where
20 T: crate::client::Client,
21{
22 #[doc = "Service list."]
23 #[doc = ""]
24 #[doc = "Permission check: perm(\"/nodes/{node}\", [\"Sys.Audit\"])"]
25 pub async fn get(&self) -> Result<Vec<GetOutputItems>, T::Error> {
26 let path = self.path.to_string();
27 let optional_vec: Option<Vec<GetOutputItems>> = self.client.get(&path, &()).await?;
28 Ok(optional_vec.unwrap_or_default())
29 }
30}
31impl GetOutputItems {
32 pub fn new(
33 active_state: ActiveState,
34 desc: String,
35 name: String,
36 service: String,
37 state: State,
38 unit_state: UnitState,
39 ) -> Self {
40 Self {
41 active_state,
42 desc,
43 name,
44 service,
45 state,
46 unit_state,
47 additional_properties: ::std::default::Default::default(),
48 }
49 }
50}
51#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
52pub struct GetOutputItems {
53 #[serde(rename = "active-state")]
54 #[doc = "Current state of the service process (systemd ActiveState)."]
55 #[doc = ""]
56 pub active_state: ActiveState,
57 #[doc = "Description of the service."]
58 #[doc = ""]
59 pub desc: String,
60 #[doc = "Short identifier for the service (e.g., \"pveproxy\")."]
61 #[doc = ""]
62 pub name: String,
63 #[doc = "Systemd unit name (e.g., pveproxy)."]
64 #[doc = ""]
65 pub service: String,
66 #[doc = "Execution status of the service (systemd SubState)."]
67 #[doc = ""]
68 pub state: State,
69 #[serde(rename = "unit-state")]
70 #[doc = "Whether the service is enabled (systemd UnitFileState)."]
71 #[doc = ""]
72 pub unit_state: UnitState,
73 #[serde(
74 flatten,
75 default,
76 skip_serializing_if = "::std::collections::HashMap::is_empty"
77 )]
78 pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
79}
80#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
81#[doc = "Current state of the service process (systemd ActiveState)."]
82#[doc = ""]
83pub enum ActiveState {
84 #[serde(rename = "activating")]
85 Activating,
86 #[serde(rename = "active")]
87 Active,
88 #[serde(rename = "deactivating")]
89 Deactivating,
90 #[serde(rename = "failed")]
91 Failed,
92 #[serde(rename = "inactive")]
93 Inactive,
94 #[serde(rename = "maintenance")]
95 Maintenance,
96 #[serde(rename = "refreshing")]
97 Refreshing,
98 #[serde(rename = "reloading")]
99 Reloading,
100 #[serde(rename = "unknown")]
101 Unknown,
102}
103impl TryFrom<&str> for ActiveState {
104 type Error = String;
105 fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
106 match value {
107 "activating" => Ok(Self::Activating),
108 "active" => Ok(Self::Active),
109 "deactivating" => Ok(Self::Deactivating),
110 "failed" => Ok(Self::Failed),
111 "inactive" => Ok(Self::Inactive),
112 "maintenance" => Ok(Self::Maintenance),
113 "refreshing" => Ok(Self::Refreshing),
114 "reloading" => Ok(Self::Reloading),
115 "unknown" => Ok(Self::Unknown),
116 v => Err(format!("Unknown variant {v}")),
117 }
118 }
119}
120#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
121#[doc = "Execution status of the service (systemd SubState)."]
122#[doc = ""]
123pub enum State {
124 #[serde(rename = "auto-restart")]
125 AutoRestart,
126 #[serde(rename = "auto-restart-queued")]
127 AutoRestartQueued,
128 #[serde(rename = "cleaning")]
129 Cleaning,
130 #[serde(rename = "condition")]
131 Condition,
132 #[serde(rename = "dead")]
133 Dead,
134 #[serde(rename = "dead-before-auto-restart")]
135 DeadBeforeAutoRestart,
136 #[serde(rename = "dead-resources-pinned")]
137 DeadResourcesPinned,
138 #[serde(rename = "exited")]
139 Exited,
140 #[serde(rename = "failed")]
141 Failed,
142 #[serde(rename = "failed-before-auto-restart")]
143 FailedBeforeAutoRestart,
144 #[serde(rename = "final-sigkill")]
145 FinalSigkill,
146 #[serde(rename = "final-sigterm")]
147 FinalSigterm,
148 #[serde(rename = "final-watchdog")]
149 FinalWatchdog,
150 #[serde(rename = "mounting")]
151 Mounting,
152 #[serde(rename = "reload")]
153 Reload,
154 #[serde(rename = "reload-notify")]
155 ReloadNotify,
156 #[serde(rename = "reload-signal")]
157 ReloadSignal,
158 #[serde(rename = "running")]
159 Running,
160 #[serde(rename = "start")]
161 Start,
162 #[serde(rename = "start-post")]
163 StartPost,
164 #[serde(rename = "start-pre")]
165 StartPre,
166 #[serde(rename = "stop")]
167 Stop,
168 #[serde(rename = "stop-post")]
169 StopPost,
170 #[serde(rename = "stop-sigkill")]
171 StopSigkill,
172 #[serde(rename = "stop-sigterm")]
173 StopSigterm,
174 #[serde(rename = "stop-watchdog")]
175 StopWatchdog,
176 #[serde(rename = "unknown")]
177 Unknown,
178}
179impl TryFrom<&str> for State {
180 type Error = String;
181 fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
182 match value {
183 "auto-restart" => Ok(Self::AutoRestart),
184 "auto-restart-queued" => Ok(Self::AutoRestartQueued),
185 "cleaning" => Ok(Self::Cleaning),
186 "condition" => Ok(Self::Condition),
187 "dead" => Ok(Self::Dead),
188 "dead-before-auto-restart" => Ok(Self::DeadBeforeAutoRestart),
189 "dead-resources-pinned" => Ok(Self::DeadResourcesPinned),
190 "exited" => Ok(Self::Exited),
191 "failed" => Ok(Self::Failed),
192 "failed-before-auto-restart" => Ok(Self::FailedBeforeAutoRestart),
193 "final-sigkill" => Ok(Self::FinalSigkill),
194 "final-sigterm" => Ok(Self::FinalSigterm),
195 "final-watchdog" => Ok(Self::FinalWatchdog),
196 "mounting" => Ok(Self::Mounting),
197 "reload" => Ok(Self::Reload),
198 "reload-notify" => Ok(Self::ReloadNotify),
199 "reload-signal" => Ok(Self::ReloadSignal),
200 "running" => Ok(Self::Running),
201 "start" => Ok(Self::Start),
202 "start-post" => Ok(Self::StartPost),
203 "start-pre" => Ok(Self::StartPre),
204 "stop" => Ok(Self::Stop),
205 "stop-post" => Ok(Self::StopPost),
206 "stop-sigkill" => Ok(Self::StopSigkill),
207 "stop-sigterm" => Ok(Self::StopSigterm),
208 "stop-watchdog" => Ok(Self::StopWatchdog),
209 "unknown" => Ok(Self::Unknown),
210 v => Err(format!("Unknown variant {v}")),
211 }
212 }
213}
214#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
215#[doc = "Whether the service is enabled (systemd UnitFileState)."]
216#[doc = ""]
217pub enum UnitState {
218 #[serde(rename = "alias")]
219 Alias,
220 #[serde(rename = "bad")]
221 Bad,
222 #[serde(rename = "disabled")]
223 Disabled,
224 #[serde(rename = "enabled")]
225 Enabled,
226 #[serde(rename = "enabled-runtime")]
227 EnabledRuntime,
228 #[serde(rename = "generated")]
229 Generated,
230 #[serde(rename = "indirect")]
231 Indirect,
232 #[serde(rename = "linked")]
233 Linked,
234 #[serde(rename = "linked-runtime")]
235 LinkedRuntime,
236 #[serde(rename = "masked")]
237 Masked,
238 #[serde(rename = "masked-runtime")]
239 MaskedRuntime,
240 #[serde(rename = "not-found")]
241 NotFound,
242 #[serde(rename = "static")]
243 Static,
244 #[serde(rename = "transient")]
245 Transient,
246 #[serde(rename = "unknown")]
247 Unknown,
248}
249impl TryFrom<&str> for UnitState {
250 type Error = String;
251 fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
252 match value {
253 "alias" => Ok(Self::Alias),
254 "bad" => Ok(Self::Bad),
255 "disabled" => Ok(Self::Disabled),
256 "enabled" => Ok(Self::Enabled),
257 "enabled-runtime" => Ok(Self::EnabledRuntime),
258 "generated" => Ok(Self::Generated),
259 "indirect" => Ok(Self::Indirect),
260 "linked" => Ok(Self::Linked),
261 "linked-runtime" => Ok(Self::LinkedRuntime),
262 "masked" => Ok(Self::Masked),
263 "masked-runtime" => Ok(Self::MaskedRuntime),
264 "not-found" => Ok(Self::NotFound),
265 "static" => Ok(Self::Static),
266 "transient" => Ok(Self::Transient),
267 "unknown" => Ok(Self::Unknown),
268 v => Err(format!("Unknown variant {v}")),
269 }
270 }
271}
272impl<T> ServicesClient<T>
273where
274 T: crate::client::Client,
275{
276 pub fn service(&self, service: &str) -> service::ServiceClient<T> {
277 service::ServiceClient::<T>::new(self.client.clone(), &self.path, service)
278 }
279}