Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

titlework in progress

...

Code Block
languagebash
themeMidnight
titleSO Custom Workflow Configuration
linenumberstrue
~/oom/kubernetes# kubectl edit cm dev-so-so-bpmn-infra-app-configmap

## replace mso"workflow:\n   ...
    CreateGenericVNFV1:\n"
## with "workflow:\n    oofcustom:\n          auth: test:testpwdBBS_E2E_Service:\n           callbackEndpoint: http://so-bpmn-infra.onap:8081/mso/WorkflowMessage
    sdnc:\n     endpoint: https://oof-osdf.onap:8698/api/oof/v1/placement          timeoutneed: PT30Mtrue\n        workflow:
+         custom:
+           BBS_E2E_Service:
+             sdnc:
+               need: true
         CreateGenericVNFV1:
           aai:
             volume-group:
               uri: /aai/v6/cloud-infrastructure/volume-groups/volume-group
         default:
           aai:
 ...

## Restart the pod
~/oom/kubernetes# kubectl delete po dev-so-so-bpmn-infra-7556d7f6bc-8fthk

Mapping between resource model and BPMN template: SO : How it works between API and BPMN

Is there a better way to do the mapping below in Frankfurt? API?

As shown below, new entries need to be inserted manually in SO database (mariadb-galera) in order to map a given resource model to a specific BPMN recipe. For instance, the CPE is modeled in SDC as a VF but it is treated as PNF resource by SO by using the handlePNF BPMN recipe. Those entries need to be inserted in catalogdb database > vnf_recipe table.

IMPORTANT: make sure vnf_recipe.NF_ROLE matches vnf_resource.MODEL_NAME, and vnf_recipe.VERSION_STR matches vnf_resource.MODEL_VERSION.

Code Block
languagebash
themeMidnight
root@onap-rancher-daily:/home/ubuntu# kubectl exec -ti dev-mariadb-galera-mariadb-galera-0 sh
sh-4.2$ mysql -u root -p
MariaDB [(none)]> use catalogdb;
MariaDB [catalogdb]> INSERT INTO vnf_recipe (NF_ROLE, ACTION, SERVICE_TYPE, VERSION_STR, DESCRIPTION, ORCHESTRATION_URI, VNF_PARAM_XSD, RECIPE_TIMEOUT) 
VALUES 
	("InternetProfile", "createInstance", "NF", "1.0", "create InternetProfile", "/mso/async/services/CreateSDNCNetworkResource", '{"operationType":"AccessConnectivity"}', 180000),
	("AccessConnectivity", "createInstance", "NF", "1.0", "create AccessConnectivity", "/mso/async/services/CreateSDNCNetworkResource", '{"operationType":"InternetProfile"}', 180000),
	("CPE", "createInstance", "NF", "1.0", "create CPE", "/mso/async/services/HandlePNF", 180000);

MariaDB [catalogdb]> select * from vnf_recipe where NF_ROLE IN ('AccessConnectivity','InternetProfile', 'CPE');
+-------+--------------------+----------------+--------------+-------------CreateGenericVNFV1:\n"

## Restart the pod
~/oom/kubernetes# kubectl delete po dev-so-so-bpmn-infra-7556d7f6bc-8fthk


Info

Beware: The spaces in the code segment above should be exactly as shown, otherwise SO BPMN infra POD will crash upon bring-up.


Mapping between resource model and BPMN template: SO : How it works between API and BPMN

As shown below, new entries need to be inserted manually in SO database (mariadb-galera) in order to map a given resource model to a specific BPMN recipe. For instance, the CPE is modeled in SDC as a VF but it is treated as PNF resource by SO by using the handlePNF BPMN recipe. Those entries need to be inserted in catalogdb database > vnf_recipe table.

IMPORTANT: make sure vnf_recipe.NF_ROLE matches vnf_resource.MODEL_NAME, and vnf_recipe.VERSION_STR matches vnf_resource.MODEL_VERSION.

Code Block
languagebash
themeMidnight
## Fetch mariadb root password
root@onap-rancher-daily:/home/ubuntu# kubectl get secrets/dev-mariadb-galera-db-root-password --template={{.data.password}} | base64 -d

root@onap-rancher-daily:/home/ubuntu# kubectl exec -ti dev-mariadb-galera-0 sh
sh-4.2$ mysql -u root -p
MariaDB [(none)]> use catalogdb;
MariaDB [catalogdb]> INSERT INTO vnf_recipe (NF_ROLE, ACTION, SERVICE_TYPE, VERSION_STR, DESCRIPTION, ORCHESTRATION_URI, VNF_PARAM_XSD, RECIPE_TIMEOUT) 
VALUES 
	("InternetProfile", "createInstance", "NF", "1.0", "create InternetProfile", "/mso/async/services/CreateSDNCNetworkResource", '{"operationType":"InternetProfile"}', 180000),
	("AccessConnectivity", "createInstance", "NF", "1.0", "create AccessConnectivity", "/mso/async/services/CreateSDNCNetworkResource", '{"operationType":"AccessConnectivity"}', 180000),
	("CPE", "createInstance", "NF", "1.0", "create CPE", "/mso/async/services/HandlePNF", NULL, 180000);

MariaDB [catalogdb]> select * from vnf_recipe where NF_ROLE IN ('AccessConnectivity','InternetProfile', 'CPE');
+-------+--------------------+----------------+--------------+-------------+---------------------------+---------------------------+-----------------------------------------------+----------------------------------------+----------------+---------------------+--------------+
| id    | NF_ROLE            | ACTION         | SERVICE_TYPE | VERSION_STR | DESCRIPTION               | ORCHESTRATION_URI                             | VNF_PARAM_XSD                          | RECIPE_TIMEOUT | CREATION_TIMESTAMP  | VF_MODULE_ID |
+-------+--------------------+----------------+--------------+-------------+---------------------------+-----------------------------------------------+----------------------------------------+----------------+---------------------+--------------+
| 10048 | InternetProfile    | createInstance | NF           | 1.0         | create InternetProfile    | /mso/async/services/CreateSDNCNetworkResource | {"operationType":"InternetProfile"}    |        1800000 | 2020-01-20 17:43:07 | NULL         |
| 10051 | AccessConnectivity | createInstance | NF           | 1.0         | create AccessConnectivity | /mso/async/services/CreateSDNCNetworkResource | {"operationType":"AccessConnectivity"} |        1800000 | 2020-01-20 17:43:07 | NULL         |
| 10054 | CPE                | createInstance | NF           | 1.0         | create CPE                | /mso/async/services/HandlePNF                 | NULL                                   |        1800000 | 2020-01-20 17:43:07 | NULL         |
+-------+--------------------+----------------+--------------+-------------+---------------------------+-----------------------------------------------+----------------------------------------+----------------+---------------------+--------------+
3 rows in set (0.00 sec)

###
### Modify the MODEL_UUID and MODEL_INVARIANT_UUID for each resource in the SQL query below accordingly to your environment. ###
###
MariaDB [catalogdb]> INSERT INTO vnf_resource (ORCHESTRATION_MODE, DESCRIPTION, MODEL_UUID, MODEL_INVARIANT_UUID, MODEL_VERSION, MODEL_NAME, TOSCA_NODE_TYPE, RESOURCE_CATEGORY, RESOURCE_SUB_CATEGORY) 
VALUES 
	("HEAT", "CPE VF", "3270fb44-8c01-401d-8854-d548be4f88d9", "bb912fb4-51bf-4e64-be71-8d0b7f7d8ecf", "1.0", "CPE", "org.openecomp.resource.vf.Cpe", "Generic", "Infrastructure"),
	("HEAT", "InternetProfile VF", "a48186c1-f75c-40fd-894c-9e8162a60b1a", "a5221da6-7290-4106-b89c-d2cb157b75d1", "1.0", "InternetProfile", "org.openecomp.resource.vf.Internetprofile", "Generic", "Infrastructure"),
	("HEAT", "AccessConnectivity VF", "e3445f73-54a5-4935-9154-405d663205b7", "9e2ed8fa-4c33-4e5b-b27f-25778443eba3", "1.0", "AccessConnectivity", "org.openecomp.resource.vf.Accessconnectivity", "Generic", "Infrastructure");

