This package allows to automatically switch to another domain, either at a given point in time or after the node was offline long enough.
		
			
				
	
	
		
			37 lines
		
	
	
		
			840 B
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			840 B
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/lua
 | 
						|
 | 
						|
local unistd = require 'posix.unistd'
 | 
						|
local util = require 'gluon.util'
 | 
						|
local site = require 'gluon.site'
 | 
						|
 | 
						|
local offline_flag_file = "/tmp/gluon_offline"
 | 
						|
local is_offline = true
 | 
						|
 | 
						|
-- Check if domain-switch is scheduled
 | 
						|
if site.domain_switch() == nil then
 | 
						|
	-- Switch not applicable for current domain
 | 
						|
	os.exit(0)
 | 
						|
end
 | 
						|
 | 
						|
-- Check reachability of pre-defined targets
 | 
						|
for _, ip in ipairs(site.domain_switch.connection_check_targets()) do
 | 
						|
	local exit_code = os.execute("ping -c 1 -w 10 " .. ip)
 | 
						|
	if exit_code == 0 then
 | 
						|
		is_offline = false
 | 
						|
		break
 | 
						|
	end
 | 
						|
end
 | 
						|
 | 
						|
if is_offline then
 | 
						|
	-- Check if we were previously offline
 | 
						|
	if unistd.access(offline_flag_file) then
 | 
						|
		os.exit(0)
 | 
						|
	end
 | 
						|
	-- Create offline flag
 | 
						|
	local f = io.open(offline_flag_file, "w")
 | 
						|
	f:write(tostring(util.get_uptime()))
 | 
						|
	f:close()
 | 
						|
else
 | 
						|
	os.remove(offline_flag_file)
 | 
						|
end
 |