[DCAE-PMSH] Removing dmaap mr from suite
[integration/csit.git] / tests / dcaegen2-services-pmsh / testcases / pmsh.robot
1 *** Settings ***
2 Documentation     Testing PMSH functionality
3
4 Library           OperatingSystem
5 Library           RequestsLibrary
6 Library           String
7 Library           Process
8
9 Resource          ../../common.robot
10 Test Teardown     Delete All Sessions
11
12
13 *** Variables ***
14
15 ${PMSH_BASE_URL}                    https://${PMSH_IP}:8443
16 ${MR_SIM_BASE_URL}                  http://${MR_SIM_IP_ADDRESS}:3904
17 ${CBS_BASE_URL}                     https://${CBS_SIM_IP_ADDRESS}:10443
18 ${SUBSCRIPTION_ENDPOINT}            /subscription
19
20 ${MR_SIM_RESET}                             %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/mr-sim-reset.json
21 ${MR_AAI_PNF_CREATED}                       %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/aai-pnf-create.json
22 ${MR_AAI_PNF_REMOVED}                       %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/aai-pnf-delete.json
23 ${MR_POLICY_RESPONSE_PNF_EXISTING}          %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/policy-sub-created-pnf-existing.json
24 ${MR_POLICY_RESPONSE_PNF_DELETED}           %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/policy-sub-deleted-pnf-existing.json
25 ${CBS_EXPECTATION_ADMIN_STATE_UNLOCKED}     %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/cbs-expectation-unlocked-config.json
26 ${CREATE_SUBSCRIPTION_DATA}                 %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/create_subscription_request.json
27 ${CREATE_SECOND_SUBSCRIPTION_DATA}          %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/create_second_subscription_request.json
28 ${CREATE_SUBSCRIPTION_BAD_DATA}             %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/create_subscription_bad_request.json
29 ${CREATE_SUBSCRIPTION_SCHEMA_ERROR_DATA}    %{WORKSPACE}/tests/dcaegen2-services-pmsh/testcases/assets/create_subscription_schema_error_request.json
30
31 *** Test Cases ***
32 Verify Get subscriptions with Network Functions None
33     [Tags]                          PMSH_01
34     [Documentation]                 Verify Get all subscriptions when there are no defined subscriptions
35     [Timeout]                       10 seconds
36     ${resp}=                        GetSubsCall    ${SUBSCRIPTION_ENDPOINT}     ""
37     Should Be True                  ${resp.status_code} == 200
38     Should Contain                  ${resp.text}                     []
39
40 Verify Create Subscriptions API
41     [Tags]                          PMSH_07
42     [Documentation]                 Verify Create Subscription API
43     [Timeout]                       60 seconds
44     ${json_value}=                  json_from_file                  ${CREATE_SUBSCRIPTION_DATA}
45     ${resp}=                        PostSubscriptionCall     ${SUBSCRIPTION_ENDPOINT}   ${json_value}
46     Should Be True                  ${resp.status_code} == 201
47      ${resp}=                       GetSubsCall    ${SUBSCRIPTION_ENDPOINT}   "/subs_01"
48     Should Be Equal As Strings      ${resp.json()[0]['subscription']['subscriptionName']}       subs_01
49
50 Verify database tables exist and are empty
51     [Tags]                          PMSH_02
52     [Documentation]                 Verify database has been created and is empty
53     [Timeout]                       10 seconds
54     ${resp}=                        GetSubsCall    ${SUBSCRIPTION_ENDPOINT}     ""
55     Should Be True                  ${resp.status_code} == 200
56     Should Contain                  ${resp.text}                     []
57
58 Verify PNF detected in AAI when administrative state unlocked
59     [Tags]                          PMSH_03
60     [Documentation]                 Verify PNF detected when administrative state unlocked
61     [Timeout]                       60 seconds
62     SetAdministrativeStateToUnlocked
63     Sleep                           31             Allow PMSH time to pick up changes in CBS config
64     ${resp}=                        GetMeasGrpCall    /subscription/subs_01/measurementGroups/msg_grp_01
65     Should Be Equal As Strings      ${resp.json()['subscriptionName']}      subs_01
66     Should Be Equal As Strings      ${resp.json()['administrativeState']}       UNLOCKED
67     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfName']}            pnf-existing
68     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfMgStatus']}      PENDING_CREATE
69
70 Verify Policy response on MR is handled
71     [Tags]                          PMSH_04
72     [Documentation]                 Verify policy response on MR is handled
73     [Timeout]                       60 seconds
74     AddCreatePolicyResponeToMrSim
75     Sleep                           31 seconds      Ensure Policy response on MR is picked up
76     ResetMrSim
77     ${resp}=                        GetMeasGrpCall    /subscription/subs_01/measurementGroups/msg_grp_01
78     Should Be Equal As Strings      ${resp.json()['subscriptionName']}      subs_01
79     Should Be Equal As Strings      ${resp.json()['administrativeState']}       UNLOCKED
80     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfName']}            pnf-existing
81     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfMgStatus']}     CREATED
82
83 Verify AAI event on MR detailing new PNF being detected is handled
84     [Tags]                          PMSH_05
85     [Documentation]                 Verify PNF created AAI event on MR is handled
86     [Timeout]                       60 seconds
87     AddNewPnfToMrSim
88     Sleep                           25 seconds     Give sim time to set expectation
89     ResetMrSim
90     ${resp}=                        GetMeasGrpCall    /subscription/subs_01/measurementGroups/msg_grp_01
91     Should Be Equal As Strings      ${resp.json()['subscriptionName']}      subs_01
92     Should Be Equal As Strings      ${resp.json()['administrativeState']}       UNLOCKED
93     Should Be Equal As Strings      ${resp.json()['networkFunctions'][1]['nfName']}            pnf_newly_discovered
94     Should Be Equal As Strings      ${resp.json()['networkFunctions'][1]['nfMgStatus']}      PENDING_CREATE
95
96 Verify AAI event on MR detailing PNF being deleted is handled
97     [Tags]                          PMSH_06
98     [Documentation]                 Verify PNF deleted AAI event on MR is handled
99     [Timeout]                       60 seconds
100     RemoveNewPnfFromMrSim
101     Sleep                           21 seconds      Ensure AAI event on MR is picked up
102     ResetMrSim
103     ${resp}=                        GetMeasGrpCall    /subscription/subs_01/measurementGroups/msg_grp_01
104     Should Not Contain              ${resp.text}    pnf_newly_discovered
105
106 Verify Create Subscription API for duplicate subscription Id
107     [Tags]                          PMSH_08
108     [Documentation]                 Verify Create Subscription API for duplicate subscription Id
109     [Timeout]                       60 seconds
110     ${json_value}=                  json_from_file                  ${CREATE_SUBSCRIPTION_DATA}
111     ${resp}=                        PostSubscriptionCall     ${SUBSCRIPTION_ENDPOINT}   ${json_value}
112     Should Be True                  ${resp.status_code} == 409
113     Should Contain                  ${resp.json()}      subscription Name: subs_01 already exists.
114
115 Verify Create Subscription API for schema error
116     [Tags]                          PMSH_09
117     [Documentation]                 Verify Create Subscription API
118     [Timeout]                       60 seconds
119     ${json_value}=                  json_from_file                  ${CREATE_SUBSCRIPTION_SCHEMA_ERROR_DATA}
120     ${resp}=                        PostSubscriptionCall     ${SUBSCRIPTION_ENDPOINT}   ${json_value}
121     Should Be True                  ${resp.status_code} == 400
122     Should Contain                  ${resp.json()['detail']}      'administrativeState' is a required property - 'subscription.measurementGroups.0.measurementGroup'
123
124 Verify Create Subscription API for filter values missing
125     [Tags]                          PMSH_10
126     [Documentation]                 Verify Create Subscription API
127     [Timeout]                       60 seconds
128     ${json_value}=                  json_from_file                  ${CREATE_SUBSCRIPTION_BAD_DATA}
129     ${resp}=                        PostSubscriptionCall     ${SUBSCRIPTION_ENDPOINT}   ${json_value}
130     Should Be True                  ${resp.status_code} == 400
131     Should Contain                  ${resp.json()}      At least one filter within nfFilter must not be empty
132
133 Verify Get Measurement Group with Network Functions
134     [Tags]                          PMSH_11
135     [Documentation]                 Verify Get Measurement Group with Network Functions by using MGName and SubName
136     [Timeout]                       60 seconds
137     ${resp}=                        GetMeasGrpWithNFSCall     /subscription/subs_01/measurementGroups/msg_grp_01
138     ${nf_length}=                   Get length  ${resp.json()['networkFunctions']}
139     Should Be True                  ${resp.status_code} == 200
140     Should Be Equal As Strings      ${resp.json()['subscriptionName']}      subs_01
141     Should Be Equal As Strings      ${resp.json()['measurementGroupName']}      msg_grp_01
142     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfName']}      pnf-existing
143     Should be equal as numbers      ${nf_length}  1
144
145 Verify Get single subscription with Network Functions
146     [Tags]                          PMSH_12
147     [Documentation]                 Verify Get single subscription with Network Functions by using subscription name
148     [Timeout]                       60 seconds
149     ${resp}=                        GetSubsCall    ${SUBSCRIPTION_ENDPOINT}/subs_01  ""
150     ${nf_length}=                   Get length  ${resp.json()['subscription']['nfs']}
151     Should Be True                  ${resp.status_code} == 200
152     Should Be Equal As Strings      ${resp.json()['subscription']['subscriptionName']}      subs_01
153     Should Be Equal As Strings      ${resp.json()['subscription']['nfs'][0]}      pnf-existing
154         Should Be Equal As Strings      ${resp.json()['subscription']['measurementGroups'][0]['measurementGroup']['measurementGroupName']}  msg_grp_02
155     Should be equal as numbers      ${nf_length}  1
156
157 Verify Get single subscription with Network Functions None
158     [Tags]                          PMSH_13
159     [Documentation]                 Verify Get single subscription with Network Functions when there is no defined subscription
160     [Timeout]                       60 seconds
161     ${resp}=                        GetSubsCall    ${SUBSCRIPTION_ENDPOINT}/sub_none  ""
162     Should Be True                  ${resp.status_code} == 404
163     Should Be Equal As Strings      ${resp.json()['error']}     Subscription was not defined with the name : sub_none
164
165 Verify Update Measurement Group admin status from Unlocked to Locking
166     [Tags]                          PMSH_14
167     [Documentation]                 Verify Update Measurement Group admin status from Unlocked to Locking
168     [Timeout]                       60 seconds
169     ${json_string}=                 Set Variable    {"administrativeState": "LOCKED"}
170     ${json}=                        evaluate        json.loads('''${json_string}''')    json
171     ${resp}=                        PutMsgGrpStatusCall     /subscription/subs_01/measurementGroups/msg_grp_01/adminState   ${json}
172     Should Be True                  ${resp.status_code} == 200
173     Should Contain                  ${resp.json()}      Successfully updated admin state
174     ${resp}=                        GetMeasGrpWithNFSCall     /subscription/subs_01/measurementGroups/msg_grp_01
175     ${nf_length}=                   Get length  ${resp.json()['networkFunctions']}
176     Should Be True                  ${resp.status_code} == 200
177     Should Be Equal As Strings      ${resp.json()['subscriptionName']}      subs_01
178     Should Be Equal As Strings      ${resp.json()['measurementGroupName']}      msg_grp_01
179     Should Be Equal As Strings      ${resp.json()['administrativeState']}       LOCKING
180     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfName']}      pnf-existing
181     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfMgStatus']}      PENDING_DELETE
182     Should be equal as numbers      ${nf_length}  1
183
184 Verify Update Measurement Group admin status with locking in progress
185     [Tags]                          PMSH_15
186     [Documentation]                 Verify Update Measurement Group admin status with locking in progress
187     [Timeout]                       60 seconds
188     ${json_string}=                 Set Variable    {"administrativeState": "LOCKED"}
189     ${json}=                        evaluate        json.loads('''${json_string}''')    json
190     ${resp}=                        PutMsgGrpStatusCall     /subscription/subs_01/measurementGroups/msg_grp_01/adminState   ${json}
191     Should Be True                  ${resp.status_code} == 409
192     Should Contain                  ${resp.json()}  Cannot update admin status as Locked request is in progress for sub name: subs_01  and meas group name: msg_grp_01
193
194 Verify Measurement Group admin status update from Locking to Locked
195     [Tags]                          PMSH_16
196     [Documentation]                 Verify Measurement Group admin status update from Locking to Locked
197     [Timeout]                       60 seconds
198     AddDeletePolicyResponeToMrSim
199     Sleep                           31 seconds      Ensure Policy response on MR is picked up
200     ResetMrSim
201     ${resp}=                        GetMeasGrpCall    /subscription/subs_01/measurementGroups/msg_grp_01
202     Should Be Equal As Strings      ${resp.json()['measurementGroupName']}      msg_grp_01
203     Should Be Equal As Strings      ${resp.json()['subscriptionName']}      subs_01
204     Should Be Equal As Strings      ${resp.json()['administrativeState']}       LOCKED
205     ${nf_length}=                   Get length  ${resp.json()['networkFunctions']}
206     Should be equal as numbers      ${nf_length}  0
207
208 Verify Update Measurement Group admin status to unlocked with no Network Functions in Subscription
209     [Tags]                          PMSH_17
210     [Documentation]                 Verify Update Measurement Group admin status to unlocked with no Network Functions in Subscription
211     [Timeout]                       60 seconds
212     ${resp}=                        GetSubsCall    ${SUBSCRIPTION_ENDPOINT}/subs_01  ""
213     ${nf_length}=                   Get length  ${resp.json()['subscription']['nfs']}
214     Should be equal as numbers      ${nf_length}  0
215     ${json_string}=                 Set Variable    {"administrativeState": "UNLOCKED"}
216     ${json}=                        evaluate        json.loads('''${json_string}''')    json
217     ${resp}=                        PutMsgGrpStatusCall     /subscription/subs_01/measurementGroups/msg_grp_01/adminState   ${json}
218     Should Be True                  ${resp.status_code} == 200
219     Should Contain                  ${resp.json()}      Successfully updated admin state
220     ${resp}=                        GetMeasGrpWithNFSCall     /subscription/subs_01/measurementGroups/msg_grp_01
221     ${nf_length}=                   Get length  ${resp.json()['networkFunctions']}
222     Should Be True                  ${resp.status_code} == 200
223     Should Be Equal As Strings      ${resp.json()['subscriptionName']}      subs_01
224     Should Be Equal As Strings      ${resp.json()['measurementGroupName']}      msg_grp_01
225     Should Be Equal As Strings      ${resp.json()['administrativeState']}       UNLOCKED
226     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfName']}      pnf-existing
227     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfMgStatus']}      PENDING_CREATE
228     Should be equal as numbers      ${nf_length}  1
229
230 Verify Update Measurement Group admin status from Locked to Unlocked with Network function present in subscription
231     [Tags]                          PMSH_18
232     [Documentation]                 Verify Update Measurement Group admin status from Locked to Unlocked with Network function present in subscription
233     [Timeout]                       60 seconds
234     ${json_string}=                 Set Variable    {"administrativeState": "UNLOCKED"}
235     ${json}=                        evaluate        json.loads('''${json_string}''')    json
236     ${resp}=                        PutMsgGrpStatusCall     /subscription/subs_01/measurementGroups/msg_grp_02/adminState   ${json}
237     Should Be True                  ${resp.status_code} == 200
238     Should Contain                  ${resp.json()}      Successfully updated admin state
239     ${resp}=                        GetMeasGrpWithNFSCall     /subscription/subs_01/measurementGroups/msg_grp_02
240     ${nf_length}=                   Get length  ${resp.json()['networkFunctions']}
241     Should Be True                  ${resp.status_code} == 200
242     Should Be Equal As Strings      ${resp.json()['subscriptionName']}      subs_01
243     Should Be Equal As Strings      ${resp.json()['measurementGroupName']}      msg_grp_02
244     Should Be Equal As Strings      ${resp.json()['administrativeState']}       UNLOCKED
245     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfName']}      pnf-existing
246     Should Be Equal As Strings      ${resp.json()['networkFunctions'][0]['nfMgStatus']}      PENDING_CREATE
247     Should be equal as numbers      ${nf_length}  1
248
249 Verify Update Measurement Group admin status with no change
250     [Tags]                          PMSH_19
251     [Documentation]                 Verify Update Measurement Group admin status with no change
252     [Timeout]                       60 seconds
253     ${json_string}=                 Set Variable    {"administrativeState": "UNLOCKED"}
254     ${json}=                        evaluate        json.loads('''${json_string}''')    json
255     ${resp}=                        PutMsgGrpStatusCall     /subscription/subs_01/measurementGroups/msg_grp_01/adminState   ${json}
256     Should Be True                  ${resp.status_code} == 400
257     Should Contain                  ${resp.json()}  Measurement group is already in UNLOCKED state for sub name: subs_01  and meas group name: msg_grp_01
258
259 Verify Update Measurement Group admin status for invalid measurement group
260     [Tags]                          PMSH_20
261     [Documentation]                 Verify Update Measurement Group admin status for invalid measurement group
262     [Timeout]                       60 seconds
263     ${json_string}=                 Set Variable    {"administrativeState": "LOCKED"}
264     ${json}=                        evaluate        json.loads('''${json_string}''')    json
265     ${resp}=                        PutMsgGrpStatusCall     /subscription/subs_01/measurementGroups/msg_grp_11/adminState   ${json}
266     Should Be True                  ${resp.status_code} == 400
267     Should Contain                  ${resp.json()}  Requested measurement group not available for admin status update
268
269 Verify Get subscriptions with Network Functions
270     [Tags]                          PMSH_21
271     [Documentation]                 Verify Get subscriptions with Network Functions
272     [Timeout]                       60 seconds
273     ${json_value}=                  json_from_file                  ${CREATE_SECOND_SUBSCRIPTION_DATA}
274     ${resp_post}=                   PostSubscriptionCall     ${SUBSCRIPTION_ENDPOINT}   ${json_value}
275     ${resp}=                        GetSubsCall    ${SUBSCRIPTION_ENDPOINT}  ""
276     ${nf_length_first}=             Get length  ${resp.json()[0]['subscription']['nfs']}
277     ${nf_length_second}=            Get length  ${resp.json()[1]['subscription']['nfs']}
278     Should Be True                  ${resp.status_code} == 200
279     Should Be Equal As Strings      ${resp.json()[0]['subscription']['subscriptionName']}      subs_01
280     Should Be Equal As Strings      ${resp.json()[0]['subscription']['nfs'][0]}      pnf-existing
281         Should Be Equal As Strings      ${resp.json()[0]['subscription']['measurementGroups'][0]['measurementGroup']['measurementGroupName']}  msg_grp_02
282     Should be equal as numbers      ${nf_length_first}  1
283     Should Be Equal As Strings      ${resp.json()[1]['subscription']['subscriptionName']}      subs_02
284     Should Be Equal As Strings      ${resp.json()[1]['subscription']['nfs'][0]}      pnf-existing
285         Should Be Equal As Strings      ${resp.json()[1]['subscription']['measurementGroups'][0]['measurementGroup']['measurementGroupName']}  msg_grp_04
286     Should be equal as numbers      ${nf_length_second}  1
287
288 *** Keywords ***
289
290 SetAdministrativeStateToUnlocked
291     ${data}=            Get Data From File      ${CBS_EXPECTATION_ADMIN_STATE_UNLOCKED}
292     Create Session      cbs_sim_session   ${CBS_BASE_URL}    verify=false
293     ${resp}=            PUT On Session    cbs_sim_session    url=/clear  data={"path": "/service_component_all/.*"}
294     Should Be True      ${resp.status_code} == 200
295     Sleep               2                 Allow CBS time to set expectation
296     ${resp} =           PUT On Session    cbs_sim_session    url=/expectation     data=${data}
297     Should Be True      ${resp.status_code} == 201
298
299 AddCreatePolicyResponeToMrSim
300     ${data}=            Get Data From File      ${MR_POLICY_RESPONSE_PNF_EXISTING}
301     Create Session      mr_sim_session   ${MR_SIM_BASE_URL}    verify=false
302     ${resp}=            PUT On Session    mr_sim_session    url=/clear  data={"id" : "pmsh_cl_input_event"}
303     Should Be True      ${resp.status_code} == 200
304     Sleep               2                 Allow MR_SIM time to set expectation
305     ${resp} =           PUT On Session    mr_sim_session    url=/expectation     data=${data}
306     Should Be True      ${resp.status_code} == 201
307
308 AddDeletePolicyResponeToMrSim
309     ${data}=            Get Data From File      ${MR_POLICY_RESPONSE_PNF_DELETED}
310     Create Session      mr_sim_session   ${MR_SIM_BASE_URL}    verify=false
311     ${resp}=            PUT On Session    mr_sim_session    url=/clear  data={"id" : "pmsh_cl_input_event"}
312     Should Be True      ${resp.status_code} == 200
313     Sleep               2                 Allow MR_SIM time to set expectation
314     ${resp} =           PUT On Session    mr_sim_session    url=/expectation     data=${data}
315     Should Be True      ${resp.status_code} == 201
316
317 AddNewPnfToMrSim
318     ${data}=            Get Data From File      ${MR_AAI_PNF_CREATED}
319     Create Session      mr_sim_session   ${MR_SIM_BASE_URL}    verify=false
320     ${resp}=            PUT On Session    mr_sim_session    url=/clear  data={"id" : "mr_aai_event"}
321     Should Be True      ${resp.status_code} == 200
322     Sleep               2                 Allow MR_SIM time to set expectation
323     ${resp} =           PUT On Session    mr_sim_session    url=/expectation     data=${data}
324     Should Be True      ${resp.status_code} == 201
325
326 RemoveNewPnfFromMrSim
327     ${data}=            Get Data From File      ${MR_AAI_PNF_REMOVED}
328     Create Session      mr_sim_session   ${MR_SIM_BASE_URL}    verify=false
329     ${resp}=            PUT On Session    mr_sim_session    url=/clear  data={"id" : "mr_aai_event"}
330     Should Be True      ${resp.status_code} == 200
331     Sleep               2                 Allow MR_SIM time to set expectation
332     ${resp} =           PUT On Session    mr_sim_session    url=/expectation     data=${data}
333     Should Be True      ${resp.status_code} == 201
334
335 ResetMrSim
336     ${data}=            Get Data From File      ${MR_SIM_RESET}
337     Create Session      mr_sim_session   ${MR_SIM_BASE_URL}    verify=false
338     ${resp}=            PUT On Session    mr_sim_session    url=/reset
339     Should Be True      ${resp.status_code} == 200
340     ${resp}=            PUT On Session    mr_sim_session    url=/expectation     data=${data}
341     Should Be True      ${resp.status_code} == 201
342
343 GetSubsCall
344     [Arguments]     ${url}      ${url_path_param}
345     Create Session  pmsh_session      ${PMSH_BASE_URL}    verify=false
346     ${resp}=        GET On Session    pmsh_session        url=${url}    data={"path": {url_path_param}}    expected_status=any
347     [Return]        ${resp}
348
349 GetMeasGrpCall
350     [Arguments]     ${url}
351     Create Session  pmsh_session      ${PMSH_BASE_URL}    verify=false
352     ${resp}=        GET On Session    pmsh_session        url=${url}
353     [Return]        ${resp}
354
355 GetMeasGrpWithNFSCall
356     [Arguments]     ${url}
357     Create Session  pmsh_session      ${PMSH_BASE_URL}    verify=false
358     ${resp}=        GET On Session    pmsh_session        url=${url}
359     [Return]        ${resp}
360
361 PostSubscriptionCall
362     [Arguments]     ${url}     ${data}
363     Create Session  pmsh_sub_session       ${PMSH_BASE_URL}    verify=false
364     ${headers}=     Create Dictionary    Accept=application/json     Content-Type=application/json
365     ${resp}=        POST On Session      pmsh_sub_session    url=${url}    json=${data}     headers=${headers}  expected_status=anything
366     [Return]        ${resp}
367
368 PutMsgGrpStatusCall
369     [Arguments]     ${url}     ${data}
370     Create Session  pmsh_sub_session       ${PMSH_BASE_URL}    verify=false
371     ${headers}=     Create Dictionary    Accept=application/json     Content-Type=application/json
372     ${resp}=        PUT On Session      pmsh_sub_session    url=${url}    json=${data}     headers=${headers}  expected_status=anything
373     [Return]        ${resp}