aboutsummaryrefslogtreecommitdiffstats
path: root/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap
diff options
context:
space:
mode:
authorAlexis de Talhouët <adetalhouet89@gmail.com>2019-02-19 10:02:00 -0500
committerAlexis de Talhouët <adetalhouet89@gmail.com>2019-02-20 21:02:16 +0000
commit02bcf30f2ab243ac4396f49a54309c024a727a61 (patch)
tree2dfb81a91d03fbde089287a5d25a1bd011b58c70 /ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap
parent0613ae8f927834f7621011fda3f0cb1b7f8e07ad (diff)
Add support for commit confirmed capability
Change-Id: I3608a6a62469d4b5dfc5fc69f610f9da186156c2 Issue-ID: CCSDK-790 Signed-off-by: Alexis de Talhouët <adetalhouet89@gmail.com>
Diffstat (limited to 'ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap')
-rw-r--r--ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/api/NetconfRpcService.kt22
-rw-r--r--ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImpl.kt18
-rw-r--r--ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/utils/NetconfMessageUtils.kt34
3 files changed, 69 insertions, 5 deletions
diff --git a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/api/NetconfRpcService.kt b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/api/NetconfRpcService.kt
index e2c9bf900..550852165 100644
--- a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/api/NetconfRpcService.kt
+++ b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/api/NetconfRpcService.kt
@@ -67,9 +67,29 @@ interface NetconfRpcService {
/**
* Commit
*
+ * @param confirmed Perform a confirmed <commit> operation. If flag set to true,
+ * then it is expected to have a follow-up <commit> operation to confirm the request
+ * @param confirmTimeout Timeout period for confirmed commit, in seconds.
+ * @param persist Make the confirmed commit survive a session termination, and
+ * set a token on the ongoing confirmed commit.
+ * @param persistId Used to issue a follow-up confirmed commit or a confirming
+ * commit from any session, with the token from the previous <commit> operation.
+ * If unspecified, the confirm timeout defaults to 600 seconds.
* @return Device response
*/
- fun commit(): DeviceResponse
+ fun commit(confirmed: Boolean = false, confirmTimeout: Int = 60, persist: String = "",
+ persistId: String = ""): DeviceResponse
+
+ /**
+ * Cancels an ongoing confirmed commit. If the <persist-id> parameter is not given,
+ * the <cancel-commit> operation MUST be issued on the same session that issued
+ * the confirmed commit.
+ *
+ * @param persistId Cancels a persistent confirmed commit. The value MUST be equal
+ * to the value given in the <persist> parameter to the <commit> operation.
+ * If the value does not match, the operation fails with an "invalid-value" error.
+ */
+ fun cancelCommit(persistId: String = ""): DeviceResponse
/**
* Unlock
diff --git a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImpl.kt b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImpl.kt
index be8355576..8d8e0ea46 100644
--- a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImpl.kt
+++ b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImpl.kt
@@ -101,12 +101,12 @@ class NetconfRpcServiceImpl(private var deviceInfo: DeviceInfo) : NetconfRpcServ
return output
}
- override fun commit(): DeviceResponse {
+ override fun commit(confirmed: Boolean, confirmTimeout: Int, persist: String, persistId: String): DeviceResponse {
var output = DeviceResponse()
val messageId = messageIdInteger.getAndIncrement().toString()
log.info("$deviceInfo: commit: messageId($messageId)")
try {
- val messageContent = NetconfMessageUtils.commit(messageId)
+ val messageContent = NetconfMessageUtils.commit(messageId, confirmed, confirmTimeout, persist, persistId)
output = asyncRpc(messageContent, messageId)
} catch (e: Exception) {
output.status = RpcStatus.FAILURE
@@ -115,6 +115,20 @@ class NetconfRpcServiceImpl(private var deviceInfo: DeviceInfo) : NetconfRpcServ
return output
}
+ override fun cancelCommit(persistId: String): DeviceResponse {
+ var output = DeviceResponse()
+ val messageId = messageIdInteger.getAndIncrement().toString()
+ log.info("$deviceInfo: cancelCommit: messageId($messageId)")
+ try {
+ val messageContent = NetconfMessageUtils.cancelCommit(messageId, persistId)
+ output = asyncRpc(messageContent, messageId)
+ } catch (e: Exception) {
+ output.status = RpcStatus.FAILURE
+ output.errorMessage = "$deviceInfo: failed in cancelCommit command $e.message"
+ }
+ return output
+ }
+
override fun discardConfig(): DeviceResponse {
var output = DeviceResponse()
val messageId = messageIdInteger.getAndIncrement().toString()
diff --git a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/utils/NetconfMessageUtils.kt b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/utils/NetconfMessageUtils.kt
index 7e48912d1..4de3860c5 100644
--- a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/utils/NetconfMessageUtils.kt
+++ b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/netconf/executor/utils/NetconfMessageUtils.kt
@@ -115,15 +115,45 @@ class NetconfMessageUtils {
return doWrappedRpc(messageId, request.toString())
}
- fun commit(messageId: String): String {
- val request = StringBuilder()
+ fun commit(messageId: String, confirmed: Boolean, confirmTimeout: Int, persist: String,
+ persistId: String): String {
+
+ if (!persist.isEmpty() && !persistId.isEmpty()) {
+ throw NetconfException("Can't proceed <commit> with both persist($persist) and " +
+ "persistId($persistId) specified. Only one should be specified.")
+ }
+ if (confirmed && !persistId.isEmpty()) {
+ throw NetconfException("Can't proceed <commit> with both confirmed flag and " +
+ "persistId($persistId) specified. Only one should be specified.")
+ }
+ val request = StringBuilder()
request.append("<commit>").append(NEW_LINE)
+ if (confirmed) {
+ request.append("<confirmed/>")
+ request.append("<confirm-timeout>$confirmTimeout</confirm-timeout>")
+ if (!persist.isEmpty()) {
+ request.append("<persist>$persist</persist>")
+ }
+ }
+ if (!persistId.isEmpty()) {
+ request.append("<persist-id>$persistId</persist-id>")
+ }
request.append("</commit>").append(NEW_LINE)
return doWrappedRpc(messageId, request.toString())
}
+ fun cancelCommit(messageId: String, persistId: String): String {
+ val request = StringBuilder()
+ request.append("<cancel-commit>").append(NEW_LINE)
+ if (!persistId.isEmpty()) {
+ request.append("<persist-id>$persistId</persist-id>")
+ }
+ request.append("</cancel-commit>").append(NEW_LINE)
+
+ return doWrappedRpc(messageId, request.toString())
+ }
fun unlock(messageId: String, configType: String): String {
val request = StringBuilder()