DaMon: share the definition of DaMonHost
This commit is contained in:
parent
9d30692a08
commit
1a30b948e8
|
@ -17,8 +17,6 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <System.h>
|
|
||||||
#include <System/App.h>
|
|
||||||
#include "rrd.h"
|
#include "rrd.h"
|
||||||
#include "damon.h"
|
#include "damon.h"
|
||||||
#include "../config.h"
|
#include "../config.h"
|
||||||
|
@ -34,75 +32,54 @@
|
||||||
#define DAMON_SEP '/'
|
#define DAMON_SEP '/'
|
||||||
|
|
||||||
|
|
||||||
/* types */
|
|
||||||
/* XXX duplicated from damon.c */
|
|
||||||
typedef struct _Host
|
|
||||||
{
|
|
||||||
DaMon * damon;
|
|
||||||
AppClient * appclient;
|
|
||||||
char * hostname;
|
|
||||||
char ** ifaces;
|
|
||||||
char ** vols;
|
|
||||||
} Host;
|
|
||||||
|
|
||||||
struct _DaMon
|
|
||||||
{
|
|
||||||
char const * prefix;
|
|
||||||
unsigned int refresh;
|
|
||||||
Host * hosts;
|
|
||||||
unsigned int hosts_cnt;
|
|
||||||
Event * event;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
/* damon_refresh */
|
/* damon_refresh */
|
||||||
static AppClient * _refresh_connect(Host * host, Event * event);
|
static AppClient * _refresh_connect(DaMonHost * host, Event * event);
|
||||||
static int _refresh_uptime(AppClient * ac, Host * host, char * rrd);
|
static int _refresh_uptime(AppClient * ac, DaMonHost * host, char * rrd);
|
||||||
static int _refresh_load(AppClient * ac, Host * host, char * rrd);
|
static int _refresh_load(AppClient * ac, DaMonHost * host, char * rrd);
|
||||||
static int _refresh_ram(AppClient * ac, Host * host, char * rrd);
|
static int _refresh_ram(AppClient * ac, DaMonHost * host, char * rrd);
|
||||||
static int _refresh_swap(AppClient * ac, Host * host, char * rrd);
|
static int _refresh_swap(AppClient * ac, DaMonHost * host, char * rrd);
|
||||||
static int _refresh_procs(AppClient * ac, Host * host, char * rrd);
|
static int _refresh_procs(AppClient * ac, DaMonHost * host, char * rrd);
|
||||||
static int _refresh_users(AppClient * ac, Host * host, char * rrd);
|
static int _refresh_users(AppClient * ac, DaMonHost * host, char * rrd);
|
||||||
static int _refresh_ifaces(AppClient * ac, Host * host, char * rrd);
|
static int _refresh_ifaces(AppClient * ac, DaMonHost * host, char * rrd);
|
||||||
static int _refresh_ifaces_if(AppClient * ac, Host * host, char * rrd,
|
static int _refresh_ifaces_if(AppClient * ac, DaMonHost * host, char * rrd,
|
||||||
char const * iface);
|
char const * iface);
|
||||||
static int _refresh_vols(AppClient * ac, Host * host, char * rrd);
|
static int _refresh_vols(AppClient * ac, DaMonHost * host, char * rrd);
|
||||||
static int _refresh_vols_vol(AppClient * ac, Host * host, char * rrd,
|
static int _refresh_vols_vol(AppClient * ac, DaMonHost * host, char * rrd,
|
||||||
char * vol);
|
char * vol);
|
||||||
|
|
||||||
int damon_refresh(DaMon * damon)
|
int damon_refresh(DaMon * damon)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
size_t i;
|
||||||
AppClient * ac = NULL;
|
AppClient * ac = NULL;
|
||||||
char * rrd = NULL;
|
char * rrd = NULL;
|
||||||
char * p;
|
char * p;
|
||||||
Host * hosts = damon->hosts;
|
DaMonHost * host;
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
||||||
#endif
|
#endif
|
||||||
for(i = 0; i < damon->hosts_cnt; i++)
|
for(i = 0; (host = damon_get_host_by_id(damon, i)) != NULL; i++)
|
||||||
{
|
{
|
||||||
if((ac = hosts[i].appclient) == NULL)
|
if((ac = host->appclient) == NULL)
|
||||||
if((ac = _refresh_connect(&hosts[i], damon->event))
|
if((ac = _refresh_connect(host, damon_get_event(damon)))
|
||||||
== NULL)
|
== NULL)
|
||||||
continue;
|
continue;
|
||||||
if((p = realloc(rrd, string_get_length(hosts[i].hostname) + 12))
|
if((p = realloc(rrd, string_get_length(host->hostname) + 12))
|
||||||
== NULL) /* XXX avoid this constant */
|
== NULL) /* XXX avoid this constant */
|
||||||
break;
|
break;
|
||||||
rrd = p;
|
rrd = p;
|
||||||
if(_refresh_uptime(ac, &hosts[i], rrd) != 0
|
if(_refresh_uptime(ac, host, rrd) != 0
|
||||||
|| _refresh_load(ac, &hosts[i], rrd) != 0
|
|| _refresh_load(ac, host, rrd) != 0
|
||||||
|| _refresh_ram(ac, &hosts[i], rrd) != 0
|
|| _refresh_ram(ac, host, rrd) != 0
|
||||||
|| _refresh_swap(ac, &hosts[i], rrd) != 0
|
|| _refresh_swap(ac, host, rrd) != 0
|
||||||
|| _refresh_procs(ac, &hosts[i], rrd) != 0
|
|| _refresh_procs(ac, host, rrd) != 0
|
||||||
|| _refresh_users(ac, &hosts[i], rrd) != 0
|
|| _refresh_users(ac, host, rrd) != 0
|
||||||
|| _refresh_ifaces(ac, &hosts[i], rrd) != 0
|
|| _refresh_ifaces(ac, host, rrd) != 0
|
||||||
|| _refresh_vols(ac, &hosts[i], rrd) != 0)
|
|| _refresh_vols(ac, host, rrd) != 0)
|
||||||
{
|
{
|
||||||
appclient_delete(ac);
|
appclient_delete(ac);
|
||||||
hosts[i].appclient = NULL;
|
host->appclient = NULL;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ac = NULL;
|
ac = NULL;
|
||||||
|
@ -114,7 +91,7 @@ int damon_refresh(DaMon * damon)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static AppClient * _refresh_connect(Host * host, Event * event)
|
static AppClient * _refresh_connect(DaMonHost * host, Event * event)
|
||||||
{
|
{
|
||||||
if(setenv("APPSERVER_Probe", host->hostname, 1) != 0)
|
if(setenv("APPSERVER_Probe", host->hostname, 1) != 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -124,7 +101,7 @@ static AppClient * _refresh_connect(Host * host, Event * event)
|
||||||
return host->appclient;
|
return host->appclient;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_uptime(AppClient * ac, Host * host, char * rrd)
|
static int _refresh_uptime(AppClient * ac, DaMonHost * host, char * rrd)
|
||||||
{
|
{
|
||||||
int32_t ret;
|
int32_t ret;
|
||||||
|
|
||||||
|
@ -135,7 +112,7 @@ static int _refresh_uptime(AppClient * ac, Host * host, char * rrd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_load(AppClient * ac, Host * host, char * rrd)
|
static int _refresh_load(AppClient * ac, DaMonHost * host, char * rrd)
|
||||||
{
|
{
|
||||||
int32_t res;
|
int32_t res;
|
||||||
uint32_t load[3];
|
uint32_t load[3];
|
||||||
|
@ -151,7 +128,7 @@ static int _refresh_load(AppClient * ac, Host * host, char * rrd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_procs(AppClient * ac, Host * host, char * rrd)
|
static int _refresh_procs(AppClient * ac, DaMonHost * host, char * rrd)
|
||||||
{
|
{
|
||||||
int32_t res;
|
int32_t res;
|
||||||
|
|
||||||
|
@ -162,7 +139,7 @@ static int _refresh_procs(AppClient * ac, Host * host, char * rrd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_ram(AppClient * ac, Host * host, char * rrd)
|
static int _refresh_ram(AppClient * ac, DaMonHost * host, char * rrd)
|
||||||
{
|
{
|
||||||
int32_t res;
|
int32_t res;
|
||||||
uint32_t ram[4];
|
uint32_t ram[4];
|
||||||
|
@ -176,7 +153,7 @@ static int _refresh_ram(AppClient * ac, Host * host, char * rrd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_swap(AppClient * ac, Host * host, char * rrd)
|
static int _refresh_swap(AppClient * ac, DaMonHost * host, char * rrd)
|
||||||
{
|
{
|
||||||
int32_t res;
|
int32_t res;
|
||||||
uint32_t swap[2];
|
uint32_t swap[2];
|
||||||
|
@ -188,7 +165,7 @@ static int _refresh_swap(AppClient * ac, Host * host, char * rrd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_users(AppClient * ac, Host * host, char * rrd)
|
static int _refresh_users(AppClient * ac, DaMonHost * host, char * rrd)
|
||||||
{
|
{
|
||||||
int32_t res;
|
int32_t res;
|
||||||
|
|
||||||
|
@ -199,7 +176,7 @@ static int _refresh_users(AppClient * ac, Host * host, char * rrd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_ifaces(AppClient * ac, Host * host, char * rrd)
|
static int _refresh_ifaces(AppClient * ac, DaMonHost * host, char * rrd)
|
||||||
{
|
{
|
||||||
char ** p = host->ifaces;
|
char ** p = host->ifaces;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -211,7 +188,7 @@ static int _refresh_ifaces(AppClient * ac, Host * host, char * rrd)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_ifaces_if(AppClient * ac, Host * host, char * rrd,
|
static int _refresh_ifaces_if(AppClient * ac, DaMonHost * host, char * rrd,
|
||||||
char const * iface)
|
char const * iface)
|
||||||
{
|
{
|
||||||
int32_t res[2];
|
int32_t res[2];
|
||||||
|
@ -225,7 +202,7 @@ static int _refresh_ifaces_if(AppClient * ac, Host * host, char * rrd,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_vols(AppClient * ac, Host * host, char * rrd)
|
static int _refresh_vols(AppClient * ac, DaMonHost * host, char * rrd)
|
||||||
{
|
{
|
||||||
char ** p = host->vols;
|
char ** p = host->vols;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -237,7 +214,7 @@ static int _refresh_vols(AppClient * ac, Host * host, char * rrd)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_vols_vol(AppClient * ac, Host * host, char * rrd,
|
static int _refresh_vols_vol(AppClient * ac, DaMonHost * host, char * rrd,
|
||||||
char * vol)
|
char * vol)
|
||||||
{
|
{
|
||||||
int32_t res[2];
|
int32_t res[2];
|
||||||
|
|
47
src/damon.c
47
src/damon.c
|
@ -43,21 +43,12 @@
|
||||||
/* DaMon */
|
/* DaMon */
|
||||||
/* private */
|
/* private */
|
||||||
/* types */
|
/* types */
|
||||||
typedef struct _Host
|
|
||||||
{
|
|
||||||
DaMon * damon;
|
|
||||||
AppClient * appclient;
|
|
||||||
char * hostname;
|
|
||||||
char ** ifaces;
|
|
||||||
char ** vols;
|
|
||||||
} Host;
|
|
||||||
|
|
||||||
struct _DaMon
|
struct _DaMon
|
||||||
{
|
{
|
||||||
char * prefix;
|
char * prefix;
|
||||||
String * rrdcached;
|
String * rrdcached;
|
||||||
unsigned int refresh;
|
unsigned int refresh;
|
||||||
Host * hosts;
|
DaMonHost * hosts;
|
||||||
unsigned int hosts_cnt;
|
unsigned int hosts_cnt;
|
||||||
Event * event;
|
Event * event;
|
||||||
};
|
};
|
||||||
|
@ -124,6 +115,14 @@ Event * damon_get_event(DaMon * damon)
|
||||||
return damon->event;
|
return damon->event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* damon_get_host_by_id */
|
||||||
|
DaMonHost * damon_get_host_by_id(DaMon * damon, size_t id)
|
||||||
|
{
|
||||||
|
if(damon->hosts_cnt >= id)
|
||||||
|
return NULL;
|
||||||
|
return &damon->hosts[id];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
/* damon_error */
|
/* damon_error */
|
||||||
|
@ -179,9 +178,9 @@ int damon_update(DaMon * damon, RRDType type, char const * filename,
|
||||||
/* damon_init */
|
/* damon_init */
|
||||||
static int _init_config(DaMon * damon, char const * filename);
|
static int _init_config(DaMon * damon, char const * filename);
|
||||||
static int _init_config_hosts(DaMon * damon, Config * config,
|
static int _init_config_hosts(DaMon * damon, Config * config,
|
||||||
char const * hosts);
|
String const * hosts);
|
||||||
static int _init_config_hosts_host(DaMon * damon, Config * config, Host * host,
|
static int _init_config_hosts_host(DaMon * damon, Config * config, DaMonHost * host,
|
||||||
char const * h, unsigned int pos);
|
String const * h, unsigned int pos);
|
||||||
static char ** _init_config_hosts_host_comma(char const * line);
|
static char ** _init_config_hosts_host_comma(char const * line);
|
||||||
|
|
||||||
static int _damon_init(DaMon * damon, char const * config, Event * event)
|
static int _damon_init(DaMon * damon, char const * config, Event * event)
|
||||||
|
@ -256,7 +255,7 @@ static int _init_config_hosts(DaMon * damon, Config * config,
|
||||||
{
|
{
|
||||||
String const * h = hosts;
|
String const * h = hosts;
|
||||||
unsigned int pos = 0;
|
unsigned int pos = 0;
|
||||||
Host * p;
|
DaMonHost * p;
|
||||||
|
|
||||||
while(h[0] != '\0')
|
while(h[0] != '\0')
|
||||||
{
|
{
|
||||||
|
@ -284,8 +283,8 @@ static int _init_config_hosts(DaMon * damon, Config * config,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _init_config_hosts_host(DaMon * damon, Config * config, Host * host,
|
static int _init_config_hosts_host(DaMon * damon, Config * config, DaMonHost * host,
|
||||||
char const * h, unsigned int pos)
|
String const * h, unsigned int pos)
|
||||||
{
|
{
|
||||||
String const * p;
|
String const * p;
|
||||||
|
|
||||||
|
@ -354,18 +353,22 @@ static char ** _init_config_hosts_host_comma(char const * line)
|
||||||
|
|
||||||
|
|
||||||
/* damon_destroy */
|
/* damon_destroy */
|
||||||
|
static void _destroy_host(DaMonHost * host);
|
||||||
|
|
||||||
static void _damon_destroy(DaMon * damon)
|
static void _damon_destroy(DaMon * damon)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
for(i = 0; i < damon->hosts_cnt; i++)
|
for(i = 0; i < damon->hosts_cnt; i++)
|
||||||
{
|
_destroy_host(&damon->hosts[i]);
|
||||||
free(damon->hosts[i].hostname);
|
|
||||||
if(damon->hosts[i].appclient != NULL)
|
|
||||||
appclient_delete(damon->hosts[i].appclient);
|
|
||||||
}
|
|
||||||
event_delete(damon->event);
|
|
||||||
free(damon->hosts);
|
free(damon->hosts);
|
||||||
string_delete(damon->rrdcached);
|
string_delete(damon->rrdcached);
|
||||||
free(damon->prefix);
|
free(damon->prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _destroy_host(DaMonHost * host)
|
||||||
|
{
|
||||||
|
string_delete(host->hostname);
|
||||||
|
if(host->appclient != NULL)
|
||||||
|
appclient_delete(host->appclient);
|
||||||
|
}
|
||||||
|
|
12
src/damon.h
12
src/damon.h
|
@ -19,6 +19,7 @@
|
||||||
# define DAMON_DAMON_H
|
# define DAMON_DAMON_H
|
||||||
|
|
||||||
# include <System.h>
|
# include <System.h>
|
||||||
|
# include <System/App.h>
|
||||||
# include "rrd.h"
|
# include "rrd.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,6 +27,15 @@
|
||||||
/* types */
|
/* types */
|
||||||
typedef struct _DaMon DaMon;
|
typedef struct _DaMon DaMon;
|
||||||
|
|
||||||
|
typedef struct _DaMonHost
|
||||||
|
{
|
||||||
|
DaMon * damon;
|
||||||
|
AppClient * appclient;
|
||||||
|
String * hostname;
|
||||||
|
char ** ifaces;
|
||||||
|
char ** vols;
|
||||||
|
} DaMonHost;
|
||||||
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
DaMon * damon_new(char const * config);
|
DaMon * damon_new(char const * config);
|
||||||
|
@ -35,6 +45,8 @@ void damon_delete(DaMon * damon);
|
||||||
/* accessors */
|
/* accessors */
|
||||||
Event * damon_get_event(DaMon * damon);
|
Event * damon_get_event(DaMon * damon);
|
||||||
|
|
||||||
|
DaMonHost * damon_get_host_by_id(DaMon * damon, size_t id);
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
int damon_error(char const * message, int error);
|
int damon_error(char const * message, int error);
|
||||||
int damon_perror(char const * message, int error);
|
int damon_perror(char const * message, int error);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user