runtime-rs: Update status for pause and resume

Pause and resume task do not currently update the status of the
container to paused or running, so fix this. This is specifically for
pausing the task and not the VM.

Fixes #6434

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
This commit is contained in:
Chelsea Mafrica 2023-09-20 11:54:18 -07:00
parent 309103169d
commit a49bc68374

View File

@ -349,28 +349,42 @@ impl Container {
} }
pub async fn pause(&self) -> Result<()> { pub async fn pause(&self) -> Result<()> {
let inner = self.inner.read().await; let mut inner = self.inner.write().await;
if inner.init_process.get_status().await == ProcessStatus::Paused { let status = inner.init_process.get_status().await;
warn!(self.logger, "container is paused no need to pause"); if status != ProcessStatus::Running {
warn!(
self.logger,
"container is in {:?} state, will not pause", status
);
return Ok(()); return Ok(());
} }
self.agent self.agent
.pause_container(self.container_id.clone().into()) .pause_container(self.container_id.clone().into())
.await .await
.context("agent pause container")?; .context("agent pause container")?;
inner.set_state(ProcessStatus::Paused).await;
Ok(()) Ok(())
} }
pub async fn resume(&self) -> Result<()> { pub async fn resume(&self) -> Result<()> {
let inner = self.inner.read().await; let mut inner = self.inner.write().await;
if inner.init_process.get_status().await == ProcessStatus::Running { let status = inner.init_process.get_status().await;
warn!(self.logger, "container is running no need to resume"); if status != ProcessStatus::Paused {
warn!(
self.logger,
"container is in {:?} state, will not resume", status
);
return Ok(()); return Ok(());
} }
self.agent self.agent
.resume_container(self.container_id.clone().into()) .resume_container(self.container_id.clone().into())
.await .await
.context("agent pause container")?; .context("agent pause container")?;
inner.set_state(ProcessStatus::Running).await;
Ok(()) Ok(())
} }