Commit 8aa11549 authored by Frank Bergmann's avatar Frank Bergmann

Initial Import

parents
Pipeline #923 failed with stages
<?xml version="1.0"?>
<!-- Generated by the OpenACS Package Manager -->
<package key="intranet-filestorage-size-indicator" url="http://openacs.org/repository/apm/packages/intranet-filestorage-size-indicator" type="apm_application">
<package-name>]project-open[ Filestorage Size Indicator</package-name>
<pretty-plural>]project-open[ Filestorage Size Indicator</pretty-plural>
<license>]project-open[ Commercial License (CL)</license>
<initial-install-p>f</initial-install-p>
<singleton-p>t</singleton-p>
<auto-mount>intranet-filestorage-size-indicator</auto-mount>
<version name="4.1.0.0.0" url="http://www.project-open.net/download/apm/intranet-filestorage-size-indicator-4.1.0.0.0.apm">
<owner url="mailto:frank.bergmann@project-open.com">Frank Bergmann</owner>
<summary>Shows the amount of free and available space in the filestorage</summary>
<vendor url="http://www.project-open.com/">]project-open[</vendor>
<description format="text/plain">Looks at the amount of file storage occupied, compares with the available space and notifies users if necessary.</description>
<maturity>0</maturity>
<provides url="intranet-filestorage-size-indicator" version="4.1.0.0.0"/>
<callbacks>
</callbacks>
<parameters>
<parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="AvailableSpaceMB" default="5120" description="Available space on file storage. The default '5120' corresponds to 5GB which is the default for the ]po[ Standard SaaS Hosting."/>
<parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="CurrentlyOccupiedSpaceMB" default="0" description="Currently occupied space in MB. The system will update this value from time to time using a 'sweeper' process."/>
</parameters>
</version>
</package>
-- /packages/intranet-filestorage-size-indicator/sql/postgresql/intranet-filestorage-size-indicator-create.sql
--
-- Copyright (c) 2015 ]project-open[ (Project Open Business Solutions, S.L.)
--
-- All rights reserved. Please check
-- http://www.project-open.com/en/project-open-license-commercial
--
-- @author frank.bergmann@project-open.com
-----------------------------------------------------------
-- Create Indicator for available space
create or replace function inline_0 ()
returns integer as $body$
DECLARE
v_id integer;
v_space integer;
v_report_code varchar;
BEGIN
v_space := 5120;
v_report_code := 'po_file_storage_space';
select report_id into v_id from im_reports where report_code = v_report_code;
IF v_id is null THEN
v_id := im_indicator__new(
null, 'im_indicator', now(), 0, '', null,
'File storage space occupied',
v_report_code,
15110,
15000,
'select attr_value from apm_parameter_values where parameter_id in (
select parameter_id
from apm_parameters
where package_key = ''intranet-filestorage-size-indicator'' and
parameter_name = ''CurrentlyOccupiedSpaceMB''
)',
0,
v_space,
50
);
END IF;
update im_indicators set
indicator_section_id = 15245,
indicator_high_warn = v_space * 0.8,
indicator_high_critical = v_space * 0.9
where indicator_id = v_id;
update im_reports set
report_description = 'Measures the available space in the file storage.'
where report_id = v_id;
return 0;
end; $body$ language 'plpgsql';
select inline_0 ();
drop function inline_0 ();
-- /packages/intranet-filestorage-size-indicator/sql/postgresql/intranet-filestorage-size-indicator-drop.sql
--
-- Copyright (c) 2015 ]project-open[ (Project Open Business Solutions, S.L.)
--
-- All rights reserved. Please check
-- http://www.project-open.com/en/project-open-license-commercial
--
-- @author frank.bergmann@project-open.com
---------------------------------------------------
-- Drop Contents
-- Delete components and menus
select im_menu__del_module('intranet-filestorage-size-indicator');
select im_component_plugin__del_module('intranet-filestorage-size-indicator');
---------------------------------------------------
-- Delete indicators created by this package
create or replace function inline_0 ()
returns integer as $body$
declare
v_count integer;
row RECORD;
begin
FOR row IN
select report_id
from im_reports
where report_code = 'po_file_storage_space'
LOOP
PERFORM im_indicator__delete(row.report_id);
END LOOP;
return 0;
end;$body$ language 'plpgsql';
select inline_0 ();
drop function inline_0 ();
# /packages/intranet-filestorage-size-indicator/tcl/intranet-filestorage-size-indicator-init.tcl
#
# Copyright (c) 2015 ]project-open[ (Project Open Business Solutions, S.L.)
#
# All rights reserved. Please check
# http://www.project-open.com/en/project-open-license-commercial
#
# @author frank.bergmann@project-open.com
ad_library {
Initialization for intranet-filestorage-size-indicator package
@author Frank Bergmann (frank.bergmann@project-open.com)
@creation-date 10 April, 2012
@cvs-id $Id$
}
# Calculate the size of the file storage every day or so
set sweeper_interval [parameter::get_from_package_key -package_key intranet-filestorage-size-indicator -parameter SweeperInterval -default 86400]
if {"" != $sweeper_interval && [string is integer $sweeper_interval] && $sweeper_interval > 0} {
ad_schedule_proc -thread t $sweeper_interval im_filestorage_size_indicator_sweeper
}
# /packages/intranet-filestorage-size-indicator/tcl/intranet-filestorage-size-indicator-procs.tcl
#
# Copyright (c) 2015 ]project-open[ (Project Open Business Solutions, S.L.)
#
# All rights reserved. Please check
# http://www.project-open.com/en/project-open-license-commercial
#
# @author frank.bergmann@project-open.com
ad_library {
@author frank.bergmann@project-open.com
}
# ----------------------------------------------------------------------
# Check the occupied pace
# ----------------------------------------------------------------------
ad_proc -public im_filestorage_size_indicator_sweeper { } {
Check the space currently occupied by file storage
} {
ns_log Notice "im_filestorage_size_indicator_sweeper: Starting"
set pageroot [ns_info pageroot]
set serverroot [join [lrange [split $pageroot "/"] 0 end-1] "/"]
set filestorage_path "$serverroot/filestorage/"
set du_output ""
if {[catch {
set du_output [exec /bin/bash -c "du -sk $filestorage_path"]
ns_log Notice "im_filestorage_size_indicator_sweeper: du_output=$du_output"
} err_msg]} {
ns_log Error "im_filestorage_size_indicator_sweeper: Error executing 'exec /bin/bash -c \"du -sk $filestorage_path\"': $err_msg"
return
}
set size [string trim [lindex $du_output 0]]
if {![string is integer $size]} {
ns_log Error "im_filestorage_size_indicator_sweeper: 'du' value is not an integer: '$size' as first value from '$du_output'"
return
}
db_dml update_filestorage_size "
update apm_parameter_values
set attr_value = trunc(:size / 1024)
where parameter_id in (
select parameter_id
from apm_parameters
where package_key = 'intranet-filestorage-size-indicator' and
parameter_name = 'CurrentlyOccupiedSpaceMB'
)
"
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment