Dear team,
Not sure if anyone else has encountered this issue, I was trying
to exercise the vFWCL demo with the latest ONAP deployment (both HEAT and OOM
based), but get blocked by the issue of "preload VNF data" with robot script.
As I investigate this issue, I found there seems the root cause is the
mismatching between the robot script and the VID portal output, could someone
from VID and Integration team shed a light on this issue?
Please chime in if anyone observes the same issue recently. In case that it is
a well known issue observed by others as well , I can try to fix it as well.
Please refer to the log and analysis below for your reference, Thanks
Preload VNF data for vFWCL demo:
root@rancher:~/oom/kubernetes/robot# ./demo-k8s.sh onap preload vFWSNK-1
vFWSNK-Module-1
+ echo 'Number of parameters:'
Number of parameters:
+ echo 4
4
+ '[' 4 -lt 2 ']'
+ NAMESPACE=onap
+ shift
+ '[' 3 -gt 0 ']'
+ key=preload
+ echo KEY:
KEY:
+ echo preload
preload
+ case $key in
+ TAG=PreloadDemo
+ shift
+ '[' 2 -ne 2 ']'
+ VARIABLES=' -v VNF_NAME:vFWSNK-1'
+ shift
+ VARIABLES=' -v VNF_NAME:vFWSNK-1 -v MODULE_NAME:vFWSNK-Module-1'
+ shift
+ '[' 0 -gt 0 ']'
+ ETEHOME=/var/opt/OpenECOMP_ETE
+ VARIABLEFILES='-V /share/config/vm_properties.py -V
/share/config/integration_robot_properties.py -V
/share/config/integration_preload_parameters.py'
++ kubectl --namespace onap get pods
++ sed 's/ .*//'
++ grep robot
+ POD=dev-robot-845547fc88-pnfcz
+ kubectl --namespace onap exec dev-robot-845547fc88-pnfcz --
/var/opt/OpenECOMP_ETE/runTags.sh -V /share/config/vm_properties.py -V
/share/config/integration_robot_properties.py -V
/share/config/integration_preload_parameters.py -v VNF_NAME:vFWSNK-1 -v
MODULE_NAME:vFWSNK-Module-1 -d /share/logs/demo/PreloadDemo -i PreloadDemo
--display 89
Starting Xvfb on display :89 with res 1280x1024x24
Executing robot tests at log level TRACE
==============================================================================
OpenECOMP ETE
==============================================================================
OpenECOMP ETE.Robot
==============================================================================
OpenECOMP ETE.Robot.Testsuites
==============================================================================
OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestration Test ...
==============================================================================
Preload VNF | FAIL |
TypeError: string indices must be integers
------------------------------------------------------------------------------
OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestrat... | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
OpenECOMP ETE.Robot.Testsuites | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
OpenECOMP ETE.Robot | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
OpenECOMP ETE | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
Output: /share/logs/demo/PreloadDemo/output.xml
Log: /share/logs/demo/PreloadDemo/log.html
Report: /share/logs/demo/PreloadDemo/report.html
Error log:
KEYWORD ${vf_modules} = vid_interface . Get Module Names from
VID ${invariantUUID}
Documentation:
Must use UI since rest call get redirect to portal and get DNS error
Start / End / Elapsed: 20180529 12:58:37.006 / 20180529 12:58:37.464 /
00:00:00.458
00:00:00.458KEYWORD ${id} = vid_interface . Get Model UUID from VID
${invariantUUID}
Documentation:
Must use UI since rest call get redirect to portal and get DNS error
Start / End / Elapsed: 20180529 12:58:37.006 / 20180529 12:58:37.464 /
00:00:00.458
00:00:00.416KEYWORD ExtendedSelenium2Library . Go To
${VID_ENDPOINT}${VID_ENV}/rest/models/services
Documentation:
Navigates the active browser instance to the provided URL.
Start / End / Elapsed: 20180529 12:58:37.007 / 20180529 12:58:37.423 /
00:00:00.416
12:58:37.008 TRACE Arguments: [
'http://vid.onap:8080/vid/rest/models/services' ]
12:58:37.008 INFO Opening url
'http://vid.onap:8080/vid/rest/models/services'
12:58:37.008 DEBUG POST
http://127.0.0.1:54336/session/f0dc095f66fe0fa857b6325d10001398/url {"url":
"http://vid.onap:8080/vid/rest/models/services", "sessionId":
"f0dc095f66fe0fa857b6325d10001398"}
12:58:37.423 DEBUG Finished Request
12:58:37.423 TRACE Return: None
00:00:00.037KEYWORD ${resp} = ExtendedSelenium2Library . Get Text
xpath=//body/pre
00:00:00.002KEYWORD ${json} = RequestsLibrary . To Json ${resp}
Documentation:
Convert a string to a JSON object
Start / End / Elapsed: 20180529 12:58:37.461 / 20180529 12:58:37.463 /
00:00:00.002
12:58:37.461 TRACE Arguments: [
'{"services":[{"uuid":"3dcb5407-d698-4cb5-a8af-2de4dffe3fc5","invariantUUID":"c69a0d2d-6c48-4577-9233-a812d42533ea","name":"demoVFWCL","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null},{"uuid":"fd3b399b-ccdd-4449-9d49-10d5b06d1f79","invariantUUID":"a9594a77-02bb-4db3-9795-78660f5ef30c","name":"demoVCPE","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null},{"uuid":"97f3ad17-2acc-483d-8177-3f975122f0e7","invariantUUID":"b1e75122-06a8-45bb-b404-cae998beb3af","name":"demoVLB","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null}],"readOnly":false}'
]
12:58:37.462 INFO To JSON using :
content={"services":[{"uuid":"3dcb5407-d698-4cb5-a8af-2de4dffe3fc5","invariantUUID":"c69a0d2d-6c48-4577-9233-a812d42533ea","name":"demoVFWCL","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null},{"uuid":"fd3b399b-ccdd-4449-9d49-10d5b06d1f79","invariantUUID":"a9594a77-02bb-4db3-9795-78660f5ef30c","name":"demoVCPE","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null},{"uuid":"97f3ad17-2acc-483d-8177-3f975122f0e7","invariantUUID":"b1e75122-06a8-45bb-b404-cae998beb3af","name":"demoVLB","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null}],"readOnly":false}
12:58:37.462 INFO To JSON using : pretty_print=False
12:58:37.462 TRACE Return: {'readOnly': False,
'services': [{'artifacts': None, 'category': 'service', 'distributionStatus':
'DISTRIBUTION_COMPLETE_OK', 'invariantUUID':
'c69a0d2d-6c48-4577-9233-a812d42533ea', 'lastUpdaterFullName': None,
'lastUpdaterUserId': None, 'lifecycleState': None, 'name': 'demoVFWCL',
'resources': None, 'toscaModelURL': None, 'uuid':
'3dcb5407-d698-4cb5-a8af-2de4dffe3fc5', 'version': '1.0'},
{'artifacts': None, 'category': 'service', 'distributionStatus':
'DISTRIBUTION_COMPLETE_OK', 'invariantUUID':
'a9594a77-02bb-4db3-9795-78660f5ef30c', 'lastUpdaterFullName': None,
'lastUpdaterUserId': None, 'lifecycleState': None, 'name': 'demoVCPE',
'resources': None, 'toscaModelURL': None, 'uuid':
'fd3b399b-ccdd-4449-9d49-10d5b06d1f79', 'version': '1.0'},
{'artifacts': None, 'category': 'service', 'distributionStatus':
'DISTRIBUTION_COMPLETE_OK', 'invariantUUID':
'b1e75122-06a8-45bb-b404-cae998beb3af', 'lastUpdaterFullName': None,
'lastUpdaterUserId': None, 'lifecycleState': None, 'name': 'demoVLB',
'resources': None, 'toscaModelURL': None, 'uuid':
'97f3ad17-2acc-483d-8177-3f975122f0e7', 'version': '1.0'}]}
12:58:37.463 INFO ${json} = {u'services': [{u'category': u'service',
u'lastUpdaterFullName': None, u'uuid': u'3dcb5407-d698-4cb5-a8af-2de4dffe3fc5',
u'distributionStatus': u'DISTRIBUTION_COMPLETE_OK', u'lastUpdaterUserId':
None,...
00:00:00.001FOR ${dict} IN [ @{json} ]
Start / End / Elapsed: 20180529 12:58:37.463 / 20180529 12:58:37.464 /
00:00:00.001
00:00:00.001VAR ${dict} = services
Start / End / Elapsed: 20180529 12:58:37.463 / 20180529 12:58:37.464 /
00:00:00.001
00:00:00.001KEYWORD ${uuid} = Collections . Get From Dictionary ${dict}, uuid
Documentation:
Returns a value from the given dictionary based on the given key.
Start / End / Elapsed: 20180529 12:58:37.463 / 20180529 12:58:37.464 /
00:00:00.001
12:58:37.463 TRACE Arguments: [ 'services' | 'uuid' ]
12:58:37.464 FAIL TypeError: string indices must be integers
12:58:37.464 DEBUG Traceback (most recent call last):
None
Further debug:
Robot script:
testsuite/robot/resources/vid/vid_interface.robot
Get Model UUID from VID
[Documentation]
Must use UI since rest call get redirect to portal and get DNS error
... Search all
services and match on the invariantUUID
[Arguments]
${invariantUUID}
Go To
${VID_ENDPOINT}${VID_ENV}/rest/models/services
${resp}= Get Text
xpath=//body/pre
${json}= To Json
${resp}
:for ${dict} in
@{json}
\ ${uuid}= Get
From DIctionary ${dict} uuid
\ ${inv}= Get
From DIctionary ${dict} invariantUUID
\ Return From
Keyword If "${invariantUUID}" == "${inv}" ${uuid}
[Return] ""
Output of VID portal:
http://vid.api.simpledemo.onap.org:30200/vid/rest/models/services
{"services":[{"uuid":"3dcb5407-d698-4cb5-a8af-2de4dffe3fc5","invariantUUID":"c69a0d2d-6c48-4577-9233-a812d42533ea","name":"demoVFWCL","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null},{"uuid":"fd3b399b-ccdd-4449-9d49-10d5b06d1f79","invariantUUID":"a9594a77-02bb-4db3-9795-78660f5ef30c","name":"demoVCPE","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null},{"uuid":"7a8fabe6-11e8-4dea-8f29-f3acad35ef0c","invariantUUID":"49dba176-181f-4274-9c56-8e0d5edb7945","name":"vFW
2018-05-29
05:07:36","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null},{"uuid":"97f3ad17-2acc-483d-8177-3f975122f0e7","invariantUUID":"b1e75122-06a8-45bb-b404-cae998beb3af","name":"demoVLB","version":"1.0","toscaModelURL":null,"category":"service","lifecycleState":null,"lastUpdaterUserId":null,"lastUpdaterFullName":null,"distributionStatus":"DISTRIBUTION_COMPLETE_OK","artifacts":null,"resources":null}],"readOnly":false}
Root Cause analysis:
mismatch between the robot script and the VID portal output.
robot script expects a single service object to
be returned by the VID portal: ${VID_ENDPOINT}${VID_ENV}/rest/models/services
with format of {"uuid":"3dcb5407-d698-4cb5-a8af-2de4dffe3fc5",...}
However, the VID returns a list of services in
format: {"services":[{"uuid":"3dcb5407-d698-4cb5-a8af-2de4dffe3fc5",...},{}]}
Best Regards,
Bin Yang, Solution Readiness Team, Wind River
Direct +86,10,84777126 Mobile +86,13811391682 Fax +86,10,64398189
Skype: yangbincs993
_______________________________________________
onap-discuss mailing list
[email protected]
https://lists.onap.org/mailman/listinfo/onap-discuss