Add cache_valid_time
param to opkg
module
Modelled after similar param in `apt`.
This commit is contained in:
parent
4cf2ece184
commit
70b62b760f
1 changed files with 48 additions and 4 deletions
52
src/opkg.lua
52
src/opkg.lua
|
@ -92,12 +92,58 @@ function install_packages(module, opkg_path, packages)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function last_cache_update_timestamp(module)
|
||||||
|
local rc, stdout, stderr = module:run_command("date +%s -r /tmp/opkg-lists")
|
||||||
|
if rc ~= 0 then
|
||||||
|
return nil
|
||||||
|
else
|
||||||
|
return tonumber(stdout)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function current_timestamp(module)
|
||||||
|
local rc, stdout, stderr = module:run_command("date +%s")
|
||||||
|
return tonumber(stdout)
|
||||||
|
end
|
||||||
|
|
||||||
|
function cache_age(module)
|
||||||
|
local last_update = last_cache_update_timestamp(module)
|
||||||
|
if last_update == nil then
|
||||||
|
return nil
|
||||||
|
else
|
||||||
|
return current_timestamp(module) - last_update
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function should_update_cache(module)
|
||||||
|
if module.params.update_cache then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
if module.params.cache_valid_time ~= nil then
|
||||||
|
local age = cache_age(module)
|
||||||
|
if age == nil then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
if age > module.params.cache_valid_time then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function update_cache_if_needed(module, opkg_path)
|
||||||
|
if should_update_cache(module) and not module:check_mode() then
|
||||||
|
update_package_db(module, opkg_path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function main(arg)
|
function main(arg)
|
||||||
local module = Ansible.new({
|
local module = Ansible.new({
|
||||||
name = { aliases = {"pkg"}, required=true , type='list'},
|
name = { aliases = {"pkg"}, required=true , type='list'},
|
||||||
state = { default = "present", choices={"present", "installed", "absent", "removed"} },
|
state = { default = "present", choices={"present", "installed", "absent", "removed"} },
|
||||||
force = { default = "", choices={"", "depends", "maintainer", "reinstall", "overwrite", "downgrade", "space", "postinstall", "remove", "checksum", "removal-of-dependent-packages"} } ,
|
force = { default = "", choices={"", "depends", "maintainer", "reinstall", "overwrite", "downgrade", "space", "postinstall", "remove", "checksum", "removal-of-dependent-packages"} } ,
|
||||||
update_cache = { default = "no", aliases={ "update-cache" }, type='bool' }
|
update_cache = { default = "no", aliases={ "update-cache" }, type='bool' },
|
||||||
|
cache_valid_time = { type='int' }
|
||||||
})
|
})
|
||||||
|
|
||||||
local opkg_path = module:get_bin_path('opkg', true, {'/bin'})
|
local opkg_path = module:get_bin_path('opkg', true, {'/bin'})
|
||||||
|
@ -106,9 +152,7 @@ function main(arg)
|
||||||
|
|
||||||
local p = module:get_params()
|
local p = module:get_params()
|
||||||
|
|
||||||
if p["update_cache"] and not module:check_mode() then
|
update_cache_if_needed(module, opkg_path)
|
||||||
update_package_db(module, opkg_path)
|
|
||||||
end
|
|
||||||
|
|
||||||
local state = p["state"]
|
local state = p["state"]
|
||||||
local packages = p["name"]
|
local packages = p["name"]
|
||||||
|
|
Loading…
Add table
Reference in a new issue