MariaDB [catalogdb]> SELECT * FROM vnf_resource;
+--------------------+-----------------------+---------------------+--------------------------------------+-----------------+-----------------+--------------------------------------+---------------+--------------------+----------------------------------------------+-----------------------------+-------------------+-----------------------+
| ORCHESTRATION_MODE | DESCRIPTION           | CREATION_TIMESTAMP  | MODEL_UUID                           | AIC_VERSION_MIN | AIC_VERSION_MAX | MODEL_INVARIANT_UUID                 | MODEL_VERSION | MODEL_NAME         | TOSCA_NODE_TYPE                              | HEAT_TEMPLATE_ARTIFACT_UUID | RESOURCE_CATEGORY | RESOURCE_SUB_CATEGORY |
+--------------------+-----------------------+---------------------+--------------------------------------+-----------------+-----------------+--------------------------------------+---------------+--------------------+----------------------------------------------+-----------------------------+-------------------+-----------------------+
| HEAT               | CPE VF                | 2020-01-20 18:02:23 | 3270fb44-8c01-401d-8854-d548be4f88d9 | NULL            | NULL            | bb912fb4-51bf-4e64-be71-8d0b7f7d8ecf | 1.0           | CPE                | org.openecomp.resource.vf.Cpe                | NULL                        | Generic           | Infrastructure        |
| HEAT               | InternetProfile VF    | 2020-01-20 18:02:23 | a48186c1-f75c-40fd-894c-9e8162a60b1a | NULL            | NULL            | a5221da6-7290-4106-b89c-d2cb157b75d1 | 1.0           | InternetProfile    | org.openecomp.resource.vf.Internetprofile    | NULL                        | Generic           | Infrastructure        |
| HEAT               | AccessConnectivity VF | 2020-01-20 18:02:23 | e3445f73-54a5-4935-9154-405d663205b7 | NULL            | NULL            | 9e2ed8fa-4c33-4e5b-b27f-25778443eba3 | 1.0           | AccessConnectivity | org.openecomp.resource.vf.Accessconnectivity | NULL                        | Generic           | Infrastructure        |
+--------------------+-----------------------+---------------------+--------------------------------------+-----------------+-----------------+--------------------------------------+---------------+--------------------+----------------------------------------------+-----------------------------+-------------------+-----------------------+

Adding is_pnf flag to CPE resource input in catalogdb database. Needed in DoCreateResource BPMN for pausing the flow until a PNF is ready

Code Block
languagesql
themeMidnight
INSERT INTO vnf_resource_customization (MODEL_CUSTOMIZATION_UUID, MODEL_INSTANCE_NAME, MULTI_STAGE_DESIGN, VNF_RESOURCE_MODEL_UUID, SERVICE_MODEL_UUID, RESOURCE_INPUT, SKIP_POST_INSTANTIATION_CONFIGURATION)
VALUES
    ( '0cea1cea-e4e4-4c91-be41-675e183a8983', 'CPE 0', 'false', '3270fb44-8c01-401d-8854-d548be4f88d9', '8b0aaed8-911a-4a8f-b09b-e614dee38258', '{\\\"nf_naming\\\":\\\"true\\\",\\\"skip_post_instantiation_configuration\\\":\\\"true\\\",\\\"multi_stage_design\\\":\\\"false\\\",\\\"availability_zone_max_count\\\":\\\"1\\\",\\\"is_pnf\\\":\\\"ont_0_is_pnf|true\\\"}', 1),
    ( '23084710-92d1-433f-9ee8-1ab6b52968e4', 'AccessConnectivity 0', 'false', 'e3445f73-54a5-4935-9154-405d663205b7', '8b0aaed8-911a-4a8f-b09b-e614dee38258', '{\\\"nf_naming\\\":\\\"true\\\",\\\"skip_post_instantiation_configuration\\\":\\\"true\\\",\\\"multi_stage_design\\\":\\\"false\\\",\\\"availability_zone_max_count\\\":\\\"1\\\"}', 1),
    ( 'a10e2b3d-4454-4e77-867c-7ce5076bd9c2', 'InternetProfile 0', 'false', 'a48186c1-f75c-40fd-894c-9e8162a60b1a', '8b0aaed8-911a-4a8f-b09b-e614dee38258', '{\\\"nf_naming\\\":\\\"true\\\",\\\"skip_post_instantiation_configuration\\\":\\\"true\\\",\\\"multi_stage_design\\\":\\\"false\\\",\\\"availability_zone_max_count\\\":\\\"1\\\"}', 1);

We need to ensure that the order in which the resources are processed by SO engine is correct. In BBS case, the PNF resource should go right after VnfVirtualLink (NOTE: the BPMN flow waits until PNF is ready in order to create AccessConnectivity and InternetProfile resources)

Code Block
languagebash
themeMidnight
MariaDB [catalogdb]> UPDATE service SET RESOURCE_ORDER = "VnfVirtualLink,CPE,AccessConnectivity,InternetProfile,PonUni,OltNni,OntNni" WHERE MODEL_NAME="BBS_E2E_Service";
MariaDB [catalogdb]> SELECT RESOURCE_ORDER FROM service WHERE MODEL_NAME="BBS_E2E_Service";
+----------------------------------------------------------------------------+
| RESOURCE_ORDER                                                             |
+----------------------------------------------------------------------------+
| VnfVirtualLink,CPE,AccessConnectivity,InternetProfile,PonUni,OltNni,OntNni |
+----------------------------------------------------------------------------+

...

titleSO Database Workaround

Currently, the existing RESOURCE ORDER displayed above for the service requires the VNF-Virtual-link to be orchestrated first. Due to missing functionality in DGs to handle this orchestration for the ODN network (modeled as VNF-Virtual-Link) in BBS use case, we need to delete a database entry so that service decomposition does not contain any VNF virtual links that need to be orchestrated.

Code Block
languagebash
themeMidnight
MariaDB [catalogdb]> DELETE FROM network_resource_customization_to_service WHERE SERVICE_MODEL_UUID="<put-here-the-service-model-UUID>";

DMaaP Message Router

Create required topics

Code Block
languagebash
themeMidnight
titleunauthenticated.DCAE_CL_OUTPUT
linenumberstrue
collapsetrue
curl -X POST \
  http://mr.api.simpledemo.openecomp.org:30227/topics/create \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
	"topicName": "unauthenticated.DCAE_CL_OUTPUT",
	"topicDescription": "",
	"partitionCount": "",
	"replicationCount": "3"
}'
Code Block
languagebash
themeMidnight
titleunauthenticated.CPE_AUTHENTICATION
linenumberstrue
collapsetrue
curl -X POST \
  http://mr.api.simpledemo.openecomp.org:30227/topics/create \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
	"topicName": "unauthenticated.CPE_AUTHENTICATION",
	"topicDescription": "",
	"partitionCount": "",
	"replicationCount": "3"
}'
Code Block
languagebash
themeMidnight
titleunauthenticated.PNF_READY
linenumberstrue
collapsetrue
curl -X POST \
  http://mr.api.simpledemo.openecomp.org:30227/topics/create \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
	"topicName": "unauthenticated.PNF_READY",
	"topicDescription": "",
	"partitionCount": "",
	"replicationCount": "3"
}'
Code Block
languagebash
themeMidnight
titleunauthenticated.PNF_UPDATE
linenumberstrue
collapsetrue
curl -X POST \
  http://mr.api.simpledemo.openecomp.org:30227/topics/create \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
	"topicName": "unauthenticated.PNF_UPDATE",
	"topicDescription": "",
	"partitionCount": "",
	"replicationCount": "3"
}'

DCAE

BBS Event Processor (BBS-ep)

BBS-EventProcessor Service (BBS Usecase)

https://git.onap.org/dcaegen2/services/plain/components/bbs-event-processor/dpo/blueprints/k8s-bbs-event-processor.yaml-template?h=elalto

https://git.onap.org/dcaegen2/services/plain/components/bbs-event-processor/dpo/blueprints/bbs-event-processor-input.yaml?h=elalto

Code Block
languagebash
themeMidnight
titleBBSep deployment
linenumberstrue
collapsetrue
~/oom/kubernetes# kubectl exec -ti dev-dcaegen2-dcae-bootstrap-85f664d489-54pmt bash
[root@dev-dcaegen2-dcae-bootstrap-85f664d489-54pmt /]# cfy blueprints validate /blueprints/k8s-bbs-event-processor.yaml
Validating blueprint: /blueprints/k8s-bbs-event-processor.yaml-template
Blueprint validated successfully
[root@dev-dcaegen2-dcae-bootstrap-85f664d489-54pmt /]# cfy blueprints upload -b bbs-ep /blueprints/k8s-bbs-event-processor.yaml
Uploading blueprint /blueprints/k8s-bbs-event-processor.yaml...
 k8s-bbs-event-pro... |################################################| 100.0%
