switchboard_container_utils/manager/
docker.rs1use crate::manager::*;
2use async_trait::async_trait;
3use std::sync::Arc;
4
5#[derive(Clone, Debug)]
23pub struct DockerManager {
24 pub docker: Arc<Docker>,
25 pub docker_default_config: Config<String>,
27 pub docker_credentials: DockerCredentials,
28}
29
30impl DockerManager {
31 pub fn new(docker: Arc<Docker>, default_docker_config: Option<Config<String>>) -> Self {
32 Self {
33 docker,
34 docker_credentials: DockerCredentials {
35 username: Some(std::env::var("DOCKER_USER").unwrap_or(String::new())),
36 password: Some(std::env::var("DOCKER_KEY").unwrap_or(String::new())),
37 ..Default::default()
38 },
39 docker_default_config: default_docker_config.unwrap_or(get_default_docker_config()),
40 }
41 }
42}
43
44#[async_trait]
45impl ContainerManager for DockerManager {
46 fn docker(&self) -> &Arc<Docker> {
47 &self.docker
48 }
49
50 fn docker_credentials(&self) -> &DockerCredentials {
51 &self.docker_credentials
52 }
53
54 fn docker_default_config(&self) -> &Config<String> {
55 &self.docker_default_config
56 }
57}