*** Settings ***

Documentation    Resource file for event notification subscription.

*** Keywords ***

Delete All Event Subscriptions
    [Documentation]  Delete all event subscriptions.

    ${subscriptions}=  Redfish.Get Attribute  /redfish/v1/EventService/Subscriptions  Members
    Return From Keyword If  ${subscriptions} is None
    FOR  ${subscription}  IN  @{subscriptions}
        Redfish.Delete  ${subscription['@odata.id']}
    END

Get Event Subscription IDs
    [Documentation]  Get event subscription IDs.

    ${subscription_ids}=  Create List
    ${subscriptions}=  Redfish.Get Attribute  /redfish/v1/EventService/Subscriptions  Members
    Log  ${subscriptions}
    FOR  ${subscription}  IN  @{subscriptions}
        Append To List  ${subscription_ids}
        ...  ${subscription['@odata.id'].split("/redfish/v1/EventService/Subscriptions/")[-1]}
    END
    [Return]  ${subscription_ids}

Get Destination IPs Of Event Subscriptions
    [Documentation]  Get all subscribed server IPs as a list from event subscriptions.

    ${subscription_ids}=  Get Event Subscription IDs

    ${server_ips}=  Create List
    FOR  ${id}  IN  @{subscription_ids}
        ${destination}=  Redfish.Get Attribute  /redfish/v1/EventService/Subscriptions/${id}  Destination
        # E.g. https://xx.xx.xx.xx:xxxx/redfish/events
        ${dest_ip}=  Get Regexp Matches  ${destination}  .*://(.*):.*  1
        ${server_ips}=  Combine Lists  ${server_ips}  ${dest_ip}
    END
    [Return]  ${server_ips}

Delete Event Subscription Of Unpingable Destination IPs
    [Documentation]  Delete event subscription with non-pinging destination IPs.

    ${subscription_ids}=  Get Event Subscription IDs

    FOR  ${id}  IN  @{subscription_ids}
        ${destination}=  Redfish.Get Attribute  /redfish/v1/EventService/Subscriptions/${id}  Destination
        ${dest_ip}=  Get Regexp Matches  ${destination}  .*://(.*):.*  1
        ${status}=  Run Keyword And Return Status  Ping Host  ${dest_ip}[0]

        IF  ${status} == False
            Redfish.Delete   /redfish/v1/EventService/Subscriptions/${id}
        END
    END