Difference between revisions of "Public.getmanagepercentavailnodewindow (function)"
(New page: == wikibot == {| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" |- | '''function | public.getmanagepercentavailnodewindow |- |} <pre> CREATE OR REPLACE FUNCT...) |
(No difference)
|
Revision as of 14:15, 7 August 2009
wikibot
| function | public.getmanagepercentavailnodewindow |
CREATE OR REPLACE FUNCTION public.getmanagepercentavailnodewindow(integer, timestamp without time zone, timestamp without time zone)
RETURNS double precision
LANGUAGE plpgsql
AS $function$
DECLARE
nid ALIAS FOR $1;
xtime ALIAS FOR $2;
ytime ALIAS FOR $3;
downtime float8 := 0.0;
count integer := 0;
rollingWindow float := 0;
totalServiceTime float := 0;
BEGIN
IF xtime < ytime THEN
rollingWindow := EXTRACT (EPOCH FROM (ytime - xtime));
downtime := getManagedOutageForNodeInWindow(nid, ytime, xtime)/1000;
ELSE
rollingWindow := EXTRACT (EPOCH FROM (xtime - ytime));
downtime := getManagedOutageForNodeInWindow(nid, xtime, ytime)/1000;
END IF;
count := getManagedServiceCountForNode(nid);
totalServiceTime := count * rollingWindow;
IF totalServiceTime > 0 THEN
RETURN 100 * (1 - (downtime / totalServiceTime));
ELSE
IF totalServiceTime = 0 THEN
RETURN 100;
ELSE
RETURN -1;
END IF;
END IF;
END;
$function$