Blueprint uploaded. The blueprint's id is bbs-ep
[root@dev-dcaegen2-dcae-bootstrap-85f664d489-54pmt /]# cfy deployments create -b bbs-ep -i /bbs-event-processor-input.yaml bbs-ep
Creating new deployment from blueprint bbs-ep...
Deployment created. The deployment's id is bbs-ep
[root@dev-dcaegen2-dcae-bootstrap-85f664d489-54pmt /]# cfy executions start -d bbs-ep install
Executing workflow install on deployment bbs-ep [timeout=900 seconds]
2019-05-01 11:35:32.007  CFY <bbs-ep> Starting 'install' workflow execution
2019-05-01 11:35:32.587  CFY <bbs-ep> [bbs-event-processor_yd5ucp] Creating node instance
2019-05-01 11:35:32.587  CFY <bbs-ep> [bbs-event-processor_yd5ucp.create] Sending task 'k8splugin.create_for_components'
2019-05-01 11:35:33.953  LOG <bbs-ep> [bbs-event-processor_yd5ucp.create] INFO: Added config for s4d51b24f52264857b7ef520be9efc46b-bbs-event-processor
2019-05-01 11:35:33.953  LOG <bbs-ep> [bbs-event-processor_yd5ucp.create] INFO: Added config for s4d51b24f52264857b7ef520be9efc46b-bbs-event-processor
2019-05-01 11:35:34.596  CFY <bbs-ep> [bbs-event-processor_yd5ucp.create] Task succeeded 'k8splugin.create_for_components'
2019-05-01 11:35:34.596  CFY <bbs-ep> [bbs-event-processor_yd5ucp] Node instance created
2019-05-01 11:35:34.596  CFY <bbs-ep> [bbs-event-processor_yd5ucp] Configuring node instance: nothing to do
2019-05-01 11:35:35.227  CFY <bbs-ep> [bbs-event-processor_yd5ucp] Starting node instance
2019-05-01 11:35:35.227  CFY <bbs-ep> [bbs-event-processor_yd5ucp.start] Sending task 'k8splugin.create_and_start_container_for_components'
2019-05-01 11:35:36.193  LOG <bbs-ep> [bbs-event-processor_yd5ucp.start] INFO: Starting k8s deployment for s4d51b24f52264857b7ef520be9efc46b-bbs-event-processor, image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.components.bbs-event-processor:1.0.0, env: {'CONSUL_HOST': u'consul-server.onap', 'SERVICE_TAGS': 'bbs-ep', 'CONFIG_BINDING_SERVICE': 'config-binding-service'}, kwargs: {'readiness': {u'endpoint': u'/heartbeat', u'type': u'http', u'timeout': u'5s', u'interval': u'180s'}, 'labels': {'cfydeployment': u'bbs-ep', 'cfynodeinstance': u'bbs-event-processor_yd5ucp', 'cfynode': u'bbs-event-processor'}, 'tls_info': {u'use_tls': True, u'cert_directory': u'/opt/app/bbs-event-processor/etc/cert'}, 'envs': {'SERVICE_TAGS': 'bbs-ep'}, 'liveness': {}, 'resource_config': {}, 'volumes': [], 'log_info': {u'log_directory': u'/opt/app/bbs-event-processor/logs'}, 'ports': [u'8100:30810'], 'k8s_location': u'central'}
2019-05-01 11:35:36.818  LOG <bbs-ep> [bbs-event-processor_yd5ucp.start] INFO: Passing k8sconfig: {'tls': {u'cert_path': u'/opt/tls/shared', u'image': u'nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tls-init-container:1.0.3-STAGING-latest'}, 'filebeat': {u'config_map': u'dcae-filebeat-configmap', u'config_path': u'/usr/share/filebeat/filebeat.yml', u'log_path': u'/var/log/onap', u'image': u'docker.elastic.co/beats/filebeat:5.5.0', u'data_path': u'/usr/share/filebeat/data', u'config_subpath': u'filebeat.yml'}, 'consul_dns_name': u'consul-server.onap', 'image_pull_secrets': [u'onap-docker-registry-key'], 'namespace': u'onap', 'consul_host': 'consul-server:8500', 'default_k8s_location': u'central'}
2019-05-01 11:35:36.818  LOG <bbs-ep> [bbs-event-processor_yd5ucp.start] INFO: k8s deployment initiated successfully for s4d51b24f52264857b7ef520be9efc46b-bbs-event-processor: {'services': ['s4d51b24f52264857b7ef520be9efc46b-bbs-event-processor', 'xs4d51b24f52264857b7ef520be9efc46b-bbs-event-processor'], 'namespace': u'onap', 'location': u'central', 'deployment': 'dep-s4d51b24f52264857b7ef520be9efc46b-bbs-event-processor'}
2019-05-01 11:35:36.818  LOG <bbs-ep> [bbs-event-processor_yd5ucp.start] INFO: Waiting up to 1800 secs for s4d51b24f52264857b7ef520be9efc46b-bbs-event-processor to become ready
2019-05-01 11:36:58.376  LOG <bbs-ep> [bbs-event-processor_yd5ucp.start] INFO: Done starting: s4d51b24f52264857b7ef520be9efc46b-bbs-event-processor
2019-05-01 11:36:57.873  LOG <bbs-ep> [bbs-event-processor_yd5ucp.start] INFO: k8s deployment is ready for: s4d51b24f52264857b7ef520be9efc46b-bbs-event-processor
2019-05-01 11:36:59.119  CFY <bbs-ep> [bbs-event-processor_yd5ucp.start] Task succeeded 'k8splugin.create_and_start_container_for_components'
2019-05-01 11:36:59.119  CFY <bbs-ep> [bbs-event-processor_yd5ucp] Node instance started
2019-05-01 11:36:59.119  CFY <bbs-ep> 'install' workflow execution succeeded
Finished executing workflow install on deployment bbs-ep
* Run 'cfy events list -e 7f285182-4f85-478c-95f3-b8b6970f7c8d' to retrieve the execution's events/logs

RESTCONF Collector

See RESTConf Collector (BBS Usecase)

https://git.onap.org/dcaegen2/collectors/restconf/plain/dpo/blueprints/k8s-rcc-policy.yaml-template?h=elalto

Code Block
languagebash
themeMidnight
[root@dev-dcaegen2-dcae-bootstrap-779767c49c-7cvdw /]# cfy blueprints validate blueprints/k8s-rcc-policy.yaml
Validating blueprint: blueprints/k8s-rcc-policy.yaml
Blueprint validated successfully
[root@dev-dcaegen2-dcae-bootstrap-779767c49c-7cvdw /]# cfy blueprints upload -b restconfcollector /blueprints/k8s-rcc-policy.yaml
Uploading blueprint /blueprints/k8s-rcc-policy.yaml...
 k8s-rcc-policy.yaml |#################################################| 100.0%
