summaryrefslogtreecommitdiffstats
path: root/docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts')
-rwxr-xr-xdocs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/kotlin/kotlin.kt82
-rwxr-xr-xdocs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/python/ConfigDeploy.py39
2 files changed, 121 insertions, 0 deletions
diff --git a/docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/kotlin/kotlin.kt b/docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/kotlin/kotlin.kt
new file mode 100755
index 000000000..e0d36ca17
--- /dev/null
+++ b/docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/kotlin/kotlin.kt
@@ -0,0 +1,82 @@
+package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts
+
+import com.fasterxml.jackson.databind.node.ObjectNode
+import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractComponentFunction
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractScriptComponentFunction
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentFunctionScriptingService
+
+import java.io.ByteArrayInputStream
+import java.io.IOException
+import java.io.InputStream
+import org.apache.sshd.client.SshClient
+import org.apache.sshd.client.channel.ClientChannel
+import org.apache.sshd.client.future.AuthFuture
+import org.apache.sshd.client.future.ConnectFuture
+import org.apache.sshd.client.session.ClientSession
+import org.apache.sshd.common.future.SshFutureListener
+import org.apache.sshd.common.util.io.NoCloseInputStream
+import org.apache.sshd.common.util.io.NoCloseOutputStream
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.storedContentFromResolvedArtifactNB
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException
+import org.onap.ccsdk.cds.controllerblueprints.core.asListOfString
+import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
+import org.slf4j.LoggerFactory
+import java.io.ByteArrayOutputStream
+import java.util.*
+
+open class SampleScriptComponent : AbstractScriptComponentFunction() {
+
+ private val log = LoggerFactory.getLogger(SampleScriptComponent::class.java)!!
+
+ override suspend fun processNB(executionRequest: ExecutionServiceInput) {
+ log.info("Hello Kotlin!")
+ val resolution_key = getDynamicProperties("resolution-key").asText()
+ log.info("resolution_key: $resolution_key")
+ val payload = storedContentFromResolvedArtifactNB(resolution_key, "userconfig")
+ val payloadObject = JacksonUtils.jsonNode(payload) as ObjectNode
+ val freeradius_ip: String = payloadObject.get("freeradius_ip").asText()
+ log.info("freeradius_ip: $freeradius_ip")
+ val user_config: String = payloadObject.get("user_config").asText()
+ log.info("user_config: $user_config")
+ log.info("Waiting 2 minutes for VM to initialize")
+ Thread.sleep(120000)
+ val client = SshClient.setUpDefaultClient()
+ client.start()
+ log.info("SSH Client Service started successfully")
+ val session = client.connect("cloud", freeradius_ip, 22).verify(3000).session
+ session.addPasswordIdentity("password")
+ log.info("SSH Client authenticating...")
+ val authFuture = session.auth().verify(3000)
+ log.info("SSH client session($session) created")
+ log.info("SSH Authenticated: $authFuture.isSuccess()")
+ val command="echo '$user_config' | sudo tee -a /etc/freeradius/users"
+ log.info("Executing host($session) command($command)")
+ val channel = session.createExecChannel(command)
+ val outputStream = ByteArrayOutputStream()
+ channel!!.out = outputStream
+ channel!!.err = outputStream
+ channel!!.open().await()
+ //val waitMask = channel!!.waitFor(Collections.unmodifiableSet(EnumSet.of(ClientChannelEvent.CLOSED)), 3000)
+ //if (waitMask.contains(ClientChannelEvent.TIMEOUT)) {
+ // throw BluePrintProcessorException("Failed to retrieve command result in time: $command")
+ //}
+ Thread.sleep(3000)
+ val exitStatus = channel!!.exitStatus
+ //ClientChannel. .validateCommandExitStatusCode(command, exitStatus!!)
+ if (channel != null) {
+ channel!!.close()
+ }
+ if (client.isOpen) {
+ client.stop()
+ }
+ log.info(outputStream.toString())
+ log.info("SSH Client Service stopped successfully")
+
+
+ }
+
+
+ override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
+ }
+} \ No newline at end of file
diff --git a/docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/python/ConfigDeploy.py b/docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/python/ConfigDeploy.py
new file mode 100755
index 000000000..2b88e8271
--- /dev/null
+++ b/docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/python/ConfigDeploy.py
@@ -0,0 +1,39 @@
+# Copyright (c) 2019 Bell Canada.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import netconf_constant
+from common import ResolutionHelper
+from time import sleep
+from netconfclient import NetconfClient
+from org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor import \
+ NetconfComponentFunction
+
+
+class ConfigDeploy(NetconfComponentFunction):
+
+ def process(self, execution_request):
+ log = globals()[netconf_constant.SERVICE_LOG]
+ print(globals())
+ rr = ResolutionHelper(self)
+
+ # Get meshed template from DB
+ resolution_key = self.getDynamicProperties("resolution-key").asText()
+ payload = rr.retrieve_resolved_template_from_database(resolution_key, "userconfig")
+ print(payload)
+
+
+ def recover(self, runtime_exception, execution_request):
+ log.error("Exception in the script {}", runtime_exception)
+ print self.addError(runtime_exception.cause.message)
+ return None \ No newline at end of file