/
BBS Documentation (Dublin)

BBS Documentation (Dublin)


System View

System Set up 

SO

Custom Workflow Configuration

SO Custom Workflow Configuration
~/oom/kubernetes# kubectl edit cm dev-so-so-bpmn-infra-app-configmap

  mso:
  ...
       oof:
         auth: test:testpwd
         callbackEndpoint: http://so-bpmn-infra.onap:8081/mso/WorkflowMessage
         endpoint: https://oof-osdf.onap:8698/api/oof/v1/placement
         timeout: PT30M
       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

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.

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]> select * from vnf_recipe;
...
+-------+---------------------+-----------------------+--------------+-------------+--------------------------------------------------------------------------------+-----------------------------------------------+---------------+----------------+---------------------+--------------------------------------+
| id    | NF_ROLE             | ACTION                | SERVICE_TYPE | VERSION_STR | DESCRIPTION                                                                    | ORCHESTRATION_URI                             | VNF_PARAM_XSD | RECIPE_TIMEOUT | CREATION_TIMESTAMP  | VF_MODULE_ID                         |
+-------+---------------------+-----------------------+--------------+-------------+--------------------------------------------------------------------------------+-----------------------------------------------+---------------+----------------+---------------------+--------------------------------------+
| 10043 | InternetProfile     | createInstance        | NF           | 1.0         | create InternetProfile                                                         | /mso/async/services/CreateSDNCNetworkResource | NULL          |         180000 | 2019-02-18 08:34:39 | NULL                                 |
| 10044 | AccessConnectivity  | createInstance        | NF           | 1.0         | create AccessConnectivity                                                      | /mso/async/services/CreateSDNCNetworkResource | NULL          |         180000 | 2019-02-18 08:34:39 | NULL                                 |
| 10045 | CPE                 | createInstance        | NF           | 1.0         | create CPE                                                                     | /mso/async/services/HandlePNF                 | NULL          |         180000 | 2019-02-18 08:34:39 | NULL                                 |
+-------+---------------------+-----------------------+--------------+-------------+--------------------------------------------------------------------------------+-----------------------------------------------+---------------+----------------+---------------------+--------------------------------------+
...
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                | 2019-05-15 22:11:07 | 8f5fe623-c5e3-4ab3-90f9-3a28daea6601 | NULL            | NULL            | 0ee07fe6-a156-4e59-9dee-09a775d02bca | 1.0           | CPE                | org.openecomp.resource.vf.Cpe                | NULL                        | Generic           | Infrastructure        |
| HEAT               | InternetProfile VF    | 2019-05-15 22:11:11 | a8de16d8-0d1a-4a19-80ac-2bcb2790e9a6 | NULL            | NULL            | acbe6358-6ce4-43a9-9385-111fe5cadad3 | 1.0           | InternetProfile    | org.openecomp.resource.vf.Internetprofile    | NULL                        | Generic           | Infrastructure        |
| HEAT               | AccessConnectivity VF | 2019-05-15 22:11:13 | b464fd87-3663-46c9-adc5-6f7d9e98ff26 | NULL            | NULL            | 53018dba-c934-415d-b4b1-0b1cae9553b8 | 1.0           | AccessConnectivity | org.openecomp.resource.vf.Accessconnectivity | NULL                        | Generic           | Infrastructure        |
+--------------------+-----------------------+---------------------+--------------------------------------+-----------------+-----------------+--------------------------------------+---------------+--------------------+----------------------------------------------+-----------------------------+-------------------+-----------------------+

Modify the MODEL_UUID and MODEL_INVARIANT_UUID for each resource in the SQL query below accordingly to your environment.