Blueprint uploaded. The blueprint's id is restconfcollector
[root@dev-dcaegen2-dcae-bootstrap-779767c49c-7cvdw /]# cfy deployments create -b restconfcollector
Creating new deployment from blueprint restconfcollector...
Deployment created. The deployment's id is restconfcollector
[root@dev-dcaegen2-dcae-bootstrap-779767c49c-7cvdw /]# cfy executions start -d restconfcollector install
Executing workflow install on deployment restconfcollector [timeout=900 seconds]
2020-01-13 15:12:52.119  CFY <restconfcollector> Starting 'install' workflow execution
2020-01-13 15:12:52.701  CFY <restconfcollector> [rcc_k8s_8qm5me] Creating node instance
2020-01-13 15:12:52.701  CFY <restconfcollector> [rcc_k8s_8qm5me.create] Sending task 'k8splugin.create_for_platforms'
2020-01-13 15:12:55.168  LOG <restconfcollector> [rcc_k8s_8qm5me.create] INFO: Added config for dcaegen2-collectors-rcc
2020-01-13 15:12:55.747  LOG <restconfcollector> [rcc_k8s_8qm5me.create] INFO: Done setting up: dcaegen2-collectors-rcc
2020-01-13 15:12:55.747  CFY <restconfcollector> [rcc_k8s_8qm5me.create] Task succeeded 'k8splugin.create_for_platforms'
2020-01-13 15:12:55.747  CFY <restconfcollector> [rcc_k8s_8qm5me] Node instance created
2020-01-13 15:12:56.341  CFY <restconfcollector> [rcc_k8s_8qm5me] Configuring node instance: nothing to do
2020-01-13 15:12:56.341  CFY <restconfcollector> [rcc_k8s_8qm5me] Starting node instance
2020-01-13 15:12:56.341  CFY <restconfcollector> [rcc_k8s_8qm5me.start] Sending task 'k8splugin.create_and_start_container_for_platforms'
2020-01-13 15:12:57.559  LOG <restconfcollector> [rcc_k8s_8qm5me.start] INFO: Starting k8s deployment for dcaegen2-collectors-rcc, image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.restconfcollector:1.1.1, env: {'CONSUL_HOST': u'consul-server.onap.svc.cluster.local', u'DMAAPHOST': u'message-router.onap.svc.cluster.local', 'CONFIG_BINDING_SERVICE': u'config_binding_service', u'CBS_HOST': u'config-binding-service.dcae.svc.cluster.local', u'DMAAPPORT': u'3904', u'CBS_PORT': u'10000', u'CONSUL_PORT': u'8500', u'DMAAPPUBTOPIC': u'unauthenticated.DCAE_RCC_OUTPUT'}, kwargs: {'readiness': {u'endpoint': u'/healthcheck', u'type': u'http', u'timeout': u'1s', u'interval': u'15s'}, 'tls_info': {}, 'replicas': 1, u'envs': {u'CONSUL_HOST': u'consul-server.onap.svc.cluster.local', u'DMAAPHOST': u'message-router.onap.svc.cluster.local', u'CONFIG_BINDING_SERVICE': u'config_binding_service', u'CBS_HOST': u'config-binding-service.dcae.svc.cluster.local', u'DMAAPPORT': u'3904', u'CBS_PORT': u'10000', u'CONSUL_PORT': u'8500', u'DMAAPPUBTOPIC': u'unauthenticated.DCAE_RCC_OUTPUT'}, 'labels': {'cfydeployment': u'restconfcollector', 'cfynodeinstance': u'rcc_k8s_8qm5me', 'cfynode': u'rcc_k8s'}, 'ctx': <cloudify.context.CloudifyContext object at 0x7fb63e5872d0>, 'always_pull_image': False, 'resource_config': {}, 'log_info': {u'log_directory': u'/opt/app/RCCollector/logs'}, u'ports': [u'8080:30416'], 'k8s_location': u'central'}
2020-01-13 15:12:58.275  LOG <restconfcollector> [rcc_k8s_8qm5me.start] INFO: Passing k8sconfig: {'tls': {u'cert_path': u'/opt/tls/shared', u'image': u'nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tls-init-container:1.0.3', u'ca_cert_configmap': u'dev-dcaegen2-dcae-bootstrap-dcae-cacert', u'component_ca_cert_path': u'/opt/dcae/cacert/cacert.pem'}, 'filebeat': {u'config_map': u'dcae-filebeat-configmap', u'config_path': u'/usr/share/filebeat/filebeat.yml', u'log_path': u'/var/log/onap', u'image': u'docker.elastic.co/beats/filebeat:5.5.0', u'data_path': u'/usr/share/filebeat/data', u'config_subpath': u'filebeat.yml'}, 'consul_dns_name': u'consul-server.onap', 'image_pull_secrets': [u'onap-docker-registry-key'], 'namespace': u'onap', 'consul_host': 'consul-server:8500', 'default_k8s_location': u'central'}
2020-01-13 15:12:58.275  LOG <restconfcollector> [rcc_k8s_8qm5me.start] INFO: k8s deployment initiated successfully for dcaegen2-collectors-rcc: {'services': ['dcaegen2-collectors-rcc', 'xdcaegen2-collectors-rcc'], 'namespace': u'onap', 'location': u'central', 'deployment': 'dep-dcaegen2-collectors-rcc'}
2020-01-13 15:12:58.275  LOG <restconfcollector> [rcc_k8s_8qm5me.start] INFO: Waiting up to 1800 secs for dcaegen2-collectors-rcc to become ready
^A2020-01-13 15:13:29.970  LOG <restconfcollector> [rcc_k8s_8qm5me.start] INFO: k8s deployment is ready for: dcaegen2-collectors-rcc
2020-01-13 15:13:30.550  CFY <restconfcollector> [rcc_k8s_8qm5me.start] Task succeeded 'k8splugin.create_and_start_container_for_platforms'
2020-01-13 15:13:30.550  CFY <restconfcollector> [rcc_k8s_8qm5me] Node instance started
2020-01-13 15:13:31.265  CFY <restconfcollector> 'install' workflow execution succeeded
Finished executing workflow install on deployment restconfcollector
* Run 'cfy events list -e 2ea4f906-536b-48b1-aa34-dd6b4baed255' to retrieve the execution's events/logs

VES mapper

See VESMapper (BBS Usecase)

https://gerrit.onap.org/r/gitweb?p=dcaegen2/services/mapper.git;a=blob_plain;f=UniversalVesAdapter/dpo/blueprints/k8s-vesmapper.yaml-template.yaml

>> nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.mapper.vesadapter.universalvesadaptor:1.0.0

VES Collector

Configure mapping VES event domain to DMaaP topic: ves-statechange --> unauthenticated.CPE_AUTHENTICATION

Access Consul UI: http://<consul_server_ui>:30270/ui/#/dc1/services 

Modify dcae-ves-collector configuration by adding a new VES domain to DMaaP topic mapping

Code Block
languagebash
themeMidnight
"ves-statechange": {"type": "message_router", "dmaap_info": {"topic_url": "http://message-router:3904/events/unauthenticated.CPE_AUTHENTICATION"}}

Image Removed

SDNC

Make sure that BBS DGs in SDNC DGBuilder are in Active state

bbs-access-connectivity-vnf-topology-operation-create-huawei
bbs-access-connectivity-vnf-topology-operation-delete-huawei
bbs-internet-profile-vnf-topology-operation-change-huawei
bbs-internet-profile-vnf-topology-operation-common-huawei
bbs-internet-profile-vnf-topology-operation-create-huawei
bbs-internet-profile-vnf-topology-operation-delete-huawei
validate-bbs-vnf-input-parameters

http://dguser:test123@{{sdnc-dgbuilder_Node-IP}}:30203/# 

Image Removed

Access SDN M&C DG

Configure Access SDN M&C IP address in SDNC DG using dgbuilder 

Export the relevant DG, modify the IP address, import back the DG and activate it

http://dguser:test123@{{sdnc-dgbuilder_Node-IP}}:30203/# 

> GENERIC-RESOURCE-API: bbs-access-connectivity-vnf-topology-operation-create-huawei.json
> GENERIC-RESOURCE-API: bbs-access-connectivity-vnf-topology-operation-delete-huawei.json

Edge SDN M&C DG

Configure Edge SDN M&C IP address in SDNC DG using dgbuilder 

Export the relevant DG, modify the IP address, import back the DG and activate it

http://dguser:test123@{{sdnc-dgbuilder_Node-IP}}:30203/# 

> GENERIC-RESOURCE-API: bbs-access-connectivity-network-topology-operation-common-huawei.json

Image Removed

Ref: Swisscom Edge SDN M&C and virtual BNG

Add SSL certificate of the 3rd party controller into the SDNC trust store

Code Block
languagebash
themeMidnight
kubectl exec -ti dev-sdnc-sdnc-0 -n onap -- bash
 
openssl s_client -connect <IP_ADDRESS_EXT_CTRL>:<PORT>
# copy server certificate and paste in /tmp/<CA_CERT_NAME>.crt
sudo keytool -importcert -file /tmp/<CA_CERT_NAME>.crt -alias <CA_CERT_NAME>_key -keystore truststore.onap.client.jks -storepass adminadmin
keytool -list -keystore truststore.onap.client.jks -storepass adminadmin | grep <CA_CERT_NAME>

see 

Jira Legacy
serverSystem Jira
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-179

Policy - procedure will change in Frankfurt

BBS APEX Policy

Inside APEX container,

1) Edit DCAEConsumer URL in `examples/config/ONAPBBS/NomadicONTPolicyModel_config.json`

2) Edit AAI and SDNC URLs in `examples/config/ONAPBBS/config.txt`

Code Block
languagebash
themeMidnight
AAI_URL=aai:8443
AAI_USERNAME=AAI
AAI_PASSWORD=AAI
SDNC_URL=sdnc:8282
SDNC_USERNAME=admin
SDNC_PASSWORD=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
SVC_NOTIFICATION_URL=http://c1.vm1.mso.simpledemo.openecomp.org:8080

3) Launch APEX BBS policy as a background process

Code Block
languagebash
themeMidnight
nohup /opt/app/policy/apex-pdp/bin/apexApps.sh engine -c examples/config/ONAPBBS/NomadicONTPolicyModel_config.json &

Notes from Ram Krishna Verma:

Expand
titleHow to deploy policies in Dublin
  1. Package the policy in docker image and then it gets automatically deployed when you call “docker run”. Basically it takes both configuration & model file as arguments while starting the apex engine. This is same as you mentioned below.
  1. Using apex deployment client: Apex-pdp comes with a deployment client UI with which you can connect to a live running apex engine and perform a hot deployment of policy (without any engine restart). This is really helpful for pushing updates to an already running policy or if you just want to start apex engine with configuration file and push the policy later.

