Class: Susi::Disk

Inherits:
Object
  • Object
show all
Defined in:
lib/disk.rb

Constant Summary collapse

DEFAULT_IMG =
"debian-12.7.0-amd64-netinst.iso"

Class Method Summary collapse

Class Method Details

.clone(name, clone) ⇒ Object



43
44
45
# File 'lib/disk.rb', line 43

def self.clone(name, clone)
  system("qemu-img create -f qcow2 -F qcow2 -b #{name}.qcow2 #{clone}.qcow2 > /dev/null 2>&1")
end

.create(name, size) ⇒ Object



39
40
41
# File 'lib/disk.rb', line 39

def self.create(name, size)
  system("qemu-img create -f qcow2 #{name}.qcow2 #{size}G > /dev/null 2>&1")
end

.download_debian_netinstall ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/disk.rb', line 7

def self.download_debian_netinstall
  # Check if ~/.susi directory exists, if not create it
  susi_dir = File.expand_path("~/.susi")
  Dir.mkdir(susi_dir) unless Dir.exist?(susi_dir)

  # Check if ~/.susi/iso directory exists, if not create it
  iso_dir = File.join(susi_dir, "iso")
  Dir.mkdir(iso_dir) unless Dir.exist?(iso_dir)

  # Set the output path to be in the iso directory
  output_path = File.join(iso_dir, DEFAULT_IMG)

  url = "https://mirrors.tuna.tsinghua.edu.cn/debian-cd/current/amd64/iso-cd/#{DEFAULT_IMG}"
  
  Susi::debug "Downloading Debian netinstall ISO..."
  
  begin
    URI.open(url) do |remote_file|
      File.open(output_path, "wb") do |local_file|
        local_file.write(remote_file.read)
      end
    end
    Susi::debug "Download completed successfully."
  rescue OpenURI::HTTPError => e
    Susi::debug "Error downloading the ISO: #{e.message}"
  rescue SocketError => e
    Susi::debug "Network error: #{e.message}"
  rescue => e
    Susi::debug "An unexpected error occurred: #{e.message}"
  end
end