1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
*** Settings ***
Documentation The main interface for interacting with 5G Bulkpm.
Library RequestsLibrary
Library OperatingSystem
Library String
Library JSONLibrary
*** Variables ***
${INVENTORY_SERVER} ${GLOBAL_INVENTORY_SERVER_PROTOCOL}://${GLOBAL_INVENTORY_SERVER_NAME}:${GLOBAL_INVENTORY_SERVER_PORT}
${DEPLOYMENT_SERVER} ${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PROTOCOL}://${GLOBAL_DEPLOYMENT_HANDLER_SERVER_NAME}:${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PORT}
${DR_ENDPOINT} ${GLOBAL_DMAAP_DR_PROV_SERVER_PROTOCOL}://${GLOBAL_INJECTED_DMAAP_DR_PROV_IP_ADDR}:${GLOBAL_DMAAP_DR_PROV_SERVER_PORT}
${DMAAP_BC_SERVER} ${GLOBAL_BC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_BC_IP_ADDR}:${GLOBAL_BC_HTTPS_SERVER_PORT}
${VES_HEALTH_CHECK_PATH} ${GLOBAL_DCAE_VES_HTTPS_PROTOCOL}://${GLOBAL_INJECTED_DCAE_VES_HOST}:${GLOBAL_DCAE_VES_HTTPS_SERVER_PORT}
${MR_PUBLISH_TEMPLATE} mr/mr_publish.jinja
*** Keywords ***
Undeploy Service
[Arguments] ${server} ${endpoint}
${session}= Create Session deployment ${server}
${resp}= Delete Request deployment ${endpoint}
[Return] ${resp}
Deployment Status
[Arguments] ${server} ${endpoint} ${deployment} ${operationId}
${session}= Create Session deployment-status ${server}
${resp}= Get Request deployment-status /${endpoint}/${deployment}/operation/${operationId}
${status} Set Variable ${resp.json().get('status')}
Should Be Equal As Strings ${status} succeeded
Validate Json Event From Topic
[Arguments] ${expected_event_json_path} ${expected_pm_str} ${known_host_variable}=False
${PmEventRespFiles} = Run Keyword If "${known_host_variable}" == "False" OperatingSystem.List Files In Directory ${expected_event_json_path} 5gbulkpm-*.json absolute=True
... ELSE OperatingSystem.List Files In Directory ${expected_event_json_path} 5gbulkpm_checking_sftp_rsa_key-*.json absolute=True
Set Test Variable ${pmResultFound} False
FOR ${filePath} IN @{PmEventRespFiles}
Set Log Level NONE
${pmData} = OperatingSystem.Get File ${filePath}
Set Log Level INFO
${statusOfPmResult}= Run Keyword And Return Status Should Contain ${pmData} ${expected_pm_str}
Run Keyword If '${statusOfPmResult}' == 'True' Run Keywords Set Test Variable ${pmResultFound} True
... AND Exit For Loop
END
Should Be Equal ${pmResultFound} True
Get Event From Topic
[Arguments] ${expected_event_json_path} ${known_host_variable}=False
Wait Until Keyword Succeeds 2 min 5 s xNF PM File Validate none ${expected_event_json_path} ${known_host_variable}
xNF PM File Validate
[Arguments] ${expected_pm_str} ${expected_event_json_path} ${known_host_variable}=False
#Run Keyword If '${expected_event_json_path}' != 'none' Set Log Level NONE
${timestamp}= Get Time epoch
${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
Run keyword If ${resp.text} == @{EMPTY} Fail msg=Event is empty!
${pmEventJson}= Run Keyword If '${expected_event_json_path}' != 'none' To Json ${resp.text} pretty_print=True
Run Keyword If '${expected_event_json_path}' != 'none' and '${known_host_variable}' == 'False' Create File ${expected_event_json_path}/5gbulkpm-pm_event-${timestamp}.json ${pmEventJson}
... ELSE IF '${expected_event_json_path}' != 'none' and '${known_host_variable}' == 'True' Create File ${expected_event_json_path}/5gbulkpm_checking_sftp_rsa_key-pm_event-${timestamp}.json ${pmEventJson}
#Run Keyword If '${expected_event_json_path}' != 'none' Set Log Level INFO
Run Keyword If '${expected_event_json_path}' == 'none' Should Contain ${resp.text} ${expected_pm_str}
Topic Validate
[Arguments] ${value}
${timestamp}= Get Current Date
${dict}= Create Dictionary timestamp=${timestamp}
Templating.Create Environment mr ${GLOBAL_TEMPLATE_FOLDER}
${data}= Templating.Apply Template mr ${MR_PUBLISH_TEMPLATE} ${dict}
${resp}= Run MR Auth Post Request (User And Pass) ${MR_TOPIC_URL_PATH_FOR_POST} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD} ${data}
Should Be Equal As Strings ${resp.status_code} 200
${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
Should Contain ${resp.text} ${value}
Usecase Teardown
Undeploy Service ${DEPLOYMENT_SERVER} /${DEPLOYMENT_ENDPOINT}/pmmapper
Undeploy Service ${DEPLOYMENT_SERVER} /${DEPLOYMENT_ENDPOINT}/sftpserver
Undeploy Service ${INVENTORY_SERVER} ${INVENTORY_ENDPOINT}/${serviceTypeId-Sftp}
Undeploy Service ${DEPLOYMENT_SERVER} /${DEPLOYMENT_ENDPOINT}/datafile
Send File Ready Event to VES Collector
[Arguments] ${pm_file} ${file_format_type} ${file_format_version}
${headers}= Create Dictionary content-type=application/json
${fileready}= OperatingSystem.Get File ${JSON_DATA_FILE}
${auth}= Create List ${GLOBAL_DCAE_VES_USERNAME} ${GLOBAL_DCAE_VES_PASSWORD}
${session}= Create Session ves ${VES_HEALTH_CHECK_PATH} auth=${auth}
${resp}= Post Request ves ${VES_LISTENER_PATH} data=${fileready} headers=${headers}
Should Be Equal As Strings ${resp.status_code} 202
${VES_FILE_READY_NOTIFICATION} Set Variable {"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":"otenb5309","sequence":0,"sourceName":"oteNB5309","startEpochMicrosec":8745745764578,"timeZoneOffset":"UTC+05.30"},"notificationFields":{"changeIdentifier":"PM_MEAS_FILES","changeType":"FileReady","notificationFieldsVersion":"2.0","arrayOfNamedHashMap":[{"name":"${pm_file}","hashMap":{"location":"sftp://bulkpm:bulkpm@sftpserver:22/upload/${pm_file}","compression":"gzip","fileFormatType":"${file_format_type}","fileFormatVersion":"${file_format_version}"}}]}}}
${resp}= Post Request ves ${VES_LISTENER_PATH} data=${VES_FILE_READY_NOTIFICATION} headers=${headers}
Should Be Equal As Strings ${resp.status_code} 202
Upload PM Files to xNF SFTP Server
[Arguments] ${pm_file_path} ${bulk_pm_mode} ${known_host_variable}=False
Open Connection sftpserver
Login bulkpm bulkpm
${epoch}= Get Current Date result_format=epoch
${pm_file} = Run Keyword If "${bulk_pm_mode}" == "custom" and "${known_host_variable}" == "False" Fetch From Right ${pm_file_path} marker=/
... ELSE IF "${bulk_pm_mode}" == "custom" and "${known_host_variable}" == "True" Set Variable PM${epoch}.xml.gz
... ELSE Set Variable A${epoch}.xml.gz
Put File ${pm_file_path} upload/${pm_file}
[Return] ${pm_file}
Check Given Print In DFC Log
[Arguments] ${check_dfc_logs}
${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
Should Contain ${dfc_logs} HostKey has been changed
Run Given Command On DFC Container
[Arguments] ${user_command}
${run_command} = Run And Return Rc And Output ${user_command}
${command_output} = Set Variable ${run_command[1]}
${regexp_matches} = Get Regexp Matches ${command_output} .*(\\s|\\[)+(.+-datafile-collector).* 2
${dfc_container_name} = Set Variable ${regexp_matches[0]}
${new_command} = Set Variable ${user_command} ${dfc_container_name}
${command_output} = Run And Return Rc And Output ${new_command}
Should Be Equal As Integers ${command_output[0]} 0
${log} = Set Variable ${command_output[1]}
[Return] ${log}
Check Known Hosts In Env
[Arguments] ${CHECK_KNOWN_HOSTS}
${check} = Run And Return Rc And Output ${CHECK_KNOWN_HOSTS}
Should Be Equal As Integers ${check[0]} 0
${env} = Set Variable ${check[1]}
${string_matches} = Get Lines Containing String ${env} KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host case_insensitive=True
${output} = Should Not Be Empty ${string_matches}
[Return] ${output}
|