Have a look at - https://docs.onap.org/en/casablanca/submodules/policy/apex-pdp.git/docs/APEX-User-Manual.html#the-apex-deployment-client

Note: The clients are not started by default with apex engine. Instead user needs to start the client either locally or inside the container. However, we are planning to package the clients in a separate docker container so that in OOM installations of ONAP we will have it started & ready for use.

  1. Using Policy Distribution: The apex policy (model file) can also be added to the service in SDC and then when user distributes the service, it will be received by the policy-distribution component  inside the distributed CSAR. Which is then parsed and the policy (model file) is deployed in the running apex engine. This way you can deploy policy to running apex engine via Service creation in SDC.

Have a look at - https://docs.onap.org/en/casablanca/submodules/policy/distribution.git/docs/index.html?highlight=distribution

https://wiki.onap.org/display/DW/Policy+Platform+-+SDC+Service+Distribution+Software+Architecture

  1. Using new Policy Framework architecture: In Dublin release, we have created a new architecture of entire Policy Framework in ONAP. The architecture is based on various microservices having independent responsibilities (API, PAP, PDP etc.). Using this one can create/update policies and deploy them to pdp engines via REST calls. CLAMP will use the REST API’s to deploy policies in pdp engines.

Note: As this is new feature coming in Dublin release, pairwise testing is going on right now and post that official documentation will be created for the same.

In the meantime have a look at - https://wiki.onap.org/display/DW/Policy+Design+and+API+Flow+for+Model+Driven+Control+Loop

https://wiki.onap.org/display/DW/The+ONAP+Policy+Framework
0.00 sec)

DMaaP Message Router

Create required topics

Code Block
languagebash
themeMidnight
titleunauthenticated.DCAE_CL_OUTPUT
linenumberstrue
collapsetrue
curl -kX POST \
  https://mr.api.simpledemo.openecomp.org:30226/topics/create \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
	"topicName": "unauthenticated.DCAE_CL_OUTPUT",
	"topicDescription": "",
	"partitionCount": "",
	"replicationCount": "3"
}'


Code Block
languagebash
themeMidnight
titleunauthenticated.CPE_AUTHENTICATION
linenumberstrue
collapsetrue
curl -kX POST \
  https://mr.api.simpledemo.openecomp.org:30226/topics/create \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
	"topicName": "unauthenticated.CPE_AUTHENTICATION",
	"topicDescription": "",
	"partitionCount": "",
	"replicationCount": "3"
}'


Code Block
languagebash
themeMidnight
titleunauthenticated.PNF_READY
linenumberstrue
collapsetrue
curl -kX POST \
  https://mr.api.simpledemo.openecomp.org:30226/topics/create \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
	"topicName": "unauthenticated.PNF_READY",
	"topicDescription": "",
	"partitionCount": "",
	"replicationCount": "3"
}'


Code Block
languagebash
themeMidnight
titleunauthenticated.PNF_UPDATE
linenumberstrue
collapsetrue
curl -kX POST \
  https://mr.api.simpledemo.openecomp.org:30226/topics/create \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
	"topicName": "unauthenticated.PNF_UPDATE",
	"topicDescription": "",
	"partitionCount": "",
	"replicationCount": "3"
}'


Code Block
languagebash
themeMidnight
titleCheck list of topics in DMaaP
curl -k 'https://mr.api.simpledemo.openecomp.org:30226/topics'

{
    "topics": [
        "org.onap.dmaap.mr.PNF_REGISTRATION",
        "unauthenticated.DCAE_CL_OUTPUT",
        "AAI-EVENT",
        "SDC-DISTR-STATUS-TOPIC-AUTO",
        "SDC-DISTR-NOTIF-TOPIC-AUTO",
        "org.onap.dmaap.mr.PNF_READY",
        "unauthenticated.PNF_READY",
        "POLICY-PDP-PAP",
        "unauthenticated.CPE_AUTHENTICATION",
        "unauthenticated.VES_MEASUREMENT_OUTPUT",
        "unauthenticated.PNF_UPDATE",
        "org.onap.dmaap.mr.mirrormakeragent",
        "__consumer_offsets"
    ]
}

DCAE

BBS Event Processor (BBS-ep)

Description: BBS-EventProcessor Service (BBS Usecase)

BBS event processor blueprints:

BBS event processor deployment procedure:

Code Block
languagebash
themeMidnight
titleBBSep deployment
linenumberstrue
collapsetrue
root@onap-nfs:/home/ubuntu# kubectl exec -ti dev-dcae-bootstrap-7599b45c77-czxsx -n onap bash
bash-4.2$ cfy install -b bbs-ep -d bbs-ep /blueprints/k8s-bbs-event-processor.yaml
Uploading blueprint /blueprints/k8s-bbs-event-processor.yaml...
 k8s-bbs-event-pro... |################################################| 100.0%
Blueprint uploaded. The blueprint's id is bbs-ep
Creating new deployment from blueprint bbs-ep...
Deployment created. The deployment's id is bbs-ep
Executing workflow install on deployment bbs-ep [timeout=900 seconds]
Deployment environment creation is pending...
2020-03-26 13:31:51.512  CFY <bbs-ep> Starting 'create_deployment_environment' workflow execution
2020-03-26 13:31:52.112  CFY <bbs-ep> Installing deployment plugins
2020-03-26 13:31:52.112  CFY <bbs-ep> Sending task 'cloudify_agent.operations.install_plugins'
2020-03-26 13:31:52.112  CFY <bbs-ep> Task started 'cloudify_agent.operations.install_plugins'
2020-03-26 13:31:52.706  LOG <bbs-ep> INFO: Installing plugin: k8s
2020-03-26 13:31:52.706  LOG <bbs-ep> INFO: Using existing installation of managed plugin: c567dae6-35df-426a-a677-45ac51175b73 [package_name: k8splugin, package_version: 1.7.2, supported_platform: linux_x86_64, distribution: centos, distribution_release: core]
2020-03-26 13:31:52.706  CFY <bbs-ep> Task succeeded 'cloudify_agent.operations.install_plugins'
2020-03-26 13:31:52.706  CFY <bbs-ep> Skipping starting deployment policy engine core - no policies defined
2020-03-26 13:31:52.706  CFY <bbs-ep> Creating deployment work directory
2020-03-26 13:31:52.706  CFY <bbs-ep> 'create_deployment_environment' workflow execution succeeded
2020-03-26 13:31:55.575  CFY <bbs-ep> Starting 'install' workflow execution
2020-03-26 13:31:56.242  CFY <bbs-ep> [bbs-event-processor_76rp5k] Creating node instance
2020-03-26 13:31:56.910  CFY <bbs-ep> [bbs-event-processor_76rp5k.create] Sending task 'k8splugin.create_for_components'
2020-03-26 13:31:59.795  LOG <bbs-ep> [bbs-event-processor_76rp5k.create] INFO: Done setting up: s636058386c6042289eaf4f55ada78500-bbs-event-processor
2020-03-26 13:31:59.165  LOG <bbs-ep> [bbs-event-processor_76rp5k.create] INFO: Added config for s636058386c6042289eaf4f55ada78500-bbs-event-processor
2020-03-26 13:31:59.795  CFY <bbs-ep> [bbs-event-processor_76rp5k.create] Task succeeded 'k8splugin.create_for_components'
2020-03-26 13:31:59.795  CFY <bbs-ep> [bbs-event-processor_76rp5k] Node instance created
2020-03-26 13:32:00.390  CFY <bbs-ep> [bbs-event-processor_76rp5k] Configuring node instance: nothing to do
2020-03-26 13:32:00.390  CFY <bbs-ep> [bbs-event-processor_76rp5k] Starting node instance
2020-03-26 13:32:00.390  CFY <bbs-ep> [bbs-event-processor_76rp5k.start] Sending task 'k8splugin.create_and_start_container_for_components'
2020-03-26 13:32:01.719  LOG <bbs-ep> [bbs-event-processor_76rp5k.start] INFO: Starting k8s deployment for s636058386c6042289eaf4f55ada78500-bbs-event-processor, image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.components.bbs-event-processor:2.0.0, env: {'DCAE_CA_CERTPATH': '/opt/app/bbs-event-processor/etc/cert/cacert.pem', 'CONSUL_HOST': u'consul-server.onap', u'SERVICE_TAGS': u'', 'CONFIG_BINDING_SERVICE': 'config-binding-service', 'CBS_CONFIG_URL': 'https://config-binding-service:10443/service_component_all/s636058386c6042289eaf4f55ada78500-bbs-event-processor'}, kwargs: {'readiness': {u'endpoint': u'/heartbeat', u'type': u'http', u'timeout': u'5s', u'interval': u'180s'}, 'labels': {'cfydeployment': u'bbs-ep', 'cfynodeinstance': u'bbs-event-processor_76rp5k', 'cfynode': u'bbs-event-processor'}, 'tls_info': {u'use_tls': True, u'cert_directory': u'/opt/app/bbs-event-processor/etc/cert'}, 'envs': {u'SERVICE_TAGS': u''}, 'liveness': {}, 'resource_config': {}, 'volumes': [], 'log_info': {u'log_directory': u'/opt/app/bbs-event-processor/logs'}, 'ports': [u'8100:30413'], 'k8s_location': u'central'}
2020-03-26 13:32:02.435  LOG <bbs-ep> [bbs-event-processor_76rp5k.start] INFO: Passing k8sconfig: {'tls': {u'component_cert_dir': u'/opt/dcae/cacert', u'cert_path': u'/opt/app/osaaf', u'image': u'nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tls-init-container:2.1.0', u'ca_cert_configmap': u'dev-dcae-bootstrap-dcae-cacert', u'component_ca_cert_path': u'/opt/dcae/cacert/cacert.pem'}, 'filebeat': {u'config_map': u'dev-dcae-filebeat-configmap', u'config_path': u'/usr/share/filebeat/filebeat.yml', u'log_path': u'/var/log/onap', u'image': u'docker.elastic.co/beats/filebeat:5.5.0', u'data_path': u'/usr/share/filebeat/data', u'config_subpath': u'filebeat.yml'}, 'consul_dns_name': u'consul-server.onap', 'image_pull_secrets': [u'onap-docker-registry-key'], 'namespace': u'onap', 'consul_host': 'consul-server:8500', 'cbs': {'base_url': 'https://config-binding-service:10443/service_component_all'}, 'default_k8s_location': u'central'}
2020-03-26 13:32:02.435  LOG <bbs-ep> [bbs-event-processor_76rp5k.start] INFO: k8s deployment initiated successfully for s636058386c6042289eaf4f55ada78500-bbs-event-processor: {'services': ['s636058386c6042289eaf4f55ada78500-bbs-event-processor', 'xs636058386c6042289eaf4f55ada78500-bbs-event-processor'], 'namespace': u'onap', 'location': u'central', 'deployment': 'dep-s636058386c6042289eaf4f55ada78500-bbs-event-processor'}
2020-03-26 13:32:02.435  LOG <bbs-ep> [bbs-event-processor_76rp5k.start] INFO: Waiting up to 1800 secs for s636058386c6042289eaf4f55ada78500-bbs-event-processor to become ready
2020-03-26 13:33:25.482  LOG <bbs-ep> [bbs-event-processor_76rp5k.start] INFO: Done starting: s636058386c6042289eaf4f55ada78500-bbs-event-processor
2020-03-26 13:33:24.802  LOG <bbs-ep> [bbs-event-processor_76rp5k.start] INFO: k8s deployment is ready for: s636058386c6042289eaf4f55ada78500-bbs-event-processor
2020-03-26 13:33:25.482  CFY <bbs-ep> [bbs-event-processor_76rp5k.start] Task succeeded 'k8splugin.create_and_start_container_for_components'
2020-03-26 13:33:25.482  CFY <bbs-ep> [bbs-event-processor_76rp5k] Node instance started
2020-03-26 13:33:26.201  CFY <bbs-ep> 'install' workflow execution succeeded
Finished executing workflow install on deployment bbs-ep
* Run 'cfy events list -e 3c6d4861-4e15-4738-931d-60121a662a45' to retrieve the execution's events/logs

