assemblyline_models/datastore/
service_delta.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4use struct_metadata::Described;
5
6use crate::types::{NonZeroInteger, ServiceName};
7use crate::{ElasticMeta, Readable, types::{ClassificationString, JsonMap, Text}};
8
9use super::service::{AccessMode, ChannelKinds, EnvironmentVariable, FetchMethods, ParamKinds, RegistryType, SignatureDelimiter};
10
11#[derive(Serialize, Deserialize, Described, Default)]
27#[metadata_type(ElasticMeta)]
28#[serde(default)]
29#[metadata(index=false, store=false)]
30pub struct DockerConfigDelta {
31 pub allow_internet_access: Option<bool>,
33 pub command: Option<Vec<String>>,
35 pub cpu_cores: Option<f32>,
37 pub environment: Option<Vec<EnvironmentVariable>>,
39 pub image: Option<String>,
41 pub registry_username: Option<String>,
43 pub registry_password: Option<String>,
45 pub registry_type: Option<RegistryType>,
47 pub ports: Option<Vec<String>>,
49 pub ram_mb: Option<i32>,
51 pub ram_mb_min: Option<i32>,
53 pub service_account: Option<String>,
55 pub labels: Option<Vec<EnvironmentVariable>>,
57}
58
59
60#[derive(Serialize, Deserialize, Described, Default)]
61#[metadata_type(ElasticMeta)]
62#[serde(default)]
63#[metadata(index=false, store=false)]
64pub struct UpdateSourceDelta {
65 pub enabled: Option<bool>,
67 pub name: Option<String>,
69 pub password: Option<String>,
71 pub pattern: Option<String>,
73 pub private_key: Option<String>,
75 pub ca_cert: Option<String>,
77 pub ssl_ignore_errors: Option<bool>,
79 pub proxy: Option<String>,
81 pub uri: Option<String>,
83 pub username: Option<String>,
85 pub headers: Option<Vec<EnvironmentVariable>>,
87 pub default_classification: Option<ClassificationString>,
89 pub use_managed_identity: Option<bool>,
91 pub git_branch: Option<String>,
93 pub sync: Option<bool>,
95 pub fetch_method: Option<FetchMethods>,
97 pub override_classification: Option<bool>,
99 pub configuration: Option<HashMap<String, serde_json::Value>>,
101 pub data: Option<Text>,
103 #[metadata(mapping="integer")]
105 pub update_interval: Option<NonZeroInteger>,
106 pub ignore_cache: Option<bool>,
108}
109
110#[derive(Serialize, Deserialize, Described)]
111#[metadata_type(ElasticMeta)]
112#[metadata(index=false, store=false)]
113pub struct PersistentVolumeDelta {
114 pub mount_path: Option<String>,
116 pub capacity: Option<String>,
118 pub storage_class: Option<String>,
120 pub access_mode: Option<AccessMode>,
122}
123
124#[derive(Serialize, Deserialize, Described)]
125#[metadata_type(ElasticMeta)]
126#[metadata(index=false, store=false)]
127pub struct DependencyConfigDelta {
128 pub container: Option<DockerConfigDelta>,
130 pub volumes: Option<HashMap<String, PersistentVolumeDelta>>,
132 pub run_as_core: Option<bool>,
134}
135
136#[derive(Serialize, Deserialize, Described)]
137#[metadata_type(ElasticMeta)]
138#[metadata(index=false, store=false)]
139pub struct UpdateConfigDelta {
140 #[metadata[index=true]]
142 pub generates_signatures: Option<bool>,
143 pub sources: Option<Vec<UpdateSourceDelta>>,
145 pub update_interval_seconds: Option<i32>,
147 pub wait_for_update: Option<bool>,
149 pub signature_delimiter: Option<SignatureDelimiter>,
151 pub custom_delimiter: Option<String>,
153 pub default_pattern: Option<Text>,
155}
156
157#[derive(Serialize, Deserialize, Described)]
158#[metadata_type(ElasticMeta)]
159#[metadata(index=false, store=false)]
160pub struct SubmissionParamsDelta {
161 pub default: Option<serde_json::Value>,
163 pub name: Option<String>,
165 #[serde(rename="type")]
167 pub _type: Option<ParamKinds>,
168 pub value: Option<serde_json::Value>,
170 pub list: Option<serde_json::Value>,
172 pub hide: Option<bool>,
174}
175
176
177#[derive(Serialize, Deserialize, Described, Default)]
179#[serde(default)]
180#[metadata_type(ElasticMeta)]
181#[metadata(index=true, store=false)]
182pub struct ServiceDelta {
183 #[metadata(store=true)]
185 pub accepts: Option<String>,
186 #[metadata(store=true)]
188 pub rejects: Option<String>,
189 pub auto_update: Option<bool>,
191 #[metadata(store=true)]
193 pub category: Option<String>,
194 #[metadata(mapping="keyword")]
196 pub classification: Option<ClassificationString>,
197 #[metadata(index=false)]
199 pub config: Option<JsonMap>,
200 #[metadata(store=true)]
202 pub description: Option<Text>,
203 #[metadata(mapping="keyword")]
205 pub default_result_classification: Option<ClassificationString>,
206 #[metadata(store=true)]
208 pub enabled: Option<bool>,
209 pub is_external: Option<bool>,
211 pub licence_count: Option<i32>,
213 pub max_queue_length: Option<i32>,
215 pub min_instances: Option<i32>,
217
218 pub uses_tags: Option<bool>,
220 pub uses_tag_scores: Option<bool>,
222 pub uses_temp_submission_data: Option<bool>,
224 pub uses_metadata: Option<bool>,
226 pub monitored_keys: Option<Vec<String>>,
227
228 #[metadata(store=true)]
230 pub name: Option<ServiceName>,
231 #[metadata(store=true)]
233 pub version: String,
234
235 pub privileged: Option<bool>,
237 pub disable_cache: Option<bool>,
239
240 #[metadata(store=true)]
242 pub stage: Option<String>,
243 #[metadata(index=false)]
245 pub submission_params: Option<Vec<SubmissionParamsDelta>>,
246 pub timeout: Option<i32>,
248
249 pub docker_config: Option<DockerConfigDelta>,
251 pub dependencies: Option<HashMap<String, DependencyConfigDelta>>,
253
254 pub update_channel: Option<ChannelKinds>,
256 pub update_config: Option<UpdateConfigDelta>,
258
259 pub recursion_prevention: Option<Vec<String>>,
261}
262
263impl Readable for ServiceDelta {
264 fn set_from_archive(&mut self, _from_archive: bool) {}
265}