assemblyline_models/datastore/
service_delta.rs

1use 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// from assemblyline import odm
12// from assemblyline.odm.models.service import SIGNATURE_DELIMITERS
13
14
15// REF_DEPENDENCY_CONFIG = "Refer to:<br>[Service - DependencyConfig](../service/#dependencyconfig)"
16// REF_DOCKER_CONFIG = "Refer to:<br>[Service - DockerConfig](../service/#dockerconfig)"
17// REF_ENVVAR = "Refer to:<br>[Service - Enviroment Variable](../service/#environmentvariable)"
18// REF_PV = "Refer to:<br>[Service - PeristentVolume](../service/#persistentvolume)"
19// REF_SERVICE = "Refer to:<br>[Service](../service/#service)"
20// REF_SUBMISSION_PARAMS = "Refer to:<br>[Service - SubmissionParams](../service/#submissionparams)"
21// REF_UPDATE_CONFIG = "Refer to:<br>[Service - UpdateConfig](../service/#updateconfig)"
22// REF_UPDATE_SOURCE = "Refer to:<br>[Service - UpdateSource](../service/#updatesource)"
23
24
25/// Docker Configuration Delta
26#[derive(Serialize, Deserialize, Described, Default)]
27#[metadata_type(ElasticMeta)]
28#[serde(default)]
29#[metadata(index=false, store=false)]
30pub struct DockerConfigDelta {
31    /// REF_DOCKER_CONFIG
32    pub allow_internet_access: Option<bool>,
33    /// REF_DOCKER_CONFIG
34    pub command: Option<Vec<String>>,
35    /// REF_DOCKER_CONFIG
36    pub cpu_cores: Option<f32>,
37    /// REF_DOCKER_CONFIG
38    pub environment: Option<Vec<EnvironmentVariable>>,
39    /// REF_DOCKER_CONFIG
40    pub image: Option<String>,
41    /// REF_DOCKER_CONFIG
42    pub registry_username: Option<String>,
43    /// REF_DOCKER_CONFIG
44    pub registry_password: Option<String>,
45    /// REF_DOCKER_CONFIG
46    pub registry_type: Option<RegistryType>,
47    /// REF_DOCKER_CONFIG
48    pub ports: Option<Vec<String>>,
49    /// REF_DOCKER_CONFIG
50    pub ram_mb: Option<i32>,
51    /// REF_DOCKER_CONFIG
52    pub ram_mb_min: Option<i32>,
53    /// REF_DOCKER_CONFIG
54    pub service_account: Option<String>,
55    /// REF_DOCKER_CONFIG
56    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    /// REF_UPDATE_SOURCE
66    pub enabled: Option<bool>,
67    /// REF_UPDATE_SOURCE
68    pub name: Option<String>,
69    /// REF_UPDATE_SOURCE
70    pub password: Option<String>,
71    /// REF_UPDATE_SOURCE
72    pub pattern: Option<String>,
73    /// REF_UPDATE_SOURCE
74    pub private_key: Option<String>,
75    /// REF_UPDATE_SOURCE
76    pub ca_cert: Option<String>,
77    /// REF_UPDATE_SOURCE
78    pub ssl_ignore_errors: Option<bool>,
79    /// REF_UPDATE_SOURCE
80    pub proxy: Option<String>,
81    /// REF_UPDATE_SOURCE
82    pub uri: Option<String>,
83    /// REF_UPDATE_SOURCE
84    pub username: Option<String>,
85    /// REF_UPDATE_SOURCE
86    pub headers: Option<Vec<EnvironmentVariable>>,
87    /// REF_UPDATE_SOURCE
88    pub default_classification: Option<ClassificationString>,
89    /// REF_UPDATE_SOURCE
90    pub use_managed_identity: Option<bool>,
91    /// REF_UPDATE_SOURCE
92    pub git_branch: Option<String>,
93    /// REF_UPDATE_SOURCE
94    pub sync: Option<bool>,
95    /// REF_UPDATE_SOURCE
96    pub fetch_method: Option<FetchMethods>,
97    /// REF_UPDATE_SOURCE
98    pub override_classification: Option<bool>,
99    /// REF_UPDATE_SOURCE
100    pub configuration: Option<HashMap<String, serde_json::Value>>,
101    /// REF_UPDATE_SOURCE
102    pub data: Option<Text>,
103    /// REF_UPDATE_SOURCE
104    #[metadata(mapping="integer")]
105    pub update_interval: Option<NonZeroInteger>,
106    /// REF_UPDATE_SOURCE
107    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    /// REF_PV
115    pub mount_path: Option<String>,
116    /// REF_PV
117    pub capacity: Option<String>,
118    /// REF_PV
119    pub storage_class: Option<String>,
120    /// REF_PV
121    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    /// REF_DEPENDENCY_CONFIG
129    pub container: Option<DockerConfigDelta>,
130    /// REF_DEPENDENCY_CONFIG
131    pub volumes: Option<HashMap<String, PersistentVolumeDelta>>,
132    /// REF_DEPENDENCY_CONFIG
133    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    /// REF_UPDATE_CONFIG
141    #[metadata[index=true]]
142    pub generates_signatures: Option<bool>,
143    /// REF_UPDATE_CONFIG
144    pub sources: Option<Vec<UpdateSourceDelta>>,
145    /// REF_UPDATE_CONFIG
146    pub update_interval_seconds: Option<i32>,
147    /// REF_UPDATE_CONFIG
148    pub wait_for_update: Option<bool>,
149    /// REF_UPDATE_CONFIG
150    pub signature_delimiter: Option<SignatureDelimiter>,
151    /// REF_UPDATE_CONFIG
152    pub custom_delimiter: Option<String>,
153    /// REF_UPDATE_CONFIG
154    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    /// REF_SUBMISSION_PARAMS
162    pub default: Option<serde_json::Value>,
163    /// REF_SUBMISSION_PARAMS
164    pub name: Option<String>,
165    /// REF_SUBMISSION_PARAMS
166    #[serde(rename="type")]
167    pub _type: Option<ParamKinds>,
168    /// REF_SUBMISSION_PARAMS
169    pub value: Option<serde_json::Value>,
170    /// REF_SUBMISSION_PARAMS
171    pub list: Option<serde_json::Value>,
172    /// REF_SUBMISSION_PARAMS
173    pub hide: Option<bool>,
174}
175
176
177/// Service Delta relative to Initial Service Configuration
178#[derive(Serialize, Deserialize, Described, Default)]
179#[serde(default)]
180#[metadata_type(ElasticMeta)]
181#[metadata(index=true, store=false)]
182pub struct ServiceDelta {
183    /// REF_SERVICE
184    #[metadata(store=true)]
185    pub accepts: Option<String>,
186    /// REF_SERVICE
187    #[metadata(store=true)]
188    pub rejects: Option<String>,
189    /// REF_SERVICE
190    pub auto_update: Option<bool>,
191    /// REF_SERVICE
192    #[metadata(store=true)]
193    pub category: Option<String>,
194    /// REF_SERVICE
195    #[metadata(mapping="keyword")]
196    pub classification: Option<ClassificationString>,
197    /// REF_SERVICE
198    #[metadata(index=false)]
199    pub config: Option<JsonMap>,
200    /// REF_SERVICE
201    #[metadata(store=true)]
202    pub description: Option<Text>,
203    /// REF_SERVICE
204    #[metadata(mapping="keyword")]
205    pub default_result_classification: Option<ClassificationString>,
206    /// REF_SERVICE
207    #[metadata(store=true)]
208    pub enabled: Option<bool>,
209    /// REF_SERVICE
210    pub is_external: Option<bool>,
211    /// REF_SERVICE
212    pub licence_count: Option<i32>,
213    /// REF_SERVICE
214    pub max_queue_length: Option<i32>,
215    /// REF_SERVICE
216    pub min_instances: Option<i32>,
217
218    /// REF_SERVICE
219    pub uses_tags: Option<bool>,
220    /// REF_SERVICE
221    pub uses_tag_scores: Option<bool>,
222    /// REF_SERVICE
223    pub uses_temp_submission_data: Option<bool>,
224    /// REF_SERVICE
225    pub uses_metadata: Option<bool>,
226    pub monitored_keys: Option<Vec<String>>,
227
228    /// REF_SERVICE
229    #[metadata(store=true)]
230    pub name: Option<ServiceName>, 
231    /// REF_SERVICE
232    #[metadata(store=true)]
233    pub version: String,
234
235    /// REF_SERVICE
236    pub privileged: Option<bool>,
237    /// REF_SERVICE
238    pub disable_cache: Option<bool>,
239
240    /// REF_SERVICE
241    #[metadata(store=true)]
242    pub stage: Option<String>, 
243    /// REF_SERVICE
244    #[metadata(index=false)]
245    pub submission_params: Option<Vec<SubmissionParamsDelta>>,
246    /// REF_SERVICE
247    pub timeout: Option<i32>,
248
249    /// REF_SERVICE
250    pub docker_config: Option<DockerConfigDelta>,
251    /// REF_SERVICE
252    pub dependencies: Option<HashMap<String, DependencyConfigDelta>>,
253
254    /// REF_SERVICE
255    pub update_channel: Option<ChannelKinds>,
256    /// REF_SERVICE
257    pub update_config: Option<UpdateConfigDelta>,
258
259    /// REF_SERVICE
260    pub recursion_prevention: Option<Vec<String>>,
261}
262
263impl Readable for ServiceDelta {
264    fn set_from_archive(&mut self, _from_archive: bool) {}
265}