RESTCONF Collector

Description: RESTConf Collector (BBS Usecase) 

RESTCONF Collector blueprint:

RESTCONF Collector deployment procedure:

Code Block
languagebash
themeMidnight
root@onap-nfs:/home/ubuntu# kubectl exec -ti dev-dcae-bootstrap-7599b45c77-czxsx -n onap bash
bash-4.2$ cfy install -b restconf -d restconf /blueprints/k8s-restconf.yaml
Uploading blueprint /blueprints/k8s-restconf.yaml...
 k8s-restconf.yaml |###################################################| 100.0%
Blueprint uploaded. The blueprint's id is restconf
Creating new deployment from blueprint restconf...
Deployment created. The deployment's id is restconf
Executing workflow install on deployment restconf [timeout=900 seconds]
Deployment environment creation is pending...
2020-03-26 13:35:09.015  CFY <restconf> Starting 'create_deployment_environment' workflow execution
2020-03-26 13:35:09.660  CFY <restconf> Installing deployment plugins
2020-03-26 13:35:09.660  CFY <restconf> Sending task 'cloudify_agent.operations.install_plugins'
2020-03-26 13:35:09.660  CFY <restconf> Task started 'cloudify_agent.operations.install_plugins'
2020-03-26 13:35:10.269  LOG <restconf> INFO: Installing plugin: k8s
2020-03-26 13:35:10.269  LOG <restconf> INFO: Using existing installation of managed plugin: c567dae6-35df-426a-a677-45ac51175b73 [package_name: k8splugin, package_version: 1.7.2, supported_platform: linux_x86_64, distribution: centos, distribution_release: core]
2020-03-26 13:35:10.269  CFY <restconf> Task succeeded 'cloudify_agent.operations.install_plugins'
2020-03-26 13:35:10.269  CFY <restconf> Skipping starting deployment policy engine core - no policies defined
2020-03-26 13:35:10.269  CFY <restconf> Creating deployment work directory
2020-03-26 13:35:10.986  CFY <restconf> 'create_deployment_environment' workflow execution succeeded
2020-03-26 13:35:13.053  CFY <restconf> Starting 'install' workflow execution
2020-03-26 13:35:13.672  CFY <restconf> [rcc_k8s_1bgtbl] Creating node instance
2020-03-26 13:35:14.338  CFY <restconf> [rcc_k8s_1bgtbl.create] Sending task 'k8splugin.create_for_platforms'
2020-03-26 13:35:16.559  LOG <restconf> [rcc_k8s_1bgtbl.create] INFO: Added config for dcaegen2-collectors-rcc
2020-03-26 13:35:17.277  LOG <restconf> [rcc_k8s_1bgtbl.create] INFO: Done setting up: dcaegen2-collectors-rcc
2020-03-26 13:35:17.277  CFY <restconf> [rcc_k8s_1bgtbl.create] Task succeeded 'k8splugin.create_for_platforms'
2020-03-26 13:35:17.277  CFY <restconf> [rcc_k8s_1bgtbl] Node instance created
2020-03-26 13:35:17.277  CFY <restconf> [rcc_k8s_1bgtbl] Configuring node instance: nothing to do
2020-03-26 13:35:17.916  CFY <restconf> [rcc_k8s_1bgtbl] Starting node instance
2020-03-26 13:35:17.916  CFY <restconf> [rcc_k8s_1bgtbl.start] Sending task 'k8splugin.create_and_start_container_for_platforms'
2020-03-26 13:35:19.132  LOG <restconf> [rcc_k8s_1bgtbl.start] INFO: Starting k8s deployment for dcaegen2-collectors-rcc, image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.restconfcollector:1.1.1, env: {'CONSUL_HOST': u'consul-server.onap.svc.cluster.local', 'CBS_CONFIG_URL': 'https://config-binding-service:10443/service_component_all/dcaegen2-collectors-rcc', u'DMAAPHOST': u'message-router.onap.svc.cluster.local', 'CONFIG_BINDING_SERVICE': u'config_binding_service', u'CBS_HOST': u'config-binding-service.dcae.svc.cluster.local', 'DCAE_CA_CERTPATH': u'/opt/dcae/cacert/cacert.pem', u'DMAAPPORT': u'3904', u'CBS_PORT': u'10000', u'CONSUL_PORT': u'8500', u'DMAAPPUBTOPIC': u'unauthenticated.DCAE_RCC_OUTPUT'}, kwargs: {'readiness': {u'endpoint': u'/healthcheck', u'type': u'http', u'timeout': u'1s', u'interval': u'15s'}, 'tls_info': {}, 'replicas': 1, u'envs': {u'CONSUL_HOST': u'consul-server.onap.svc.cluster.local', u'DMAAPHOST': u'message-router.onap.svc.cluster.local', u'CONFIG_BINDING_SERVICE': u'config_binding_service', u'CBS_HOST': u'config-binding-service.dcae.svc.cluster.local', u'DMAAPPORT': u'3904', u'CBS_PORT': u'10000', u'CONSUL_PORT': u'8500', u'DMAAPPUBTOPIC': u'unauthenticated.DCAE_RCC_OUTPUT'}, 'labels': {'cfydeployment': u'restconf', 'cfynodeinstance': u'rcc_k8s_1bgtbl', 'cfynode': u'rcc_k8s'}, 'ctx': <cloudify.context.CloudifyContext object at 0x7fbc53614250>, 'always_pull_image': False, 'resource_config': {}, 'log_info': {u'log_directory': u'/opt/app/RCCollector/logs'}, u'ports': [u'8080:30416'], 'k8s_location': u'central'}
2020-03-26 13:35:19.848  LOG <restconf> [rcc_k8s_1bgtbl.start] INFO: Passing k8sconfig: {'tls': {u'component_cert_dir': u'/opt/dcae/cacert', u'cert_path': u'/opt/app/osaaf', u'image': u'nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tls-init-container:2.1.0', u'ca_cert_configmap': u'dev-dcae-bootstrap-dcae-cacert', u'component_ca_cert_path': u'/opt/dcae/cacert/cacert.pem'}, 'filebeat': {u'config_map': u'dev-dcae-filebeat-configmap', u'config_path': u'/usr/share/filebeat/filebeat.yml', u'log_path': u'/var/log/onap', u'image': u'docker.elastic.co/beats/filebeat:5.5.0', u'data_path': u'/usr/share/filebeat/data', u'config_subpath': u'filebeat.yml'}, 'consul_dns_name': u'consul-server.onap', 'image_pull_secrets': [u'onap-docker-registry-key'], 'namespace': u'onap', 'consul_host': 'consul-server:8500', 'cbs': {'base_url': 'https://config-binding-service:10443/service_component_all'}, 'default_k8s_location': u'central'}
2020-03-26 13:35:19.848  LOG <restconf> [rcc_k8s_1bgtbl.start] INFO: k8s deployment initiated successfully for dcaegen2-collectors-rcc: {'services': ['dcaegen2-collectors-rcc', 'xdcaegen2-collectors-rcc'], 'namespace': u'onap', 'location': u'central', 'deployment': 'dep-dcaegen2-collectors-rcc'}
2020-03-26 13:35:19.848  LOG <restconf> [rcc_k8s_1bgtbl.start] INFO: Waiting up to 1800 secs for dcaegen2-collectors-rcc to become ready
2020-03-26 13:35:45.794  LOG <restconf> [rcc_k8s_1bgtbl.start] INFO: k8s deployment is ready for: dcaegen2-collectors-rcc
2020-03-26 13:35:46.296  CFY <restconf> [rcc_k8s_1bgtbl.start] Task succeeded 'k8splugin.create_and_start_container_for_platforms'
2020-03-26 13:35:46.926  CFY <restconf> [rcc_k8s_1bgtbl] Node instance started
2020-03-26 13:35:46.926  CFY <restconf> 'install' workflow execution succeeded
Finished executing workflow install on deployment restconf
* Run 'cfy events list -e d9edf30f-0944-46f7-98af-8ec2a35499f3' to retrieve the execution's events/logs

