...
title | work in progress |
---|
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
~/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/WorkflowMessagesdnc:\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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
## 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 | idInternetProfile | NF_ROLE createInstance | NF | ACTION1.0 | SERVICE_TYPE create InternetProfile | VERSION_STR/mso/async/services/CreateSDNCNetworkResource | DESCRIPTION{"operationType":"InternetProfile"} | 1800000 | 2020-01-20 17:43:07 | NULL ORCHESTRATION_URI | | 10051 | AccessConnectivity | createInstance | NF | 1.0 | VNF_PARAM_XSD | create AccessConnectivity | /mso/async/services/CreateSDNCNetworkResource | {"operationType":"AccessConnectivity"} | 1800000 | 2020-01-20 17:43:07 | RECIPE_TIMEOUTNULL | CREATION_TIMESTAMP | VF_MODULE_ID | +-------+--------------------+----------------+--------------+------ | | 10054 | CPE | createInstance | NF | 1.0 | create CPE | /mso/async/services/HandlePNF | NULL | 1800000 | 2020-01-20 17:43:07 | NULL | +-------+--------------------+--------+--------+--------------+-------------+------------+---------------+-------------------------+----------------+------+---------------+--------------+ | 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 -----------+----------------+---------------------+--------------+ 3 rows in set (0.00 sec) |
DMaaP Message Router
Create required topics
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
curl -k 'https://mr.api.simpledemo.openecomp.org:30226/topics' { "topics": [ | /mso/async/services/HandlePNF"org.onap.dmaap.mr.PNF_REGISTRATION", "unauthenticated.DCAE_CL_OUTPUT", | NULL"AAI-EVENT", "SDC-DISTR-STATUS-TOPIC-AUTO", "SDC-DISTR-NOTIF-TOPIC-AUTO", "org.onap.dmaap.mr.PNF_READY", | "unauthenticated.PNF_READY", 1800000 | 2020"POLICY-01-20 17:43:07 | NULLPDP-PAP", "unauthenticated.CPE_AUTHENTICATION", "unauthenticated.VES_MEASUREMENT_OUTPUT", | +-------+--------------------+----------------+--------------+-------------+---------------------------+-----------------------------------------------+----------------------------------------+----------------+---------------------+--------------+ 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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 "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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
"ves-statechange": {"type": "message_router", "dmaap_info": {"topic_url": "http://message-router:3904/events/unauthenticated.CPE_AUTHENTICATION"}} |
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
Ref: Swisscom Edge SDN M&C and virtual BNG
Add SSL certificate of the 3rd party controller into the SDNC trust store
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||||
---|---|---|---|---|---|---|
|
Policy
Deploy BBS APEX Policy (master, apex-pdp image v2.3+)
Before Starting check POLICY-PAP and POLICY-API are exposed correctly.
Code Block | ||||
---|---|---|---|---|
| ||||
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> | +----------------------------------------------------------------------------+ | VnfVirtualLink,CPE,AccessConnectivity,InternetProfile,PonUni,OltNni,OntNni | +----------------------------------------------------------------------------+ | ||||
Info | ||||
|
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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) - Not needed in Frankfurt?
Update dcae-prh config in Consul
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{"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)
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
~/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
|
consul config step below not needed in Frankfurt?
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:
Code Block | ||||
---|---|---|---|---|
| ||||
"application.clVersion": "1.0.0" |
RESTCONF Collector
See RESTConf Collector (BBS Usecase)
Code Block | ||||
---|---|---|---|---|
| ||||
[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
>> 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 | ||||
---|---|---|---|---|
| ||||
"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 - 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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
nohup /opt/app/policy/apex-pdp/bin/apexApps.sh engine -c examples/config/ONAPBBS/NomadicONTPolicyModel_config.json & |
Notes from Ram Krishna Verma:
Expand | ||
---|---|---|
| ||
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 https://wiki.onap.org/display/DW/The+ONAP+Policy+Framework 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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||||
---|---|---|---|---|
| ||||
API: GET
URL: {{POLICY-PAP-URL}}/policy/pap/v1/pdps |
2) Create the operational control loop APEX policy type
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
|
Simplified E2E Service Model (Frankfurt):
Multimedia | ||
---|---|---|
|
BSS HSIA Service Order: Request Input
...