Aller au contenu
PdB

Hc2 4.083 Beta - 27/06/2016

Recommended Posts

@pepite

 

Voici le script un peu modifié pour tenir compte uniquement du timestamp des backups, et supprimer le plus ancien:

--[[
%% properties
%% events
%% globals
--]]


-- Flag dryrun; Si true, la requete sur api pour effacer le backup n'est pas effectuée
local dryrun = true


local backups = api.get('/settings/backups')

-- Vérification de présence Backup
if (backups and type(backups == 'table') and #backups > 0) then
	print(#backups .. ' Backups présents')
	for i in ipairs(backups) do
		fibaro:debug('ID: '..backups[i]['id']..' | TIMESTAMP: '..backups[i]['timestamp']..' | DESCRIPTION: '..backups[i]['description'])
	end
else
	print('Pas de backup ou erreur lors de la récupération de la liste')
	fibaro:abort()
end


-- Pour chaque Backup on stock le timestamp de la date de réalisation dans une table
-- On classe ensuite les timestamps par ordre croissant
local timestamp = {}
for i in ipairs(backups) do
	table.insert(timestamp, backups[i]['timestamp'])
end
table.sort(timestamp)


-- Le 1er timestamp de la table est le plus petit donc le plus vieux en epochtime
-- Dans la table de backup on recherche le backup ayant ce timestamp
local id = false
for i in ipairs(backups) do
	if (tonumber(backups[i]['timestamp']) == tonumber(timestamp[1])) then id = backups[i]['id'] end
end

if id then 
	print("ID du backup le plus ancien: "..id) 
else
	print("Erreur lors de la récupération de l'ID")
	fibaro:abort()
end


-- Requete via API pour effacer le backup le plus vieux
if not dryrun then
	local url = 'http://127.0.0.1:11111/api/settings/backups?id='..id
	local httpClient = net.HTTPClient()
	httpClient:request(url , {
		success = function(response)
					if tonumber(response.status) == 200 then
						print("Backup deleted at " .. os.date())
					else
						print("Error " .. response.status)						
                    end
                end,
        error = function(err)
					print('error = ' .. err)
                end,
        options = {
				method = 'DELETE',
                headers = {
                    ["content-type"] = 'application/x-www-form-urlencoded;'
                            },
                data = 'id='..id
			}
	});
end

Il y a certainement plus simple|propre mais c'est une solution qui semble fonctionnelle.

A voir si ça peut (te) servir

 

 

 

 

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Excellent :)

Les scripts de backups et suppression de backups auto mériteraient un topic àeux tous seuls ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

je te l'avais dit Nikko, tu n'y coupera pas au tuto (je te rassure, tu as déjàfait le plus dur, il ne reste que du copier/coller)

Partager ce message


Lien à poster
Partager sur d’autres sites

×