~/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) |
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.
|
Create required topics
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" }' |
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" }' |
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" }' |
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" }' |
Update dcae-prh config in Consul
{"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-EventProcessor Service (BBS Usecase)
~/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" |
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 |
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"}} |
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/#
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
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
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:
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.
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
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 |
Swisscom Edge SDN M&C and virtual BNG
Create a business customer and subscription to BBS service type in AAI
curl -X PUT \ https://aai.api.simpledemo.openecomp.org:30233/aai/v16/business/customers/customer/0dd5ab04-11a1-48b2-9792-6f12a42223d3 \ -H 'Accept: application/json' \ -H 'Authorization: Basic QUFJOkFBSQ==' \ -H 'Cache-Control: no-cache' \ -H 'Connection: keep-alive' \ -H 'Content-Type: application/json' \ -H 'Host: aai.api.simpledemo.openecomp.org:30233' \ -H 'User-Agent: PostmanRuntime/7.15.0' \ -H 'X-FromAppId: Postman Application' \ -H 'X-TransactionId: Postman REST Transaction' \ -H 'accept-encoding: gzip, deflate' \ -H 'cache-control: no-cache' \ -H 'content-length: 140' \ -d '{ "global-customer-id": "0dd5ab04-11a1-48b2-9792-6f12a42223d3", "subscriber-name": "BBSCustomer", "subscriber-type": "CUST" } ' curl -X GET \ https://aai.api.simpledemo.openecomp.org:30233/aai/v16/business/customers/customer/0dd5ab04-11a1-48b2-9792-6f12a42223d3 \ -H 'Accept: application/json' \ -H 'Authorization: Basic QUFJOkFBSQ==' \ -H 'Cache-Control: no-cache' \ -H 'Connection: keep-alive' \ -H 'Content-Type: application/json' \ -H 'Host: aai.api.simpledemo.openecomp.org:30233' \ -H 'User-Agent: PostmanRuntime/7.15.0' \ -H 'X-FromAppId: Postman Application' \ -H 'X-TransactionId: Postman REST Transaction' \ -H 'accept-encoding: gzip, deflate' \ -H 'cache-control: no-cache' { "global-customer-id": "0dd5ab04-11a1-48b2-9792-6f12a42223d3", "subscriber-name": "BBSCustomer", "subscriber-type": "CUST", "resource-version": "1561552477331" } |
curl -X PUT \ https://aai.api.simpledemo.openecomp.org:30233/aai/v14/business/customers/customer/0dd5ab04-11a1-48b2-9792-6f12a42223d3/service-subscriptions/service-subscription/BBS_E2E_Service \ -H 'Accept: application/json' \ -H 'Authorization: Basic QUFJOkFBSQ==' \ -H 'Cache-Control: no-cache' \ -H 'Connection: keep-alive' \ -H 'Content-Type: application/json' \ -H 'Host: aai.api.simpledemo.openecomp.org:30233' \ -H 'User-Agent: PostmanRuntime/7.15.0' \ -H 'X-FromAppId: Postman Application' \ -H 'X-TransactionId: Postman REST Transaction' \ -H 'accept-encoding: gzip, deflate' \ -H 'cache-control: no-cache' \ -H 'content-length: 38' \ -d '{ "service-type": "BBS_E2E_Service" }' curl -X GET \ 'https://aai.api.simpledemo.openecomp.org:30233/aai/v16/business/customers/customer/0dd5ab04-11a1-48b2-9792-6f12a42223d3?depth=all' \ -H 'Accept: application/json' \ -H 'Authorization: Basic QUFJOkFBSQ==' \ -H 'Cache-Control: no-cache' \ -H 'Connection: keep-alive' \ -H 'Content-Type: application/json' \ -H 'Host: aai.api.simpledemo.openecomp.org:30233' \ -H 'User-Agent: PostmanRuntime/7.15.0' \ -H 'X-FromAppId: Postman Application' \ -H 'X-TransactionId: Postman REST Transaction' \ -H 'accept-encoding: gzip, deflate' \ -H 'cache-control: no-cache' { "global-customer-id": "0dd5ab04-11a1-48b2-9792-6f12a42223d3", "subscriber-name": "BBSCustomer", "subscriber-type": "CUST", "resource-version": "1561552477331", "service-subscriptions": { "service-subscription": [ { "service-type": "BBS_E2E_Service", "resource-version": "1561553245301" } ] } } |
Postman Collection: BBS_Use_Case_PostmanCollection.zip
Notes:
Resource | Description | Template |
---|---|---|
CPE | CPE (ONT+RG) PNF | CpePnf.yml |
AccessConnectivity | Access Connectivity RFS | access_connectivity.yml |
InternetProfile | Internet Profile RFS | InternetProfile.yaml |
3) E2E Service Design
Notes:
Input provided as part of the service order, sent to External API from BSS
NOTE: ont_ont_manufacturer = [HUAWEI or NOKIA], ont_ont_pnf_name is used as pnf_correlation_id by SO
{ "externalId": "BBS_BSS_TrackindId3584", "category": "NetworkService", "description": "Service Order for a new HSIA CFS", "priority": "1", "relatedParty": [ { "id": "6f486438-87b5-4bee-8f85-30090c760501", "role": "ONAPcustomer", "name": "EnterpriseA", "@referredType": "Consumer" } ], "orderItem": [ { "id": "1", "action": "add", "service": { "name": "BBS_E2E_Service_1", "serviceState": "active", "serviceSpecification": { "id": "0187be8c-8efb-4531-97fa-dbe984ed9cdb" }, "serviceCharacteristic": [ { "name": "ont_ont_serial_num", "value": { "serviceCharacteristicValue": "HWTCC01B7503" } }, { "name": "edgeinternetprofile_ip_rg_mac_addr", "value": { "serviceCharacteristicValue": "54:04:a6:38:12:9d" } }, { "name": "edgeinternetprofile_ip_downstream_speed", "value": { "serviceCharacteristicValue": "10" } }, { "name": "ont_ont_mac_addr", "value": { "serviceCharacteristicValue": "54:04:a6:38:12:9d" } }, { "name": "edgeinternetprofile_ip_remote_id", "value": { "serviceCharacteristicValue": "AC9.000.010.001" } }, { "name": "ont_ont_swVersion", "value": { "serviceCharacteristicValue": "1.0.0" } }, { "name": "ont_ont_manufacturer", "value": { "serviceCharacteristicValue": "HUAWEI" } }, { "name": "edgeinternetprofile_ip_service_type", "value": { "serviceCharacteristicValue": "BBS_E2E_Service" } }, { "name": "ont_ont_pnf_name", "value": { "serviceCharacteristicValue": "Huawei-4857544302FF269D" } }, { "name": "edgeinternetprofile_ip_upstream_speed", "value": { "serviceCharacteristicValue": "10" } }, { "name": "ont_ont_nf_type", "value": { "serviceCharacteristicValue": "HN8255WS" } }, { "name": "cvlan", "value": { "serviceCharacteristicValue": "100" } }, { "name": "svlan", "value": { "serviceCharacteristicValue": "1000" } } ] } } ] } |