class Mist::LxcHandler
Public Class Methods
new(config)
click to toggle source
# File lib/mist/handlers/lxc.rb, line 20 def initialize(config) @config = config end
Public Instance Methods
create(args)
click to toggle source
# File lib/mist/handlers/lxc.rb, line 24 def create(args) Mist.logger.debug "create: args=#{args}" hostname = Socket.gethostname distro = args['distro'] || @config.default_distro release = args['release'] || @config.default_release name = args['name'] || create_name begin Mist.logger.info "creating container #{name} with #{distro}-#{release}" container = Mist::LXCContainer.new(name, distro, release) raise "container with the name #{name} already exists!" if container.exists? startup_script = File.join(@config.startup_script_path, 'lxc', distro) container.create(@config, startup_script) ip = container.ips.first rescue StandardError => ex Mist.logger.error "Create request failed: #{ex}" return { status: false, server: hostname, message: "create request failed: #{ex}" } end return { status: true, server: hostname, message: 'created new container', name: name, ip: ip, username: @config.username } end
destroy(args)
click to toggle source
# File lib/mist/handlers/lxc.rb, line 56 def destroy(args) Mist.logger.debug "destroy: args=#{args}" begin name = args['name'] container = Mist::LXCContainer.new(name) Mist.logger.info "destroying #{name}" container.destroy rescue StandardError => ex Mist.logger.error "Destroy request failed: #{ex}" return { status: false, message: "destroy request failed: #{ex}" } end return { status: true, message: 'destroyed container', name: name } end
Private Instance Methods
create_name()
click to toggle source
# File lib/mist/handlers/lxc.rb, line 75 def create_name base = @config.instance_name "#{base}-#{SecureRandom.hex(16)}" end