From cef7e63e2b03c76f13dba5e0bc962ef79f6f4816 Mon Sep 17 00:00:00 2001 From: Krzysztof Kuzmicki Date: Wed, 24 Mar 2021 23:44:17 +0100 Subject: [ROBOT] Add new E2E test for 5G BulkPM usecase from HTTP server to ONAP gating The goal is to add test suite for new E2E test for 5G BulkPM use case using HTTPS server as an origin for PM files to be downloaded from. Connection between DFC and HTTPS will be based on CMPv2 Certificate-based authentication Issue-ID: INT-1815 Signed-off-by: Krzysztof Kuzmicki Change-Id: Iebb71eb68538618cbc0c42444a039bd0f8effcf5 (cherry picked from commit a19a5d2bfc58597b7b02bca70d4a42329cf93b6c) --- robot/assets/cmpv2/k8s-mongo-ves-client.yaml | 37 +++++++++++++ robot/assets/cmpv2/k8s-mongo.yaml | 10 +++- robot/assets/cmpv2/k8s-pnf-simulator.yaml | 10 +++- robot/assets/cmpv2/k8s-ves-client.yaml | 75 ++++++++++++++++++++++++++ robot/assets/templates/dfc/consul.jinja | 31 +++++++++++ robot/assets/templates/dfc/notification.jinja | 34 ++++++++++++ robot/assets/usecases/5gbulkpm/k8s-https.yaml | 78 +++++++++++++++++++++++++++ 7 files changed, 271 insertions(+), 4 deletions(-) create mode 100644 robot/assets/cmpv2/k8s-mongo-ves-client.yaml create mode 100644 robot/assets/cmpv2/k8s-ves-client.yaml create mode 100644 robot/assets/templates/dfc/consul.jinja create mode 100644 robot/assets/templates/dfc/notification.jinja create mode 100644 robot/assets/usecases/5gbulkpm/k8s-https.yaml (limited to 'robot/assets') diff --git a/robot/assets/cmpv2/k8s-mongo-ves-client.yaml b/robot/assets/cmpv2/k8s-mongo-ves-client.yaml new file mode 100644 index 00000000..42523993 --- /dev/null +++ b/robot/assets/cmpv2/k8s-mongo-ves-client.yaml @@ -0,0 +1,37 @@ +tosca_definitions_version: cloudify_dsl_1_3 +imports: + - 'http://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml' + - 'plugin:k8splugin?version=>=3.4.2,<4.0.0' +inputs: + tag_version: + type: string + description: Docker image to be used + default: 'mongo' + replicas: + type: integer + description: Number of instances + default: 1 + service_component_type: + type: string + default: "mongo-ves-client" + service_component_name_override: + type: string + default: "mongo-ves-client" +node_templates: + mongo: + type: dcae.nodes.ContainerizedServiceComponent + interfaces: + cloudify.interfaces.lifecycle: + start: + inputs: + envs: + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: zXcVbN123! + MONGO_INITDB_DATABASE: pnf_simulator + ports: + - '27017:0' + properties: + service_component_type: { get_input: service_component_type } + service_component_name_override: { get_input: service_component_name_override } + image: { get_input: tag_version } + replicas: { get_input: replicas } diff --git a/robot/assets/cmpv2/k8s-mongo.yaml b/robot/assets/cmpv2/k8s-mongo.yaml index 3823bff2..010eb65c 100644 --- a/robot/assets/cmpv2/k8s-mongo.yaml +++ b/robot/assets/cmpv2/k8s-mongo.yaml @@ -11,6 +11,12 @@ inputs: type: integer description: Number of instances default: 1 + service_component_type: + type: string + default: "mongo" + service_component_name_override: + type: string + default: "mongo" node_templates: mongo: type: dcae.nodes.ContainerizedServiceComponent @@ -25,7 +31,7 @@ node_templates: ports: - '27017:0' properties: - service_component_type: mongo - service_component_name_override: mongo + service_component_type: { get_input: service_component_type } + service_component_name_override: { get_input: service_component_name_override } image: { get_input: tag_version } replicas: { get_input: replicas } diff --git a/robot/assets/cmpv2/k8s-pnf-simulator.yaml b/robot/assets/cmpv2/k8s-pnf-simulator.yaml index 1916ba95..89e838b9 100644 --- a/robot/assets/cmpv2/k8s-pnf-simulator.yaml +++ b/robot/assets/cmpv2/k8s-pnf-simulator.yaml @@ -33,6 +33,12 @@ inputs: type: boolean description: Flag to indicate external tls enable/disable. default: true + service_component_type: + type: string + default: "pnf-simulator" + service_component_name_override: + type: string + default: "pnf-simulator" node_templates: pnf-simulator: type: dcae.nodes.ContainerizedServiceComponent @@ -45,8 +51,8 @@ node_templates: ports: - '5000:0' properties: - service_component_type: pnf-simulator - service_component_name_override: pnf-simulator + service_component_type: { get_input: service_component_type } + service_component_name_override: { get_input: service_component_name_override } image: { get_input: tag_version } replicas: { get_input: replicas } always_pull_image: true diff --git a/robot/assets/cmpv2/k8s-ves-client.yaml b/robot/assets/cmpv2/k8s-ves-client.yaml new file mode 100644 index 00000000..cfb5fd53 --- /dev/null +++ b/robot/assets/cmpv2/k8s-ves-client.yaml @@ -0,0 +1,75 @@ +tosca_definitions_version: cloudify_dsl_1_3 +imports: + - 'http://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml' + - 'plugin:k8splugin?version=>=3.4.2,<4.0.0' +inputs: + tag_version: + type: string + description: Docker image to be used + default: 'nexus3.onap.org:10001/onap/org.onap.integration.nfsimulator.vesclient:latest' + replicas: + type: integer + description: Number of instances + default: 1 + external_cert_cert_type: + type: string + description: Output type + default: 'P12' + external_cert_ca_name: + type: string + description: Name of Certificate Authority configured on CertService side. + default: 'RA' + external_cert_common_name: + type: string + description: Common name which should be present in certificate. + default: 'ves-client' + external_cert_sans: + type: string + description: 'List of Subject Alternative Names (SANs) which should be present + in certificate. Delimiter - , Should contain common_name value and other FQDNs + under which given component is accessible.' + default: 'ves-client' + external_cert_use_external_tls: + type: boolean + description: Flag to indicate external tls enable/disable. + default: true + service_component_type: + type: string + default: "ves-client" + service_component_name_override: + type: string + default: "ves-client" +node_templates: + ves-client: + type: dcae.nodes.ContainerizedServiceComponent + interfaces: + cloudify.interfaces.lifecycle: + start: + inputs: + envs: + STRICT_HOSTNAME_VERIFICATION: 'true' + MONGO_HOSTNAME: + concat: ["mongo-", {get_input: service_component_name_override}] + ports: + - '5000:0' + properties: + service_component_type: { get_input: service_component_type } + service_component_name_override: { get_input: service_component_name_override } + image: { get_input: tag_version } + replicas: { get_input: replicas } + always_pull_image: true + tls_info: + cert_directory: '/app/store/' + external_cert: + external_cert_directory: '/app/store/' + use_external_tls: + get_input: external_cert_use_external_tls + cert_type: + get_input: external_cert_cert_type + ca_name: + get_input: external_cert_ca_name + external_certificate_parameters: + common_name: + get_input: external_cert_common_name + sans: + get_input: external_cert_sans diff --git a/robot/assets/templates/dfc/consul.jinja b/robot/assets/templates/dfc/consul.jinja new file mode 100644 index 00000000..f630f976 --- /dev/null +++ b/robot/assets/templates/dfc/consul.jinja @@ -0,0 +1,31 @@ +{ + "service_calls": [], + "streams_publishes": { + "PM_MEAS_FILES": { + "dmaap_info": "<>", + "type": "data_router" + } + }, + "dmaap.certificateConfig.keyCert": "/opt/app/datafile/etc/cert/cert.p12", + "dmaap.certificateConfig.keyPasswordPath": "/opt/app/datafile/etc/cert/p12.pass", + "dmaap.certificateConfig.trustedCa": "/opt/app/datafile/etc/cert/trust.jks", + "dmaap.certificateConfig.trustedCaPasswordPath": "/opt/app/datafile/etc/cert/trust.pass", + "dmaap.security.enableDmaapCertAuth": true, + "dmaap.certificateConfig.httpsHostnameVerify": {{httpsHostnameVerify}}, + "dmaap.security.keyStorePasswordPath": "/opt/app/datafile/etc/cert/jks.pass", + "dmaap.security.keyStorePath": "/opt/app/datafile/etc/cert/cert.jks", + "dmaap.security.trustStorePasswordPath": "/opt/app/datafile/etc/cert/trust.pass", + "dmaap.security.trustStorePath": "/opt/app/datafile/etc/cert/trust.jks", + "dmaap.dmaapConsumerConfiguration.consumerGroup": "OpenDcae-c12", + "dmaap.dmaapConsumerConfiguration.consumerId": "C12", + "dmaap.dmaapConsumerConfiguration.timeoutMs": -1, + "sftp.security.strictHostKeyChecking": true, + "streams_subscribes": { + "dmaap_subscriber": { + "type": "message_router", + "dmaap_info": { + "topic_url": "https://message-router:3905/events/unauthenticated.VES_NOTIFICATION_OUTPUT" + } + } + } +} \ No newline at end of file diff --git a/robot/assets/templates/dfc/notification.jinja b/robot/assets/templates/dfc/notification.jinja new file mode 100644 index 00000000..83396c29 --- /dev/null +++ b/robot/assets/templates/dfc/notification.jinja @@ -0,0 +1,34 @@ +{ + "event": { + "commonEventHeader": { + "version": "4.0.1", + "vesEventListenerVersion": "7.0.1", + "domain": "notification", + "eventName": "Noti_RnNode-Ericsson_FileReady", + "eventId": "FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1", + "lastEpochMicrosec": 8745745764578, + "priority": "Normal", + "reportingEntityName": "NOK6061ZW3", + "sequence": 0, + "sourceName": "NOK6061ZW3", + "startEpochMicrosec": 8745745764578, + "timeZoneOffset": "UTC+05.30" + }, + "notificationFields": { + "changeIdentifier": "PM_MEAS_FILES", + "changeType": "FileReady", + "notificationFieldsVersion": "2.0", + "arrayOfNamedHashMap": [ + { + "name": "{{pm_file}}", + "hashMap": { + "location": "https://{{https_server_host}}:443/{{pm_file}}", + "compression": "gzip", + "fileFormatType": "{{fileFormatType}}", + "fileFormatVersion": "{{fileFormatVersion}}" + } + } + ] + } + } +} \ No newline at end of file diff --git a/robot/assets/usecases/5gbulkpm/k8s-https.yaml b/robot/assets/usecases/5gbulkpm/k8s-https.yaml new file mode 100644 index 00000000..ac1d69a1 --- /dev/null +++ b/robot/assets/usecases/5gbulkpm/k8s-https.yaml @@ -0,0 +1,78 @@ +tosca_definitions_version: cloudify_dsl_1_3 +imports: + - 'http://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml' + - 'plugin:k8splugin?version=>=3.4.2,<4.0.0' +inputs: + tag_version: + type: string + description: Docker image to be used + default: 'nexus3.onap.org:10001/onap/org.onap.integration.nfsimulator.pmhttpsserver:latest' + replicas: + type: integer + description: Number of instances + default: 1 + external_cert_cert_type: + type: string + description: Output type + default: 'PEM' + external_cert_ca_name: + type: string + description: Name of Certificate Authority configured on CertService side. + default: 'RA' + external_cert_common_name: + type: string + description: Common name which should be present in certificate. + default: 'https-server' + external_cert_sans: + type: string + description: 'List of Subject Alternative Names (SANs) which should be present + in certificate. Delimiter - , Should contain common_name value and other FQDNs + under which given component is accessible.' + default: 'https-server' + external_cert_use_external_tls: + type: boolean + description: Flag to indicate external tls enable/disable. + default: true + service_component_type: + type: string + default: "https-server" + service_component_name_override: + type: string + default: "https-server" + enable_tls: + type: boolean + default: false +node_templates: + httpsserver: + type: dcae.nodes.ContainerizedServiceComponent + interfaces: + cloudify.interfaces.lifecycle: + start: + inputs: + ports: + - '80:0' + - '8080:0' + - '443:0' + properties: + service_component_type: { get_input: service_component_type } + service_component_name_override: { get_input: service_component_name_override } + image: { get_input: tag_version } + replicas: { get_input: replicas } + always_pull_image: true + tls_info: + cert_directory: '/etc/apache2/certs/' + use_tls: + get_input: enable_tls + external_cert: + external_cert_directory: '/etc/apache2/certs/' + use_external_tls: + get_input: external_cert_use_external_tls + cert_type: + get_input: external_cert_cert_type + ca_name: + get_input: external_cert_ca_name + external_certificate_parameters: + common_name: + get_input: external_cert_common_name + sans: + get_input: external_cert_sans -- cgit 1.2.3-korg