assemblyline_models/datastore/
service_delta.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4use struct_metadata::Described;
5
6use crate::datastore::service::SubmissionParams;
7use crate::types::{NonZeroInteger, ServiceName};
8use crate::{ElasticMeta, Readable, types::{ClassificationString, JsonMap, Text}};
9
10use super::service::{AccessMode, ChannelKinds, EnvironmentVariable, FetchMethods, ParamKinds, RegistryType, SignatureDelimiter};
11
12#[derive(Serialize, Deserialize, Described, Default)]
28#[metadata_type(ElasticMeta)]
29#[serde(default)]
30#[metadata(index=false, store=false)]
31pub struct DockerConfigDelta {
32 pub allow_internet_access: Option<bool>,
34 pub command: Option<Vec<String>>,
36 pub cpu_cores: Option<f32>,
38 pub environment: Option<Vec<EnvironmentVariable>>,
40 pub image: Option<String>,
42 pub registry_username: Option<String>,
44 pub registry_password: Option<String>,
46 pub registry_type: Option<RegistryType>,
48 pub ports: Option<Vec<String>>,
50 pub ram_mb: Option<i32>,
52 pub ram_mb_min: Option<i32>,
54 pub service_account: Option<String>,
56 pub labels: Option<Vec<EnvironmentVariable>>,
58}
59
60
61#[derive(Serialize, Deserialize, Described, Default)]
62#[metadata_type(ElasticMeta)]
63#[serde(default)]
64#[metadata(index=false, store=false)]
65pub struct UpdateSourceDelta {
66 pub enabled: Option<bool>,
68 pub name: Option<String>,
70 pub password: Option<String>,
72 pub pattern: Option<String>,
74 pub private_key: Option<String>,
76 pub ca_cert: Option<String>,
78 pub ssl_ignore_errors: Option<bool>,
80 pub proxy: Option<String>,
82 pub uri: Option<String>,
84 pub username: Option<String>,
86 pub headers: Option<Vec<EnvironmentVariable>>,
88 pub default_classification: Option<ClassificationString>,
90 pub use_managed_identity: Option<bool>,
92 pub git_branch: Option<String>,
94 pub sync: Option<bool>,
96 pub fetch_method: Option<FetchMethods>,
98 pub override_classification: Option<bool>,
100 pub configuration: Option<HashMap<String, serde_json::Value>>,
102 pub data: Option<Text>,
104 #[metadata(mapping="integer")]
106 pub update_interval: Option<NonZeroInteger>,
107 pub ignore_cache: Option<bool>,
109}
110
111#[derive(Serialize, Deserialize, Described, Default)]
112#[serde(default)]
113#[metadata_type(ElasticMeta)]
114#[metadata(index=false, store=false)]
115pub struct PersistentVolumeDelta {
116 pub mount_path: Option<String>,
118 pub capacity: Option<String>,
120 pub storage_class: Option<String>,
122 pub access_mode: Option<AccessMode>,
124}
125
126#[derive(Serialize, Deserialize, Described, Default)]
127#[serde(default)]
128#[metadata_type(ElasticMeta)]
129#[metadata(index=false, store=false)]
130pub struct DependencyConfigDelta {
131 pub container: Option<DockerConfigDelta>,
133 pub volumes: Option<HashMap<String, PersistentVolumeDelta>>,
135 pub run_as_core: Option<bool>,
137}
138
139#[derive(Serialize, Deserialize, Described, Default)]
140#[serde(default)]
141#[metadata_type(ElasticMeta)]
142#[metadata(index=false, store=false)]
143pub struct UpdateConfigDelta {
144 #[metadata[index=true]]
146 pub generates_signatures: Option<bool>,
147 pub sources: Option<Vec<UpdateSourceDelta>>,
149 pub update_interval_seconds: Option<i32>,
151 pub wait_for_update: Option<bool>,
153 pub signature_delimiter: Option<SignatureDelimiter>,
155 pub custom_delimiter: Option<String>,
157 pub default_pattern: Option<Text>,
159}
160
161#[derive(Serialize, Deserialize, Described, Default)]
162#[serde(default)]
163#[metadata_type(ElasticMeta)]
164#[metadata(index=false, store=false)]
165pub struct SubmissionParamsDelta {
166 pub default: Option<serde_json::Value>,
168 pub name: Option<String>,
170 #[serde(rename="type")]
172 pub _type: Option<ParamKinds>,
173 pub value: Option<serde_json::Value>,
175 pub list: Option<serde_json::Value>,
177 pub hide: Option<bool>,
179}
180
181impl From<SubmissionParams> for SubmissionParamsDelta {
182 fn from(value: SubmissionParams) -> Self {
183 Self {
184 default: Some(value.default),
185 name: Some(value.name),
186 _type: Some(value.param_type),
187 value: Some(value.value),
188 list: Some(serde_json::Value::Array(value.list)),
189 hide: Some(value.hide),
190 }
191 }
192}
193
194
195#[derive(Serialize, Deserialize, Described, Default)]
197#[serde(default)]
198#[metadata_type(ElasticMeta)]
199#[metadata(index=true, store=false)]
200pub struct ServiceDelta {
201 #[metadata(store=true)]
203 pub accepts: Option<String>,
204 #[metadata(store=true)]
206 pub rejects: Option<String>,
207 pub auto_update: Option<bool>,
209 #[metadata(store=true)]
211 pub category: Option<String>,
212 #[metadata(mapping="keyword")]
214 pub classification: Option<ClassificationString>,
215 #[metadata(index=false)]
217 pub config: Option<JsonMap>,
218 #[metadata(store=true)]
220 pub description: Option<Text>,
221 #[metadata(mapping="keyword")]
223 pub default_result_classification: Option<ClassificationString>,
224 #[metadata(store=true)]
226 pub enabled: Option<bool>,
227 pub is_external: Option<bool>,
229 pub licence_count: Option<i32>,
231 pub max_queue_length: Option<i32>,
233 pub min_instances: Option<i32>,
235
236 pub uses_tags: Option<bool>,
238 pub uses_tag_scores: Option<bool>,
240 pub uses_temp_submission_data: Option<bool>,
242 pub uses_metadata: Option<bool>,
244 pub monitored_keys: Option<Vec<String>>,
245
246 #[metadata(store=true)]
248 pub name: Option<ServiceName>,
249 #[metadata(store=true)]
251 pub version: String,
252
253 pub privileged: Option<bool>,
255 pub disable_cache: Option<bool>,
257
258 #[metadata(store=true)]
260 pub stage: Option<String>,
261 #[metadata(index=false)]
263 pub submission_params: Option<Vec<SubmissionParamsDelta>>,
264 pub timeout: Option<i32>,
266
267 pub docker_config: Option<DockerConfigDelta>,
269 pub dependencies: HashMap<String, DependencyConfigDelta>,
271
272 pub update_channel: Option<ChannelKinds>,
274 pub update_config: Option<UpdateConfigDelta>,
276
277 pub recursion_prevention: Option<Vec<String>>,
279}
280
281impl Readable for ServiceDelta {
282 fn set_from_archive(&mut self, _from_archive: bool) {}
283}