mirror of
https://github.com/emqx/neuron.git
synced 2026-10-17 04:40:42 +08:00
get nodes by tags
This commit is contained in:
@@ -560,6 +560,7 @@ typedef struct neu_req_get_node {
|
||||
int link;
|
||||
bool s_delay;
|
||||
char q_group_name[NEU_GROUP_NAME_LEN];
|
||||
char q_tags[NEU_NODE_TAGS_LEN];
|
||||
} query;
|
||||
} neu_req_get_node_t;
|
||||
|
||||
|
||||
@@ -180,6 +180,7 @@ void handle_get_adapter(nng_aio *aio)
|
||||
char plugin_name[NEU_PLUGIN_NAME_LEN] = { 0 };
|
||||
char node_name[NEU_NODE_NAME_LEN] = { 0 };
|
||||
char group_name[NEU_GROUP_NAME_LEN] = { 0 };
|
||||
char tags[NEU_NODE_TAGS_LEN] = { 0 };
|
||||
|
||||
neu_plugin_t * plugin = neu_rest_get_plugin();
|
||||
neu_node_type_e node_type = { 0 };
|
||||
@@ -213,6 +214,10 @@ void handle_get_adapter(nng_aio *aio)
|
||||
strcpy(cmd.query.q_group_name, group_name);
|
||||
}
|
||||
|
||||
if (neu_http_get_param_str(aio, "tags", tags, sizeof(tags)) > 0) {
|
||||
strcpy(cmd.query.q_tags, tags);
|
||||
}
|
||||
|
||||
uintmax_t query_state = 0;
|
||||
if (neu_http_get_param_uintmax(aio, "state", &query_state) == 0) {
|
||||
if (query_state == 1 || query_state == 2 || query_state == 3 ||
|
||||
|
||||
+3
-3
@@ -470,7 +470,7 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
|
||||
|
||||
UT_array *nodes = neu_manager_get_nodes(
|
||||
manager, NEU_NA_TYPE_DRIVER | NEU_NA_TYPE_APP, cmd->plugin, "",
|
||||
false, false, 0, false, 0, "");
|
||||
false, false, 0, false, 0, "", "");
|
||||
|
||||
if (nodes != NULL) {
|
||||
if (utarray_len(nodes) > 0) {
|
||||
@@ -653,7 +653,7 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
|
||||
|
||||
UT_array *nodes = neu_manager_get_nodes(
|
||||
manager, NEU_NA_TYPE_DRIVER | NEU_NA_TYPE_APP, module_name, "",
|
||||
false, false, 0, false, 0, "");
|
||||
false, false, 0, false, 0, "", "");
|
||||
|
||||
if (nodes != NULL) {
|
||||
if (utarray_len(nodes) > 0) {
|
||||
@@ -909,7 +909,7 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
|
||||
UT_array * nodes = neu_manager_get_nodes(
|
||||
manager, cmd->type, cmd->plugin, cmd->node, cmd->query.s_delay,
|
||||
cmd->query.q_state, cmd->query.state, cmd->query.q_link,
|
||||
cmd->query.link, cmd->query.q_group_name);
|
||||
cmd->query.link, cmd->query.q_group_name, cmd->query.q_tags);
|
||||
neu_resp_get_node_t resp = { .nodes = nodes };
|
||||
|
||||
header->type = NEU_RESP_GET_NODE;
|
||||
|
||||
@@ -117,11 +117,12 @@ int neu_manager_del_node(neu_manager_t *manager, const char *node_name)
|
||||
UT_array *neu_manager_get_nodes(neu_manager_t *manager, int type,
|
||||
const char *plugin, const char *node,
|
||||
bool sort_delay, bool q_state, int state,
|
||||
bool q_link, int link, const char *q_group_name)
|
||||
bool q_link, int link, const char *q_group_name,
|
||||
const char *q_tags)
|
||||
{
|
||||
return neu_node_manager_filter(manager->node_manager, type, plugin, node,
|
||||
sort_delay, q_state, state, q_link, link,
|
||||
q_group_name);
|
||||
q_group_name, q_tags);
|
||||
}
|
||||
|
||||
int neu_manager_update_node_name(neu_manager_t *manager, const char *node,
|
||||
|
||||
@@ -59,8 +59,8 @@ int neu_manager_del_node(neu_manager_t *manager, const char *node_name);
|
||||
UT_array *neu_manager_get_nodes(neu_manager_t *manager, int type,
|
||||
const char *plugin, const char *node,
|
||||
bool sort_delay, bool q_state, int state,
|
||||
bool q_link, int link,
|
||||
const char *q_group_name);
|
||||
bool q_link, int link, const char *q_group_name,
|
||||
const char *q_tags);
|
||||
int neu_manager_update_node_name(neu_manager_t *manager, const char *node,
|
||||
const char *new_name);
|
||||
int neu_manager_update_group_name(neu_manager_t *manager, const char *driver,
|
||||
|
||||
@@ -254,7 +254,7 @@ UT_array *neu_node_manager_filter(neu_node_manager_t *mgr, int type,
|
||||
const char *plugin, const char *node,
|
||||
bool sort_delay, bool q_state, int state,
|
||||
bool q_link, int link,
|
||||
const char *q_group_name)
|
||||
const char *q_group_name, const char *q_tags)
|
||||
{
|
||||
UT_array * array = NULL;
|
||||
UT_icd icd = { sizeof(neu_resp_node_info_t), NULL, NULL, NULL };
|
||||
@@ -303,6 +303,12 @@ UT_array *neu_node_manager_filter(neu_node_manager_t *mgr, int type,
|
||||
}
|
||||
}
|
||||
|
||||
if (strlen(q_tags) > 0) {
|
||||
if (el->tags == NULL || strstr(el->tags, q_tags) == NULL) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
neu_resp_node_info_t info = { 0 };
|
||||
strcpy(info.node, el->adapter->name);
|
||||
strcpy(info.tags, el->tags ? el->tags : "");
|
||||
|
||||
@@ -55,7 +55,7 @@ UT_array *neu_node_manager_filter(neu_node_manager_t *mgr, int type,
|
||||
const char *plugin, const char *node,
|
||||
bool sort_delay, bool q_state, int state,
|
||||
bool q_link, int link,
|
||||
const char *q_group_name);
|
||||
const char *q_group_name, const char *q_tags);
|
||||
UT_array *neu_node_manager_get_all(neu_node_manager_t *mgr);
|
||||
|
||||
// neu_adapter_t array
|
||||
|
||||
Reference in New Issue
Block a user