mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-16 00:00:02 +01:00
49 lines
No EOL
1.3 KiB
C
49 lines
No EOL
1.3 KiB
C
/** The "nodes" command
|
|
*
|
|
* @author Steffen Vogel <stvogel@eonerc.rwth-aachen.de>
|
|
* @copyright 2017, Institute for Automation of Complex Power Systems, EONERC
|
|
* This file is part of VILLASnode. All Rights Reserved. Proprietary and confidential.
|
|
* Unauthorized copying of this file, via any medium is strictly prohibited.
|
|
*********************************************************************************/
|
|
|
|
#include <jansson.h>
|
|
|
|
#include "plugin.h"
|
|
#include "api.h"
|
|
#include "node.h"
|
|
#include "utils.h"
|
|
|
|
extern struct list nodes;
|
|
|
|
static int api_nodes(struct api_ressource *r, json_t *args, json_t **resp, struct api_session *s)
|
|
{
|
|
json_t *json_nodes = json_array();
|
|
|
|
list_foreach(struct node *n, &s->api->super_node->nodes) {
|
|
json_t *json_node = json_pack("{ s: s, s: i, s: i, s: i, s: i }",
|
|
"name", node_name_short(n),
|
|
"state", n->state,
|
|
"vectorize", n->vectorize,
|
|
"affinity", n->affinity
|
|
);
|
|
|
|
/* Add all additional fields of node here.
|
|
* This can be used for metadata */
|
|
json_object_update(json_node, config_to_json(n->cfg));
|
|
|
|
json_array_append_new(json_nodes, json_node);
|
|
}
|
|
|
|
*resp = json_nodes;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static struct plugin p = {
|
|
.name = "nodes",
|
|
.description = "retrieve list of all known nodes",
|
|
.type = PLUGIN_TYPE_API,
|
|
.api.cb = api_nodes
|
|
};
|
|
|
|
REGISTER_PLUGIN(&p) |