VES mapper

Description: VESMapper (BBS Usecase)  

VES Mapper blueprint:

VES Mapper deployment procedure:

Code Block
languagebash
themeMidnight
root@onap-nfs:/home/ubuntu# kubectl exec -ti dev-dcae-bootstrap-7599b45c77-czxsx -n onap bash
bash-4.2$ cfy install -b ves-mapper -d ves-mapper /blueprints/k8s-ves-mapper.yaml
Uploading blueprint /blueprints/k8s-ves-mapper.yaml...
 k8s-ves-mapper.yaml |#################################################| 100.0%
Blueprint uploaded. The blueprint's id is ves-mapper
Creating new deployment from blueprint ves-mapper...
Deployment created. The deployment's id is ves-mapper
Executing workflow install on deployment ves-mapper [timeout=900 seconds]
Deployment environment creation is pending...
2020-03-26 13:37:22.808  CFY <ves-mapper> Starting 'create_deployment_environment' workflow execution
2020-03-26 13:37:23.404  CFY <ves-mapper> Installing deployment plugins
2020-03-26 13:37:23.404  CFY <ves-mapper> Sending task 'cloudify_agent.operations.install_plugins'
2020-03-26 13:37:23.404  CFY <ves-mapper> Task started 'cloudify_agent.operations.install_plugins'
2020-03-26 13:37:24.051  LOG <ves-mapper> INFO: Installing plugin: k8s
2020-03-26 13:37:24.051  LOG <ves-mapper> INFO: Using existing installation of managed plugin: c567dae6-35df-426a-a677-45ac51175b73 [package_name: k8splugin, package_version: 1.7.2, supported_platform: linux_x86_64, distribution: centos, distribution_release: core]
2020-03-26 13:37:24.051  CFY <ves-mapper> Task succeeded 'cloudify_agent.operations.install_plugins'
2020-03-26 13:37:24.051  CFY <ves-mapper> Skipping starting deployment policy engine core - no policies defined
2020-03-26 13:37:24.051  CFY <ves-mapper> Creating deployment work directory
2020-03-26 13:37:24.724  CFY <ves-mapper> 'create_deployment_environment' workflow execution succeeded
2020-03-26 13:37:26.733  CFY <ves-mapper> Starting 'install' workflow execution
2020-03-26 13:37:27.363  CFY <ves-mapper> [universalvesadapter_3gckp9] Creating node instance
2020-03-26 13:37:27.363  CFY <ves-mapper> [universalvesadapter_3gckp9.create] Sending task 'k8splugin.create_for_components'
2020-03-26 13:37:29.831  LOG <ves-mapper> [universalvesadapter_3gckp9.create] INFO: Added config for s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper
2020-03-26 13:37:30.335  LOG <ves-mapper> [universalvesadapter_3gckp9.create] INFO: Done setting up: s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper
2020-03-26 13:37:30.986  CFY <ves-mapper> [universalvesadapter_3gckp9.create] Task succeeded 'k8splugin.create_for_components'
2020-03-26 13:37:30.986  CFY <ves-mapper> [universalvesadapter_3gckp9] Node instance created
2020-03-26 13:37:30.986  CFY <ves-mapper> [universalvesadapter_3gckp9] Configuring node instance: nothing to do
2020-03-26 13:37:30.986  CFY <ves-mapper> [universalvesadapter_3gckp9] Starting node instance
2020-03-26 13:37:31.654  CFY <ves-mapper> [universalvesadapter_3gckp9.start] Sending task 'k8splugin.create_and_start_container_for_components'
2020-03-26 13:37:33.026  LOG <ves-mapper> [universalvesadapter_3gckp9.start] INFO: Passing k8sconfig: {'tls': {u'component_cert_dir': u'/opt/dcae/cacert', u'cert_path': u'/opt/app/osaaf', u'image': u'nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tls-init-container:2.1.0', u'ca_cert_configmap': u'dev-dcae-bootstrap-dcae-cacert', u'component_ca_cert_path': u'/opt/dcae/cacert/cacert.pem'}, 'filebeat': {u'config_map': u'dev-dcae-filebeat-configmap', u'config_path': u'/usr/share/filebeat/filebeat.yml', u'log_path': u'/var/log/onap', u'image': u'docker.elastic.co/beats/filebeat:5.5.0', u'data_path': u'/usr/share/filebeat/data', u'config_subpath': u'filebeat.yml'}, 'consul_dns_name': u'consul-server.onap', 'image_pull_secrets': [u'onap-docker-registry-key'], 'namespace': u'onap', 'consul_host': 'consul-server:8500', 'cbs': {'base_url': 'https://config-binding-service:10443/service_component_all'}, 'default_k8s_location': u'central'}
2020-03-26 13:37:32.522  LOG <ves-mapper> [universalvesadapter_3gckp9.start] INFO: Starting k8s deployment for s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper, image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.mapper.vesadapter.universalvesadaptor:1.0.1, env: {'DCAE_CA_CERTPATH': u'/opt/dcae/cacert/cacert.pem', 'CONSUL_HOST': u'consul-server.onap', u'SERVICE_TAGS': u'', 'CBS_CONFIG_URL': 'https://config-binding-service:10443/service_component_all/s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper', 'CONFIG_BINDING_SERVICE': u'config_binding_service'}, kwargs: {'readiness': {}, 'labels': {'cfydeployment': u'ves-mapper', 'cfynodeinstance': u'universalvesadapter_3gckp9', 'cfynode': u'universalvesadapter'}, 'tls_info': {}, 'envs': {u'SERVICE_TAGS': u'', u'CONFIG_BINDING_SERVICE': u'config_binding_service'}, 'liveness': {}, 'resource_config': {}, 'volumes': [], 'log_info': {}, 'ports': [u'80:0'], 'k8s_location': u'central'}
2020-03-26 13:37:33.026  LOG <ves-mapper> [universalvesadapter_3gckp9.start] INFO: k8s deployment initiated successfully for s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper: {'services': ['s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper'], 'namespace': u'onap', 'location': u'central', 'deployment': 'dep-s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper'}
2020-03-26 13:37:33.026  LOG <ves-mapper> [universalvesadapter_3gckp9.start] INFO: Waiting up to 3600 secs for s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper to become ready
2020-03-26 13:37:35.743  LOG <ves-mapper> [universalvesadapter_3gckp9.start] INFO: k8s deployment is ready for: s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper
2020-03-26 13:37:36.390  LOG <ves-mapper> [universalvesadapter_3gckp9.start] INFO: Done starting: s76305937176b49619b24cb13ae1f5100-dcaegen2-svc-mapper
2020-03-26 13:37:36.390  CFY <ves-mapper> [universalvesadapter_3gckp9.start] Task succeeded 'k8splugin.create_and_start_container_for_components'
2020-03-26 13:37:36.390  CFY <ves-mapper> [universalvesadapter_3gckp9] Node instance started
2020-03-26 13:37:36.390  CFY <ves-mapper> 'install' workflow execution succeeded
Finished executing workflow install on deployment ves-mapper
* Run 'cfy events list -e 69ffeb61-3f09-4311-8483-6f4ab7a20806' to retrieve the execution's events/logs

