Browse Source

Rollback to running-config

Serj Kalichev 1 year ago
parent
commit
e90bf09040
4 changed files with 39 additions and 7 deletions
  1. 1 0
      src/plugin.c
  2. 32 7
      src/syms.c
  3. 1 0
      src/syms.h
  4. 5 0
      xml/sysrepo.xml

+ 1 - 0
src/plugin.c

@@ -70,6 +70,7 @@ int kplugin_sysrepo_init(kcontext_t *context)
 		KSYM_USERDEFINED_PERMANENT, KSYM_SYNC));
 	kplugin_add_syms(plugin, ksym_new("srp_insert", srp_insert));
 	kplugin_add_syms(plugin, ksym_new("srp_commit", srp_commit));
+	kplugin_add_syms(plugin, ksym_new("srp_rollback", srp_rollback));
 
 	return 0;
 }

+ 32 - 7
src/syms.c

@@ -707,19 +707,13 @@ err:
 int srp_commit(kcontext_t *context)
 {
 	int ret = -1;
-	faux_argv_t *args = NULL;
-	pline_t *pline = NULL;
 	sr_conn_ctx_t *conn = NULL;
 	sr_session_ctx_t *sess = NULL;
-	pexpr_t *expr = NULL;
-	size_t err_num = 0;
-	faux_argv_t *cur_path = NULL;
-	kplugin_t *plugin = NULL;
 
 	assert(context);
 
 	if (sr_connect(SR_CONN_DEFAULT, &conn)) {
-		fprintf(stderr, "Can't connect to candidate data store\n");
+		fprintf(stderr, "Can't connect to data repository\n");
 		return -1;
 	}
 
@@ -759,3 +753,34 @@ err:
 
 	return ret;
 }
+
+
+int srp_rollback(kcontext_t *context)
+{
+	int ret = -1;
+	sr_conn_ctx_t *conn = NULL;
+	sr_session_ctx_t *sess = NULL;
+
+	assert(context);
+
+	if (sr_connect(SR_CONN_DEFAULT, &conn)) {
+		fprintf(stderr, "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, "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, "Can't rollback to running-config\n");
+		goto err;
+	}
+
+	ret = 0;
+err:
+	sr_disconnect(conn);
+
+	return ret;
+}

+ 1 - 0
src/syms.h

@@ -35,6 +35,7 @@ int srp_top(kcontext_t *context);
 int srp_up(kcontext_t *context);
 int srp_insert(kcontext_t *context);
 int srp_commit(kcontext_t *context);
+int srp_rollback(kcontext_t *context);
 
 C_DECL_END
 

+ 5 - 0
xml/sysrepo.xml

@@ -163,6 +163,11 @@
 		<ACTION sym="srp_commit@sysrepo"/>
 	</ENTRY>
 
+	<ENTRY name="rollback" help="Rollback to running-config" mode="sequence">
+		<ENTRY name="COMMAND" purpose="ptype" ref="/COMMAND"/>
+		<ACTION sym="srp_rollback@sysrepo"/>
+	</ENTRY>
+
 </ENTRY>
 
 </KLISH>