INSERT INTO `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`)
VALUES
	('HEAT', 'CPE VF', '2019-05-15 22:11:07', '8f5fe623-c5e3-4ab3-90f9-3a28daea6601', NULL, NULL, '0ee07fe6-a156-4e59-9dee-09a775d02bca', '1.0', 'CPE', 'org.openecomp.resource.vf.Cpe', NULL, 'Generic', 'Infrastructure'),
	('HEAT', 'InternetProfile VF', '2019-05-15 22:11:11', 'a8de16d8-0d1a-4a19-80ac-2bcb2790e9a6', NULL, NULL, 'acbe6358-6ce4-43a9-9385-111fe5cadad3', '1.0', 'InternetProfile', 'org.openecomp.resource.vf.Internetprofile', NULL, 'Generic', 'Infrastructure'),
	('HEAT', 'AccessConnectivity VF', '2019-05-15 22:11:13', 'b464fd87-3663-46c9-adc5-6f7d9e98ff26', NULL, NULL, '53018dba-c934-415d-b4b1-0b1cae9553b8', '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

INSERT INTO `vnf_resource_customization` (`ID`, `MODEL_CUSTOMIZATION_UUID`, `MODEL_INSTANCE_NAME`, `MIN_INSTANCES`, `MAX_INSTANCES`, `AVAILABILITY_ZONE_MAX_COUNT`, `NF_TYPE`, `NF_ROLE`, `NF_FUNCTION`, `NF_NAMING_CODE`, `MULTI_STAGE_DESIGN`, `CREATION_TIMESTAMP`, `VNF_RESOURCE_MODEL_UUID`, `SERVICE_MODEL_UUID`, `RESOURCE_INPUT`, `CDS_BLUEPRINT_NAME`, `CDS_BLUEPRINT_VERSION`, `SKIP_POST_INSTANTIATION_CONFIGURATION`)
VALUES
	(16, '0cea1cea-e4e4-4c91-be41-675e183a8983', 'CPE 0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'false', '2019-05-21 11:15:42', '8f5fe623-c5e3-4ab3-90f9-3a28daea6601', '0187be8c-8efb-4531-97fa-dbe984ed9cdb', '{\\\"nf_naming\\\":\\\"true\\\",\\\"skip_post_instantiation_configuration\\\":\\\"true\\\",\\\"multi_stage_design\\\":\\\"false\\\",\\\"availability_zone_max_count\\\":\\\"1\\\",\\\"is_pnf\\\":\\\"ont_0_is_pnf|true\\\"}', NULL, NULL, 1),
    (19, '23084710-92d1-433f-9ee8-1ab6b52968e4', 'AccessConnectivity 0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'false', '2019-07-10 11:15:42', '36f3f843-5592-42d3-a873-c9ab6a404742', 'b70a200b-53a9-46ef-b920-f386d8fad8c3', '{\\\"nf_naming\\\":\\\"true\\\",\\\"skip_post_instantiation_configuration\\\":\\\"true\\\",\\\"multi_stage_design\\\":\\\"false\\\",\\\"availability_zone_max_count\\\":\\\"1\\\"}', NULL, NULL, 1),
    (22, 'a10e2b3d-4454-4e77-867c-7ce5076bd9c2', 'InternetProfile 0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'false', '2019-07-10 11:16:42', 'd9c46bd0-8847-407e-a9bd-1e58c369d6c1', 'b70a200b-53a9-46ef-b920-f386d8fad8c3', '{\\\"nf_naming\\\":\\\"true\\\",\\\"skip_post_instantiation_configuration\\\":\\\"true\\\",\\\"multi_stage_design\\\":\\\"false\\\",\\\"availability_zone_max_count\\\":\\\"1\\\"}', NULL, NULL, 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)

MariaDB [catalogdb]> select RESOURCE_ORDER from service where MODEL_NAME="BBS_E2E_Service";
+----------------------------------------------------------------------------+
| RESOURCE_ORDER                                                             |
+----------------------------------------------------------------------------+
| VnfVirtualLink,CPE,AccessConnectivity,InternetProfile,PonUni,OltNni,OntNni |
| VnfVirtualLink,CPE,AccessConnectivity,InternetProfile,PonUni,OltNni,OntNni |
+----------------------------------------------------------------------------+
2 rows in set (0.00 sec)

SO 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.


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

unauthenticated.DCAE_CL_OUTPUT
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"
}'
unauthenticated.CPE_AUTHENTICATION
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"
}'
unauthenticated.PNF_READY
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"
}'
unauthenticated.PNF_UPDATE
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

PNF Registration Handler (PRH) 

Update dcae-prh config in Consul

dcae-prh config
{"dmaap.dmaapUpdateProducerConfiguration.dmaapPortNumber": 3904, "security.trustStorePath": "/opt/app/prh/etc/cert/trust.jks", "dmaap.dmaapProducerConfiguration.dmaapTopicName": "/events/unauthenticated.PNF_READY", "dmaap.dmaapConsumerConfiguration.dmaapHostName": "message-router", "streams_subscribes": {"ves-reg-output": {"type": "message_router", "dmaap_info": {"topic_url": "http://message-router:3904/events/unauthenticated.VES_PNFREG_OUTPUT"}}}, "security.enableAaiCertAuth": false, "dmaap.dmaapConsumerConfiguration.dmaapUrl": "http://message-router:3904/events/unauthenticated.VES_PNFREG_OUTPUT", "dmaap.dmaapProducerConfiguration.dmaapUserPassword": "admin", "dmaap.dmaapUpdateProducerConfiguration.dmaapTopicName": "/events/unauthenticated.PNF_UPDATE", "aai.aaiClientConfiguration.aaiUserPassword": "AAI", "dmaap.dmaapConsumerConfiguration.dmaapUserName": "admin", "security.trustStorePasswordPath": "/opt/app/prh/etc/cert/trust.pass", "aai.aaiClientConfiguration.aaiBasePath": "/aai/v12", "dmaap.dmaapProducerConfiguration.dmaapUrl": "http://message-router:3904/events/unauthenticated.PNF_READY", "dmaap.dmaapProducerConfiguration.dmaapPortNumber": 3904, "aai.aaiClientConfiguration.aaiHost": "aai", "dmaap.dmaapUpdateProducerConfiguration.dmaapContentType": "application/json", "aai.aaiClientConfiguration.aaiServiceInstancePath": "/business/customers/customer/${customer}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${serviceInstanceId}", "dmaap.dmaapConsumerConfiguration.dmaapUserPassword": "admin", "security.keyStorePath": "/opt/app/prh/etc/cert/key.p12", "dmaap.dmaapUpdateProducerConfiguration.dmaapUrl": "http://message-router:3904/events/unauthenticated.PNF_UPDATE", "dmaap.dmaapProducerConfiguration.dmaapProtocol": "http", "dmaap.dmaapUpdateProducerConfiguration.dmaapProtocol": "http", "aai.aaiClientConfiguration.aaiIgnoreSslCertificateErrors": true, "security.enableDmaapCertAuth": false, "dmaap.dmaapUpdateProducerConfiguration.dmaapUserPassword": "admin", "aai.aaiClientConfiguration.pnfUrl": "https://aai:8443/aai/v12/network/pnfs/pnf", "dmaap.dmaapConsumerConfiguration.dmaapTopicName": "events/unauthenticated.VES_PNFREG_OUTPUT", "dmaap.dmaapConsumerConfiguration.dmaapProtocol": "http", "dmaap.dmaapConsumerConfiguration.dmaapPortNumber": 3904, "dmaap.dmaapConsumerConfiguration.consumerId": "c12", "dmaap.dmaapUpdateProducerConfiguration.dmaapUserName": "admin", "dmaap.dmaapConsumerConfiguration.dmaapContentType": "application/json", "dmaap.dmaapConsumerConfiguration.messageLimit": -1, "dmaap.dmaapProducerConfiguration.dmaapContentType": "application/json", "dmaap.dmaapUpdateProducerConfiguration.dmaapHostName": "message-router", "streams_publishes": {"pnf-update": {"type": "message_router", "dmaap_info": {"topic_url": "http://message-router:3904/events/unauthenticated.PNF_UPDATE"}}, "pnf-ready": {"type": "message_router", "dmaap_info": {"topic_url": "http://message-router:3904/events/unauthenticated.PNF_READY"}}}, "dmaap.dmaapConsumerConfiguration.consumerGroup": "OpenDCAE-c12", "security.keyStorePasswordPath": "/opt/app/prh/etc/cert/key.pass", "aai.aaiClientConfiguration.aaiUserName": "AAI", "aai.aaiClientConfiguration.aaiPnfPath": "/network/pnfs/pnf", "dmaap.dmaapProducerConfiguration.dmaapHostName": "message-router", "aai.aaiClientConfiguration.aaiHeaders": {"X-FromAppId": "prh", "X-TransactionId": "9999", "Accept": "application/json", "Authorization": "Basic QUFJOkFBSQ==", "Real-Time": "true"}, "aai.aaiClientConfiguration.aaiHostPortNumber": 8443, "dmaap.dmaapConsumerConfiguration.timeoutMs": -1, "aai.aaiClientConfiguration.aaiProtocol": "https", "dmaap.dmaapProducerConfiguration.dmaapUserName": "admin"}


BBS Event Processor (BBS-ep)

BBS-EventProcessor Service (BBS Usecase)

BBSep deployment
~/oom/kubernetes# kubectl exec -ti dev-dcaegen2-dcae-bootstrap-85f664d489-54pmt bash
[root@dev-dcaegen2-dcae-bootstrap-779767c49c-7cvdw /]# cfy blueprints validate /blueprints/k8s-bbs-event-processor.yaml
Validating blueprint: /blueprints/k8s-bbs-event-processor.yaml
Blueprint validated successfully
[root@dev-dcaegen2-dcae-bootstrap-779767c49c-7cvdw /]# 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-779767c49c-7cvdw /]# 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-779767c49c-7cvdw /]# cfy executions start -d bbs-ep install
Executing workflow install on deployment bbs-ep [timeout=900 seconds]
2020-01-13 14:51:54.483  CFY <bbs-ep> Starting 'install' workflow execution
2020-01-13 14:51:55.063  CFY <bbs-ep> [bbs-event-processor_qcbwi6] Creating node instance
2020-01-13 14:51:55.063  CFY <bbs-ep> [bbs-event-processor_qcbwi6.create] Sending task 'k8splugin.create_for_components'
2020-01-13 14:51:59.059  LOG <bbs-ep> [bbs-event-processor_qcbwi6.create] INFO: Done setting up: sd23a0f76c0bf4489b2c221cf88f8af4f-bbs-event-processor
2020-01-13 14:51:58.529  LOG <bbs-ep> [bbs-event-processor_qcbwi6.create] INFO: Added config for sd23a0f76c0bf4489b2c221cf88f8af4f-bbs-event-processor
2020-01-13 14:51:59.059  CFY <bbs-ep> [bbs-event-processor_qcbwi6.create] Task succeeded 'k8splugin.create_for_components'
2020-01-13 14:51:59.059  CFY <bbs-ep> [bbs-event-processor_qcbwi6] Node instance created
2020-01-13 14:51:59.705  CFY <bbs-ep> [bbs-event-processor_qcbwi6] Configuring node instance: nothing to do
2020-01-13 14:51:59.705  CFY <bbs-ep> [bbs-event-processor_qcbwi6] Starting node instance
2020-01-13 14:51:59.705  CFY <bbs-ep> [bbs-event-processor_qcbwi6.start] Sending task 'k8splugin.create_and_start_container_for_components'
2020-01-13 14:52:01.122  LOG <bbs-ep> [bbs-event-processor_qcbwi6.start] INFO: Starting k8s deployment for sd23a0f76c0bf4489b2c221cf88f8af4f-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_qcbwi6', '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'}
2020-01-13 14:52:01.837  LOG <bbs-ep> [bbs-event-processor_qcbwi6.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 14:52:01.837  LOG <bbs-ep> [bbs-event-processor_qcbwi6.start] INFO: k8s deployment initiated successfully for sd23a0f76c0bf4489b2c221cf88f8af4f-bbs-event-processor: {'services': ['sd23a0f76c0bf4489b2c221cf88f8af4f-bbs-event-processor', 'xsd23a0f76c0bf4489b2c221cf88f8af4f-bbs-event-processor'], 'namespace': u'onap', 'location': u'central', 'deployment': 'dep-sd23a0f76c0bf4489b2c221cf88f8af4f-bbs-event-processor'}
2020-01-13 14:52:01.837  LOG <bbs-ep> [bbs-event-processor_qcbwi6.start] INFO: Waiting up to 1800 secs for sd23a0f76c0bf4489b2c221cf88f8af4f-bbs-event-processor to become ready
2020-01-13 14:54:45.054  LOG <bbs-ep> [bbs-event-processor_qcbwi6.start] INFO: k8s deployment is ready for: sd23a0f76c0bf4489b2c221cf88f8af4f-bbs-event-processor
2020-01-13 14:54:45.586  LOG <bbs-ep> [bbs-event-processor_qcbwi6.start] INFO: Done starting: sd23a0f76c0bf4489b2c221cf88f8af4f-bbs-event-processor
2020-01-13 14:54:45.586  CFY <bbs-ep> [bbs-event-processor_qcbwi6.start] Task succeeded 'k8splugin.create_and_start_container_for_components'
2020-01-13 14:54:45.586  CFY <bbs-ep> [bbs-event-processor_qcbwi6] Node instance started
2020-01-13 14:54:46.303  CFY <bbs-ep> 'install' workflow execution succeeded
Finished executing workflow install on deployment bbs-ep
* Run 'cfy events list -e 08ad7324-4899-4c8e-b84f-6f198e873af1' to retrieve the execution's events/logs


Update the configuration of BBS-ep in Consul with the following version for close loop (see screenshot below) in order to match the version expected by BBS APEX policy:

"application.clVersion": "1.0.0"

RESTCONF Collector

See RESTConf Collector (BBS Usecase)

[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)

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

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

SDNC

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

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

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

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-network-topology-operation-create-huawei.json
> GENERIC-RESOURCE-API: bbs-access-connectivity-network-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

Ref: Swisscom Edge SDN M&C and virtual BNG

Policy

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`

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

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


Notes from Ram Krishna Verma:

 How 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