diff --git a/plugins/restful/global_config_handle.c b/plugins/restful/global_config_handle.c index 43d21a87..7ee2916c 100644 --- a/plugins/restful/global_config_handle.c +++ b/plugins/restful/global_config_handle.c @@ -1712,12 +1712,17 @@ static int get_app_subscriptions_resp(context_t * ctx, grps[index].driver = strdup(group->driver); grps[index].group = strdup(group->group); grps[index].params = group->params ? strdup(group->params) : NULL; + grps[index].static_tags = + group->static_tags ? strdup(group->static_tags) : NULL; if (NULL == grps[index].driver || NULL == grps[index].group) { for (int j = 0; j <= index; ++j) { free(grps[j].driver); free(grps[j].group); free(grps[j].params); + if (grps[j].static_tags) { + free(grps[j].static_tags); + } } free(grps); rv = NEU_ERR_EINTERNAL; @@ -1817,8 +1822,10 @@ static int add_app_subscription(context_t *ctx, neu_json_app_t *app, strcpy(cmd.app, app->node.name); strcpy(cmd.driver, grp->driver); strcpy(cmd.group, grp->group); - cmd.params = grp->params; - grp->params = NULL; + cmd.params = grp->params; + cmd.static_tags = grp->static_tags; + grp->params = NULL; + grp->static_tags = NULL; if (0 != neu_plugin_op(plugin, header, &cmd)) { return NEU_ERR_IS_BUSY; diff --git a/src/parser/neu_json_global_config.c b/src/parser/neu_json_global_config.c index b101fd72..402dcc6d 100644 --- a/src/parser/neu_json_global_config.c +++ b/src/parser/neu_json_global_config.c @@ -589,6 +589,9 @@ static void fini_app_group(neu_json_app_group_t *grp) free(grp->driver); free(grp->group); free(grp->params); + if (grp->static_tags) { + free(grp->static_tags); + } } int neu_json_encode_app(void *node_json, void *param) @@ -644,6 +647,15 @@ int neu_json_encode_app(void *node_json, void *param) } } + if (grp->static_tags && strlen(grp->static_tags) > 0) { + if (0 != + neu_json_load_key(grp_json, "static_tags", grp->static_tags, + false)) { + json_decref(grp_json); + return -1; + } + } + if (0 != json_array_append_new(groups_json, grp_json)) { return -1; } @@ -715,6 +727,8 @@ int neu_json_decode_app_json(void *node_json, neu_json_app_t *app_p) groups[i].driver = grp_elems[0].v.val_str; groups[i].group = grp_elems[1].v.val_str; neu_json_dump_key(grp_json, "params", &groups[i].params, false); + neu_json_dump_key(grp_json, "static_tags", &groups[i].static_tags, + false); } app_p->subscriptions.n_group = n_group; diff --git a/src/parser/neu_json_global_config.h b/src/parser/neu_json_global_config.h index cd811bf8..e907628b 100644 --- a/src/parser/neu_json_global_config.h +++ b/src/parser/neu_json_global_config.h @@ -101,6 +101,7 @@ typedef struct { char *driver; char *group; char *params; + char *static_tags; } neu_json_app_group_t; typedef struct {