MCPcopy Create free account
hub / github.com/Qovery/engine / new

Method new

lib-engine/src/environment/models/database.rs:191–285  ·  view source on GitHub ↗
(
        context: &Context,
        long_id: Uuid,
        action: Action,
        name: &str,
        kube_name: String,
        version: VersionsNumber,
        created_at: DateTime<Utc>,
        f

Source from the content-addressed store, hash-verified

189
190impl<C: CloudProvider, M: DatabaseMode, T: DatabaseType<C, M>> Database<C, M, T> {
191 pub fn new(
192 context: &Context,
193 long_id: Uuid,
194 action: Action,
195 name: &str,
196 kube_name: String,
197 version: VersionsNumber,
198 created_at: DateTime<Utc>,
199 fqdn: &str,
200 fqdn_id: &str,
201 cpu_request: KubernetesCpuResourceUnit,
202 cpu_limit: KubernetesCpuResourceUnit,
203 ram_request: KubernetesMemoryResourceUnit,
204 ram_limit: KubernetesMemoryResourceUnit,
205 total_disk_size_in_gb: u32, // TODO(benjaminch): introduce a Kubernetes Volume Size resource unit
206 database_instance_type: Option<Box<dyn DatabaseInstanceType>>,
207 publicly_accessible: bool,
208 private_port: u16,
209 options: T::DatabaseOptions,
210 mk_event_details: impl Fn(Transmitter) -> EventDetails,
211 annotations_groups: Vec<AnnotationsGroup>,
212 additionnal_annotations: Vec<Annotation>,
213 labels_groups: Vec<LabelsGroup>,
214 ) -> Result<Self, DatabaseError> {
215 // TODO: Implement domain constraint logic
216
217 // check instance type is matching database cloud provider
218 database_instance_type
219 .as_ref()
220 .map_or(Ok(()), |i| Self::check_instance_type_validity(i.as_ref(), C::cloud_provider()))?;
221
222 let workspace_directory = crate::fs::workspace_directory(
223 context.workspace_root_dir(),
224 context.execution_id(),
225 format!("databases/{long_id}"),
226 )
227 .map_err(|_| DatabaseError::InvalidConfig("Can't create workspace directory".to_string()))?;
228
229 // Check memory settings only for container databases, as managed db are using an instance type
230 if M::is_container() {
231 if cpu_request.to_millicpu() > cpu_limit.to_millicpu() {
232 return Err(DatabaseError::InvalidConfig(
233 "cpu_request_in_milli must be less or equal to cpu_limit_in_milli".to_string(),
234 ));
235 }
236
237 if cpu_request.to_millicpu() == 0 {
238 return Err(DatabaseError::InvalidConfig(
239 "cpu_request_in_milli must be greater than 0".to_string(),
240 ));
241 }
242
243 if ram_request.to_mebibyte() > ram_limit.to_mebibyte() {
244 return Err(DatabaseError::InvalidConfig(
245 "ram_request_in_mib must be less or equal to ram_limit_in_mib".to_string(),
246 ));
247 }
248

Callers

nothing calls this directly

Calls 10

workspace_directoryFunction · 0.85
to_short_idFunction · 0.85
as_refMethod · 0.80
workspace_root_dirMethod · 0.80
to_millicpuMethod · 0.80
to_mebibyteMethod · 0.80
lib_root_dirMethod · 0.80
DatabaseClass · 0.70
execution_idMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected