[ONOS-6410] flexible configuration datastore specifier.
- added completer to netconf-config-get
Change-Id: I7cc88637bd51d9f4bea7d906346ffacfbd8706a6
diff --git a/protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/impl/NetconfSessionImplTest.java b/protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/impl/NetconfSessionImplTest.java
index 846642c..0602c90 100644
--- a/protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/impl/NetconfSessionImplTest.java
+++ b/protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/impl/NetconfSessionImplTest.java
@@ -21,8 +21,8 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assert.assertFalse;
-import static org.onosproject.netconf.TargetConfig.RUNNING;
-import static org.onosproject.netconf.TargetConfig.CANDIDATE;
+import static org.onosproject.netconf.DatastoreId.CANDIDATE;
+import static org.onosproject.netconf.DatastoreId.RUNNING;
import java.io.File;
import java.util.Arrays;
@@ -46,10 +46,10 @@
import org.junit.Test;
import org.onlab.junit.TestTools;
import org.onlab.packet.Ip4Address;
-import org.onosproject.netconf.TargetConfig;
import org.onosproject.netconf.NetconfDeviceInfo;
import org.onosproject.netconf.NetconfException;
import org.onosproject.netconf.NetconfSession;
+import org.onosproject.netconf.DatastoreId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -163,7 +163,7 @@
assertNotNull("Incorrect sessionId", session1.getSessionId());
try {
assertTrue("NETCONF edit-config command failed",
- session1.editConfig(TargetConfig.RUNNING.toString(),
+ session1.editConfig(DatastoreId.RUNNING,
null, SAMPLE_REQUEST));
} catch (NetconfException e) {
e.printStackTrace();
@@ -192,7 +192,7 @@
assertNotNull("Incorrect sessionId", session1.getSessionId());
try {
assertFalse("NETCONF delete-config command failed",
- session1.deleteConfig(TargetConfig.RUNNING));
+ session1.deleteConfig(DatastoreId.RUNNING));
} catch (NetconfException e) {
e.printStackTrace();
fail("NETCONF delete-config test failed: " + e.getMessage());
@@ -206,16 +206,49 @@
assertNotNull("Incorrect sessionId", session1.getSessionId());
try {
assertTrue("NETCONF copy-config command failed",
- session1.copyConfig(TargetConfig.RUNNING.toString(),
- "candidate"));
+ session1.copyConfig(DatastoreId.RUNNING,
+ DatastoreId.CANDIDATE));
} catch (NetconfException e) {
e.printStackTrace();
- fail("NETCONF edit-config test failed: " + e.getMessage());
+ fail("NETCONF copy-config test failed: " + e.getMessage());
}
log.info("Finishing copy-config async");
}
@Test
+ public void testCopyConfigXml() {
+ log.info("Starting copy-config XML async");
+ assertNotNull("Incorrect sessionId", session1.getSessionId());
+ try {
+ assertTrue("NETCONF copy-config command failed",
+ session1.copyConfig(DatastoreId.RUNNING,
+ "<configuration><device-specific/></configuration>"));
+ } catch (NetconfException e) {
+ e.printStackTrace();
+ fail("NETCONF copy-config test failed: " + e.getMessage());
+ }
+ log.info("Finishing copy-config XML async");
+ }
+
+ // remove test when ready to dump bare XML String API.
+ @Test
+ public void testCopyConfigBareXml() {
+ log.info("Starting copy-config bare XML async");
+ assertNotNull("Incorrect sessionId", session1.getSessionId());
+ try {
+ assertTrue("NETCONF copy-config command failed",
+ session1.copyConfig(DatastoreId.RUNNING,
+ "<config>"
+ + "<configuration><device-specific/></configuration>"
+ + "</config>"));
+ } catch (NetconfException e) {
+ e.printStackTrace();
+ fail("NETCONF copy-config test failed: " + e.getMessage());
+ }
+ log.info("Finishing copy-config bare XML async");
+ }
+
+ @Test
public void testGetConfigRequest() {
log.info("Starting get-config async");
assertNotNull("Incorrect sessionId", session1.getSessionId());
@@ -392,9 +425,9 @@
Pattern.compile("(<\\?xml).*"
+ "(<rpc message-id=\")[0-9]*(\") *(xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">)\\R?"
+ "(<edit-config>)\\R?"
- + "(<target>\\R?((<" + TargetConfig.CANDIDATE.toString() + "/>)|"
- + "(<" + TargetConfig.RUNNING.toString() + "/>)|"
- + "(<" + TargetConfig.STARTUP.toString() + "/>))\\R?</target>)\\R?"
+ + "(<target>\\R?((<" + DatastoreId.CANDIDATE.toString() + "/>)|"
+ + "(<" + DatastoreId.RUNNING.toString() + "/>)|"
+ + "(<" + DatastoreId.STARTUP.toString() + "/>))\\R?</target>)\\R?"
+ "(<config xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">)\\R?"
+ ".*"
+ "(</config>)\\R?(</edit-config>)\\R?(</rpc>)\\R?", Pattern.DOTALL);
@@ -405,9 +438,9 @@
+ "(<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" "
+ "message-id=\")[0-9]*(\">)\\R?"
+ "(<lock>)\\R?"
- + "(<target>\\R?((<" + TargetConfig.CANDIDATE.toString() + "/>)|"
- + "(<" + TargetConfig.RUNNING.toString() + "/>)|"
- + "(<" + TargetConfig.STARTUP.toString() + "/>))\\R?</target>)\\R?"
+ + "(<target>\\R?((<" + DatastoreId.CANDIDATE.toString() + "/>)|"
+ + "(<" + DatastoreId.RUNNING.toString() + "/>)|"
+ + "(<" + DatastoreId.STARTUP.toString() + "/>))\\R?</target>)\\R?"
+ "(</lock>)\\R?(</rpc>)\\R?", Pattern.DOTALL);
public static final Pattern UNLOCK_REQ_PATTERN =
@@ -415,32 +448,39 @@
+ "(<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" "
+ "message-id=\")[0-9]*(\">)\\R?"
+ "(<unlock>)\\R?"
- + "(<target>\\R?((<" + TargetConfig.CANDIDATE.toString() + "/>)|"
- + "(<" + TargetConfig.RUNNING.toString() + "/>)|"
- + "(<" + TargetConfig.STARTUP.toString() + "/>))\\R?</target>)\\R?"
+ + "(<target>\\R?((<" + DatastoreId.CANDIDATE.toString() + "/>)|"
+ + "(<" + DatastoreId.RUNNING.toString() + "/>)|"
+ + "(<" + DatastoreId.STARTUP.toString() + "/>))\\R?</target>)\\R?"
+ "(</unlock>)\\R?(</rpc>)\\R?", Pattern.DOTALL);
public static final Pattern COPY_CONFIG_REQ_PATTERN =
Pattern.compile("(<\\?xml).*"
+ "(<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" message-id=\")[0-9]*(\">)\\R?"
+ "(<copy-config>)\\R?"
- + "(<target>\\R?((<" + TargetConfig.CANDIDATE.toString() + "/>)|"
- + "(<" + TargetConfig.RUNNING.toString() + "/>)|"
- + "(<" + TargetConfig.STARTUP.toString() + "/>))\\R?</target>)\\R?"
- + "(<source>)\\R?(<config>)(("
- + TargetConfig.CANDIDATE.toString() + ")|("
- + TargetConfig.RUNNING.toString() + ")|("
- + TargetConfig.STARTUP.toString()
- + "))(</config>)\\R?(</source>)\\R?"
- + "(</copy-config>)\\R?(</rpc>)\\R?", Pattern.DOTALL);
+ + "(<target>\\R?"
+ + "("
+ + "(<" + DatastoreId.CANDIDATE.toString() + "/>)|"
+ + "(<" + DatastoreId.RUNNING.toString() + "/>)|"
+ + "(<" + DatastoreId.STARTUP.toString() + "/>)"
+ + ")\\R?"
+ + "</target>)\\R?"
+ + "(<source>)\\R?"
+ + "("
+ + "(<config>)(.*)(</config>)|"
+ + "(<" + DatastoreId.CANDIDATE.toString() + "/>)|"
+ + "(<" + DatastoreId.RUNNING.toString() + "/>)|"
+ + "(<" + DatastoreId.STARTUP.toString() + "/>)"
+ + ")\\R?"
+ + "(</source>)\\R?"
+ + "(</copy-config>)\\R?(</rpc>)\\R?", Pattern.DOTALL);
public static final Pattern GET_CONFIG_REQ_PATTERN =
Pattern.compile("(<\\?xml).*"
+ "(<rpc message-id=\")[0-9]*(\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">)\\R?"
+ "(<get-config>)\\R?" + "(<source>)\\R?((<"
- + TargetConfig.CANDIDATE.toString()
- + "/>)|(<" + TargetConfig.RUNNING.toString()
- + "/>)|(<" + TargetConfig.STARTUP.toString()
+ + DatastoreId.CANDIDATE.toString()
+ + "/>)|(<" + DatastoreId.RUNNING.toString()
+ + "/>)|(<" + DatastoreId.STARTUP.toString()
+ "/>))\\R?(</source>)\\R?"
+ "(<filter type=\"subtree\">).*(</filter>)\\R?"
+ "(</get-config>)\\R?(</rpc>)\\R?", Pattern.DOTALL);
@@ -460,10 +500,10 @@
public class NCCopyConfigCallable implements Callable<Boolean> {
private NetconfSession session;
- private TargetConfig target;
+ private DatastoreId target;
private String source;
- public NCCopyConfigCallable(NetconfSession session, TargetConfig target, String source) {
+ public NCCopyConfigCallable(NetconfSession session, DatastoreId target, String source) {
this.session = session;
this.target = target;
this.source = source;