From e3733982ed67bcf565965f254391c4d0977368d6 Mon Sep 17 00:00:00 2001 From: Richard Alpe Date: Wed, 25 Sep 2024 09:07:42 +0200 Subject: [PATCH] statd: never hide yanger faults This is basically a functionally revert of: 435c5ca9 statd: allow ethtool --json to fail without breaking operational ds Having a fail flag that hides all yanger faults is too big of a hammer. If some hardware doesn't support a particular command such as "ethtool --json" it should be handled gracefully by yanger. Perhaps by catching the error and returning an empty dataset for that node. Signed-off-by: Richard Alpe --- src/statd/statd.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/statd/statd.c b/src/statd/statd.c index 89b0f14a..099380ce 100644 --- a/src/statd/statd.c +++ b/src/statd/statd.c @@ -56,12 +56,8 @@ struct statd { struct ev_loop *ev_loop; }; -/* - * The 'fail' parameter is true for most calls to this function, except - * when reading ethtool data (below). - */ static int ly_add_yanger_data(const struct ly_ctx *ctx, struct lyd_node **parent, - char *yanger_args[], bool fail) + char *yanger_args[]) { FILE *stream; int err; @@ -86,8 +82,6 @@ static int ly_add_yanger_data(const struct ly_ctx *ctx, struct lyd_node **parent ERROR("Error, running yanger"); fclose(stream); close(fd); - if (!fail) - return SR_ERR_OK; return SR_ERR_SYS; } @@ -179,7 +173,7 @@ static int sr_iface_cb(sr_session_ctx_t *session, uint32_t, const char *model, yanger_args[2] = "-p"; yanger_args[3] = ifname; } - err = ly_add_yanger_data(ctx, parent, yanger_args, true); + err = ly_add_yanger_data(ctx, parent, yanger_args); if (err) ERROR("Error adding interface yanger data"); @@ -215,7 +209,7 @@ static int sr_generic_cb(sr_session_ctx_t *session, uint32_t, const char *model, return SR_ERR_INTERNAL; } - err = ly_add_yanger_data(ctx, parent, yanger_args, true); + err = ly_add_yanger_data(ctx, parent, yanger_args); if (err) ERROR("Error adding yanger data"); @@ -251,7 +245,7 @@ static int sr_ospf_cb(sr_session_ctx_t *session, uint32_t, const char *, return SR_ERR_INTERNAL; } - err = ly_add_yanger_data(ctx, parent, yanger_args, true); + err = ly_add_yanger_data(ctx, parent, yanger_args); if (err) ERROR("Error adding yanger data");