Add support for graphing pending package upgrades
This commit is contained in:
parent
8b0151a74c
commit
326bdf59c8
|
@ -32,7 +32,8 @@
|
||||||
/* damon_refresh */
|
/* damon_refresh */
|
||||||
typedef enum _SaltFunction
|
typedef enum _SaltFunction
|
||||||
{
|
{
|
||||||
SF_STATUS_ALL_STATUS = 0,
|
SF_PKG_LIST_UPGRADES = 0,
|
||||||
|
SF_STATUS_ALL_STATUS,
|
||||||
SF_STATUS_PROCS
|
SF_STATUS_PROCS
|
||||||
} SaltFunction;
|
} SaltFunction;
|
||||||
#define SF_LAST SF_STATUS_PROCS
|
#define SF_LAST SF_STATUS_PROCS
|
||||||
|
@ -47,10 +48,13 @@ static int _refresh_parse_hostname_diskusage_volume(DaMon * damon,
|
||||||
char const * hostname, char const * volume, json_t * json);
|
char const * hostname, char const * volume, json_t * json);
|
||||||
static int _refresh_parse_hostname_loadavg(DaMon * damon, char const * hostname,
|
static int _refresh_parse_hostname_loadavg(DaMon * damon, char const * hostname,
|
||||||
json_t * json);
|
json_t * json);
|
||||||
|
static int _refresh_parse_hostname_pkg_list_upgrades(DaMon * damon,
|
||||||
|
char const * hostname, json_t * json);
|
||||||
static int _refresh_parse_hostname_procs(DaMon * damon, char const * hostname,
|
static int _refresh_parse_hostname_procs(DaMon * damon, char const * hostname,
|
||||||
json_t * json);
|
json_t * json);
|
||||||
static int _refresh_parse_hostname_w(DaMon * damon, char const * hostname,
|
static int _refresh_parse_hostname_w(DaMon * damon, char const * hostname,
|
||||||
json_t * json);
|
json_t * json);
|
||||||
|
static int _refresh_parse_pkg_list_upgrades(DaMon * damon, json_t * json);
|
||||||
static int _refresh_parse_status_all_status(DaMon * damon, json_t * json);
|
static int _refresh_parse_status_all_status(DaMon * damon, json_t * json);
|
||||||
static int _refresh_parse_status_procs(DaMon * damon, json_t * json);
|
static int _refresh_parse_status_procs(DaMon * damon, json_t * json);
|
||||||
|
|
||||||
|
@ -59,6 +63,8 @@ int damon_refresh(DaMon * damon)
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
||||||
#endif
|
#endif
|
||||||
|
_refresh_salt(damon, _refresh_parse_pkg_list_upgrades,
|
||||||
|
SF_PKG_LIST_UPGRADES);
|
||||||
_refresh_salt(damon, _refresh_parse_status_all_status,
|
_refresh_salt(damon, _refresh_parse_status_all_status,
|
||||||
SF_STATUS_ALL_STATUS);
|
SF_STATUS_ALL_STATUS);
|
||||||
_refresh_salt(damon, _refresh_parse_status_procs,
|
_refresh_salt(damon, _refresh_parse_status_procs,
|
||||||
|
@ -71,6 +77,7 @@ static int _refresh_salt(DaMon * damon,
|
||||||
SaltFunction function, ...)
|
SaltFunction function, ...)
|
||||||
{
|
{
|
||||||
char * functions[SF_COUNT] = {
|
char * functions[SF_COUNT] = {
|
||||||
|
SALT " --out=json '*' pkg.list_upgrades",
|
||||||
SALT " --out=json '*' status.all_status",
|
SALT " --out=json '*' status.all_status",
|
||||||
SALT " --out=json '*' status.procs"
|
SALT " --out=json '*' status.procs"
|
||||||
};
|
};
|
||||||
|
@ -195,6 +202,30 @@ static int _refresh_parse_hostname_loadavg(DaMon * damon, char const * hostname,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int _refresh_parse_hostname_pkg_list_upgrades(DaMon * damon,
|
||||||
|
char const * hostname, json_t * json)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
uint64_t count = 0;
|
||||||
|
char const * key;
|
||||||
|
json_t * value;
|
||||||
|
char * rrd;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "DEBUG: %s(\"%s\", %d)\n", __func__, hostname,
|
||||||
|
json_typeof(json));
|
||||||
|
#endif
|
||||||
|
if(!json_is_object(json))
|
||||||
|
return -1;
|
||||||
|
json_object_foreach(json, key, value)
|
||||||
|
count++;
|
||||||
|
if((rrd = string_new_append(hostname, "/upgrades.rrd", NULL)) == NULL)
|
||||||
|
return -1;
|
||||||
|
ret = damon_update(damon, RRDTYPE_UPGRADES, rrd, 1, count);
|
||||||
|
string_delete(rrd);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int _refresh_parse_hostname_procs(DaMon * damon, char const * hostname,
|
static int _refresh_parse_hostname_procs(DaMon * damon, char const * hostname,
|
||||||
json_t * json)
|
json_t * json)
|
||||||
{
|
{
|
||||||
|
@ -243,6 +274,31 @@ static int _refresh_parse_hostname_w(DaMon * damon, char const * hostname,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int _refresh_parse_pkg_list_upgrades(DaMon * damon, json_t * json)
|
||||||
|
{
|
||||||
|
char const * hostname;
|
||||||
|
json_t * value;
|
||||||
|
|
||||||
|
if(!json_is_object(json))
|
||||||
|
return -1;
|
||||||
|
json_object_foreach(json, hostname, value)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "DEBUG: hostname: %s\n", hostname);
|
||||||
|
#endif
|
||||||
|
/* XXX report errors */
|
||||||
|
if(string_find(hostname, "/") != NULL
|
||||||
|
|| strcmp(hostname, ".") == 0
|
||||||
|
|| strcmp(hostname, "..") == 0)
|
||||||
|
return -1;
|
||||||
|
if(!json_is_object(value))
|
||||||
|
return -1;
|
||||||
|
_refresh_parse_hostname_pkg_list_upgrades(damon, hostname,
|
||||||
|
value);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int _refresh_parse_status_all_status(DaMon * damon, json_t * json)
|
static int _refresh_parse_status_all_status(DaMon * damon, json_t * json)
|
||||||
{
|
{
|
||||||
char const * hostname;
|
char const * hostname;
|
||||||
|
|
10
src/rrd.c
10
src/rrd.c
|
@ -95,6 +95,16 @@ int rrd_create(RRDType type, char const * filename)
|
||||||
argv[11] = RRD_AVERAGE_YEAR;
|
argv[11] = RRD_AVERAGE_YEAR;
|
||||||
argv[12] = NULL;
|
argv[12] = NULL;
|
||||||
break;
|
break;
|
||||||
|
case RRDTYPE_UPGRADES:
|
||||||
|
argv[5] = "--step";
|
||||||
|
argv[6] = "300";
|
||||||
|
argv[7] = "DS:upgrades:GAUGE:600:0:U";
|
||||||
|
argv[8] = RRD_AVERAGE_DAY;
|
||||||
|
argv[9] = RRD_AVERAGE_WEEK;
|
||||||
|
argv[10] = RRD_AVERAGE_4WEEK;
|
||||||
|
argv[11] = RRD_AVERAGE_YEAR;
|
||||||
|
argv[12] = NULL;
|
||||||
|
break;
|
||||||
case RRDTYPE_USERS:
|
case RRDTYPE_USERS:
|
||||||
argv[5] = "--step";
|
argv[5] = "--step";
|
||||||
argv[6] = "300";
|
argv[6] = "300";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user