def destroy(skip_hooks=false)
notify_observers(:before_container_destroy)
hook_timeout=30
output = ""
errout = ""
retcode = 0
hooks={}
["pre", "post"].each do |hooktype|
if @user.homedir.nil? || ! File.exists?(@user.homedir)
hooks[hooktype]=[]
else
hooks[hooktype] = Dir.entries(@user.homedir).map { |cart|
[ File.join(@config.get("CARTRIDGE_BASE_PATH"),cart,"info","hooks","#{hooktype}-destroy"),
File.join(@config.get("CARTRIDGE_BASE_PATH"),"embedded",cart,"info","hooks","#{hooktype}-destroy"),
].select { |hook| File.exists? hook }[0]
}.select { |hook|
not hook.nil?
}.map { |hook|
"#{hook} #{@user.container_name} #{@user.namespace} #{@user.container_uuid}"
}
end
end
unless skip_hooks
hooks["pre"].each do | cmd |
out,err,rc = shellCmd(cmd, "/", true, 0, hook_timeout)
errout << err if not err.nil?
output << out if not out.nil?
retcode = 121 if rc != 0
end
end
@user.destroy
unless skip_hooks
hooks["post"].each do | cmd |
out,err,rc = shellCmd(cmd, "/", true, 0, hook_timeout)
errout << err if not err.nil?
output << out if not out.nil?
retcode = 121 if rc != 0
end
end
notify_observers(:after_container_destroy)
return output, errout, retcode
end