Merge pull request #415 from rhatdan/images
Add kpod image and kpod rmi for the handling of container images.
This commit is contained in:
commit
49f3f2ac7f
4 changed files with 48 additions and 1 deletions
1
Makefile
1
Makefile
|
@ -149,6 +149,7 @@ install.completions:
|
||||||
|
|
||||||
install.systemd:
|
install.systemd:
|
||||||
install -D -m 644 contrib/systemd/ocid.service $(PREFIX)/lib/systemd/system/ocid.service
|
install -D -m 644 contrib/systemd/ocid.service $(PREFIX)/lib/systemd/system/ocid.service
|
||||||
|
install -D -m 644 contrib/systemd/ocid-shutdown.service $(PREFIX)/lib/systemd/system/ocid-shutdown.service
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
rm -f $(BINDIR)/ocid
|
rm -f $(BINDIR)/ocid
|
||||||
|
|
14
contrib/systemd/ocid-shutdown.service
Normal file
14
contrib/systemd/ocid-shutdown.service
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Shutdown OCID containers before shutting down the system
|
||||||
|
Wants=ocid.service
|
||||||
|
After=ocid.service
|
||||||
|
Documentation=man:ocid(8)
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/bin/true
|
||||||
|
ExecStop=mkdir -p /var/lib/ocid; touch /var/lib/ocid/ocid.shutdown
|
||||||
|
RemainAfterExit=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -40,7 +40,8 @@ func (s *Server) RemovePodSandbox(ctx context.Context, req *pb.RemovePodSandboxR
|
||||||
cState := s.runtime.ContainerStatus(c)
|
cState := s.runtime.ContainerStatus(c)
|
||||||
if cState.Status == oci.ContainerStateCreated || cState.Status == oci.ContainerStateRunning {
|
if cState.Status == oci.ContainerStateCreated || cState.Status == oci.ContainerStateRunning {
|
||||||
if err := s.runtime.StopContainer(c); err != nil {
|
if err := s.runtime.StopContainer(c); err != nil {
|
||||||
return nil, fmt.Errorf("failed to stop container %s: %v", c.Name(), err)
|
// Assume container is already stopped
|
||||||
|
logrus.Warnf("failed to stop container %s: %v", c.Name(), err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,3 +108,17 @@ func (s *Server) RemovePodSandbox(ctx context.Context, req *pb.RemovePodSandboxR
|
||||||
logrus.Debugf("RemovePodSandboxResponse %+v", resp)
|
logrus.Debugf("RemovePodSandboxResponse %+v", resp)
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RemoveAllPodSandboxes removes all pod sandboxes
|
||||||
|
func (s *Server) RemoveAllPodSandboxes() {
|
||||||
|
logrus.Debugf("RemoveAllPodSandboxes")
|
||||||
|
s.Update()
|
||||||
|
for _, sb := range s.state.sandboxes {
|
||||||
|
pod := &pb.RemovePodSandboxRequest{
|
||||||
|
PodSandboxId: sb.id,
|
||||||
|
}
|
||||||
|
if _, err := s.RemovePodSandbox(nil, pod); err != nil {
|
||||||
|
logrus.Warnf("could not RemovePodSandbox %s: %v", sb.id, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import (
|
||||||
|
|
||||||
const (
|
const (
|
||||||
runtimeAPIVersion = "v1alpha1"
|
runtimeAPIVersion = "v1alpha1"
|
||||||
|
shutdownFile = "/var/lib/ocid/ocid.shutdown"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Server implements the RuntimeService and ImageService
|
// Server implements the RuntimeService and ImageService
|
||||||
|
@ -431,8 +432,23 @@ func (s *Server) releaseContainerName(name string) {
|
||||||
s.ctrNameIndex.Release(name)
|
s.ctrNameIndex.Release(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cleanupSandboxesOnShutdown Remove all running Sandboxes on system shutdown
|
||||||
|
func (s *Server) cleanupSandboxesOnShutdown() {
|
||||||
|
_, err := os.Stat(shutdownFile)
|
||||||
|
if err == nil || !os.IsNotExist(err) {
|
||||||
|
logrus.Debugf("shutting down all sandboxes, on shutdown")
|
||||||
|
s.RemoveAllPodSandboxes()
|
||||||
|
err = os.Remove(shutdownFile)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Warnf("Failed to remove %q", shutdownFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Shutdown attempts to shut down the server's storage cleanly
|
// Shutdown attempts to shut down the server's storage cleanly
|
||||||
func (s *Server) Shutdown() error {
|
func (s *Server) Shutdown() error {
|
||||||
|
s.cleanupSandboxesOnShutdown()
|
||||||
_, err := s.store.Shutdown(false)
|
_, err := s.store.Shutdown(false)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -511,6 +527,7 @@ func New(config *Config) (*Server, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s.restore()
|
s.restore()
|
||||||
|
s.cleanupSandboxesOnShutdown()
|
||||||
|
|
||||||
logrus.Debugf("sandboxes: %v", s.state.sandboxes)
|
logrus.Debugf("sandboxes: %v", s.state.sandboxes)
|
||||||
logrus.Debugf("containers: %v", s.state.containers)
|
logrus.Debugf("containers: %v", s.state.containers)
|
||||||
|
|
Loading…
Add table
Reference in a new issue