lifecycle_state: 'Incubation'
project_category: ''
project_lead: &onap_demo_ptl
- name: 'Michal Jagiello'
- email: 'Michal.Jagiello@t-mobile.pl'
+ name: 'Marek Szwalkiewicz'
+ email: 'marek.szwalkiewicz@external.t-mobile.pl'
company: 'T-Mobile'
- id: 'MichalJagielloTMPL'
+ id: 'mszwalkiewicz'
timezone: 'Europe/Warsaw'
primary_contact: *onap_demo_ptl
issue_tracking:
server: 'n/a'
channel: 'n/a'
repeats: 'weekly'
- time: '14:00 UTC'
+ time: '13:00 UTC'
repositories:
- 'demo'
committers:
name: 'Morgan Richomme, Bartek Grzybowski, Illia Halych, Alexander Mazuruk,
Maciej Lisowski, Marcin Sebastian Krasowski'
link: 'https://lists.onap.org/g/onap-tsc/message/9017'
+ - type: 'Addition'
+ name: 'Marek Szwalkiewicz'
+ link: 'https://lists.onap.org/g/onap-tsc/message/9275'
requires = pip >= 8
[testenv]
-basepython = python3
-whitelist_externals =
+basepython = python3.8
+allowlist_externals =
git
+ /bin/sh
+ sh
+ /bin/bash
bash
deps =
coala-bears
--- /dev/null
+#!/bin/sh
+
+# ============LICENSE_START=======================================================
+# Copyright (C) 2022 Deutche Telekom AG
+# ================================================================================
+# 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.
+#
+# ============LICENSE_END=========================================================
+
+REQ_ID=`shuf -i 1-1000000 -n 1`
+SUB_REQ_ID=$REQ_ID"-"`shuf -i 1-1000 -n 1`
+ACTION=$1
+
+curl --location --request POST 'http://localhost:8081/api/v1/execution-service/process' \
+--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+--header 'Content-Type: application/json' \
+--data-raw '{
+ "commonHeader": {
+ "originatorId": "onap-me-cm-adapter",
+ "requestId": "'$REQ_ID'",
+ "subRequestId": "'$SUB_REQ_ID'"
+ },
+ "actionIdentifiers": {
+ "blueprintName": "APACHE",
+ "blueprintVersion": "1.0.0",
+ "actionName": "'config-upgrade-$ACTION'",
+ "mode": "sync"
+ },
+ "payload": {
+ "'config-upgrade-$ACTION-request'": {
+ "resolution-key": "VF_apache_k8s_demo_CNF",
+ "'config-upgrade-$ACTION-properties'": {
+ "service-instance-id": "5e6c49cc-e569-4eb9-bc9e-f7ce0ffb798f",
+ "service-model-uuid": "0997c40e-63b7-419d-a13b-6a5ce97334bb",
+ "vnf-id": "935fe87e-9bbd-4828-add2-d90196f5f382",
+ "vnf-name": "Instance_apache-3_0",
+ "vnf-customization-uuid": "6b6ff775-a170-4ce4-bcd0-85645d738390"
+ }
+ }
+ }
+}' | jq '.payload | .["'config-upgrade-$ACTION-response'"]'
+
}
}
},
+ "config-upgrade-assign": {
+ "steps": {
+ "config-setup": {
+ "description": "Gather necessary input for profile upload",
+ "target": "config-setup-process",
+ "activities": [
+ {
+ "call_operation": "ResourceResolutionComponent.process"
+ }
+ ],
+ "on_success": [
+ "profile-upload"
+ ]
+ },
+ "profile-upload": {
+ "description": "Generate and upload K8s Profile before upgrade",
+ "target": "k8s-profile-upgrade-upload",
+ "activities": [
+ {
+ "call_operation": "ComponentScriptExecutor.process"
+ }
+ ]
+ }
+ },
+ "inputs": {
+ "resolution-key": {
+ "required": true,
+ "type": "string"
+ },
+ "store-result": {
+ "required": true,
+ "type": "boolean"
+ },
+ "config-upgrade-assign-properties": {
+ "description": "Dynamic PropertyDefinition for workflow(config-upgrade-assign).",
+ "required": true,
+ "type": "dt-config-upgrade-assign-properties"
+ }
+ }
+ },
"config-deploy": {
"steps": {
"config-setup": {
}
}
},
+ "config-upgrade-deploy": {
+ "steps": {
+ "config-setup": {
+ "description": "Gather necessary input for profile upload",
+ "target": "config-setup-process",
+ "activities": [
+ {
+ "call_operation": "ResourceResolutionComponent.process"
+ }
+ ],
+ "on_success": [
+ "status-verification-script"
+ ]
+ },
+ "status-verification-script": {
+ "description": "Simple status verification script",
+ "target": "simple-status-check",
+ "activities": [
+ {
+ "call_operation": "ComponentScriptExecutor.process"
+ }
+ ]
+ }
+ },
+ "inputs": {
+ "resolution-key": {
+ "required": true,
+ "type": "string"
+ },
+ "store-result": {
+ "required": true,
+ "type": "boolean"
+ },
+ "config-upgrade-deploy-properties": {
+ "description": "Dynamic PropertyDefinition for workflow(config-upgrade-deploy).",
+ "required": true,
+ "type": "dt-config-upgrade-deploy-properties"
+ }
+ }
+ },
"scale-out": {
"steps": {
"config-setup": {
"status-verification-script"
],
"on_failure": [
- "handle_error"
+ "handle-error"
]
},
"status-verification-script": {
"collect-results"
]
},
- "handle_error": {
+ "handle-error": {
"description": "Simple error verification script",
- "target": "simple-error-check",
+ "target": "simple-script",
"activities": [
{
"call_operation": "ComponentScriptExecutor.process"
}
}
},
+ "k8s-profile-upgrade-upload": {
+ "type": "component-k8s-profile-upload",
+ "interfaces": {
+ "K8sProfileUploadComponent": {
+ "operations": {
+ "process": {
+ "inputs": {
+ "artifact-prefix-names": [
+ "helm_apache"
+ ],
+ "resource-assignment-map": {
+ "get_attribute": [
+ "config-setup-process",
+ "",
+ "assignment-map",
+ "config-deploy",
+ "config-deploy-setup"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "artifacts": {
+ "cnf-cds-base-profile": {
+ "type": "artifact-k8sprofile-content",
+ "file": "Templates/k8s-profiles/cnf-cds-base-profile.tar.gz"
+ },
+ "node-port-profile": {
+ "type": "artifact-k8sprofile-content",
+ "file": "Templates/k8s-profiles/node-port-profile.tar.gz"
+ }
+ }
+ },
"k8s-config-template": {
"type": "component-k8s-config-template",
"interfaces": {
}
}
},
- "simple-error-check": {
+ "simple-script": {
"type": "component-script-executor",
"interfaces": {
"ComponentScriptExecutor": {
"process": {
"inputs": {
"script-type": "kotlin",
- "script-class-reference": "org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts.SimpleErrorCheck",
- "instance-dependencies": [
- "bluePrintPropertiesService"
- ],
+ "script-class-reference": "org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts.SimpleScript",
"dynamic-properties": "*simple-status-properties"
}
}
},
"derived_from": "tosca.datatypes.Dynamic"
},
+ "dt-config-upgrade-assign-properties": {
+ "description": "Dynamic DataType definition for workflow(config-upgrade-assign).",
+ "version": "1.0.0",
+ "properties": {
+ "service-instance-id": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ },
+ "service-model-uuid": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ },
+ "vnf-id": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ },
+ "vnf-name": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ },
+ "vnf-customization-uuid": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ }
+ },
+ "derived_from": "tosca.datatypes.Dynamic"
+ },
"dt-config-deploy-properties": {
"description": "Dynamic DataType definition for workflow(config-deploy).",
"version": "1.0.0",
},
"derived_from": "tosca.datatypes.Dynamic"
},
+ "dt-config-upgrade-deploy-properties": {
+ "description": "Dynamic DataType definition for workflow(config-upgrade-deploy).",
+ "version": "1.0.0",
+ "properties": {
+ "service-instance-id": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ },
+ "service-model-uuid": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ },
+ "vnf-id": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ },
+ "vnf-name": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ },
+ "vnf-customization-uuid": {
+ "description": "",
+ "required": false,
+ "type": "string"
+ }
+ },
+ "derived_from": "tosca.datatypes.Dynamic"
+ },
"dt-health-check-properties": {
"description": "Dynamic DataType definition for workflow(health-check).",
"version": "1.0.0",
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.template.K8sConfigTemplateComponent
import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.template.K8sConfigValueComponent
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.profile.K8sProfileUploadComponent
import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.processor.ResourceAssignmentProcessor
import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.utils.ResourceAssignmentUtils
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException
val modelInfo = modelTopology["onap-model-information"]
val moduleData: ObjectNode = objectMapper.createObjectNode()
result.put(label, moduleData)
- moduleData.put(K8sConfigTemplateComponent.INPUT_K8S_DEFINITION_NAME, modelInfo["model-invariant-uuid"].asText())
- moduleData.put(K8sConfigTemplateComponent.INPUT_K8S_DEFINITION_VERSION, modelInfo["model-customization-uuid"].asText())
+ val profileName: String? = getParamValueByName(moduleParameters, K8sProfileUploadComponent.INPUT_K8S_PROFILE_NAME)
+ val profileSource: String? = getParamValueByName(moduleParameters, K8sProfileUploadComponent.INPUT_K8S_PROFILE_SOURCE)
+ val profileNamespace: String? = getParamValueByName(moduleParameters, K8sProfileUploadComponent.INPUT_K8S_PROFILE_NAMESPACE)
+ val profileK8sVersion: String? = getParamValueByName(moduleParameters, K8sProfileUploadComponent.INPUT_K8S_PROFILE_K8S_VERSION)
val templateName: String? = getParamValueByName(moduleParameters, K8sConfigTemplateComponent.INPUT_K8S_TEMPLATE_NAME)
val templateSource: String? = getParamValueByName(moduleParameters, K8sConfigTemplateComponent.INPUT_K8S_TEMPLATE_SOURCE)
val configValueSource: String? = getParamValueByName(moduleParameters, K8sConfigValueComponent.INPUT_K8S_CONFIG_VALUE_SOURCE)
val configName: String? = getParamValueByName(moduleParameters, K8sConfigValueComponent.INPUT_K8S_RB_CONFIG_NAME)
+ if (profileName != null)
+ moduleData.put(K8sProfileUploadComponent.INPUT_K8S_PROFILE_NAME, profileName)
+ if (profileSource != null)
+ moduleData.put(K8sProfileUploadComponent.INPUT_K8S_PROFILE_SOURCE, profileSource)
+ if (profileNamespace != null)
+ moduleData.put(K8sProfileUploadComponent.INPUT_K8S_PROFILE_NAMESPACE, profileNamespace)
+ if (profileK8sVersion != null)
+ moduleData.put(K8sProfileUploadComponent.INPUT_K8S_PROFILE_K8S_VERSION, profileK8sVersion)
if (templateName != null)
moduleData.put(K8sConfigTemplateComponent.INPUT_K8S_TEMPLATE_NAME, templateName)
if (templateSource != null)
for (aaiModule in modulesAai) {
if (aaiModule["vf-module-id"].asText() == module["vf-module-id"].asText() && aaiModule["heat-stack-id"] != null) {
moduleData.put(K8sConfigValueComponent.INPUT_K8S_INSTANCE_ID, aaiModule["heat-stack-id"].asText())
+ moduleData.put(K8sConfigTemplateComponent.INPUT_K8S_DEFINITION_NAME, aaiModule["model-invariant-id"].asText())
+ moduleData.put(K8sConfigTemplateComponent.INPUT_K8S_DEFINITION_VERSION, aaiModule["model-customization-id"].asText())
break
}
}
import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractScriptComponentFunction
import org.slf4j.LoggerFactory
-open class SimpleErrorCheck : AbstractScriptComponentFunction() {
+open class SimpleScript : AbstractScriptComponentFunction() {
- private val log = LoggerFactory.getLogger(SimpleErrorCheck::class.java)!!
+ private val log = LoggerFactory.getLogger(SimpleScript::class.java)!!
override fun getName(): String {
- return "SimpleErrorCheck"
+ return "SimpleScript"
}
override suspend fun processNB(executionRequest: ExecutionServiceInput) {
- log.info("SIMPLE ERROR CHECK - START")
+ log.info("STEP ${executionRequest.stepData?.name} - START")
- log.info("SIMPLE ERROR CHECK - END")
+ log.info("STEP ${executionRequest.stepData?.name} - STOP")
}
override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
}
override suspend fun processNB(executionRequest: ExecutionServiceInput) {
- log.info("SIMPLE STATUS CHECK - START")
+ log.info("STEP ${executionRequest.stepData?.name} - START")
val configValueSetup: ObjectNode = getDynamicProperties("config-deploy-setup") as ObjectNode
var checkCount: Int = getDynamicProperties("status-check-max-count").asInt()
checkCount = 0
}
- log.info("SIMPLE STATUS CHECK - END")
+ log.info("STEP ${executionRequest.stepData?.name} - STOP")
}
override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
"param-name": "k8s-rb-profile-name",
"param-value": "${k8s-rb-profile-name}"
},
+ {
+ "param-name": "k8s-rb-profile-source",
+ "param-value": "${k8s-rb-profile-source}"
+ },
+ {
+ "param-name": "k8s-rb-profile-namespace",
+ "param-value": "${k8s-rb-profile-namespace}"
+ },
+ {
+ "param-name": "k8s-rb-profile-k8s-version",
+ "param-value": "${k8s-rb-profile-k8s-version}"
+ },
{
"param-name": "k8s-rb-config-template-name",
"param-value": "${k8s-rb-config-template-name}"
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
rate 10
node ip4-input
size 64-64
- no-recycle
data {
UDP: 192.168.10.31 -> 192.168.20.32
UDP: 15320 -> 8080
ip addr flush dev eth2
ifconfig eth1 up
ifconfig eth2 up
-vppctl tap connect tap111 hwaddr $HWADDR1
-vppctl tap connect tap222 hwaddr $HWADDR2
-vppctl set int ip address tap-0 $IPADDR1"/"$IPADDR1_CIDR
-vppctl set int ip address tap-1 $IPADDR2"/"$IPADDR2_CIDR
-vppctl set int state tap-0 up
-vppctl set int state tap-1 up
+vppctl create tap hw-addr $HWADDR1
+vppctl create tap hw-addr $HWADDR2
+vppctl set int ip address tap0 $IPADDR1"/"$IPADDR1_CIDR
+vppctl set int ip address tap1 $IPADDR2"/"$IPADDR2_CIDR
+vppctl set int state tap0 up
+vppctl set int state tap1 up
brctl addbr br0
-brctl addif br0 tap111
+brctl addif br0 tap0
brctl addif br0 eth1
brctl addbr br1
-brctl addif br1 tap222
+brctl addif br1 tap1
brctl addif br1 eth2
ifconfig br0 up
ifconfig br1 up
mkdir -p /var/lib/honeycomb/persist/{config,context}/
echo "" > /var/lib/honeycomb/persist/context/data.json
echo "" > /var/lib/honeycomb/persist/config/data.json
-/opt/honeycomb/sample-distribution-$VERSION/honeycomb &>/dev/null &disown
+/opt/honeycomb/honeycomb &>/dev/null &disown
sleep 1
# Start VES client
cd /opt/VES/evel/evel-library/code/VESreporting/
-./go-client.sh &>/dev/null &disown
+./go-client.sh &>/dev/null &disown
\ No newline at end of file
ifconfig eth1 hw ether $FAKE_HWADDR1
ip addr flush dev eth1
ifconfig eth1 up
-vppctl tap connect tap111 hwaddr $HWADDR1
-vppctl set int ip address tap-0 $IPADDR1"/"$IPADDR1_CIDR
-vppctl set int state tap-0 up
+vppctl create tap hw-addr $HWADDR1
+vppctl set int ip address tap0 $IPADDR1"/"$IPADDR1_CIDR
+vppctl set int state tap0 up
+vppctl loop create
brctl addbr br0
-brctl addif br0 tap111
+brctl addif br0 tap0
brctl addif br0 eth1
ifconfig br0 up
vppctl ip route add $PROTECTED_NET_CIDR via $FW_IPADDR
vppctl exec /opt/pg_streams/stream_fw_udp10
sleep 1
+vppctl packet-generator enable
+vppctl set int unnumbered pg0 use tap0
+vppctl set int state pg0 up
+
# Start HoneyComb
VERSION=$(cat /opt/config/demo_artifacts_version.txt)
mkdir -p /var/lib/honeycomb/persist/{config,context}/
echo "" > /var/lib/honeycomb/persist/context/data.json
echo "" > /var/lib/honeycomb/persist/config/data.json
-/opt/honeycomb/sample-distribution-$VERSION/honeycomb &>/dev/null &disown
+/opt/honeycomb/honeycomb &>/dev/null &disown
sleep 20
# Enable traffic flows
cd /opt
chmod +x run_traffic_fw_demo.sh
-./run_traffic_fw_demo.sh &>/dev/null &disown
+./run_traffic_fw_demo.sh &>/dev/null &disown
\ No newline at end of file