Class: Nvoi::External::Containerd

Inherits:
Object
  • Object
show all
Defined in:
lib/nvoi/external/containerd.rb

Overview

Containerd manages container operations on remote servers via containerd/ctr Used for image listing and cleanup on the remote server

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ssh) ⇒ Containerd

Returns a new instance of Containerd.



10
11
12
# File 'lib/nvoi/external/containerd.rb', line 10

def initialize(ssh)
  @ssh = ssh
end

Instance Attribute Details

#sshObject (readonly)

Returns the value of attribute ssh.



8
9
10
# File 'lib/nvoi/external/containerd.rb', line 8

def ssh
  @ssh
end

Instance Method Details

#cleanup_old_images(prefix, keep_tags) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/nvoi/external/containerd.rb', line 23

def cleanup_old_images(prefix, keep_tags)
  all_images = list_images(prefix)
  return if all_images.empty?

  remove_images = all_images.reject do |img|
    keep_tags.any? { |tag| img.include?(tag) }
  end

  return if remove_images.empty?

  remove_images.each do |img|
    @ssh.execute_ignore_errors("sudo ctr -n k8s.io images rm #{img}")
  end
end

#list_images(filter) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/nvoi/external/containerd.rb', line 14

def list_images(filter)
  output = @ssh.execute("sudo ctr -n k8s.io images ls -q | grep '#{filter}' | sort -r")
  return [] if output.empty?

  output.split("\n")
rescue Errors::SshCommandError
  []
end