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)]
112#[metadata_type(ElasticMeta)]
113#[metadata(index=false, store=false)]
114pub struct PersistentVolumeDelta {
115 pub mount_path: Option<String>,
117 pub capacity: Option<String>,
119 pub storage_class: Option<String>,
121 pub access_mode: Option<AccessMode>,
123}
124
125#[derive(Serialize, Deserialize, Described)]
126#[metadata_type(ElasticMeta)]
127#[metadata(index=false, store=false)]
128pub struct DependencyConfigDelta {
129 pub container: Option<DockerConfigDelta>,
131 pub volumes: Option<HashMap<String, PersistentVolumeDelta>>,
133 pub run_as_core: Option<bool>,
135}
136
137#[derive(Serialize, Deserialize, Described)]
138#[metadata_type(ElasticMeta)]
139#[metadata(index=false, store=false)]
140pub struct UpdateConfigDelta {
141 #[metadata[index=true]]
143 pub generates_signatures: Option<bool>,
144 pub sources: Option<Vec<UpdateSourceDelta>>,
146 pub update_interval_seconds: Option<i32>,
148 pub wait_for_update: Option<bool>,
150 pub signature_delimiter: Option<SignatureDelimiter>,
152 pub custom_delimiter: Option<String>,
154 pub default_pattern: Option<Text>,
156}
157
158#[derive(Serialize, Deserialize, Described)]
159#[metadata_type(ElasticMeta)]
160#[metadata(index=false, store=false)]
161pub struct SubmissionParamsDelta {
162 pub default: Option<serde_json::Value>,
164 pub name: Option<String>,
166 #[serde(rename="type")]
168 pub _type: Option<ParamKinds>,
169 pub value: Option<serde_json::Value>,
171 pub list: Option<serde_json::Value>,
173 pub hide: Option<bool>,
175}
176
177impl From<SubmissionParams> for SubmissionParamsDelta {
178 fn from(value: SubmissionParams) -> Self {
179 Self {
180 default: Some(value.default),
181 name: Some(value.name),
182 _type: Some(value.param_type),
183 value: Some(value.value),
184 list: Some(serde_json::Value::Array(value.list)),
185 hide: Some(value.hide),
186 }
187 }
188}
189
190
191#[derive(Serialize, Deserialize, Described, Default)]
193#[serde(default)]
194#[metadata_type(ElasticMeta)]
195#[metadata(index=true, store=false)]
196pub struct ServiceDelta {
197 #[metadata(store=true)]
199 pub accepts: Option<String>,
200 #[metadata(store=true)]
202 pub rejects: Option<String>,
203 pub auto_update: Option<bool>,
205 #[metadata(store=true)]
207 pub category: Option<String>,
208 #[metadata(mapping="keyword")]
210 pub classification: Option<ClassificationString>,
211 #[metadata(index=false)]
213 pub config: Option<JsonMap>,
214 #[metadata(store=true)]
216 pub description: Option<Text>,
217 #[metadata(mapping="keyword")]
219 pub default_result_classification: Option<ClassificationString>,
220 #[metadata(store=true)]
222 pub enabled: Option<bool>,
223 pub is_external: Option<bool>,
225 pub licence_count: Option<i32>,
227 pub max_queue_length: Option<i32>,
229 pub min_instances: Option<i32>,
231
232 pub uses_tags: Option<bool>,
234 pub uses_tag_scores: Option<bool>,
236 pub uses_temp_submission_data: Option<bool>,
238 pub uses_metadata: Option<bool>,
240 pub monitored_keys: Option<Vec<String>>,
241
242 #[metadata(store=true)]
244 pub name: Option<ServiceName>,
245 #[metadata(store=true)]
247 pub version: String,
248
249 pub privileged: Option<bool>,
251 pub disable_cache: Option<bool>,
253
254 #[metadata(store=true)]
256 pub stage: Option<String>,
257 #[metadata(index=false)]
259 pub submission_params: Option<Vec<SubmissionParamsDelta>>,
260 pub timeout: Option<i32>,
262
263 pub docker_config: Option<DockerConfigDelta>,
265 pub dependencies: HashMap<String, DependencyConfigDelta>,
267
268 pub update_channel: Option<ChannelKinds>,
270 pub update_config: Option<UpdateConfigDelta>,
272
273 pub recursion_prevention: Option<Vec<String>>,
275}
276
277impl Readable for ServiceDelta {
278 fn set_from_archive(&mut self, _from_archive: bool) {}
279}