mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-30 20:14:49 +00:00
Feature/remove bollard (#2396)
* wip * remove bollard, add podman feature * fix error message parsing * fix subcommand * fix typo * use com.docker.network.bridge.name for podman * fix parse error * handle podman network interface nuance * add libyajl2 * use podman repos * manually add criu * do not manually require criu * remove docker images during cleanup stage * force removal * increase img size * Update startos-iso.yaml * don't remove docker
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
use bollard::container::{StopContainerOptions, WaitContainerOptions};
|
||||
use models::ErrorKind;
|
||||
use tokio_stream::StreamExt;
|
||||
|
||||
use crate::context::RpcContext;
|
||||
use crate::s9pk::manifest::Manifest;
|
||||
use crate::util::docker::stop_container;
|
||||
use crate::Error;
|
||||
|
||||
/// This is helper structure for a service, the seed of the data that is needed for the manager_container
|
||||
@@ -14,50 +15,20 @@ pub struct ManagerSeed {
|
||||
|
||||
impl ManagerSeed {
|
||||
pub async fn stop_container(&self) -> Result<(), Error> {
|
||||
match self
|
||||
.ctx
|
||||
.docker
|
||||
.stop_container(
|
||||
&self.container_name,
|
||||
Some(StopContainerOptions {
|
||||
t: self
|
||||
.manifest
|
||||
.containers
|
||||
.as_ref()
|
||||
.and_then(|c| c.main.sigterm_timeout)
|
||||
.map(|d| d.as_secs())
|
||||
.unwrap_or(30) as i64,
|
||||
}),
|
||||
)
|
||||
.await
|
||||
match stop_container(
|
||||
&self.container_name,
|
||||
self.manifest
|
||||
.containers
|
||||
.as_ref()
|
||||
.and_then(|c| c.main.sigterm_timeout)
|
||||
.map(|d| *d),
|
||||
None,
|
||||
)
|
||||
.await
|
||||
{
|
||||
Err(bollard::errors::Error::DockerResponseServerError {
|
||||
status_code: 404, // NOT FOUND
|
||||
..
|
||||
})
|
||||
| Err(bollard::errors::Error::DockerResponseServerError {
|
||||
status_code: 409, // CONFLICT
|
||||
..
|
||||
})
|
||||
| Err(bollard::errors::Error::DockerResponseServerError {
|
||||
status_code: 304, // NOT MODIFIED
|
||||
..
|
||||
}) => (), // Already stopped
|
||||
Err(e) if e.kind == ErrorKind::NotFound => (), // Already stopped
|
||||
a => a?,
|
||||
}
|
||||
|
||||
// Wait for the container to stop
|
||||
{
|
||||
let mut waiting = self.ctx.docker.wait_container(
|
||||
&self.container_name,
|
||||
Some(WaitContainerOptions {
|
||||
condition: "not-running",
|
||||
}),
|
||||
);
|
||||
while let Some(_) = waiting.next().await {
|
||||
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user