|
@@ -28,7 +28,7 @@
|
|
|
|
|
|
static void _log(LY_LOG_LEVEL level, const char *msg, const char *path)
|
|
|
{
|
|
|
- fprintf(stderr, ERRORMSG "%s %s\n", msg, path ? path : "");
|
|
|
+ fprintf(stderr, ERRORMSG "%s. %s\n", msg, path ? path : "");
|
|
|
level = level;
|
|
|
}
|
|
|
|
|
@@ -373,7 +373,7 @@ int srp_set(kcontext_t *context)
|
|
|
faux_argv_free(args);
|
|
|
|
|
|
if (pline->invalid) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid set request.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid set request\n");
|
|
|
ret = -1;
|
|
|
goto cleanup;
|
|
|
}
|
|
@@ -382,13 +382,13 @@ int srp_set(kcontext_t *context)
|
|
|
while ((expr = (pexpr_t *)faux_list_each(&iter))) {
|
|
|
if (!(expr->pat & PT_SET)) {
|
|
|
err_num++;
|
|
|
- fprintf(stderr, ERRORMSG "Illegal expression for set operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal expression for set operation\n");
|
|
|
break;
|
|
|
}
|
|
|
if (sr_set_item_str(sess, expr->xpath, expr->value, NULL, 0) !=
|
|
|
SR_ERR_OK) {
|
|
|
err_num++;
|
|
|
- fprintf(stderr, ERRORMSG "Can't set data.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't set data\n");
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -438,24 +438,24 @@ int srp_del(kcontext_t *context)
|
|
|
faux_argv_free(args);
|
|
|
|
|
|
if (pline->invalid) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid 'del' request.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid 'del' request\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (faux_list_len(pline->exprs) > 1) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't delete more than one object.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't delete more than one object\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
expr = (pexpr_t *)faux_list_data(faux_list_head(pline->exprs));
|
|
|
|
|
|
if (!(expr->pat & PT_DEL)) {
|
|
|
- fprintf(stderr, ERRORMSG "Illegal expression for 'del' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal expression for 'del' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (sr_delete_item(sess, expr->xpath, 0) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't delete data.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't delete data\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -494,24 +494,24 @@ int srp_edit(kcontext_t *context)
|
|
|
pline = pline_parse(sess, args, srp_udata_opts(context));
|
|
|
|
|
|
if (pline->invalid) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid 'edit' request.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid 'edit' request\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (faux_list_len(pline->exprs) > 1) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't process more than one object.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't process more than one object\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
expr = (pexpr_t *)faux_list_data(faux_list_head(pline->exprs));
|
|
|
|
|
|
if (!(expr->pat & PT_EDIT)) {
|
|
|
- fprintf(stderr, ERRORMSG "Illegal expression for 'edit' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal expression for 'edit' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (sr_set_item_str(sess, expr->xpath, NULL, NULL, 0) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't set editing data.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't set editing data\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -634,19 +634,19 @@ int srp_insert(kcontext_t *context)
|
|
|
faux_argv_free(insert_from);
|
|
|
|
|
|
if (pline->invalid) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid 'from' expression.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid 'from' expression\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (faux_list_len(pline->exprs) > 1) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't process more than one object.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't process more than one object\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
expr = (pexpr_t *)faux_list_data(faux_list_head(pline->exprs));
|
|
|
|
|
|
if (!(expr->pat & PT_INSERT)) {
|
|
|
- fprintf(stderr, ERRORMSG "Illegal 'from' expression for 'insert' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal 'from' expression for 'insert' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -660,7 +660,7 @@ int srp_insert(kcontext_t *context)
|
|
|
else if (kpargv_find(pargv, "after"))
|
|
|
position = SR_MOVE_AFTER;
|
|
|
else {
|
|
|
- fprintf(stderr, ERRORMSG "Illegal 'position' argument.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal 'position' argument\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -672,19 +672,19 @@ int srp_insert(kcontext_t *context)
|
|
|
faux_argv_free(insert_to);
|
|
|
|
|
|
if (pline_to->invalid) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid 'to' expression.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid 'to' expression\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (faux_list_len(pline_to->exprs) > 1) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't process more than one object.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't process more than one object\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
expr_to = (pexpr_t *)faux_list_data(faux_list_head(pline_to->exprs));
|
|
|
|
|
|
if (!(expr_to->pat & PT_INSERT)) {
|
|
|
- fprintf(stderr, ERRORMSG "Illegal 'to' expression for 'insert' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal 'to' expression for 'insert' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -696,7 +696,7 @@ int srp_insert(kcontext_t *context)
|
|
|
|
|
|
if (sr_move_item(sess, expr->xpath, position,
|
|
|
list_keys, leaflist_value, NULL, 0) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't move element.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't move element\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -721,19 +721,19 @@ int srp_verify(kcontext_t *context)
|
|
|
assert(context);
|
|
|
|
|
|
if (sr_connect(SR_CONN_DEFAULT, &conn)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't connect to data repository.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't connect to data repository\n");
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
if (sr_session_start(conn, SRP_REPO_EDIT, &sess)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't connect to candidate data store.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't connect to candidate data store\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
// Validate candidate config
|
|
|
if (sr_validate(sess, NULL, 0) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid candidate configuration.\n");
|
|
|
srp_print_errors(sess);
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid candidate configuration\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -754,34 +754,34 @@ int srp_commit(kcontext_t *context)
|
|
|
assert(context);
|
|
|
|
|
|
if (sr_connect(SR_CONN_DEFAULT, &conn)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't connect to data repository.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't connect to data repository\n");
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
if (sr_session_start(conn, SRP_REPO_EDIT, &sess)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't connect to candidate data store.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't connect to candidate data store\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
// Copy candidate to running-config
|
|
|
if (sr_session_switch_ds(sess, SR_DS_RUNNING)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't connect to running-config data store.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't connect to running-config data store\n");
|
|
|
goto err;
|
|
|
}
|
|
|
if (sr_copy_config(sess, NULL, SRP_REPO_EDIT, 0) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't commit to running-config.\n");
|
|
|
srp_print_errors(sess);
|
|
|
+ fprintf(stderr, ERRORMSG "Can't commit to running-config\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
// Copy running-config to startup-config
|
|
|
if (sr_session_switch_ds(sess, SR_DS_STARTUP)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't connect to startup-config data store.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't connect to startup-config data store\n");
|
|
|
goto err;
|
|
|
}
|
|
|
if (sr_copy_config(sess, NULL, SR_DS_RUNNING, 0) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't store data to startup-config.\n");
|
|
|
srp_print_errors(sess);
|
|
|
+ fprintf(stderr, ERRORMSG "Can't store data to startup-config\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -802,18 +802,18 @@ int srp_reset(kcontext_t *context)
|
|
|
assert(context);
|
|
|
|
|
|
if (sr_connect(SR_CONN_DEFAULT, &conn)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't connect to data repository.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't connect to data repository\n");
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
// Copy running-config to candidate config
|
|
|
if (sr_session_start(conn, SRP_REPO_EDIT, &sess)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't connect to candidate data store.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't connect to candidate data store\n");
|
|
|
goto err;
|
|
|
}
|
|
|
if (sr_copy_config(sess, NULL, SR_DS_RUNNING, 0) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't reset to running-config.\n");
|
|
|
srp_print_errors(sess);
|
|
|
+ fprintf(stderr, ERRORMSG "Can't reset to running-config\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -852,23 +852,23 @@ int srp_show_xml(kcontext_t *context)
|
|
|
faux_argv_free(args);
|
|
|
|
|
|
if (pline->invalid) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid 'show' request.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid 'show' request\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (faux_list_len(pline->exprs) > 1) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't process more than one object.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't process more than one object\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
expr = (pexpr_t *)faux_list_data(faux_list_head(pline->exprs));
|
|
|
if (!(expr->pat & PT_EDIT)) {
|
|
|
- fprintf(stderr, ERRORMSG "Illegal expression for 'show' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal expression for 'show' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (sr_get_subtree(sess, expr->xpath, 0, &data) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't get specified subtree.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't get specified subtree\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -925,25 +925,25 @@ static int show(kcontext_t *context, sr_datastore_t ds)
|
|
|
faux_argv_free(args);
|
|
|
|
|
|
if (pline->invalid) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid 'show' request.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid 'show' request\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (faux_list_len(pline->exprs) > 1) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't process more than one object.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't process more than one object\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (!(expr = (pexpr_t *)faux_list_data(faux_list_head(pline->exprs)))) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't get expression.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't get expression\n");
|
|
|
goto err;
|
|
|
}
|
|
|
if (!(expr->pat & PT_EDIT)) {
|
|
|
- fprintf(stderr, ERRORMSG "Illegal expression for 'show' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal expression for 'show' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
if (!expr->xpath) {
|
|
|
- fprintf(stderr, ERRORMSG "Empty expression for 'show' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Empty expression for 'show' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
xpath = expr->xpath;
|
|
@@ -1011,28 +1011,28 @@ int srp_deactivate(kcontext_t *context)
|
|
|
faux_argv_free(args);
|
|
|
|
|
|
if (pline->invalid) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid 'show' request.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid 'show' request\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (faux_list_len(pline->exprs) > 1) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't process more than one object.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't process more than one object\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
expr = (pexpr_t *)faux_list_data(faux_list_head(pline->exprs));
|
|
|
if (!(expr->pat & PT_DEL)) {
|
|
|
- fprintf(stderr, ERRORMSG "Illegal expression for 'show' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal expression for 'show' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (sr_get_subtree(sess, expr->xpath, 0, &data) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't get specified subtree.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't get specified subtree\n");
|
|
|
goto err;
|
|
|
}
|
|
|
if (lyd_new_meta(LYD_CTX(data->tree), data->tree, NULL,
|
|
|
"junos-configuration-metadata:active", "false", 0, NULL)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't deactivate.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't deactivate\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -1041,16 +1041,16 @@ int srp_deactivate(kcontext_t *context)
|
|
|
printf("META\n");
|
|
|
|
|
|
if (sr_has_changes(sess))
|
|
|
- fprintf(stderr, ERRORMSG "Has changes.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Has changes\n");
|
|
|
|
|
|
if (sr_apply_changes(sess, 0)) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't apply changes.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't apply changes\n");
|
|
|
}
|
|
|
sr_release_data(data);
|
|
|
|
|
|
|
|
|
if (sr_get_subtree(sess, expr->xpath, 0, &data) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't get specified subtree.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't get specified subtree\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -1107,25 +1107,25 @@ int srp_diff(kcontext_t *context)
|
|
|
faux_argv_free(args);
|
|
|
|
|
|
if (pline->invalid) {
|
|
|
- fprintf(stderr, ERRORMSG "Invalid 'show' request.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Invalid 'show' request\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (faux_list_len(pline->exprs) > 1) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't process more than one object.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't process more than one object\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (!(expr = (pexpr_t *)faux_list_data(faux_list_head(pline->exprs)))) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't get expression.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't get expression\n");
|
|
|
goto err;
|
|
|
}
|
|
|
if (!(expr->pat & PT_EDIT)) {
|
|
|
- fprintf(stderr, ERRORMSG "Illegal expression for 'show' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Illegal expression for 'show' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
if (!expr->xpath) {
|
|
|
- fprintf(stderr, ERRORMSG "Empty expression for 'show' operation.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Empty expression for 'show' operation\n");
|
|
|
goto err;
|
|
|
}
|
|
|
xpath = expr->xpath;
|
|
@@ -1135,16 +1135,16 @@ int srp_diff(kcontext_t *context)
|
|
|
xpath = "/*";
|
|
|
|
|
|
if (sr_get_data(sess1, xpath, 0, 0, 0, &data1) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't get specified subtree.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't get specified subtree\n");
|
|
|
goto err;
|
|
|
}
|
|
|
if (sr_get_data(sess2, xpath, 0, 0, 0, &data2) != SR_ERR_OK) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't get specified subtree.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't get specified subtree\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
if (lyd_diff_siblings(data1->tree, data2->tree, 0, &diff) != LY_SUCCESS) {
|
|
|
- fprintf(stderr, ERRORMSG "Can't generate diff.\n");
|
|
|
+ fprintf(stderr, ERRORMSG "Can't generate diff\n");
|
|
|
goto err;
|
|
|
}
|
|
|
|