From 5cceec6b1a0ebde893a738ccd9759519bf92bbd5 Mon Sep 17 00:00:00 2001 From: Rene_Robert Date: Mon, 4 Nov 2019 09:03:23 +0100 Subject: add parameter resolution (CDS) in User-Guide Issue-ID: DOC-569 Signed-off-by: Rene_Robert Change-Id: I93d7f9666f21dcc961ba9e7f961ebf5554208228 --- .../CBA_freeradius/Scripts/kotlin/kotlin.kt | 82 ++++++++++++++++++++++ .../CBA_freeradius/Scripts/python/ConfigDeploy.py | 39 ++++++++++ 2 files changed, 121 insertions(+) create mode 100755 docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/kotlin/kotlin.kt create mode 100755 docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts/python/ConfigDeploy.py (limited to 'docs/guides/onap-user/design/parameter_resolution/freeradius_example/after_enrichment/CBA_freeradius/Scripts') 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 -- cgit 1.2.3-korg