1062cba2dSAnusha Dathatri*** Settings ***
2062cba2dSAnusha Dathatri
3062cba2dSAnusha DathatriDocumentation    Resource file for event notification subscription.
4062cba2dSAnusha Dathatri
5062cba2dSAnusha Dathatri*** Keywords ***
6062cba2dSAnusha Dathatri
7062cba2dSAnusha DathatriDelete All Event Subscriptions
8062cba2dSAnusha Dathatri    [Documentation]  Delete all event subscriptions.
9062cba2dSAnusha Dathatri
10062cba2dSAnusha Dathatri    ${subscriptions}=  Redfish.Get Attribute  /redfish/v1/EventService/Subscriptions  Members
11062cba2dSAnusha Dathatri    Return From Keyword If  ${subscriptions} is None
12062cba2dSAnusha Dathatri    FOR  ${subscription}  IN  @{subscriptions}
13062cba2dSAnusha Dathatri        Redfish.Delete  ${subscription['@odata.id']}
14062cba2dSAnusha Dathatri    END
15062cba2dSAnusha Dathatri
16062cba2dSAnusha DathatriGet Event Subscription IDs
17062cba2dSAnusha Dathatri    [Documentation]  Get event subscription IDs.
18062cba2dSAnusha Dathatri
19062cba2dSAnusha Dathatri    ${subscription_ids}=  Create List
20062cba2dSAnusha Dathatri    ${subscriptions}=  Redfish.Get Attribute  /redfish/v1/EventService/Subscriptions  Members
21062cba2dSAnusha Dathatri    Log  ${subscriptions}
22062cba2dSAnusha Dathatri    FOR  ${subscription}  IN  @{subscriptions}
23062cba2dSAnusha Dathatri        Append To List  ${subscription_ids}
24062cba2dSAnusha Dathatri        ...  ${subscription['@odata.id'].split("/redfish/v1/EventService/Subscriptions/")[-1]}
25062cba2dSAnusha Dathatri    END
26062cba2dSAnusha Dathatri    [Return]  ${subscription_ids}
27062cba2dSAnusha Dathatri
28d1c5fb1cSAnusha DathatriGet Destination IPs Of Event Subscriptions
29d1c5fb1cSAnusha Dathatri    [Documentation]  Get all subscribed server IPs as a list from event subscriptions.
30d1c5fb1cSAnusha Dathatri
31d1c5fb1cSAnusha Dathatri    ${subscription_ids}=  Get Event Subscription IDs
32d1c5fb1cSAnusha Dathatri
33d1c5fb1cSAnusha Dathatri    ${server_ips}=  Create List
34d1c5fb1cSAnusha Dathatri    FOR  ${id}  IN  @{subscription_ids}
35d1c5fb1cSAnusha Dathatri        ${destination}=  Redfish.Get Attribute  /redfish/v1/EventService/Subscriptions/${id}  Destination
36d1c5fb1cSAnusha Dathatri        # E.g. https://xx.xx.xx.xx:xxxx/redfish/events
37d1c5fb1cSAnusha Dathatri        ${dest_ip}=  Get Regexp Matches  ${destination}  .*://(.*):.*  1
38d1c5fb1cSAnusha Dathatri        ${server_ips}=  Combine Lists  ${server_ips}  ${dest_ip}
39d1c5fb1cSAnusha Dathatri    END
40d1c5fb1cSAnusha Dathatri    [Return]  ${server_ips}
41*f854f8baSsrichn28
42*f854f8baSsrichn28Delete Event Subscription Of Unpingable Destination IPs
43*f854f8baSsrichn28    [Documentation]  Delete event subscription with non-pinging destination IPs.
44*f854f8baSsrichn28
45*f854f8baSsrichn28    ${subscription_ids}=  Get Event Subscription IDs
46*f854f8baSsrichn28
47*f854f8baSsrichn28    FOR  ${id}  IN  @{subscription_ids}
48*f854f8baSsrichn28        ${destination}=  Redfish.Get Attribute  /redfish/v1/EventService/Subscriptions/${id}  Destination
49*f854f8baSsrichn28        ${dest_ip}=  Get Regexp Matches  ${destination}  .*://(.*):.*  1
50*f854f8baSsrichn28        ${status}=  Run Keyword And Return Status  Ping Host  ${dest_ip}[0]
51*f854f8baSsrichn28
52*f854f8baSsrichn28        IF  ${status} == False
53*f854f8baSsrichn28            Redfish.Delete   /redfish/v1/EventService/Subscriptions/${id}
54*f854f8baSsrichn28        END
55*f854f8baSsrichn28    END
56