VES Collector

In Frankfurt by default VES Collector listens to secured port with HTTPS. To keep our code modifications to a minimum, we can use the HTTP-version of VES-Collector by deploying a separate Cloudify instance from within DCAE bootstrap POD.

Code Block
languagebash
themeMidnight
root@onap-nfs:/home/ubuntu# kubectl exec -ti dev-dcae-bootstrap-7599b45c77-czxsx -n onap bash
bash-4.2$ cfy install -b ves-http -d ves-http -i /inputs/k8s-ves-inputs.yaml /blueprints/k8s-ves.yaml

Configure mapping VES event domain to DMaaP topic: ves-statechange --> unauthenticated.CPE_AUTHENTICATION

1) Access Consul UI: http://<consul_server_ui>:30270/ui/#/dc1/services 

2) Modify dcae-ves-collector-http configuration by adding a new VES domain to DMaaP topic mapping

Code Block
languagebash
themeMidnight
"ves-statechange": {"type": "message_router", "dmaap_info": {"topic_url": "http://message-router:3904/events/unauthenticated.CPE_AUTHENTICATION"}}

Image Added

3) Click on UPDATE to apply the new configuration

SDNC

Make sure that BBS DGs in SDNC DGBuilder are in Active state

bbs-access-connectivity-vnf-topology-operation-create-huawei
bbs-access-connectivity-vnf-topology-operation-delete-huawei
bbs-internet-profile-vnf-topology-operation-change-huawei
bbs-internet-profile-vnf-topology-operation-common-huawei
bbs-internet-profile-vnf-topology-operation-create-huawei
bbs-internet-profile-vnf-topology-operation-delete-huawei
validate-bbs-vnf-input-parameters

DGBuilder URL: https://dguser:test123@sdnc.api.simpledemo.onap.org:30203

Access SDN M&C DG

Configure Access SDN M&C IP address in SDNC DG using dgbuilder. For instance:

> GENERIC-RESOURCE-API: bbs-access-connectivity-vnf-topology-operation-create-huawei.json
> GENERIC-RESOURCE-API: bbs-access-connectivity-vnf-topology-operation-delete-huawei.json

1) Export the relevant DG

2) Modify the IP address

3) Import back the DG and Activate it

DGBuilder URL: https://dguser:test123@sdnc.api.simpledemo.onap.org:30203 

Edge SDN M&C DG

Configure Edge SDN M&C IP address in SDNC DG using dgbuilder. For instance:

> GENERIC-RESOURCE-API: bbs-access-connectivity-vnf-topology-operation-common-huawei.json

1) Export the relevant DG

2) Modify the IP address

3) Import back the DG and Activate it

DGBuilder URL: https://dguser:test123@sdnc.api.simpledemo.onap.org:30203 

Image Added

Ref: Swisscom Edge SDN M&C and virtual BNG

Add SSL certificate of the 3rd party controller into the SDNC trust store

Code Block
languagebash
themeMidnight
kubectl exec -ti dev-sdnc-0 -n onap -- bash
 
openssl s_client -connect <IP_ADDRESS_EXT_CTRL>:<PORT>
# copy server certificate and paste in /tmp/<CA_CERT_NAME>.crt
sudo keytool -importcert -file /tmp/<CA_CERT_NAME>.crt -alias <CA_CERT_NAME>_key -keystore truststore.onap.client.jks -storepass adminadmin
keytool -list -keystore truststore.onap.client.jks -storepass adminadmin | grep <CA_CERT_NAME>

See 

Jira Legacy
serverSystem Jira
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-179

Policy 

Deploy BBS APEX Policy (master, apex-pdp image v2.3+)

Before Starting check POLICY-PAP and POLICY-API are exposed correctly.

Code Block
titlepolicy check
kubectl get svc | grep -i policy
policy-apex-pdp                                          ClusterIP      10.43.154.141   <none>                                 6969/TCP                                                 9d
policy-api                                               ClusterIP      10.43.38.189    <none>                                 6969/TCP                                                 9d
policy-distribution                                      ClusterIP      10.43.59.17     <none>                                 6969/TCP                                                 9d
policy-handler                                           ClusterIP      10.43.26.210    <none>                                 80/TCP                                                   9d
policy-mariadb                                           ClusterIP      None            <none>                                 3306/TCP                                                 9d
policy-pap                                               ClusterIP      10.43.32.178    <none>                                 6969/TCP                                                 9d
policy-xacml-pdp                                         ClusterIP      10.43.45.35     <none>                                 6969/TCP                                                 9d

If it's already exposed you will see Nodeport instead of ClusterIp.


Expose policy:

Code Block
titleexpose policy
kubectl edit svc policy-api

	//change spec type to NodePort
	spec:
 	 clusterIP: {IP}
 	 ports:
 	 - name: policy-pap
 	   port: 6969
       protocol: TCP
  	   targetPort: 6969
 	 selector:
  	   app: pap
  	   release: frankfurt
 	 sessionAffinity: None
 	 type: NodePort
 
kubectl edit svc policy-pap


Code Block
titleVerification
kubectl get svc | grep policy
policy-apex-pdp             ClusterIP      10.43.29.86     <none>                                 6969/TCP                                                 9d
policy-api                  NodePort       10.43.197.94    <none>                                 6969:30687/TCP                                           9d
policy-distribution         ClusterIP      10.43.129.175   <none>                                 6969/TCP                                                 9d
policy-handler              ClusterIP      10.43.149.5     <none>                                 80/TCP                                                   9d
policy-mariadb              ClusterIP      None            <none>                                 3306/TCP                                                 9d
policy-pap                  NodePort       10.43.230.71    <none>                                 6969:31620/TCP                                           9d
policy-xacml-pdp            ClusterIP      10.43.104.92    <none>                                 6969/TCP                                                 9d


Postman Collection: BBS APEX Policy API Frankfurt.postman_collection.json.zip

1) Make Sure APEX PDP is running and in Active state

Code Block
languagebash
themeMidnight
API:  GET 
URL: {{POLICY-PAP-URL}}/policy/pap/v1/pdps

2) Create the operational control loop APEX policy type

Code Block
languagebash
themeMidnight
API: POST
URL: {{POLICY-API-URL}}/policy/api/v1/policytypes

JSON payload: https://git.onap.org/integration/usecases/bbs/tree/policy/apex/json/bbs_policytypes.json

3) Create BBS APEX policy

Code Block
languagebash
themeMidnight
API: POST
URL: {{POLICY-API-URL}}/policy/api/v1/policytypes/onap.policies.controlloop.operational.Apex/versions/1.0.0/policies

JSON payload: https://git.onap.org/integration/usecases/bbs/tree/policy/apex/json/bbs_create_policy.json

4) Deploy BBS policy

Code Block
languagebash
themeMidnight
API: POST
URL: {{POLICY-PAP-URL}}/policy/pap/v1/pdps/policies

JSON payload: https://git.onap.org/integration/usecases/bbs/tree/policy/apex/json/bbs_simple_deploy.json

5) Verify the deployment

Code Block
languagebash
themeMidnight
API: GET
URL: {{POLICY-API-URL}}/policy/api/v1/policytypes/onap.policies.controlloop.operational.Apex/versions/1.0.0/policies/

Edge Services: vBNG+AAA+DHCP, Edge SDN M&C

...

Multimedia
nameBBS_03_E2EServiceDesign.mp4
width500

Simplified E2E Service Model (Frankfurt):

Image Added

Image Added

Multimedia
nameBBS_E2E_Service_Model.mov

BSS HSIA Service Order: Request Input

...