*** 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
