# iLO Event services

This section is a complement to the generic
[Redfish® Event Service](/docs/concepts/redfishevents)
section. It contains some specificities of its implementation
in HPE iLO 5 and HPE iLO 6 management controllers.

Information concerning iLO events is also present in the
[iLO Telemetry](/docs/redfishservices/ilos/supplementdocuments/ilotelemetryservice) section.

## HPE iLO 5 Event service

HPE iLO 5 implements a version of the Redfish Event Service older than
version 1.3.
As such, events are based on the `EventTypes`
[property](https://servermanagementportal.ext.hpe.com/docs/redfishservices/ilos/ilo5/ilo5_295/ilo5_other_resourcedefns295/#eventtypes-array),
not on the `RegistryPrefixes` property.

However, the generic flow for subscribing, receiving, and interpreting
events is the same as the newer versions of the standard. Refer to the
[Redfish® Event Service](/docs/concepts/redfishevents)
section for more information.

The following example creates an event subscription in an HPE iLO 5
based server. As the `Alert` event type is part of the body request,
the event listener will receive
[Alert Event Log](/docs/redfishservices/ilos/supplementdocuments/logservices/#alert-event-log)
messages asynchronously.

Generic request

```text
POST /redfish/v1/EventService/Subscriptions/
```

Body request

```json
{
    "Destination": "https://{{EventListener}}/RedfishEvents/EventReceiver.php",
    "EventTypes": [
        "StatusChange",
        "ResourceUpdated",
        "ResourceAdded",
        "ResourceRemoved",
        "Alert"
    ],
    "Context": "Public"
}
```

Body response

```json
{
    "error": {
        "code": "iLO.0.10.ExtendedInfo",
        "message": "See @Message.ExtendedInfo for more information.",
        "@Message.ExtendedInfo": [
            {
                "MessageId": "Base.1.17.Created"
            }
        ]
    }
}
```

Subscription details

```json
{
    "@odata.context": "/redfish/v1/$metadata#EventDestination.EventDestination",
    "@odata.etag": "W/\"29049257\"",
    "@odata.id": "/redfish/v1/EventService/Subscriptions/1/",
    "@odata.type": "#EventDestination.v1_13_0.EventDestination",
    "Id": "1",
    "Context": "Public",
    "Description": "iLO Event Subscription",
    "Destination": "https://192.168.1.46/RedfishEvents/EventReceiver.php",
    "EventTypes": [
        "StatusChange",
        "ResourceUpdated",
        "ResourceAdded",
        "ResourceRemoved",
        "Alert"
    ],
    "HttpHeaders": [],
    "MetricReportDefinitions": [],
    "Name": "Event Subscription",
    "Oem": {
        "Hpe": {
            "@odata.context": "/redfish/v1/$metadata#HpeEventDestination.HpeEventDestination",
            "@odata.type": "#HpeEventDestination.v2_1_0.HpeEventDestination",
            "DeliveryRetryAttempts": 3,
            "DeliveryRetryIntervalInSeconds": 30,
            "MutualAuthenticationEnabled": false,
            "RequestedMaxEventsToQueue": 3,
            "RetireOldEventInMinutes": 10
        }
    },
    "Protocol": "Redfish",
    "SubscriptionType": "RedfishEvent"
}
```

TIP
Refer to the [Telemetry Service](/docs/redfishservices/ilos/supplementdocuments/ilotelemetryservice) for examples
explaining how to receive periodical metric report events.

## HPE iLO 6 Event service

HPE iLO 6 implements a version of the Redfish Event Service that is
newer than version 1.3. As such, events are based on the
`RegistryPrefixes` property described in the
[Redfish Event Service](/docs/concepts/redfishevents/) section.
Refer to this generic section for the numerous standard examples.

Refer to the [Telemetry Service](/docs/concepts/redfishtelemetry)
for example, explaining how to to receive periodical metric reports.

## Syslog subscription

You can create Syslog subscriptions under `/redfish/v1/EventService/Subscriptions/`
using `Syslog` subscription type and `SyslogTLS` or `SyslogUDP` protocols. HPE iLO
sends iLO logs over a secure TCP connection to the subscribed entity. The setup must
have an authenticated TCP session between the Syslog server and the Syslog client.
The packets must be encrypted and sent over a TCP session. The Syslog
server (receiving entity) decrypts the payload and renders the logs to HPE iLO
(Syslog client).

Note
The Syslog Subscription feature is available from HPE iLO 6 version 1.68.

### Prerequisites to create Syslog subscriptions

- `SubscriptionType` and `Protocol` properties.
If you do not add the above properties to the Payload, HPE iLO considers
those subscriptions as Redfish event subscriptions.
- Import Certificate Authority (CA) certificate. HPE iLO uses the CA certificate
to authenticate the remote syslog server (destination). To import a CA certificate
in HPE iLO, perform a `POST` operation like in the following example or use the
iLO rest `certificate import --ca_cert`
[command](https://servermanagementportal.ext.hpe.com/docs/redfishclients/ilorest-userguide/ilocommands/#examples-2):

```text
POST /redfish/v1/eventservice/actions/oem/Hpe/Hpeeventservice.importCAcertificate/
```

```json
{
    "SubscriptionType":"Syslog",
    "Certificate":"-----BEGIN CERTIFICATE-----\nMIIEIzCCAwugAwIBAgIBFTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UEBhMCRlIx\nIzAhBgNVBAgMGlByb3ZlbmNlLUFscGVzLUNvdGUgZCdBenVyMRkwFwYDVQQHDBBT\nb3BobWEtQW50bXBvbGlzMQwwCgYDVQQKDANIUEUxEDAOBgNVBAsMB0NvbXB1dGUx\nJzAlBgNVBAMMHnRveWJveC5ldGMuZnIuY29tbS5ocGVjb3JwLm5ldDElMCMGCSqG\nSIb3DQEJARYWZnJhbmNvbXMuZG9uemVAbHBlLmNvbTAeFw0yMjA5MTQxNzI3MTJb\nFw0zMjA5MTExNzI3MTJbMIGWMQswCQYDVQQGEwJGUjEjMCEGA1UECAwbUHJvdmVu\nY2UtQWxwZXMtQ290ZSBkJ0F6dXIxGTAXBgNVBAcMEFNvcGhpYS1BbnRpcG9sbXMx\nDDAKBgNVBAoMA0hQRTEQMA4GA1UECwwHQ29tcHV0ZTEnMCUGA1UEAwwedG95Ym94\nLmV0Yy5mci5jb21tLmhwZWNvcnAubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A\nMIIBCgKCAQEAwOyJ07+FBKNHp1CB7QodkAMxfnIhqjL/oxyKXb60XbBVOb3r967k\nlXu8CDhdcj4RRfQcgbhy0q0Dnq1QBdqmGjjk6O7sOVhbTdm7jDShWkV7PcQcrYvz\ns1FNHO2zNgwRl5yqOd2uCYi3CXOi599gFhMNbblCeh6Ff03CxgBZoJBVgPYdmTSF\nOenpFng/uwbXtRUVYpbImPJfLs5oux4QxZXun71Gsf+bS1SgW1Vz9Fjye4tg/5sO\nvGjLSPMFCsiWFbononV6XY6wXKg5t3PZrcnEWDDLu17MwNZT+07d+sJddL71dGzC\nQIqcpDBERKXZpUpzxtAq6HLiplmqU2cBYwIDAQABo1MwUTAJBgNVHRMEAjAAMAsG\nA1UdDwQEAwIF4DA3BgNVHREEMDAugh50b3lib3guZXRjLmZyLmNvbW0ubHBlY29y\ncC5uZXSCBnRveWJveIcECuRLDTANBgkqhkiG9w0BAQsFAAOCAQEAwILPk2Ghy45W\nEeEC5WVCi0B2w7k89KRqe9Lx9peQTgm194lB3BqG6RJQObxbrK54GBA617ebJsOl\n/eeJo+Y2W9Q/bHLwmGYdKlMiDV+3N6jQh8dZDL1RjRMKmKkQEALx+JLVO9uuFQku\n6x4M+nQMU6bQ+irtpjDFCichvqHXAjTvn0foe1SePfCUThozCox+J1toPbmKOTCb\n5no43lgAB5VRLyUKrpKbZYf/o+bNcOhVDh8m6QEnQ47ruLXf8U8EbhppiFKsWymZ\nZWmO+qMczMwme1JPQTGt5AFDC84T6EpD4krYI9kzuyINfj60ZOzb7GE806ZO5mGi\nkSH4nvx8CQ==\n-----END CERTIFICATE-----\n"
}
```
- You can use the methods presented in this
[section](https://servermanagementportal.ext.hpe.com/docs/redfishservices/ilos/supplementdocuments/securityservice/#importing-a-signed-certificate-into-ilo)
to format the CA certificate properly.


Note
If you do not add the `SubscriptionType` property to the Payload, HPE iLO
doesn't consider the certificate for the syslog subscriptions.

### Example to create Syslog subscription

POST request

```text
POST /redfish/v1/eventservice/subscriptions/
```

Payload

```json
    {
        "Context":"MySubscription",
        "Destination":"syslog://16.242.171.221:443/EventReceiver25",
        "SubscriptionType":"Syslog",
        "Protocol":"SyslogTLS"
    }
```

Note
In the payload if you do not provide a `SubscriptionType` or if you set
it with any value other than the `Syslog`, HPE iLO does not consider the
payload for the Syslog subscriptions.

### Example to list Syslog subscriptions

The following example lists the members of the Event Service collection,
containing both Redfish events, with an integer ID, and Syslog subscriptions
noted as `SyslogID`. The following example retrieves the properties of a
Syslog subscription, introduced in the HPE iLO 6 version 1.68. It includes
the `SyslogFilters[]` array with the `LogFacilities` and `LowestSeverity`
properties.

GET request

```text
GET /redfish/v1/eventservice/subscriptions
```

Body response

```json
    {
        "@odata.context": "/redfish/v1/$metadata#EventDestinationCollection.EventDestinationCollection",
        "@odata.etag": "W/\"D5EC731D\"",
        "@odata.id": "/redfish/v1/EventService/Subscriptions/",
        "@odata.type": "#EventDestinationCollection.EventDestinationCollection",
        "Description": "iLO User Event Subscriptions",
        "Name": "EventSubscriptions",
        "Members":[
                    {
                    "@odata.id": "/redfish/v1/EventService/Subscriptions/2/"
                    },
                    {
                    "@odata.id": "/redfish/v1/EventService/Subscriptions/Syslog1/"
                    },
                    {
                    "@odata.id": "/redfish/v1/EventService/Subscriptions/Syslog2/"
                    },
                    {
                    "@odata.id": "/redfish/v1/EventService/Subscriptions/Syslog3/"
                    },
                    {
                    "@odata.id": "/redfish/v1/EventService/Subscriptions/Syslog4/"
                    },
                    {
                    "@odata.id": "/redfish/v1/EventService/Subscriptions/Syslog5/"
                    }
                ],
            "Members@odata.count": 6
        }
```

GET request

```text
GET /redfish/v1/eventservice/subscriptions/syslogID/
```

Body response

```json
    {
        "@odata.context": "/redfish/v1/$metadata#EventDestination.EventDestination",
        "@odata.etag": "W/\"74179589\"",
        "@odata.id": "/redfish/v1/EventService/Subscriptions/Syslog1/",
        "@odata.type": "#EventDestination.v1_14_0.EventDestination",
        "Id": "Syslog1",
        "Context": "MySubscription",
        "Description": "Syslog Subscription",
        "Destination": "syslog://16.242.171.221:443",
        "Name": "Syslog Subscription",
        "Protocol": "SyslogTLS",
        "SubscriptionType": "Syslog",
        "SyslogFilters":[
                {
                    "LogFacilities":[],
                    "LowestSeverity": "Emergency"
                }
            ]
    }
```

### Example to modify a Syslog subscription

PATCH request

```text
PATCH /redfish/v1/eventservice/subscriptions/syslogID/
```

Payload

```json
    {
        "Context":"MySubscription",
        "Destination":"syslog://16.242.171.221:443",
        "Protocol":"SyslogTLS"
    }
```

Note
You cannot perform `PATCH` operation on the `SubscriptionType` property.

### Example to list CA certificates

The following example retrieves the members of the imported CA certificates,
including the CA certificate used for the Syslog subscription. The
last example retrieves the properties of a specific member. For more
information on certificates, refer to the
[HPE Security Service](https://servermanagementportal.ext.hpe.com/docs/redfishservices/ilos/supplementdocuments/securityservice/#hpe-security-service).

GET request

```text
GET /redfish/v1/eventservice/CAcertificates/
```

Body response

```json
    {
        "@odata.context": "/redfish/v1/$metadata#HpeCertificateCollection.HpeCertificateCollection",
        "@odata.etag": "W/\"AA6D42B0\"",
        "@odata.id": "/redfish/v1/EventService/CACertificates/",
        "@odata.type": "#HpeCertificateCollection.HpeCertificateCollection",
        "Description": "Trusted CA Certificates for REST Event Mutual Authentication",
        "Name": "REST CA Certificates",
        "Members":[
            {
                "@odata.id": "/redfish/v1/EventService/CACertificates/4/"
            }
        ],
        "Members@odata.count": 1
    }
```

GET request

```text
GET /redfish/v1/eventservice/CAcertificates/cacertId
```

Body response

```json
    {
        "@odata.context": "/redfish/v1/$metadata#HpeCertificate.HpeCertificate",
        "@odata.etag": "W/\"9C84861E\"",
        "@odata.type": "#HpeCertificate.v1_0_0.HpeCertificate",
        "Issuer": "/C=IN/ST=Karnataka/L=Bangalore/O=HPE/OU=CSFE",
        "SerialNumber": "3E9D7F22187E69C25A55A5EBC4B1F448DEE9D794",
        "Subject": "/C=IN/ST=Karnataka/L=Bangalore/O=HPE/OU=CSFE",
        "ValidNotAfter": "1970-01-01T00:00:00Z",
        "ValidNotBefore": "1970-01-01T00:00:00Z"
    }
```