From 2436f54331b3e8bb45e11c069e82216aa46dc51c Mon Sep 17 00:00:00 2001 From: Jerry Flood Date: Thu, 30 Mar 2017 21:00:10 -0400 Subject: TEST-17 - secure robot and generate page Update web site to require a password provide script to gnerate the page and credentials for user 'test' Change-Id: Ic40fcd7f224f27dc819af5ba54695de2fd47520a Signed-off-by: Jerry Flood --- docker/lighttpd.conf | 12 ++- robot/assets/templates/web/index.html.template | 123 +++++++++++++++++++++++++ robot/testsuites/update_onap_page.robot | 92 ++++++++++++++++++ 3 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 robot/assets/templates/web/index.html.template create mode 100644 robot/testsuites/update_onap_page.robot diff --git a/docker/lighttpd.conf b/docker/lighttpd.conf index 850af409..de9eaa22 100644 --- a/docker/lighttpd.conf +++ b/docker/lighttpd.conf @@ -14,4 +14,14 @@ mimetype.assign = ( static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc", ".cgi" ) index-file.names = ( "index.html" ) - +server.modules += ( "mod_auth" ) +auth.debug = 2 +auth.backend = "plain" +auth.backend.plain.userfile = "/etc/lighttpd/authorization" +auth.require = ( "/" => +( +"method" => "basic", +"realm" => "Password protected area", +"require" => "user=robot" +) +) diff --git a/robot/assets/templates/web/index.html.template b/robot/assets/templates/web/index.html.template new file mode 100644 index 00000000..4853fc72 --- /dev/null +++ b/robot/assets/templates/web/index.html.template @@ -0,0 +1,123 @@ + + Quicklinks To Running Instances + + + +

The Portal

+ + The portal is the entry point to design/provision/operate ONAP. From there you can get to SDC, VID and Policy portals. + + The portal can be found at:

+ + Portal +

+ One requires role based user names and passwords to receive the full portal functionality. In the demo setup we pre provisioned: +

+

+

+ the password for all of them is: demo123456! + +

The Reality

+ + As everything should go through the portal there are many subsystems which have there own GUI or API which come in very handy when debugging things. Here the most important once. + +

Testing

+ + Not working. : + + Test Report + +

SDN-C

+ + Controller with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

+ + To sign up

+ Admin

+ +

App-C

+ + Controller with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

+ +

Policy

+ + Not working. : + Healthcheck

+ +

MSO

+ + JBOSS GUI with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

+ + Camunda GUI with admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

+ +

DCAE

+ +

General GUIs

+ DCAE Controller + This might show up empty in a web browser as no content type is set in the response. If that's the case use curl:

+ + curl http://console:ZjJkYjllMjljMTI2M2Iz@${dcae_controller}:9998/resources

+ + CDAP GUI

+ +

DCAE internal Message Router

+ + Topics

+ + MR topic for collector to TCA

+ + MR topic for TCA alert to Policy

+ +

Message Router used between core components

+ + List of Topics

+ +

Topics of Interest

+ + For topics without authentication one can monitor the traffic on a topic with:

+ + http://${message_router}:3904/events/PUT_TOPIC_HERE/group1/C1?timeout=5000

+ + some important once listed below.

+ +

+ +

SSH to VM

+ + The following links will open a shell and ssh to the various running VMs (at least on a Mac). It assumes that the .ssh/config file has been set appropriately and /etc/hosts has been updated to the running instance.

+ + AAI

+ Policy

+ SDC

+ Portal

+ DCAE

+ APP-C

+ MSO

+ SDN-C

+ VID

+ Message Router

+ Robot Framework for testing

+ DNS server for management network

+ + Inside the VM you can list the docker containers by typing:

+ docker ps

+ and can get a shell prompt by executing the bash command. + For example:

docker exec -it openecompete_container bash

+ + + + + diff --git a/robot/testsuites/update_onap_page.robot b/robot/testsuites/update_onap_page.robot new file mode 100644 index 00000000..f200827c --- /dev/null +++ b/robot/testsuites/update_onap_page.robot @@ -0,0 +1,92 @@ +*** Settings *** +Documentation Initializes ONAP Test Web Page and Password + +Library Collections +Library OperatingSystem +Library StringTemplater +Resource ../resources/openstack/keystone_interface.robot +Resource ../resources/openstack/nova_interface.robot + + +Test Timeout 1 minutes + +*** Variables *** +${URLS_HTML_TEMPLATE} robot/assets/templates/web/index.html.template + + +${WEB_USER} test +${WEB_PASSWORD} + +${URLS_HTML} html/index.html +${CREDENTIALS_FILE} /etc/lighttpd/authorization +#${CREDENTIALS_FILE} authorization + +*** Test Cases *** +Update ONAP Page + [Tags] UpdateWebPage + Run Keyword If '${WEB_PASSWORD}' == '' Fail "WEB Password must not be empty" + Run Openstack Auth Request auth + ${server_map}= Get Openstack Servers auth + ${oam_ip_map}= Create Dictionary + Set To Dictionary ${oam_ip_map} 10.0.0.1=onapdns + Set To Dictionary ${oam_ip_map} 10.0.1.1=aai + Set To Dictionary ${oam_ip_map} 10.0.2.1=appc + Set To Dictionary ${oam_ip_map} 10.0.3.1=sdc + Set To Dictionary ${oam_ip_map} 10.0.4.1=dcae_controller + Set To Dictionary ${oam_ip_map} 10.0.4.103=dcae_cdap + Set To Dictionary ${oam_ip_map} 10.0.4.102=dcae_coll + Set To Dictionary ${oam_ip_map} 10.0.5.1=mso + Set To Dictionary ${oam_ip_map} 10.0.6.1=policy + Set To Dictionary ${oam_ip_map} 10.0.7.1=sdnc + Set To Dictionary ${oam_ip_map} 10.0.8.1=vid + Set To Dictionary ${oam_ip_map} 10.0.9.1=portal + Set To Dictionary ${oam_ip_map} 10.0.10.1=robot + Set To Dictionary ${oam_ip_map} 10.0.11.1=message_router + + ${values}= Create Dictionary + ${keys}= Get Dictionary Keys ${oam_ip_map} + :for ${oam_ip} in @{keys} + \ ${value_name}= Get From Dictionary ${oam_ip_map} ${oam_ip} + \ Set Public Ip ${server_map} ${oam_ip} ${value_name} ${values} + Log ${values} + Run Keyword If '${WEB_PASSWORD}' != '' Create File ${CREDENTIALS_FILE} ${WEB_USER}:${WEB_PASSWORD} + Create File From Template ${URLS_HTML_TEMPLATE} ${URLS_HTML} ${values} + +*** Keywords *** +Create File From Template + [Arguments] ${template} ${file} ${values} + ${data} OperatingSystem.Get File ${template} + ${data}= Template String ${data} ${values} + Create File ${file} ${data} + +Set Public Ip + [Arguments] ${server_map} ${oam_ip} ${value_name} ${values} + ${status} ${public_ip}= Run Keyword And Ignore Error Get Public Ip ${server_map} ${oam_ip} + ${public_ip}= Set Variable If '${status}' == 'PASS' ${public_ip} ${oam_ip} + Set To Dictionary ${values} ${value_name} ${public_ip} + +Get Public Ip + [Arguments] ${server_map} ${oam_ip} + ${servers} Get Dictionary Values ${server_map} + :for ${server} in @{servers} + \ ${status} ${public_ip} Run Keyword And Ignore Error Search Addresses ${server} ${oam_ip} + \ Return From Keyword If '${status}' == 'PASS' ${public_ip} + Fail ${oam_ip} Server Not Found + +Search Addresses + [Arguments] ${server} ${oam_ip} + ${addresses} Get From Dictionary ${server} addresses + ${public_ips} Get From Dictionary ${addresses} public + ${public_ip}= Get V4 IP ${public_ips} + ${oam_ips} Get From Dictionary ${addresses} ${GLOBAL_VM_PROPERTIES['network']} + ${this_oam_ip}= Get V4 IP ${oam_ips} + Return From Keyword If '${this_oam_ip}' == '${oam_ip}' ${public_ip} + Fail ${oam_ip} Server Not Found + +Get V4 IP + [Arguments] ${ipmaps} + :for ${ipmap} in @{ipmaps} + \ ${ip} Get From Dictionary ${ipmap} addr + \ ${version} Get From Dictionary ${ipmap} version + \ Return from Keyword if '${version}' == '4' ${ip} + Fail No Version 4 IP \ No newline at end of file -- cgit 1.2.3-korg